Initial commit
This commit is contained in:
117
workers/BlastOrderWorkerBAK.js
Normal file
117
workers/BlastOrderWorkerBAK.js
Normal file
@ -0,0 +1,117 @@
|
||||
const SandboxedJobMQ = require('bullmq').SandboxedJob;
|
||||
const LibWinston = require('../library/LibWinston');
|
||||
const LibMail = require('../library/LibMail');
|
||||
const moment = require('moment');
|
||||
const GpsTracksModels = require('../models/GpsTracksModels');
|
||||
const OrdersModels = require('../models/OrdersModels');
|
||||
const OrdersVendorsModels = require('../models/OrdersVendorsModels');
|
||||
|
||||
const queueName = process.env.REDIS_QUEUE_BLAST_ORDER;
|
||||
const Logger = LibWinston.initialize(queueName);
|
||||
|
||||
module.exports = async (job) => {
|
||||
try {
|
||||
Logger.log('info', `${queueName} running: ${JSON.stringify(job.opts)}`);
|
||||
const now = moment().unix();
|
||||
const data = job.data;
|
||||
if (!data.ord_id || !data.ord_code) {
|
||||
Logger.log('info', `${queueName} running_fail: data not valid`);
|
||||
return {
|
||||
type: 'fail',
|
||||
message: 'data not valid',
|
||||
data: null,
|
||||
};
|
||||
}
|
||||
const order = await OrdersModels.showOrder({
|
||||
'id': data.ord_id,
|
||||
});
|
||||
if (order.length < 1) {
|
||||
Logger.log('info', `${queueName} running_fail: order not found on order_id ${data.ord_id}`);
|
||||
return {
|
||||
type: 'fail',
|
||||
message: `order not found on order_id ${data.ord_id}`,
|
||||
data: null,
|
||||
};
|
||||
}
|
||||
// check is accepted
|
||||
if (order[0].ord_vdr_id) {
|
||||
Logger.log('info', `${queueName} running_info: order have been accepted by another vendor ${order[0].ord_vdr_id} on order_id ${data.ord_id}`);
|
||||
return {
|
||||
type: 'success',
|
||||
message: 'order have been accepted by another vendor',
|
||||
data: null,
|
||||
};
|
||||
} else {
|
||||
await OrdersVendorsModels.updt(data.current_ord_vdr_id, {
|
||||
status: OrdersVendorsModels.STTS_NOT_READY,
|
||||
});
|
||||
}
|
||||
// blast to other vendor
|
||||
if (data.next_ord_vdr_id.length > 0) {
|
||||
for (let key in data.next_ord_vdr_id) {
|
||||
// get by vendor_id not bid token
|
||||
// let blastToVendor = await OrdersVendorsModels.getByBidToken(data.next_vdr_bid_token[key].tkn);
|
||||
let blastToVendor = await OrdersVendorsModels.getById(data.next_ord_vdr_id[key].id);
|
||||
if (blastToVendor.length < 1) {
|
||||
Logger.log('info', `${queueName} running_fail: vendor want to blast not found on order_id ${data.ord_id[key]} and bid_token ${data.next_vdr_bid_token[key].tkn}`);
|
||||
// return {
|
||||
// type: 'fail',
|
||||
// message: `vendor want to blast not found on order_id ${data.ord_id[key]} and bid_token ${data.next_vdr_bid_token[key].tkn}`,
|
||||
// data: null,
|
||||
// };
|
||||
continue;
|
||||
}
|
||||
// kalau expirednya mau diupdate
|
||||
// if (blastToVendor[0].status === OrdersVendorsModels.STTS_WAIT && blastToVendor[0].is_want === OrdersVendorsModels.IS_WANT_IGNORE) {
|
||||
// await OrdersVendorsModels.updt(data.next_ord_vdr_id[key].id, {
|
||||
// is_exp: OrdersVendorsModels.LINK_WILL_EXP,
|
||||
// // exp_at: moment.unix(now).add(10, 'minutes').unix(),
|
||||
// exp_at: moment.unix(now).add(1, 'day').unix(),
|
||||
// });
|
||||
// }
|
||||
let bidOrderMailData = {
|
||||
trx_code: order[0].ord_code,
|
||||
// client_id: order[0].ord_client_id,
|
||||
client_name: order[0].c_name,
|
||||
client_phone: '0' + order[0].c_phone_val,
|
||||
client_mail: order[0].c_mail,
|
||||
// client_addr,
|
||||
client_prefer_type_truck: order[0].prefer_type_truck,
|
||||
// weight: Number(order[0].weight),
|
||||
// cbm: Number(order[0].cbm),
|
||||
// koli: Number(order[0].koli),
|
||||
pickup_zone_title: order[0].pck_name,
|
||||
pickup_zone_addr: order[0].pck_addr,
|
||||
pickup_at: moment.unix(order[0].set_pck_at).format('DD MMM YYYY HH:mm') + ' WIB',
|
||||
drop_zone_title: order[0].drop_name,
|
||||
drop_zone_addr: order[0].drop_addr,
|
||||
// vendor_id: blastToVendor[0].vdr_id,
|
||||
vendor_name: blastToVendor[0].vdr_name,
|
||||
vendor_phone: '0' + blastToVendor[0].vdr_phone_val,
|
||||
vendor_mail: blastToVendor[0].vdr_mail,
|
||||
vendor_addr: blastToVendor[0].vdr_addr,
|
||||
vendor_acc_link: data.next_vdr_acc_link[key].link,
|
||||
};
|
||||
LibMail.sendBidOrderMail('Ada Order Masuk', blastToVendor[0].vdr_mail, bidOrderMailData);
|
||||
}
|
||||
} else {
|
||||
await OrdersModels.updt(data.ord_id, {
|
||||
status: OrdersModels.STTS_CANCEL,
|
||||
cancel_type: OrdersModels.CANCEL_TYPE_VDR_NOT_READY,
|
||||
cancel_at: now,
|
||||
});
|
||||
}
|
||||
// Logger.log('error', `${queueName} running_error: ${JSON.stringify(e, Object.getOwnPropertyNames(e))}`);
|
||||
return {
|
||||
type: 'success',
|
||||
message: 'success do blast order to vendor',
|
||||
data: null,
|
||||
};
|
||||
} catch (e) {
|
||||
return {
|
||||
type: 'error',
|
||||
message: e.message,
|
||||
e: e,
|
||||
};
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user