/var/www/verywell.gr/server/delivery/services
Edit: /var/www/verywell.gr/server/delivery/services/reserv.service.js (5970B)
const logger = require('../logger')({ service: 'ReservService' })
const { Op } = require('sequelize')
const PointInPolygon = require('point-in-polygon')
const { isSet, isArray } = require('../api/utils/validator.util')
module.exports = class ReservService {
constructor({ db, config }) {
this.db = db
this.config = config
this.reservs = VARS.reservs
logger.child({ service: 'ReservService', method: 'Constructor' }).info('Success')
}
async Run() {
// загрузить отделения
this.reservs = await this.db.tableReserv.findAll({
})
logger
.child({ service: 'ReservService', method: 'Run' })
.info(`Reservation loaded: ${this.reservs?.length || 0}.`)
}
async Stop() {
this.interval = null
this.reservs = []
logger.child({ service: 'ReservService', method: 'Stop' }).info('Success')
}
async LoadReserv(uid) {
return await this.db.tableReserv.findOne({
where: { uid },
})
}
async GetReserv(uid) {
let reserv = this.reservs.find((x) => x.uid === uid)
if (!reserv) {
reserv = await this.LoadReserv(uid)
if (!reserv) {
logger
.child({ service: 'ReservService', method: 'GetReserv', uid: uid })
.info('Not found')
return
}
await this.AddReserv(reserv)
logger
.child({ service: 'ReservService', method: 'GetReserv', uid: branch.uid })
.info('Success')
}
return reserv
}
async GetReservById(id) {
let reserv = this.reservs.find((x) => x.id === id)
if (!reserv) {
reserv = await this.LoadReserv(uid)
if (!reserv) {
logger
.child({ service: 'ReservService', method: 'GetReservById', uid: reserv.uid })
.info('Not found')
return
}
await this.AddReserv(reserv)
logger
.child({ service: 'ReservService', method: 'GetReservById', uid: reserv.uid })
.info('Success')
}
return reserv
}
async AddReserv(reserv) {
if (reserv) {
const idx = this.reservs.findIndex((p) => p.uid == reserv.uid)
if (idx === -1) {
this.reservs.push(reserv)
logger
.child({ service: 'ReservService', method: 'AddReserv', uid: reserv.uid })
.info('Success')
}else{
this.reservs[idx] = reserv
}
// отправить клинету
if(reserv.userId > 0)
await SERVICES.WebSocketService.SendToClient(reserv.userId, 'reservCreate', reserv.dataValues)
// отправить операторам
await SERVICES.WebSocketService.SendToOperatorsByBranch(
reserv.branchId,
'reservCreate',
reserv.dataValues
)
await SERVICES.WebSocketService.SendToWaitersByBranch(
reserv.branchId,
'reservCreate',
reserv.dataValues
)
}
}
async EditReserv(reserv) {
if (reserv) {
const idx = this.reservs.findIndex((p) => p.uid == reserv.uid)
if (idx === -1) {
this.reservs.push(reserv)
logger
.child({ service: 'ReservService', method: 'AddReserv', uid: reserv.uid })
.info('Success')
}else{
this.reservs[idx] = reserv
}
// отправить клинету
if(reserv.userId > 0)
await SERVICES.WebSocketService.SendToClient(reserv.userId, 'reservEdit', reserv.dataValues)
// отправить операторам
await SERVICES.WebSocketService.SendToOperatorsByBranch(
reserv.branchId,
'reservEdit',
reserv.dataValues
)
await SERVICES.WebSocketService.SendToWaitersByBranch(
reserv.branchId,
'reservEdit',
reserv.dataValues
)
}
}
async ConfirmReserv(reserv) {
if (reserv) {
const idx = this.reservs.findIndex((p) => p.uid == reserv.uid)
if (idx === -1) {
this.reservs.push(reserv)
logger
.child({ service: 'ReservService', method: 'AddReserv', uid: reserv.uid })
.info('Success')
}else{
this.reservs[idx] = reserv
}
// отправить клинету
if(reserv.userId > 0)
await SERVICES.WebSocketService.SendToClient(reserv.userId, 'reservConfirm', reserv.dataValues)
// отправить операторам
await SERVICES.WebSocketService.SendToOperatorsByBranch(
reserv.branchId,
'reservConfirm',
reserv.dataValues
)
await SERVICES.WebSocketService.SendToWaitersByBranch(
reserv.branchId,
'reservConfirm',
reserv.dataValues
)
}
}
async CancelReserv(reserv) {
if (reserv) {
const idx = this.reservs.findIndex((p) => p.uid == reserv.uid)
if (idx === -1) {
this.reservs.push(reserv)
logger
.child({ service: 'ReservService', method: 'AddReserv', uid: reserv.uid })
.info('Success')
}else{
this.reservs[idx] = reserv
}
// отправить клинету
if(reserv.userId > 0)
await SERVICES.WebSocketService.SendToClient(reserv.userId, 'reservCancel', reserv.dataValues)
// отправить операторам
await SERVICES.WebSocketService.SendToOperatorsByBranch(
reserv.branchId,
'reservCancel',
reserv.dataValues
)
await SERVICES.WebSocketService.SendToWaitersByBranch(
reserv.branchId,
'reservCancel',
reserv.dataValues
)
}
}
async ReloadReserv(uid) {
let reserv = await this.LoadReserv(uid)
await this.AddReserv(reserv)
return reserv
}
async RemoveReserv(uid) {
const idx = this.reservs.findIndex((p) => p.uid == uid)
if (idx !== -1) {
this.reservs.splice(idx, 1)
logger
.child({ service: 'ReservService', method: 'RemoveReserv', uid: uid })
.info('Success')
// отправить клинету
if(reserv.userId > 0)
await SERVICES.WebSocketService.SendToClient(reserv.userId, 'reservRemove', reserv.dataValues)
// отправить операторам
await SERVICES.WebSocketService.SendToOperatorsByBranch(
reserv.branchId,
'reservRemove',
reserv.dataValues
)
await SERVICES.WebSocketService.SendToWaitersByBranch(
reserv.branchId,
'reservRemove',
reserv.dataValues
)
}
}
async GetReservs() {
logger.child({ service: 'ReservService', method: 'GetReservs' }).info('Success')
return this.reservs
}
}