8221da7a
Nattapon Wongpaet
update flow membe...
|
1
2
3
4
5
|
var stats = require('../helper/stats.js');
var validatorHelper = require('../helper/validator.js');
var connection = require('../helper/connection.js');
var responseMsg = require('../helper/responseMsg.js');
var log = require('../helper/log.js');
|
6f98e3d0
Nattapon Wongpaet
add md5
|
6
|
var constant = require('../helper/constants.js')
|
27aed231
Nattapon Wongpaet
update post membe...
|
7
8
|
var env = process.env.NODE_ENV || 'development';
var cfg = require('../../config/config.js').get(env);
|
6f98e3d0
Nattapon Wongpaet
add md5
|
9
|
|
8221da7a
Nattapon Wongpaet
update flow membe...
|
10
|
const getCmd = "CustomerMembership";
|
27aed231
Nattapon Wongpaet
update post membe...
|
11
12
13
14
15
16
17
|
const sendCustomerCmd = "Customer";
const sendMemberCardCmd = "MemberCard";
const d01 = "D01";
const postMethod = constant.METHOD.POST;
const putMethod = constant.METHOD.PUT;
const getMethod = constant.METHOD.GET;
|
8221da7a
Nattapon Wongpaet
update flow membe...
|
18
|
exports.postMembership = async function (req, res, next){
|
27aed231
Nattapon Wongpaet
update post membe...
|
19
20
|
var customerId;
|
6f98e3d0
Nattapon Wongpaet
add md5
|
21
22
|
if(req.params.customerId){
customerId = req.params.customerId
|
cf541103
Nattapon Wongpaet
update post custo...
|
23
|
} else if(req.params.userData && req.params.userType){
|
27aed231
Nattapon Wongpaet
update post membe...
|
24
|
customerId = req.params.userData+"@"+req.params.userType
|
cf541103
Nattapon Wongpaet
update post custo...
|
25
|
} else if(req.body.clientName && req.body.commandId){
|
27aed231
Nattapon Wongpaet
update post membe...
|
26
|
customerId = req.body.clientName+"@"+req.body.commandId;
|
cf541103
Nattapon Wongpaet
update post custo...
|
27
|
}
|
27aed231
Nattapon Wongpaet
update post membe...
|
28
|
|
8221da7a
Nattapon Wongpaet
update flow membe...
|
29
30
|
log.startlog(req,postMethod+"_"+getCmd, req.body.commandId, customerId);
log.logDetail.addInput(req,req.body.clientName, postMethod+"_"+getCmd, constant.REQUEST, req, req.body);
|
1f123eb1
Nattapon Wongpaet
update post membe...
|
31
32
|
var err = validator(req, getCmd);
|
8221da7a
Nattapon Wongpaet
update flow membe...
|
33
|
|
b77690fa
Nattapon Wongpaet
update post custo...
|
34
|
if(err.length > 0)
|
8221da7a
Nattapon Wongpaet
update flow membe...
|
35
36
37
|
{
log.addErrorSummary(req,req.body.clientName, postMethod+"_"+getCmd, "null", "Fail");
// console.log(err);
|
1f123eb1
Nattapon Wongpaet
update post membe...
|
38
|
var response = responseMsg.error(req, getCmd, 40300);
|
27aed231
Nattapon Wongpaet
update post membe...
|
39
|
}else
|
8221da7a
Nattapon Wongpaet
update flow membe...
|
40
41
|
{
log.addSuccessSummary(req,req.body.clientName, postMethod+"_"+getCmd, "null", "Success");
|
1f123eb1
Nattapon Wongpaet
update post membe...
|
42
|
|
cf541103
Nattapon Wongpaet
update post custo...
|
43
|
var objectData = {
|
8221da7a
Nattapon Wongpaet
update flow membe...
|
44
|
cardId : req.body.cardId,
|
27aed231
Nattapon Wongpaet
update post membe...
|
45
|
cardOwnerIdList : customerId
|
b77690fa
Nattapon Wongpaet
update post custo...
|
46
|
// _flag : "or"
|
cf541103
Nattapon Wongpaet
update post custo...
|
47
48
49
|
}
//GET Customer with cardId and cardOwnerIdList
|
b77690fa
Nattapon Wongpaet
update post custo...
|
50
|
const result = await connection.requestJsonToD01(req,objectData, sendMemberCardCmd, getMethod);
|
1f123eb1
Nattapon Wongpaet
update post membe...
|
51
|
log.logDetail.addInput(req,d01, getMethod+"_"+sendMemberCardCmd, constant.RESPONSE, result, result.response);
|
cf541103
Nattapon Wongpaet
update post custo...
|
52
53
|
var objDataGetCustomer = {
|
27aed231
Nattapon Wongpaet
update post membe...
|
54
|
req : req,
|
cf541103
Nattapon Wongpaet
update post custo...
|
55
56
|
reqCustomer : {
customerId : customerId
|
27aed231
Nattapon Wongpaet
update post membe...
|
57
58
59
|
},
cmd : sendCustomerCmd,
method : getMethod,
|
cf541103
Nattapon Wongpaet
update post custo...
|
60
61
62
|
resultData : result.response.resultData
}
|
27aed231
Nattapon Wongpaet
update post membe...
|
63
|
var objDataMembership = {
|
1f123eb1
Nattapon Wongpaet
update post membe...
|
64
|
customerId : customerId,
|
27aed231
Nattapon Wongpaet
update post membe...
|
65
66
67
68
69
70
|
POST : {
req : req,
reqMembership : {
cardId : req.body.cardId,
cardOwnerIdList : [customerId]
},
|
1f123eb1
Nattapon Wongpaet
update post membe...
|
71
|
cmd : sendMemberCardCmd,
|
27aed231
Nattapon Wongpaet
update post membe...
|
72
73
74
75
76
77
78
79
80
81
82
|
method : postMethod,
resultData : result.response.resultData
},
PUT : {
req : req,
reqMembership : {
// {"add":{"@cardOwnerIdList":"testAddedCard"}}
add : {
cardOwnerIdList : customerId
}
},
|
1f123eb1
Nattapon Wongpaet
update post membe...
|
83
|
cmd : sendMemberCardCmd,
|
27aed231
Nattapon Wongpaet
update post membe...
|
84
|
method : putMethod,
|
9d8ce483
Nattapon Wongpaet
update url put
|
85
86
87
88
|
resultData : result.response.resultData
}
}
|
27aed231
Nattapon Wongpaet
update post membe...
|
89
|
|
cf541103
Nattapon Wongpaet
update post custo...
|
90
91
|
if(typeof result.err === 'undefined'){
var resultObj = result.response;
|
a0638777
Nattapon Wongpaet
add try catch and...
|
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
if(resultObj.resultCode.startsWith("2")){
if(resultObj.resultData && resultObj.resultData.length>0){
stats.receiveRestResponse(d01,getMethod,sendMemberCardCmd,constant.SUCCESS);
log.addSuccessSummary(req,d01,getMethod+"_"+sendMemberCardCmd,resultObj.resultCode,resultObj.resultDescription);
var todo = await checkOwnerCard(resultObj.resultData,objectData);
// console.log(todo);
if(todo){
var getCustomer = await getCustomerD01(req, objDataGetCustomer);
var response = await getCustomerHandler(req, getCustomer, resultObj, objDataMembership);
} else {
stats.receiveRestResponse(d01,getMethod,sendMemberCardCmd,constant.SUCCESS);
var response = responseMsg.direct(req,getCmd,constant.RESPONSECONN.MESSAGE.EXCEED);
log.addSuccessSummary(req,d01, getMethod+"_"+sendMemberCardCmd, response.resultCode, response.developerMessage);
}
} else { //data not found
stats.receiveRestResponse(d01,getMethod,sendMemberCardCmd,constant.RESPONSERESULT.DATA_NOT_FOUND.developerMessage);
log.addSuccessSummary(req,d01,getMethod+"_"+sendMemberCardCmd,constant.RESPONSERESULT.DATA_NOT_FOUND.resultCode,constant.RESPONSERESULT.DATA_NOT_FOUND.developerMessage);
//get customer
var getCustomer = await getCustomerD01(req, objDataGetCustomer);
var response = await getCustomerHandler(req, getCustomer, resultObj, objDataMembership);
|
1f123eb1
Nattapon Wongpaet
update post membe...
|
118
|
}
|
27aed231
Nattapon Wongpaet
update post membe...
|
119
|
} else if(resultObj.resultCode.startsWith("404")){ //data not found
|
cf541103
Nattapon Wongpaet
update post custo...
|
120
|
//get customer
|
a0638777
Nattapon Wongpaet
add try catch and...
|
121
122
|
var getCustomer = await getCustomerD01(req, objDataGetCustomer);
var response = await getCustomerHandler(req, getCustomer, resultObj, objDataMembership);
|
27aed231
Nattapon Wongpaet
update post membe...
|
123
|
|
ad2fa4ed
Nattapon Wongpaet
update summarylog...
|
124
|
} else if(resultObj.resultCode.startsWith("5")){
|
a0638777
Nattapon Wongpaet
add try catch and...
|
125
|
stats.receiveRestResponse(d01, getMethod, sendMemberCardCmd, constant.ERROR);
|
27aed231
Nattapon Wongpaet
update post membe...
|
126
|
var response = responseMsg.direct(req, getCmd, resultObj);
|
1f123eb1
Nattapon Wongpaet
update post membe...
|
127
|
log.addErrorSummary(req,d01, getMethod+"_"+sendMemberCardCmd, resultObj.resultCode, resultObj.developerMessage);
|
27aed231
Nattapon Wongpaet
update post membe...
|
128
|
} else {
|
a0638777
Nattapon Wongpaet
add try catch and...
|
129
130
131
132
133
134
135
136
|
stats.receiveRestResponse(d01, getMethod, sendMemberCardCmd, constant.ERROR);
var response = responseMsg.error(req, getCmd, 50000);
}
} else {
stats.receiveRestResponse(d01,getMethod,sendCusCmd,constant.ERROR);
var response = responseMsg.error(req,getCmd,50000);
}
}
|
8221da7a
Nattapon Wongpaet
update flow membe...
|
137
|
|
cf541103
Nattapon Wongpaet
update post custo...
|
138
|
log.logDetail.addOutput(req,req.body.clientName, postMethod+"_"+getCmd, constant.RESPONSE, response, response);
|
a0638777
Nattapon Wongpaet
add try catch and...
|
139
140
|
res.status(200).json(response);
next();
|
8221da7a
Nattapon Wongpaet
update flow membe...
|
141
|
};
|
a0638777
Nattapon Wongpaet
add try catch and...
|
142
143
144
145
|
function validator(req, api)
{
// console.log(req.body);
|
9d8ce483
Nattapon Wongpaet
update url put
|
146
|
var list = [];
|
27aed231
Nattapon Wongpaet
update post membe...
|
147
|
list.push([true, "body", "commandId", "int"]);
|
8221da7a
Nattapon Wongpaet
update flow membe...
|
148
|
list.push([true, "body", "clientName", "string"]);
|
a0638777
Nattapon Wongpaet
add try catch and...
|
149
|
list.push([true, "body", "cardId", "string"]);
|
8221da7a
Nattapon Wongpaet
update flow membe...
|
150
151
|
// list.push([true, "body", "clientName", "string"]);
// list.push([true, "body", "firstName", "string"]);
|
1f123eb1
Nattapon Wongpaet
update post membe...
|
152
|
// list.push([true, "body", "lastName", "string"]);
|
8221da7a
Nattapon Wongpaet
update flow membe...
|
153
154
155
156
|
// list.push([true, "body", "mobile", "string"]);
// list.push([true, "body", "emailAddress", "string"]);
var err = validatorHelper(req, list, api)
|
27aed231
Nattapon Wongpaet
update post membe...
|
157
|
if(err.length > 0)
|
8221da7a
Nattapon Wongpaet
update flow membe...
|
158
|
stats.receiveBadRequest(req.method, api);
|
8221da7a
Nattapon Wongpaet
update flow membe...
|
159
|
else
|
27aed231
Nattapon Wongpaet
update post membe...
|
160
161
162
163
164
165
166
167
168
|
stats.receiveRequest(req.method, api);
return err;
}
async function getCustomerD01(req, data){
var responseData = {
isErr : false,
|
8221da7a
Nattapon Wongpaet
update flow membe...
|
169
170
|
isDataNotFound : false,
isDirect : false
|
27aed231
Nattapon Wongpaet
update post membe...
|
171
|
};
|
8221da7a
Nattapon Wongpaet
update flow membe...
|
172
|
|
27aed231
Nattapon Wongpaet
update post membe...
|
173
|
const resultCustomer = await connection.requestJsonToD01(req, data.reqCustomer, data.cmd, data.method);
|
8221da7a
Nattapon Wongpaet
update flow membe...
|
174
175
|
var resultObj = resultCustomer.response
|
cf541103
Nattapon Wongpaet
update post custo...
|
176
177
|
if(typeof resultCustomer.err === 'undefined'){
if(resultObj.resultCode.startsWith("2")){
|
1f123eb1
Nattapon Wongpaet
update post membe...
|
178
|
if(resultObj.resultData && resultObj.resultData.length>0){
|
cf541103
Nattapon Wongpaet
update post custo...
|
179
180
|
responseData.response = resultObj;
} else {
|
27aed231
Nattapon Wongpaet
update post membe...
|
181
182
|
responseData.response = resultObj;
responseData.isDataNotFound = true;
|
cf541103
Nattapon Wongpaet
update post custo...
|
183
184
185
|
}
} else if(resultObj.resultCode.startsWith("404") || resultObj.resultCode.startsWith("5")){
responseData.response = resultObj;
|
1f123eb1
Nattapon Wongpaet
update post membe...
|
186
|
responseData.isDirect = true;
|
afef30b0
Nattapon Wongpaet
fix bug detail lo...
|
187
|
} else {
|
cf541103
Nattapon Wongpaet
update post custo...
|
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
|
responseData.response = resultObj;
responseData.isErr = true;
}
} else {
responseData.response = resultObj;
responseData.isErr = true;
}
return responseData;
}
async function postMemberCardD01(req, data){
var responseData = {
isErr : false,
isDataNotFound : false,
isDirect : false
};
// console.log(data)
const resultCustomer = await connection.requestJsonToD01(req,data.reqMembership, data.cmd, data.method);
var resultObj = resultCustomer.response
if(typeof resultCustomer.err === 'undefined'){
|
1f123eb1
Nattapon Wongpaet
update post membe...
|
213
|
if(resultObj.resultCode.startsWith("2")){
|
cf541103
Nattapon Wongpaet
update post custo...
|
214
215
|
responseData.response = resultObj;
} else if(resultObj.resultCode.startsWith("404") || resultObj.resultCode.startsWith("5")){
|
27aed231
Nattapon Wongpaet
update post membe...
|
216
217
|
responseData.response = resultObj;
responseData.isDirect = true;
|
cf541103
Nattapon Wongpaet
update post custo...
|
218
219
220
|
} else {
responseData.response = resultObj;
responseData.isErr = true;
|
1f123eb1
Nattapon Wongpaet
update post membe...
|
221
|
}
|
9d8ce483
Nattapon Wongpaet
update url put
|
222
|
} else {
|
afef30b0
Nattapon Wongpaet
fix bug detail lo...
|
223
|
responseData.response = resultObj;
|
cf541103
Nattapon Wongpaet
update post custo...
|
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
|
responseData.isErr = true;
}
return responseData;
}
async function getCustomerHandler(req, getCustomer, getMemberCard, objDataMembership){
// console.log(getCustomer.response)
if(!getCustomer.isErr){
//if get data exits post membercard
if(!getCustomer.isDataNotFound){
//post membercard
stats.receiveRestResponse(d01, getMethod, sendCustomerCmd, constant.SUCCESS);
log.addSuccessSummary(req,d01, getMethod+"_"+sendCustomerCmd, getCustomer.response.resultCode, getCustomer.response.resultDescription);
//check post or put
|
27aed231
Nattapon Wongpaet
update post membe...
|
242
243
244
245
|
function getResultTodo(req, getMemberCard, objDataMembership){
var result = {
doPost : true,
|
27aed231
Nattapon Wongpaet
update post membe...
|
246
247
248
249
250
|
doNothing : false
}
for(var i = 0 ; i < getMemberCard.resultData.length ; i++){
if(req.body.cardId === getMemberCard.resultData[i].cardId){
|
1f123eb1
Nattapon Wongpaet
update post membe...
|
251
|
if(getMemberCard.resultData[i].cardOwnerIdList.includes(objDataMembership.customerId)){
|
27aed231
Nattapon Wongpaet
update post membe...
|
252
253
|
result.doNothing = true;
break;
|
27aed231
Nattapon Wongpaet
update post membe...
|
254
|
} else {
|
1f123eb1
Nattapon Wongpaet
update post membe...
|
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
|
result.doPost = false;
break;
}
} else if(i == getMemberCard.resultData.length-1){
result.doPost = true;
break;
}
}
return result;
}
var getResult = await getResultTodo(req, getMemberCard, objDataMembership);
if(getResult.doNothing){
var response = responseMsg.success(req,getCmd)
} else {
if(getResult.doPost){
var postMemberCard = await postMemberCardD01(req, objDataMembership.POST);
var response = await postMemberCardHandler(req, postMemberCard)
} else {
var putMemberCard = await postMemberCardD01(req, objDataMembership.PUT);
var response = await postMemberCardHandler(req, putMemberCard)
}
}
|
3aa57883
Nattapon Wongpaet
fix bug
|
280
281
282
283
284
285
286
287
|
} else {
stats.receiveRestResponse(d01, getMethod, sendCustomerCmd, constant.RESPONSERESULT.DATA_NOT_FOUND.resultDescription);
var response = responseMsg.error(req, getCmd, 40401);
log.addErrorSummary(req,d01, getMethod+"_"+sendCustomerCmd, response.resultCode, response.resultDescription);
}
} else if(getCustomer.isDirect){
stats.receiveRestResponse(d01, getMethod, sendCustomerCmd, constant.ERROR);
|
1f123eb1
Nattapon Wongpaet
update post membe...
|
288
289
290
291
292
293
294
295
296
297
298
299
300
|
var response = responseMsg.direct(req, getCmd, getCustomer.response);
log.addErrorSummary(req,d01, getMethod+"_"+sendCustomerCmd, getCustomer.response.resultCode, getCustomer.response.resultDescription);
} else {
stats.receiveRestResponse(d01, getMethod, sendCustomerCmd, constant.ERROR);
var response = responseMsg.error(req, getCmd, 50000);
}
//else end flow
return response;
};
async function postMemberCardHandler(req, memberCard){
|
27aed231
Nattapon Wongpaet
update post membe...
|
301
302
303
|
if(!memberCard.isErr){
stats.receiveRestResponse(d01, postMethod, sendMemberCardCmd, constant.SUCCESS);
var response = responseMsg.direct(req, getCmd, memberCard.response);
|
a0638777
Nattapon Wongpaet
add try catch and...
|
304
|
log.addSuccessSummary(req,d01, postMethod+"_"+sendMemberCardCmd, response.resultCode, response.developerMessage);
|
27aed231
Nattapon Wongpaet
update post membe...
|
305
306
307
308
|
} else if(memberCard.isDirect){
stats.receiveRestResponse(d01, postMethod, sendMemberCardCmd, constant.ERROR);
var response = responseMsg.direct(req, getCmd, memberCard.response);
log.addErrorSummary(req,d01, postMethod+"_"+sendMemberCardCmd, memberCard.response.resultCode, memberCard.response.developerMessage);
|
1f123eb1
Nattapon Wongpaet
update post membe...
|
309
|
} else {
|
27aed231
Nattapon Wongpaet
update post membe...
|
310
311
312
313
314
315
316
317
318
319
320
321
322
323
|
stats.receiveRestResponse(d01, postMethod, sendMemberCardCmd, constant.ERROR);
var response = responseMsg.error(req, getCmd, 50000);
}
return response;
};
async function checkOwnerCard(resultData,objectData){
var userOwnerCardLimit = cfg.service.D01.userOwnerCardLimit
var userMembershipCardLimit = cfg.service.D01.userMembershipCardLimit
var cardId = objectData.cardId;
var customerId = objectData.cardOwnerIdList;
|
1f123eb1
Nattapon Wongpaet
update post membe...
|
324
325
|
var countf = async function (resultData){
|
27aed231
Nattapon Wongpaet
update post membe...
|
326
327
|
var dataCount = {
userOwnCardCount : 0,
|
a0638777
Nattapon Wongpaet
add try catch and...
|
328
|
cardOwnUserCount : 0
|
27aed231
Nattapon Wongpaet
update post membe...
|
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
|
}
for(var i = 0 ; i < resultData.length ; i++){
// console.log(resultData[i])
if(resultData[i].cardOwnerIdList.includes(customerId)){
dataCount.userOwnCardCount = dataCount.userOwnCardCount++;
}
if(resultData[i].cardId === cardId){
dataCount.cardOwnUserCount = resultData[i].cardOwnerIdList.length;
}
}
return dataCount;
};
var count = await countf(resultData);
// console.log(count);
if(count.userOwnCardCount < userMembershipCardLimit
&& count.cardOwnUserCount < userOwnerCardLimit){
return true
} else {
return false;
}
|
27aed231
Nattapon Wongpaet
update post membe...
|
352
|
};
|
27aed231
Nattapon Wongpaet
update post membe...
|
|
|