/var/www/qr4y.com/server/delivery/api/controllers
NameSizeModeActions
account/-0755rm
auth/-0755rm
country_code/-0755rm
delivery_server/-0755rm
iap/-0755rm
order/-0755rm
qr/-0755rm
system/-0755rm
branch.controller.js298690644editdlrm
branchApp.controller.js46860644editdlrm
branchReview.controller.js63210644editdlrm
company.controller.js251110644editdlrm
companyReview.controller.js63680644editdlrm
companyTypes.controller.js31340644editdlrm
delivery.controller.js28270644editdlrm
deliveryTypes.controller.js23820644editdlrm
driver.controller.js45800644editdlrm
gallery.controller.js79290644editdlrm
language.controller.js27090644editdlrm
orderCancelCause.controller.js34420644editdlrm
payTypes.controller.js23140644editdlrm
permission.controller.js25900644editdlrm
plan.controller.js36180644editdlrm
planConfig.controller.js34530644editdlrm
product.controller.js134020644editdlrm
productFilters.controller.js33010644editdlrm
productGroups.controller.js65380644editdlrm
productReview.controller.js61640644editdlrm
productTypeFilters.controller.js29640644editdlrm
productTypeFiltersValues.controller.js31490644editdlrm
productTypes.controller.js26900644editdlrm
role.controller.js39820644editdlrm
room.controller.js34430644editdlrm
table.controller.js154540644editdlrm
user.controller.js255020644editdlrm
userCart.controller.js58270644editdlrm
waiter.controller.js61670644editdlrm
Edit: /var/www/qr4y.com/server/delivery/api/controllers/delivery.controller.js (2827B)
const logger = require('../../logger')({ service: 'DeliveryController' }) const checkPermission = require('../utils/checkPermission.util') const { NotFound, BadRequest } = require('../responseModels/errors') const { isSet, isArray, isEmpty, isNumber } = require('../utils/validator.util') const fetch = require('node-fetch') const config = require('../../config/app.json') const { performance } = require('perf_hooks') const { exit } = require('process') module.exports = function ({ db }) { this.Calculate = async (req, res, next) => { logger.child({ path: req.path, request: req.body }).info() try { let t1 = performance.now() const { branchDeliveryTypeId, orderCost, coordinates } = req.body if (!isSet(branchDeliveryTypeId) || isEmpty(branchDeliveryTypeId)) { throw new BadRequest({ lang: req.user?.languageCode }) } if (!isSet(orderCost)) { throw new BadRequest({ lang: req.user?.languageCode }) } if (!isSet(coordinates) || !isArray(coordinates)) { throw new BadRequest({ lang: req.user?.languageCode }) } const response = await Promise.all([ fetch(`${config.osrm.url}${coordinates.join(';')}`), db.branchDeliveryTypes.findOne({ where: { id: branchDeliveryTypeId } }) ]) var data var rateJson try { data = await response[0].json() }catch(e){} try { rateJson = JSON.parse(response[1].rate_json) }catch(e){} if (!isSet(rateJson)) { throw new BadRequest({ lang: req.user?.languageCode }) } if (!data || data?.code != 'Ok' || !isArray(data.routes) || data.routes.length == 0) { let route = { distance: 0, distanceToPay: 0, duration: 0, timeOfDelivery: 0,//parseInt(rateJson.timeOfDelivery), orderCost: parseFloat(orderCost), freeMinCost: rateJson.fmc, deliveryCost: 0, deliveryCostCalculated: 0 } const time = performance.now() - t1 return res.status(200).json({ route, time }) } let route = { distance: data.routes[0].distance / 1000, distanceToPay: 0, duration: parseInt(data.routes[0].duration / 60), timeOfDelivery: 0,//parseInt(rateJson.timeOfDelivery), orderCost: parseFloat(orderCost), freeMinCost: rateJson.fmc, deliveryCost: 0, deliveryCostCalculated: 0 } let distanceToPay = route.distance - rateJson.fk if (distanceToPay < 0) { distanceToPay = 0 } else { route.distanceToPay = parseFloat(distanceToPay) } route.deliveryCostCalculated = Math.round( rateJson.mc + distanceToPay * rateJson.ck ) if (route.freeMinCost == 0 || route.orderCost < route.freeMinCost) { route.deliveryCost = route.deliveryCostCalculated } const time = performance.now() - t1 return res.status(200).json({ route, time }) } catch (err) { next(err) } } }