Initial commit
This commit is contained in:
821
controllers/OrderController.js
Normal file
821
controllers/OrderController.js
Normal file
@ -0,0 +1,821 @@
|
||||
const moment = require('moment');
|
||||
const Validator = require('validatorjs');
|
||||
const Helper = require('../library/LibHelper');
|
||||
const response = require('../config/response');
|
||||
const LibMail = require('../library/LibMail');
|
||||
const DanaModels = require('../models/DanaModels');
|
||||
// const LibQueueBlastOrder = require('../library/LibQueueBlastOrder');
|
||||
|
||||
Validator.useLang('en');
|
||||
|
||||
class OrderController {
|
||||
|
||||
async createOrder(req, res) {
|
||||
let apiRes = {};
|
||||
try {
|
||||
const now = moment().unix();
|
||||
|
||||
const {
|
||||
trx_code,
|
||||
trx_at,
|
||||
client_id,
|
||||
client_name,
|
||||
client_phone,
|
||||
client_mail,
|
||||
client_addr,
|
||||
client_prefer_type_truck,
|
||||
// weight,
|
||||
// cbm,
|
||||
// koli,
|
||||
pickup_zone_title,
|
||||
pickup_zone_addr,
|
||||
pickup_at,
|
||||
drop_zone_title,
|
||||
drop_zone_addr,
|
||||
vendors,
|
||||
admins,
|
||||
} = req.body;
|
||||
|
||||
// input validation
|
||||
const input = {
|
||||
trx_code,
|
||||
trx_at,
|
||||
client_id,
|
||||
client_name,
|
||||
client_phone,
|
||||
client_mail,
|
||||
// client_addr,
|
||||
client_prefer_type_truck,
|
||||
// weight,
|
||||
// cbm,
|
||||
// koli,
|
||||
pickup_zone_title,
|
||||
pickup_zone_addr,
|
||||
pickup_at,
|
||||
drop_zone_title,
|
||||
drop_zone_addr,
|
||||
vendors,
|
||||
admins,
|
||||
};
|
||||
const rulesInput = {
|
||||
trx_code: 'required|string',
|
||||
trx_at: 'required|numeric',
|
||||
client_id: 'required|integer',
|
||||
client_name: 'required|string|max:255',
|
||||
client_phone: 'required|string',
|
||||
client_mail: 'required|email',
|
||||
// client_addr: 'required|string',
|
||||
client_prefer_type_truck: 'present|string',
|
||||
// weight: 'required|numeric',
|
||||
// cbm: 'required|numeric',
|
||||
// koli: 'required|numeric',
|
||||
pickup_zone_title: 'required|string',
|
||||
pickup_zone_addr: 'required|string',
|
||||
pickup_at: 'required|numeric',
|
||||
drop_zone_title: 'required|string',
|
||||
drop_zone_addr: 'required|string',
|
||||
// vendors: 'required|array',
|
||||
// 'vendors.*.vendor_id': 'required|integer',
|
||||
// 'vendors.*.vendor_name': 'required|string|max:255',
|
||||
// 'vendors.*.vendor_phone': 'required|string',
|
||||
// 'vendors.*.vendor_mail': 'required|email',
|
||||
// 'vendors.*.vendor_addr': 'present|string',
|
||||
// 'vendors.*.vendor_acc_link': 'required|string',
|
||||
// 'vendors.*.vendor_reject_link': 'required|string',
|
||||
admins: 'required|array',
|
||||
'admins.*.admin_id': 'required|integer',
|
||||
'admins.*.admin_name': 'required|string|max:255',
|
||||
'admins.*.admin_phone': 'required|string',
|
||||
'admins.*.admin_mail': 'required|email',
|
||||
// 'admins.*.admin_addr': 'present|string',
|
||||
};
|
||||
const isInputValid = new Validator(input, rulesInput);
|
||||
if (isInputValid.fails()) {
|
||||
apiRes = JSON.parse(JSON.stringify(response[422]));
|
||||
apiRes.meta.message += Helper.setErrMsg(': ' + Object.values(isInputValid.errors.all())[0][0]); // get first message
|
||||
|
||||
return res.status(200).json(apiRes);
|
||||
}
|
||||
|
||||
let resp = {};
|
||||
// for (let vendor of vendors) {
|
||||
// let bidOrderMailData = {
|
||||
// client_id,
|
||||
// client_name,
|
||||
// client_phone,
|
||||
// client_mail,
|
||||
// client_addr,
|
||||
// client_prefer_type_truck: client_prefer_type_truck,
|
||||
// weight: Number(weight),
|
||||
// cbm: Number(cbm),
|
||||
// koli: Number(koli),
|
||||
// pickup_zone_title,
|
||||
// pickup_zone_addr,
|
||||
// pickup_at: moment.unix(pickup_at).format('DD MMM YYYY HH:mm') + ' WIB',
|
||||
// drop_zone_title,
|
||||
// drop_zone_addr,
|
||||
// vendor_id: vendor.vendor_id,
|
||||
// vendor_name: vendor.vendor_name,
|
||||
// vendor_phone: vendor.vendor_phone,
|
||||
// vendor_mail: vendor.vendor_mail,
|
||||
// vendor_addr: vendor.vendor_addr,
|
||||
// };
|
||||
// LibMail.sendBidOrderMail('Ada Order Masuk', vendor.vendor_mail, bidOrderMailData);
|
||||
// }
|
||||
|
||||
for (let admin of admins) {
|
||||
let infoOrderMailData = {
|
||||
trx_code,
|
||||
trx_at: moment.unix(trx_at).format('DD MMM YYYY HH:mm') + ' WIB',
|
||||
client_id,
|
||||
client_name,
|
||||
client_phone,
|
||||
client_mail,
|
||||
// client_addr,
|
||||
client_prefer_type_truck: client_prefer_type_truck,
|
||||
// weight: Number(weight),
|
||||
// cbm: Number(cbm),
|
||||
// koli: Number(koli),
|
||||
pickup_zone_title,
|
||||
pickup_zone_addr,
|
||||
pickup_at: moment.unix(pickup_at).format('DD MMM YYYY HH:mm') + ' WIB',
|
||||
drop_zone_title,
|
||||
drop_zone_addr,
|
||||
admin_id: admin.admin_id,
|
||||
admin_name: admin.admin_name,
|
||||
admin_phone: admin.admin_phone,
|
||||
admin_mail: admin.admin_mail,
|
||||
// admin_addr: admin.admin_addr,
|
||||
};
|
||||
LibMail.sendAdminInfoOrdMail('Ada Order Masuk', admin.admin_mail, infoOrderMailData);
|
||||
}
|
||||
|
||||
let clientCreateOrdMailData = {
|
||||
trx_code,
|
||||
trx_at: moment.unix(trx_at).format('DD MMM YYYY HH:mm') + ' WIB',
|
||||
client_id,
|
||||
client_name,
|
||||
client_phone,
|
||||
client_mail,
|
||||
// client_addr,
|
||||
client_prefer_type_truck: client_prefer_type_truck,
|
||||
// weight: Number(weight),
|
||||
// cbm: Number(cbm),
|
||||
// koli: Number(koli),
|
||||
pickup_zone_title,
|
||||
pickup_zone_addr,
|
||||
pickup_at: moment.unix(pickup_at).format('DD MMM YYYY HH:mm') + ' WIB',
|
||||
drop_zone_title,
|
||||
drop_zone_addr,
|
||||
};
|
||||
LibMail.sendClientCreateOrdMail('Kamu Telah Membuat Order ' + trx_code, client_mail, clientCreateOrdMailData);
|
||||
|
||||
// success response
|
||||
apiRes = JSON.parse(JSON.stringify(response[200]));
|
||||
apiRes.meta.message = 'success create new order';
|
||||
apiRes.data = resp;
|
||||
return res.status(200).json(apiRes);
|
||||
} catch (e) {
|
||||
apiRes = JSON.parse(JSON.stringify(response[500]));
|
||||
apiRes.meta.message += Helper.setErrMsg(': ' + e.message);
|
||||
return res.status(500).json(apiRes);
|
||||
}
|
||||
}
|
||||
|
||||
async emailToVendor(req, res) {
|
||||
let apiRes = {};
|
||||
try {
|
||||
const now = moment().unix();
|
||||
|
||||
const {
|
||||
trx_code,
|
||||
trx_at,
|
||||
client_id,
|
||||
client_name,
|
||||
client_phone,
|
||||
client_mail,
|
||||
// client_addr,
|
||||
client_prefer_type_truck,
|
||||
// weight,
|
||||
// cbm,
|
||||
// koli,
|
||||
pickup_zone_title,
|
||||
pickup_zone_addr,
|
||||
pickup_at,
|
||||
drop_zone_title,
|
||||
drop_zone_addr,
|
||||
vendors,
|
||||
} = req.body;
|
||||
|
||||
// input validation
|
||||
const input = {
|
||||
trx_code,
|
||||
trx_at,
|
||||
client_id,
|
||||
client_name,
|
||||
client_phone,
|
||||
client_mail,
|
||||
// client_addr,
|
||||
client_prefer_type_truck,
|
||||
// weight,
|
||||
// cbm,
|
||||
// koli,
|
||||
pickup_zone_title,
|
||||
pickup_zone_addr,
|
||||
pickup_at,
|
||||
drop_zone_title,
|
||||
drop_zone_addr,
|
||||
vendors,
|
||||
};
|
||||
|
||||
const rulesInput = {
|
||||
trx_code: 'required|string',
|
||||
trx_at: 'required|numeric',
|
||||
client_id: 'required|integer',
|
||||
client_name: 'required|string|max:255',
|
||||
client_phone: 'required|string',
|
||||
client_mail: 'required|email',
|
||||
// client_addr: 'required|string',
|
||||
client_prefer_type_truck: 'present|string',
|
||||
// weight: 'required|numeric',
|
||||
// cbm: 'required|numeric',
|
||||
// koli: 'required|numeric',
|
||||
pickup_zone_title: 'required|string',
|
||||
pickup_zone_addr: 'required|string',
|
||||
pickup_at: 'required|numeric',
|
||||
drop_zone_title: 'required|string',
|
||||
drop_zone_addr: 'required|string',
|
||||
vendors: 'required|array',
|
||||
'vendors.*.vendor_id': 'required|integer',
|
||||
'vendors.*.vendor_name': 'required|string|max:255',
|
||||
'vendors.*.vendor_phone': 'required|string',
|
||||
'vendors.*.vendor_mail': 'required|email',
|
||||
// 'vendors.*.vendor_addr': 'present|string',
|
||||
'vendors.*.vendor_acc_link': 'required|string',
|
||||
// 'vendors.*.vendor_reject_link': 'required|string',
|
||||
};
|
||||
const isInputValid = new Validator(input, rulesInput);
|
||||
if (isInputValid.fails()) {
|
||||
apiRes = JSON.parse(JSON.stringify(response[422]));
|
||||
apiRes.meta.message += Helper.setErrMsg(': ' + Object.values(isInputValid.errors.all())[0][0]); // get first message
|
||||
|
||||
return res.status(200).json(apiRes);
|
||||
}
|
||||
|
||||
let resp = {};
|
||||
for (let vendor of vendors) {
|
||||
let bidOrderMailData = {
|
||||
trx_code,
|
||||
// client_id,
|
||||
client_name,
|
||||
client_phone,
|
||||
client_mail,
|
||||
// client_addr,
|
||||
client_prefer_type_truck: client_prefer_type_truck,
|
||||
// weight: Number(weight),
|
||||
// cbm: Number(cbm),
|
||||
// koli: Number(koli),
|
||||
pickup_zone_title,
|
||||
pickup_zone_addr,
|
||||
pickup_at: moment.unix(pickup_at).format('DD MMM YYYY HH:mm') + ' WIB',
|
||||
drop_zone_title,
|
||||
drop_zone_addr,
|
||||
// vendor_id: vendor.vendor_id,
|
||||
vendor_name: vendor.vendor_name,
|
||||
vendor_phone: vendor.vendor_phone,
|
||||
vendor_mail: vendor.vendor_mail,
|
||||
vendor_addr: vendor.vendor_addr,
|
||||
vendor_acc_link: vendor.vendor_acc_link,
|
||||
};
|
||||
LibMail.sendBidOrderMail('Ada Order Masuk', vendor.vendor_mail, bidOrderMailData);
|
||||
}
|
||||
|
||||
// success response
|
||||
apiRes = JSON.parse(JSON.stringify(response[200]));
|
||||
apiRes.meta.message = 'success send email';
|
||||
apiRes.data = resp;
|
||||
return res.status(200).json(apiRes);
|
||||
} catch (e) {
|
||||
apiRes = JSON.parse(JSON.stringify(response[500]));
|
||||
apiRes.meta.message += Helper.setErrMsg(': ' + e.message);
|
||||
return res.status(500).json(apiRes);
|
||||
}
|
||||
}
|
||||
|
||||
async emailVdrAccOrder(req, res) {
|
||||
let apiRes = {};
|
||||
try {
|
||||
const now = moment().unix();
|
||||
|
||||
const {
|
||||
trx_code,
|
||||
trx_at,
|
||||
client_id,
|
||||
client_name,
|
||||
client_phone,
|
||||
client_mail,
|
||||
// client_addr,
|
||||
client_prefer_type_truck,
|
||||
// weight,
|
||||
// cbm,
|
||||
// koli,
|
||||
pickup_zone_title,
|
||||
pickup_zone_addr,
|
||||
pickup_at,
|
||||
drop_zone_title,
|
||||
drop_zone_addr,
|
||||
vendors,
|
||||
drivers,
|
||||
} = req.body;
|
||||
|
||||
// input validation
|
||||
const input = {
|
||||
trx_code,
|
||||
trx_at,
|
||||
client_id,
|
||||
client_name,
|
||||
client_phone,
|
||||
client_mail,
|
||||
// client_addr,
|
||||
client_prefer_type_truck,
|
||||
// weight,
|
||||
// cbm,
|
||||
// koli,
|
||||
pickup_zone_title,
|
||||
pickup_zone_addr,
|
||||
pickup_at,
|
||||
drop_zone_title,
|
||||
drop_zone_addr,
|
||||
vendors,
|
||||
drivers,
|
||||
};
|
||||
const rulesInput = {
|
||||
trx_code: 'required|string',
|
||||
trx_at: 'required|numeric',
|
||||
client_id: 'required|integer',
|
||||
client_name: 'required|string|max:255',
|
||||
client_phone: 'required|string',
|
||||
client_mail: 'required|email',
|
||||
// client_addr: 'required|string',
|
||||
client_prefer_type_truck: 'present|string',
|
||||
// weight: 'required|numeric',
|
||||
// cbm: 'required|numeric',
|
||||
// koli: 'required|numeric',
|
||||
pickup_zone_title: 'required|string',
|
||||
pickup_zone_addr: 'required|string',
|
||||
pickup_at: 'required|numeric',
|
||||
drop_zone_title: 'required|string',
|
||||
drop_zone_addr: 'required|string',
|
||||
vendors: 'required|array',
|
||||
'vendors.*.vendor_id': 'required|integer',
|
||||
'vendors.*.vendor_name': 'required|string|max:255',
|
||||
'vendors.*.vendor_phone': 'required|string',
|
||||
'vendors.*.vendor_mail': 'required|email',
|
||||
// 'vendors.*.vendor_addr': 'present|string',
|
||||
'vendors.*.vendor_acc_at': 'required|numeric',
|
||||
drivers: 'required|array',
|
||||
'drivers.*.driver_id': 'required|integer',
|
||||
'drivers.*.driver_name': 'required|string|max:255',
|
||||
'drivers.*.driver_phone': 'required|string',
|
||||
'drivers.*.driver_mail': 'required|email',
|
||||
// 'drivers.*.driver_addr': 'present|string',
|
||||
};
|
||||
const isInputValid = new Validator(input, rulesInput);
|
||||
if (isInputValid.fails()) {
|
||||
apiRes = JSON.parse(JSON.stringify(response[422]));
|
||||
apiRes.meta.message += Helper.setErrMsg(': ' + Object.values(isInputValid.errors.all())[0][0]); // get first message
|
||||
|
||||
return res.status(200).json(apiRes);
|
||||
}
|
||||
|
||||
let resp = {};
|
||||
for (let vendor of vendors) {
|
||||
let vdrAccOrderMailData = {
|
||||
trx_code,
|
||||
// client_id,
|
||||
client_name,
|
||||
client_phone,
|
||||
client_mail,
|
||||
// client_addr,
|
||||
client_prefer_type_truck: client_prefer_type_truck,
|
||||
// weight: Number(weight),
|
||||
// cbm: Number(cbm),
|
||||
// koli: Number(koli),
|
||||
pickup_zone_title,
|
||||
pickup_zone_addr,
|
||||
pickup_at: moment.unix(pickup_at).format('DD MMM YYYY HH:mm') + ' WIB',
|
||||
drop_zone_title,
|
||||
drop_zone_addr,
|
||||
// vendor_id: vendor.vendor_id,
|
||||
vendor_name: vendor.vendor_name,
|
||||
vendor_phone: vendor.vendor_phone,
|
||||
vendor_mail: vendor.vendor_mail,
|
||||
vendor_addr: vendor.vendor_addr,
|
||||
acc_at: moment.unix(vendor.vendor_acc_at).format('DD MMM YYYY HH:mm') + ' WIB',
|
||||
};
|
||||
LibMail.sendVdrAccOrderMail('Kamu Telah Menerima Order', vendor.vendor_mail, vdrAccOrderMailData);
|
||||
}
|
||||
|
||||
for (let driver of drivers) {
|
||||
let driverGetOrderMailData = {
|
||||
trx_code,
|
||||
// client_id,
|
||||
client_name,
|
||||
client_phone,
|
||||
client_mail,
|
||||
// client_addr,
|
||||
client_prefer_type_truck: client_prefer_type_truck,
|
||||
// weight: Number(weight),
|
||||
// cbm: Number(cbm),
|
||||
// koli: Number(koli),
|
||||
pickup_zone_title,
|
||||
pickup_zone_addr,
|
||||
pickup_at: moment.unix(pickup_at).format('DD MMM YYYY HH:mm') + ' WIB',
|
||||
drop_zone_title,
|
||||
drop_zone_addr,
|
||||
// driver_id: driver.driver_id,
|
||||
driver_name: driver.driver_name,
|
||||
driver_phone: driver.driver_phone,
|
||||
driver_mail: driver.driver_mail,
|
||||
driver_addr: driver.driver_addr,
|
||||
acc_at: moment.unix(vendors[0].vendor_acc_at).format('DD MMM YYYY HH:mm') + ' WIB',
|
||||
};
|
||||
LibMail.sendDrvGetOrderMail('Kamu Mendapatkan Order', driver.driver_mail, driverGetOrderMailData);
|
||||
}
|
||||
|
||||
let sendClientOrderHaveBeenAccMailData = {
|
||||
trx_code,
|
||||
// client_id,
|
||||
client_name,
|
||||
client_phone,
|
||||
client_mail,
|
||||
// client_addr,
|
||||
client_prefer_type_truck: client_prefer_type_truck,
|
||||
// weight: Number(weight),
|
||||
// cbm: Number(cbm),
|
||||
// koli: Number(koli),
|
||||
pickup_zone_title,
|
||||
pickup_zone_addr,
|
||||
pickup_at: moment.unix(pickup_at).format('DD MMM YYYY HH:mm') + ' WIB',
|
||||
drop_zone_title,
|
||||
drop_zone_addr,
|
||||
// vendor_id: vendors[0].vendor_id,
|
||||
vendor_name: vendors[0].vendor_name,
|
||||
vendor_phone: vendors[0].vendor_phone,
|
||||
vendor_mail: vendors[0].vendor_mail,
|
||||
vendor_addr: vendors[0].vendor_addr,
|
||||
// driver_id: drivers[0].driver_id,
|
||||
driver_name: drivers[0].driver_name,
|
||||
driver_phone: drivers[0].driver_phone,
|
||||
driver_mail: drivers[0].driver_mail,
|
||||
driver_addr: drivers[0].driver_addr,
|
||||
acc_at: moment.unix(vendors[0].vendor_acc_at).format('DD MMM YYYY HH:mm') + ' WIB',
|
||||
};
|
||||
LibMail.sendClientOrderHaveBeenAccMail('Order Kamu Telah Diambil Driver', client_mail, sendClientOrderHaveBeenAccMailData);
|
||||
|
||||
// success response
|
||||
apiRes = JSON.parse(JSON.stringify(response[200]));
|
||||
apiRes.meta.message = 'success send email';
|
||||
apiRes.data = resp;
|
||||
return res.status(200).json(apiRes);
|
||||
} catch (e) {
|
||||
apiRes = JSON.parse(JSON.stringify(response[500]));
|
||||
apiRes.meta.message += Helper.setErrMsg(': ' + e.message);
|
||||
return res.status(500).json(apiRes);
|
||||
}
|
||||
}
|
||||
|
||||
async delayBlastOrderBAK(req, res) {
|
||||
let apiRes = {};
|
||||
try {
|
||||
const now = moment().unix();
|
||||
|
||||
const {
|
||||
ord_id,
|
||||
ord_code,
|
||||
current_ord_vdr_id,
|
||||
next_ord_vdr_id,
|
||||
next_vdr_bid_token,
|
||||
next_vdr_acc_link,
|
||||
} = req.body;
|
||||
|
||||
// input validation
|
||||
const input = {
|
||||
ord_id,
|
||||
ord_code,
|
||||
current_ord_vdr_id,
|
||||
next_ord_vdr_id,
|
||||
next_vdr_bid_token,
|
||||
next_vdr_acc_link,
|
||||
};
|
||||
|
||||
const rulesInput = {
|
||||
ord_id: 'required|integer|min:1',
|
||||
ord_code: 'required|string',
|
||||
current_ord_vdr_id: 'required|integer|min:1',
|
||||
next_ord_vdr_id: 'present|array',
|
||||
next_vdr_bid_token: 'present|array',
|
||||
next_vdr_acc_link: 'present|array',
|
||||
};
|
||||
const isInputValid = new Validator(input, rulesInput);
|
||||
if (isInputValid.fails()) {
|
||||
apiRes = JSON.parse(JSON.stringify(response[422]));
|
||||
apiRes.meta.message += Helper.setErrMsg(': ' + Object.values(isInputValid.errors.all())[0][0]); // get first message
|
||||
|
||||
return res.status(200).json(apiRes);
|
||||
}
|
||||
|
||||
LibQueueBlastOrder.addQueue({
|
||||
ord_id,
|
||||
ord_code,
|
||||
current_ord_vdr_id,
|
||||
next_ord_vdr_id,
|
||||
next_vdr_bid_token,
|
||||
next_vdr_acc_link,
|
||||
label: 'Delay Blast Order to Another Vendor',
|
||||
delay: 10 * (60 * 1000), // 600000 || 10 minute || 10 * (60 * 1000)
|
||||
});
|
||||
|
||||
// success response
|
||||
apiRes = JSON.parse(JSON.stringify(response[200]));
|
||||
apiRes.meta.message = 'success blast order';
|
||||
return res.status(200).json(apiRes);
|
||||
} catch (e) {
|
||||
apiRes = JSON.parse(JSON.stringify(response[500]));
|
||||
apiRes.meta.message += Helper.setErrMsg(': ' + e.message);
|
||||
return res.status(500).json(apiRes);
|
||||
}
|
||||
}
|
||||
|
||||
async delayBlastOrder(req, res) {
|
||||
let apiRes = {};
|
||||
try {
|
||||
const now = moment().unix();
|
||||
|
||||
const {
|
||||
ord_id,
|
||||
ord_code,
|
||||
base_link,
|
||||
} = req.body;
|
||||
|
||||
// input validation
|
||||
const input = {
|
||||
ord_id,
|
||||
ord_code,
|
||||
base_link,
|
||||
};
|
||||
|
||||
const rulesInput = {
|
||||
ord_id: 'required|integer|min:1',
|
||||
ord_code: 'required|string',
|
||||
base_link: 'required|string',
|
||||
};
|
||||
const isInputValid = new Validator(input, rulesInput);
|
||||
if (isInputValid.fails()) {
|
||||
apiRes = JSON.parse(JSON.stringify(response[422]));
|
||||
apiRes.meta.message += Helper.setErrMsg(': ' + Object.values(isInputValid.errors.all())[0][0]); // get first message
|
||||
|
||||
return res.status(200).json(apiRes);
|
||||
}
|
||||
|
||||
LibQueueBlastOrder.addQueue({
|
||||
ord_id,
|
||||
ord_code,
|
||||
base_link,
|
||||
delay: 10 * (60 * 1000), // 600000 || 10 minute || 10 * (60 * 1000)
|
||||
});
|
||||
LibQueueBlastOrder.addQueue({
|
||||
ord_id,
|
||||
ord_code,
|
||||
base_link,
|
||||
delay: 20 * (60 * 1000), // 600000 || 20 minute || 20 * (60 * 1000)
|
||||
});
|
||||
LibQueueBlastOrder.addQueue({
|
||||
ord_id,
|
||||
ord_code,
|
||||
base_link,
|
||||
delay: 30 * (60 * 1000), // 600000 || 30 minute || 30 * (60 * 1000)
|
||||
});
|
||||
|
||||
// success response
|
||||
apiRes = JSON.parse(JSON.stringify(response[200]));
|
||||
apiRes.meta.message = 'success blast order';
|
||||
return res.status(200).json(apiRes);
|
||||
} catch (e) {
|
||||
apiRes = JSON.parse(JSON.stringify(response[500]));
|
||||
apiRes.meta.message += Helper.setErrMsg(': ' + e.message);
|
||||
return res.status(500).json(apiRes);
|
||||
}
|
||||
}
|
||||
|
||||
async sendFinanceInfoTfPocket(req, res) {
|
||||
let apiRes = {};
|
||||
try {
|
||||
const now = moment().unix();
|
||||
|
||||
const {
|
||||
trx_code,
|
||||
drv_name,
|
||||
pickup_zone_title,
|
||||
pickup_zone_addr,
|
||||
drop_zone_title,
|
||||
drop_zone_addr,
|
||||
pocket_total,
|
||||
bank_name,
|
||||
bank_code,
|
||||
bank_branch_name,
|
||||
bank_acc_name,
|
||||
bank_acc_no,
|
||||
admins,
|
||||
} = req.body;
|
||||
|
||||
// input validation
|
||||
const input = {
|
||||
trx_code,
|
||||
drv_name,
|
||||
pickup_zone_title,
|
||||
pickup_zone_addr,
|
||||
drop_zone_title,
|
||||
drop_zone_addr,
|
||||
pocket_total,
|
||||
bank_name,
|
||||
bank_code,
|
||||
bank_branch_name,
|
||||
bank_acc_name,
|
||||
bank_acc_no,
|
||||
admins,
|
||||
};
|
||||
const rulesInput = {
|
||||
trx_code: 'required|string|max:255',
|
||||
drv_name: 'required|string|max:255',
|
||||
pickup_zone_title: 'required|string|max:255',
|
||||
pickup_zone_addr: 'required|string',
|
||||
drop_zone_title: 'required|string|max:255',
|
||||
drop_zone_addr: 'required|string',
|
||||
pocket_total: 'required|string|max:255',
|
||||
bank_name: 'required|string',
|
||||
bank_code: 'required|string|max:255',
|
||||
bank_branch_name: 'string',
|
||||
bank_acc_name: 'required|string',
|
||||
bank_acc_no: 'required|string',
|
||||
admins: 'required|array',
|
||||
// 'admins.*.admin_id': 'required|integer',
|
||||
'admins.*.admin_name': 'required|string|max:255',
|
||||
'admins.*.admin_phone': 'required|string',
|
||||
'admins.*.admin_mail': 'required|email',
|
||||
};
|
||||
const isInputValid = new Validator(input, rulesInput);
|
||||
if (isInputValid.fails()) {
|
||||
apiRes = JSON.parse(JSON.stringify(response[422]));
|
||||
apiRes.meta.message += Helper.setErrMsg(': ' + Object.values(isInputValid.errors.all())[0][0]); // get first message
|
||||
|
||||
return res.status(200).json(apiRes);
|
||||
}
|
||||
|
||||
let resp = {};
|
||||
|
||||
let mailData = {
|
||||
trx_code,
|
||||
drv_name,
|
||||
pickup_zone_title,
|
||||
pickup_zone_addr,
|
||||
drop_zone_title,
|
||||
drop_zone_addr,
|
||||
pocket_total,
|
||||
bank_name,
|
||||
bank_code,
|
||||
bank_branch_name,
|
||||
bank_acc_name,
|
||||
bank_acc_no,
|
||||
};
|
||||
|
||||
for (let admin of admins) {
|
||||
mailData.admin_name = admin.admin_name;
|
||||
LibMail.sendFinanceInfoTfPocket('Transfer uang saku order ' + trx_code, admin.admin_mail, mailData);
|
||||
}
|
||||
|
||||
// success response
|
||||
apiRes = JSON.parse(JSON.stringify(response[200]));
|
||||
apiRes.meta.message = 'success send mail';
|
||||
apiRes.data = resp;
|
||||
return res.status(200).json(apiRes);
|
||||
} catch (e) {
|
||||
apiRes = JSON.parse(JSON.stringify(response[500]));
|
||||
apiRes.meta.message += Helper.setErrMsg(': ' + e.message);
|
||||
return res.status(500).json(apiRes);
|
||||
}
|
||||
}
|
||||
|
||||
async sendFinanceInfoDanaAmount(req, res) {
|
||||
let apiRes = {};
|
||||
try {
|
||||
const now = moment().unix();
|
||||
|
||||
const {
|
||||
trx_code,
|
||||
drv_name,
|
||||
pickup_zone_title,
|
||||
pickup_zone_addr,
|
||||
drop_zone_title,
|
||||
drop_zone_addr,
|
||||
pocket_total,
|
||||
bank_name,
|
||||
bank_code,
|
||||
bank_branch_name,
|
||||
bank_acc_name,
|
||||
bank_acc_no,
|
||||
admins,
|
||||
} = req.body;
|
||||
|
||||
// input validation
|
||||
const input = {
|
||||
trx_code,
|
||||
drv_name,
|
||||
pickup_zone_title,
|
||||
pickup_zone_addr,
|
||||
drop_zone_title,
|
||||
drop_zone_addr,
|
||||
pocket_total,
|
||||
bank_name,
|
||||
bank_code,
|
||||
bank_branch_name,
|
||||
bank_acc_name,
|
||||
bank_acc_no,
|
||||
admins,
|
||||
};
|
||||
const rulesInput = {
|
||||
trx_code: 'required|string|max:255',
|
||||
drv_name: 'required|string|max:255',
|
||||
pickup_zone_title: 'required|string|max:255',
|
||||
pickup_zone_addr: 'required|string',
|
||||
drop_zone_title: 'string|max:255',
|
||||
drop_zone_addr: 'string',
|
||||
pocket_total: 'required|string|max:255',
|
||||
bank_name: 'required|string',
|
||||
bank_code: 'required|string|max:255',
|
||||
bank_branch_name: 'string',
|
||||
bank_acc_name: 'required|string',
|
||||
bank_acc_no: 'required|string',
|
||||
admins: 'required|array',
|
||||
// 'admins.*.admin_id': 'required|integer',
|
||||
'admins.*.admin_name': 'required|string|max:255',
|
||||
'admins.*.admin_phone': 'required|string',
|
||||
'admins.*.admin_mail': 'required|email',
|
||||
};
|
||||
const isInputValid = new Validator(input, rulesInput);
|
||||
if (isInputValid.fails()) {
|
||||
apiRes = JSON.parse(JSON.stringify(response[422]));
|
||||
apiRes.meta.message += Helper.setErrMsg(': ' + Object.values(isInputValid.errors.all())[0][0]); // get first message
|
||||
|
||||
return res.status(200).json(apiRes);
|
||||
}
|
||||
|
||||
const danas = await DanaModels.list({'id': DanaModels.PK_ID, 'limit': 1});
|
||||
if (danas.length < 1) {
|
||||
apiRes = JSON.parse(JSON.stringify(response[400]));
|
||||
apiRes.meta.message = 'dana error';
|
||||
return res.status(200).json(apiRes);
|
||||
}
|
||||
const dana = danas[0];
|
||||
|
||||
let resp = {};
|
||||
|
||||
let mailData = {
|
||||
trx_code,
|
||||
drv_name,
|
||||
pickup_zone_title,
|
||||
pickup_zone_addr,
|
||||
drop_zone_title,
|
||||
drop_zone_addr,
|
||||
pocket_total,
|
||||
bank_name,
|
||||
bank_code,
|
||||
bank_branch_name,
|
||||
bank_acc_name,
|
||||
bank_acc_no,
|
||||
dana_current: 'Rp'+((new Intl.NumberFormat('id-ID')).format(dana.amt)).split('.').join('-').split(',').join('.').split('-').join(','), // yang . => - || , => . || - => ,,
|
||||
dana_minimum: 'Rp'+((new Intl.NumberFormat('id-ID')).format(DanaModels.MINIMUM_AMT)).split('.').join('-').split(',').join('.').split('-').join(','), // yang . => - || , => . || - => ,,
|
||||
};
|
||||
|
||||
for (let admin of admins) {
|
||||
mailData.admin_name = admin.admin_name;
|
||||
LibMail.sendFinanceInfoDanaAmount('Saldo Dana Tidak Mencukupi', admin.admin_mail, mailData);
|
||||
}
|
||||
|
||||
// success response
|
||||
apiRes = JSON.parse(JSON.stringify(response[200]));
|
||||
apiRes.meta.message = 'success send mail';
|
||||
apiRes.data = resp;
|
||||
return res.status(200).json(apiRes);
|
||||
} catch (e) {
|
||||
apiRes = JSON.parse(JSON.stringify(response[500]));
|
||||
apiRes.meta.message += Helper.setErrMsg(': ' + e.message);
|
||||
return res.status(500).json(apiRes);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
const object = new OrderController();
|
||||
|
||||
module.exports = object;
|
||||
Reference in New Issue
Block a user