1
+ /**
2
+ * Copyright by https://loizenai.com
3
+ * youtube loizenai
4
+ */
5
+
6
+ const db = require ( '../config/db.config.js' ) ;
7
+ const Customer = db . Customer ;
8
+
9
+ exports . create = ( req , res ) => {
10
+ let customer = { } ;
11
+
12
+ try {
13
+ // Building Customer object from upoading request's body
14
+ customer . firstname = req . body . firstname ;
15
+ customer . lastname = req . body . lastname ;
16
+ customer . address = req . body . address ;
17
+ customer . age = req . body . age ;
18
+
19
+ // Save to MySQL database
20
+ Customer . create ( customer ) . then ( result => {
21
+ // send uploading message to client
22
+ res . status ( 200 ) . json ( {
23
+ message : "Upload Successfully a Customer with id = " + result . id ,
24
+ customer : result ,
25
+ } ) ;
26
+ } ) ;
27
+ } catch ( error ) {
28
+ res . status ( 500 ) . json ( {
29
+ message : "Fail!" ,
30
+ error : error . message
31
+ } ) ;
32
+ }
33
+ }
34
+
35
+ exports . retrieveAllCustomers = ( req , res ) => {
36
+ // find all Customer information from
37
+ Customer . findAll ( )
38
+ . then ( customerInfos => {
39
+ res . status ( 200 ) . json ( {
40
+ message : "Get all Customers' Infos Successfully!" ,
41
+ customers : customerInfos
42
+ } ) ;
43
+ } )
44
+ . catch ( error => {
45
+ // log on console
46
+ console . log ( error ) ;
47
+
48
+ res . status ( 500 ) . json ( {
49
+ message : "Error!" ,
50
+ error : error
51
+ } ) ;
52
+ } ) ;
53
+ }
54
+
55
+ exports . getCustomerById = ( req , res ) => {
56
+ // find all Customer information from
57
+ let customerId = req . params . id ;
58
+ Customer . findByPk ( customerId )
59
+ . then ( customer => {
60
+ res . status ( 200 ) . json ( {
61
+ message : " Successfully Get a Customer with id = " + customerId ,
62
+ customers : customer
63
+ } ) ;
64
+ } )
65
+ . catch ( error => {
66
+ // log on console
67
+ console . log ( error ) ;
68
+
69
+ res . status ( 500 ) . json ( {
70
+ message : "Error!" ,
71
+ error : error
72
+ } ) ;
73
+ } ) ;
74
+ }
75
+
76
+
77
+ exports . filteringByAge = ( req , res ) => {
78
+ let age = req . query . age ;
79
+
80
+ Customer . findAll ( {
81
+ attributes : [ 'id' , 'firstname' , 'lastname' , 'age' , 'address' , 'copyrightby' ] ,
82
+ where : { age : age }
83
+ } )
84
+ . then ( results => {
85
+ res . status ( 200 ) . json ( {
86
+ message : "Get all Customers with age = " + age ,
87
+ customers : results ,
88
+ } ) ;
89
+ } )
90
+ . catch ( error => {
91
+ console . log ( error ) ;
92
+ res . status ( 500 ) . json ( {
93
+ message : "Error!" ,
94
+ error : error
95
+ } ) ;
96
+ } ) ;
97
+ }
98
+
99
+ exports . pagination = ( req , res ) => {
100
+ try {
101
+ let page = parseInt ( req . query . page ) ;
102
+ let limit = parseInt ( req . query . limit ) ;
103
+
104
+ const offset = page ? page * limit : 0 ;
105
+
106
+ Customer . findAndCountAll ( { limit : limit , offset :offset } )
107
+ . then ( data => {
108
+ const totalPages = Math . ceil ( data . count / limit ) ;
109
+ const response = {
110
+ message : "Paginating is completed! Query parameters: page = " + page + ", limit = " + limit ,
111
+ data : {
112
+ "copyrightby" : "https://loizenai.com" ,
113
+ "totalItems" : data . count ,
114
+ "totalPages" : totalPages ,
115
+ "limit" : limit ,
116
+ "currentPageNumber" : page + 1 ,
117
+ "currentPageSize" : data . rows . length ,
118
+ "customers" : data . rows
119
+ }
120
+ } ;
121
+ res . send ( response ) ;
122
+ } ) ;
123
+ } catch ( error ) {
124
+ res . status ( 500 ) . send ( {
125
+ message : "Error -> Can NOT complete a paging request!" ,
126
+ error : error . message ,
127
+ } ) ;
128
+ }
129
+ }
130
+
131
+ exports . pagingfilteringsorting = ( req , res ) => {
132
+ try {
133
+ let page = parseInt ( req . query . page ) ;
134
+ let limit = parseInt ( req . query . limit ) ;
135
+ let age = parseInt ( req . query . age ) ;
136
+
137
+ const offset = page ? page * limit : 0 ;
138
+
139
+ console . log ( "offset = " + offset ) ;
140
+
141
+ Customer . findAndCountAll ( {
142
+ attributes : [ 'id' , 'firstname' , 'lastname' , 'age' , 'address' ] ,
143
+ where : { age : age } ,
144
+ order : [
145
+ [ 'firstname' , 'ASC' ] ,
146
+ [ 'lastname' , 'DESC' ]
147
+ ] ,
148
+ limit : limit ,
149
+ offset :offset
150
+ } )
151
+ . then ( data => {
152
+ const totalPages = Math . ceil ( data . count / limit ) ;
153
+ const response = {
154
+ message : "Pagination Filtering Sorting request is completed! Query parameters: page = " + page + ", limit = " + limit + ", age = " + age ,
155
+ data : {
156
+ "copyrightby" : "https://loizenai.com" ,
157
+ "totalItems" : data . count ,
158
+ "totalPages" : totalPages ,
159
+ "limit" : limit ,
160
+ "age-filtering" : age ,
161
+ "currentPageNumber" : page + 1 ,
162
+ "currentPageSize" : data . rows . length ,
163
+ "customers" : data . rows
164
+ }
165
+ } ;
166
+ res . send ( response ) ;
167
+ } ) ;
168
+ } catch ( error ) {
169
+ res . status ( 500 ) . send ( {
170
+ message : "Error -> Can NOT complete a paging request!" ,
171
+ error : error . message ,
172
+ } ) ;
173
+ }
174
+ }
175
+
176
+ exports . updateById = async ( req , res ) => {
177
+ try {
178
+ let customerId = req . params . id ;
179
+ let customer = await Customer . findByPk ( customerId ) ;
180
+
181
+ if ( ! customer ) {
182
+ // return a response to client
183
+ res . status ( 404 ) . json ( {
184
+ message : "Not Found for updating a customer with id = " + customerId ,
185
+ customer : "" ,
186
+ error : "404"
187
+ } ) ;
188
+ } else {
189
+ // update new change to database
190
+ let updatedObject = {
191
+ firstname : req . body . firstname ,
192
+ lastname : req . body . lastname ,
193
+ address : req . body . address ,
194
+ age : req . body . age
195
+ }
196
+ let result = await Customer . update ( updatedObject , { returning : true , where : { id : customerId } } ) ;
197
+
198
+ // return the response to client
199
+ if ( ! result ) {
200
+ res . status ( 500 ) . json ( {
201
+ message : "Error -> Can not update a customer with id = " + req . params . id ,
202
+ error : "Can NOT Updated" ,
203
+ } ) ;
204
+ }
205
+
206
+ res . status ( 200 ) . json ( {
207
+ message : "Update successfully a Customer with id = " + customerId ,
208
+ customer : updatedObject ,
209
+ } ) ;
210
+ }
211
+ } catch ( error ) {
212
+ res . status ( 500 ) . json ( {
213
+ message : "Error -> Can not update a customer with id = " + req . params . id ,
214
+ error : error . message
215
+ } ) ;
216
+ }
217
+ }
218
+
219
+ exports . deleteById = async ( req , res ) => {
220
+ try {
221
+ let customerId = req . params . id ;
222
+ let customer = await Customer . findByPk ( customerId ) ;
223
+
224
+ if ( ! customer ) {
225
+ res . status ( 404 ) . json ( {
226
+ message : "Does Not exist a Customer with id = " + customerId ,
227
+ error : "404" ,
228
+ } ) ;
229
+ } else {
230
+ await customer . destroy ( ) ;
231
+ res . status ( 200 ) . json ( {
232
+ message : "Delete Successfully a Customer with id = " + customerId ,
233
+ customer : customer ,
234
+ } ) ;
235
+ }
236
+ } catch ( error ) {
237
+ res . status ( 500 ) . json ( {
238
+ message : "Error -> Can NOT delete a customer with id = " + req . params . id ,
239
+ error : error . message ,
240
+ } ) ;
241
+ }
242
+ }
0 commit comments