Bug 17443 - DBRev 16.06.00.045
[koha.git] / C4 / Bookseller / Contact.pm
bloba91ecdaf052fba04d67166741b502edd25c4bc9f
1 package C4::Bookseller::Contact;
3 # Copyright 2013 C & P Bibliography Services
5 # This file is part of Koha.
7 # Koha is free software; you can redistribute it and/or modify it under the
8 # terms of the GNU General Public License as published by the Free Software
9 # Foundation; either version 3 of the License, or (at your option) any later
10 # version.
12 # Koha is distributed in the hope that it will be useful, but WITHOUT ANY
13 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
14 # A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16 # You should have received a copy of the GNU General Public License along
17 # with Koha; if not, write to the Free Software Foundation, Inc.,
18 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20 =head1 NAME
22 C4::Bookseller::Contact - object class for contacts associated with vendors
24 =head1 SYNPOSIS
26 This class provides an object-oriented interface for handling vendor contacts.
27 It uses Class::Accessor to provide access to the following fields:
29 =head1 FIELDS
31 =over 8
33 =item id
35 ID of the contact. This is not used initially, since contacts are actually
36 stored in the aqbooksellers table.
38 =item name
40 Contact name.
42 =item position
44 Contact's position.
46 =item phone
48 Contact's primary phone number.
50 =item altphone
52 Contact's alternate phone number.
54 =item fax
56 Contact's fax number.
58 =item email
60 Contact's e-mail address.
62 =item notes
64 Notes about contact.
66 =item orderacquisition
68 Whether the contact should receive acquisitions orders.
70 =item claimacquisition
72 Whether the contact should receive acquisitions claims.
74 =item claimissues
76 Whether the contact should receive serials claims.
78 =item acqprimary
80 Whether the contact is the primary contact for acquisitions.
82 =item serialsprimary
84 Whether the contact is the primary contact for serials.
86 =item bookseller
88 ID of the bookseller the contact is associated with.
90 =back
92 =cut
94 use Modern::Perl;
95 use C4::Context;
97 use base qw(Class::Accessor);
99 __PACKAGE__->mk_accessors(qw(id name position phone altphone fax email notes orderacquisition claimacquisition claimissues acqprimary serialsprimary bookseller));
101 =head1 METHODS
103 =head2 get_from_bookseller
105 my @contacts = @{C4::Bookseller::Contact->get_from_bookseller($booksellerid)};
107 Returns a reference to an array of C4::Bookseller::Contact objects for the
108 specified bookseller. This will always return at least one item, though that one
109 item may be an empty contact.
111 =cut
113 sub get_from_bookseller {
114 my ($class, $bookseller) = @_;
116 return unless $bookseller;
118 my @contacts;
119 my $query = "SELECT * FROM aqcontacts WHERE booksellerid = ?";
120 my $dbh = C4::Context->dbh;
121 my $sth = $dbh->prepare($query);
122 $sth->execute($bookseller);
123 while (my $rec = $sth->fetchrow_hashref()) {
124 push @contacts, $class->new($rec);
127 push @contacts, $class->new() unless @contacts;
129 return \@contacts;
133 =head2 fetch
135 my $contact = C4::Bookseller::Contact->fetch($contactid);
137 Retrieves the specified contact from the database. Currently commented out
138 because there is no separate table from which contacts can be fetched.
140 =cut
142 sub fetch {
143 my ($class, $id) = @_;
145 my $rec = { };
146 if ($id) {
147 my $query = "SELECT * FROM aqcontacts WHERE id = ?";
148 my $dbh = C4::Context->dbh;
149 my $sth = $dbh->prepare($query);
150 $sth->execute($id);
151 $rec = $sth->fetchrow_hashref();
153 my $self = $class->new($rec);
154 bless $self, $class;
155 return $self;
158 =head2 save
160 $contact->save();
162 Save a contact to the database.
164 =cut
166 sub save {
167 my ($self) = @_;
169 my $query;
170 my @params = (
171 $self->name, $self->position,
172 $self->phone, $self->altphone,
173 $self->fax, $self->email,
174 $self->notes, $self->acqprimary ? 1 : 0,
175 $self->serialsprimary ? 1 : 0,
176 $self->orderacquisition ? 1 : 0, $self->claimacquisition ? 1 : 0,
177 $self->claimissues ? 1 : 0, $self->bookseller
179 if ($self->id) {
180 $query = 'UPDATE aqcontacts SET name = ?, position = ?, phone = ?, altphone = ?, fax = ?, email = ?, notes = ?, acqprimary = ?, serialsprimary = ?, orderacquisition = ?, claimacquisition = ?, claimissues = ?, booksellerid = ? WHERE id = ?;';
181 push @params, $self->id;
182 } else {
183 $query = 'INSERT INTO aqcontacts (name, position, phone, altphone, fax, email, notes, acqprimary, serialsprimary, orderacquisition, claimacquisition, claimissues, booksellerid) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);';
185 my $dbh = C4::Context->dbh;
186 my $sth = $dbh->prepare($query);
187 $sth->execute(@params);
188 $self->id($dbh->{'mysql_insertid'}) unless $self->id;
189 return $self->id;
192 sub delete {
193 my ($self) = @_;
195 return unless $self->id;
197 my $dbh = C4::Context->dbh;
198 my $sth = $dbh->prepare("DELETE FROM aqcontacts WHERE id = ?;");
199 $sth->execute($self->id);
200 return;
203 =head1 AUTHOR
205 Jared Camins-Esakov <jcamins@cpbibliography.com>
207 =cut