/var/www/verywell.gr/server/delivery/api/controllers/tableReserv
Edit: /var/www/verywell.gr/server/delivery/api/controllers/tableReserv/cancel.js (1345B)
const { NotFound, BadRequest } = require('../../responseModels/errors')
const { isSet, isEmpty } = require('../../utils/validator.util')
const checkPermission = require('../../utils/checkPermission.util')
module.exports = function ({ db, logger }) {
return async (req, res, next) => {
logger.child({ path: req.path, request: req.body }).info()
let t1 = performance.now()
let transaction = await db.sequelize.transaction()
try {
const { uid } = req.body
if (!isSet(uid) || isEmpty(uid))
throw new BadRequest({ code: 1033, lang: req.user?.languageCode })
const tableReserv = await db.tableReserv.findOne({
where: { uid },
include: [{ model: db.order }]
})
if (!tableReserv) throw new NotFound({ code: 1034, lang: req.user?.languageCode })
tableReserv.status = 'canceled'
const tasksCancelOrders = []
for (let order of tableReserv.orders) {
order.tableId = null
order.status = ORDER_STATUS.CANCEL
tasksCancelOrders.push(order.save())
}
await Promise.all(tasksCancelOrders)
await tableReserv.save()
await transaction.commit()
await SERVICES.ReservService.CancelReserv(tableReserv)
const time = performance.now() - t1
return res.status(200).json({ status: 'success', uid: tableReserv.uid, time })
} catch (err) {
transaction?.rollback()
next(err)
}
}
}