/[clipping]/bin/lib/c_customer.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /bin/lib/c_customer.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1.1.1 - (show annotations) (vendor branch)
Fri Jan 16 22:46:52 2004 UTC (16 years, 2 months ago) by dpavlin
Branch: MAIN, phperl
CVS Tags: r20040116, HEAD
Changes since 1.1: +0 -0 lines
initial import of downloaded version

1 package c_customer;
2
3 # Project: Clipping
4 # Author: Nelson Ferraz <nferraz@phperl.com>
5 # Date: 2003-08-14
6
7 # Methods:
8 #
9 # new
10 # select
11 # insert
12 # delete
13 # update
14 #
15 # Syntax:
16 #
17 # my $c_customer = new c_customer;
18 #
19 # $c_customer->select(param1 => value1, param2, value2, ... );
20 # $c_customer->insert(param1 => value1, param2, value2, ... );
21 # $c_customer->delete(param1 => value1, param2, value2, ... );
22 # $c_customer->update(param1 => value1, param2, value2, ... );
23
24 use strict;
25 use vars qw($conn); # Connection
26
27 ###
28
29 sub new {
30 my $proto = shift;
31 my $conn_ref = shift;
32
33 die 'Missing database connection reference ($conn_ref)' if !ref $conn_ref;
34
35 my $self = {};
36 bless($self, (ref($proto) || $proto));
37
38 # Database connection
39 $conn = ${$conn_ref};
40
41 return $self;
42 }
43
44 ###
45
46 sub select {
47 my($self, $attr) = @_;
48
49 my $query = "SELECT
50 c_customer_id,
51 c_customer_name,
52 c_customer_phone,
53 c_customer_email,
54 c_customer_notes
55 FROM c_customer\n";
56
57 # restrict results
58 my @where = ();
59
60 push @where, "c_customer_id = " . quote($attr->{c_customer_id})
61 if $attr->{"c_customer_id"};
62
63 push @where, "c_customer_name LIKE " . quote ("\%$attr->{c_customer_name}\%")
64 if $attr->{"c_customer_name"};
65
66 push @where, "c_customer_phone LIKE " . quote ("\%$attr->{c_customer_phone}\%")
67 if $attr->{"c_customer_phone"};
68
69 push @where, "c_customer_email LIKE " . quote ("\%$attr->{c_customer_email}\%")
70 if $attr->{"c_customer_email"};
71
72 push @where, "c_customer_notes LIKE " . quote ("\%$attr->{c_customer_notes}\%")
73 if $attr->{"c_customer_notes"};
74
75 push @where, "c_customer_date_created = " . quote($attr->{c_customer_date_created})
76 if $attr->{"c_customer_date_created"};
77
78 push @where, "c_customer_date_updated = " . quote($attr->{c_customer_date_updated})
79 if $attr->{"c_customer_date_updated"};
80
81 push @where, "c_customer_date_deleted = " . quote($attr->{c_customer_date_deleted})
82 if $attr->{"c_customer_date_deleted"};
83
84
85 $query .= "WHERE " . join ("\nAND ", @where) . "\n" if ($#where > -1);
86
87 $query .= "ORDER BY c_customer_name";
88
89 # Execute query
90 my $result = $conn->exec($query);
91
92 # Error checking
93 if ($conn->errorMessage) {
94 my $errorMessage = $conn->errorMessage;
95 die "Error executing query '$query':\n$errorMessage";
96 }
97
98 my @result = ();
99 while (my ($c_customer_id,$c_customer_name,$c_customer_phone,$c_customer_email,$c_customer_notes) = $result->fetchrow) {
100 # FIXME: fetch using a hash?
101 push @result, {
102 c_customer_id => $c_customer_id,
103 c_customer_name => $c_customer_name,
104 c_customer_phone => $c_customer_phone,
105 c_customer_email => $c_customer_email,
106 c_customer_notes => $c_customer_notes
107 };
108 }
109
110 return @result;
111 }
112
113 ###
114
115 sub view {
116 my($self, $attr) = @_;
117
118 my $query = "SELECT
119 c_customer_id,
120 c_customer_name,
121 c_customer_phone,
122 c_customer_email,
123 c_customer_notes,
124 c_customer_date_created,
125 c_customer_date_updated,
126 c_customer_date_deleted
127 FROM view_c_customer\n";
128
129 # restrict results
130 my @where = ();
131
132 push @where, "c_customer_id = " . quote($attr->{c_customer_id})
133 if $attr->{"c_customer_id"};
134
135 push @where, "c_customer_name LIKE " . quote ("\%$attr->{c_customer_name}\%")
136 if $attr->{"c_customer_name"};
137
138 push @where, "c_customer_phone LIKE " . quote ("\%$attr->{c_customer_phone}\%")
139 if $attr->{"c_customer_phone"};
140
141 push @where, "c_customer_email LIKE " . quote ("\%$attr->{c_customer_email}\%")
142 if $attr->{"c_customer_email"};
143
144 push @where, "c_customer_notes LIKE " . quote ("\%$attr->{c_customer_notes}\%")
145 if $attr->{"c_customer_notes"};
146
147 push @where, "c_customer_date_created = " . quote($attr->{c_customer_date_created})
148 if $attr->{"c_customer_date_created"};
149
150 push @where, "c_customer_date_updated = " . quote($attr->{c_customer_date_updated})
151 if $attr->{"c_customer_date_updated"};
152
153 push @where, "c_customer_date_deleted = " . quote($attr->{c_customer_date_deleted})
154 if $attr->{"c_customer_date_deleted"};
155
156
157
158 $query .= "WHERE " . join ("\nAND ", @where) . "\n"
159 if ($#where > -1);
160
161 $attr->{"order_by"} ||= "c_customer_name";
162 $query .= "ORDER BY " . $attr->{"order_by"} . "\n"
163 if defined $attr->{"order_by"};
164
165 $query .= "GROUP BY " . $attr->{"group_by"} . "\n"
166 if defined $attr->{"group_by"};
167
168 $attr->{"limit"} ||= 20;
169 $attr->{"offset"} ||= '0';
170
171 $query .= "LIMIT $attr->{'limit'} OFFSET $attr->{'offset'}\n";
172
173 # Execute query
174 my $result = $conn->exec($query);
175
176 # Error checking
177 if ($conn->errorMessage) {
178 my $errorMessage = $conn->errorMessage;
179 die "Error executing query '$query':\n$errorMessage";
180 }
181
182 my @result = ();
183 while (my ($c_customer_id,$c_customer_name,$c_customer_phone,$c_customer_email,$c_customer_notes,$c_customer_date_created,$c_customer_date_updated,$c_customer_date_deleted) = $result->fetchrow) {
184 push @result, {
185 c_customer_id => $c_customer_id,
186 c_customer_name => $c_customer_name,
187 c_customer_phone => $c_customer_phone,
188 c_customer_email => $c_customer_email,
189 c_customer_notes => $c_customer_notes,
190 c_customer_date_created => $c_customer_date_created,
191 c_customer_date_updated => $c_customer_date_updated,
192 c_customer_date_deleted => $c_customer_date_deleted
193 };
194 }
195
196 return @result;
197 }
198
199 ###
200
201 sub insert {
202 my($self, $attr) = @_;
203
204 my $query = "SELECT sp_ins_c_customer (" .
205 quote($attr->{'c_customer_name'}) . ',' .
206 quote($attr->{'c_customer_phone'}) . ',' .
207 quote($attr->{'c_customer_email'}) . ',' .
208 quote($attr->{'c_customer_notes'}) .
209 ")";
210
211 # Execute query
212 my $result = $conn->exec($query);
213
214 # Error checking
215 if ($conn->errorMessage) {
216 my $errorMessage = $conn->errorMessage;
217 die "Error executing query '$query':\n$errorMessage";
218 }
219 }
220
221 ###
222
223 sub delete {
224 my($self, $attr) = @_;
225
226 my $c_customer_id = $attr->{c_customer_id};
227 my @c_customer_id = split (/\0/,$c_customer_id);
228
229 foreach my $id (@c_customer_id) {
230 my $q_id = quote ($id);
231 my $query = "SELECT sp_del_c_customer ($q_id)";
232
233 # Execute query
234 my $result = $conn->exec($query);
235
236 # Error checking
237 if ($conn->errorMessage) {
238 my $errorMessage = $conn->errorMessage;
239 die "Error executing query '$query':\n$errorMessage";
240 }
241 }
242 }
243
244 ###
245
246 sub update {
247 my($self, $attr) = @_;
248
249 my $query = "SELECT sp_upd_c_customer (" .
250 quote($attr->{'c_customer_id'}) . ',' .
251 quote($attr->{'c_customer_name'}) . ',' .
252 quote($attr->{'c_customer_phone'}) . ',' .
253 quote($attr->{'c_customer_email'}) . ',' .
254 quote($attr->{'c_customer_notes'}) .
255 ")";
256
257 # Execute query
258 my $result = $conn->exec($query);
259
260 # Error checking
261 if ($conn->errorMessage) {
262 my $errorMessage = $conn->errorMessage;
263 die "Error executing query '$query':\n$errorMessage";
264 }
265 }
266
267 ###
268
269
270
271 sub quote {
272 my $str = shift;
273 if ($str eq '') {
274 return "NULL";
275 } else {
276 $str =~ s/'/''/g; # ISO SQL2
277 return "'$str'";
278 }
279 }
280
281 1;
282
283 __END__
284
285 Clipping - Copyright 2003 PhPerl.com
286
287 This program is free software; you can redistribute it and/or
288 modify it under the terms of the GNU General Public License
289 as published by the Free Software Foundation; either version 2
290 of the License, or (at your option) any later version.
291
292 This program is distributed in the hope that it will be useful,
293 but WITHOUT ANY WARRANTY; without even the implied warranty of
294 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
295
296 See the GNU General Public License for more details:
297
298 http://www.gnu.org/copyleft/gpl.html

  ViewVC Help
Powered by ViewVC 1.1.26