{"version":3,"file":"default-src_core_services_delivery_service_ts.js","mappings":"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","sources":["./src/core/services/delivery.service.ts"],"sourcesContent":["import { EventEmitter, Injectable } from \"@angular/core\";\r\nimport { DateTime } from \"luxon\";\r\nimport { isNullOrEmpty } from \"../../gyzmo-commons/helpers/null.helper\";\r\nimport { DateProvider } from \"../../gyzmo-commons/interfaces/dateProvider\";\r\nimport { AppSqlProvider } from \"../../gyzmo-commons/persistence/app.sql.provider\";\r\nimport { DeliveryDbDao } from \"../dao/db/delivery.db.dao\";\r\nimport { DeliveryWsDao } from \"../dao/ws/delivery.ws.dao\";\r\nimport { ExpenseWsDao } from \"../dao/ws/expense.ws.dao\";\r\nimport { TimeWsDao } from \"../dao/ws/timeWsDao\";\r\nimport { DeliveryDto } from \"../dto/delivery.dto\";\r\nimport { DeliveryLinkedMovementDto } from \"../dto/deliveryLinkedMovement.dto\";\r\nimport { ExpenseDto } from \"../dto/expense.dto\";\r\nimport { ExpenseCategoryDto } from \"../dto/expenseCategory.dto\";\r\nimport { ExpenseStateDto } from \"../dto/expenseState.dto\";\r\nimport { TimeDto } from \"../dto/time.dto\";\r\nimport { UserDto } from \"../dto/user.dto\";\r\nimport { DeliveryStates } from \"../interfaces/deliveryStates\";\r\nimport { LinkedMovementDtoGroup } from \"../interfaces/linked-movement-dto.group\";\r\nimport { Delivery } from \"../models/delivery.model\";\r\nimport { ServersConnectionsProvider } from \"../providers/serversConnections.provider\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class DeliveryService {\r\n private synchronisationFinishedSubject = new EventEmitter<{ day: DateTime, orders: DeliveryDto[] }>();\r\n\r\n constructor(private expenseWsDao: ExpenseWsDao,\r\n private dateProvider: DateProvider,\r\n private timeWsDao: TimeWsDao,\r\n private deliveryWsDao: DeliveryWsDao,\r\n private deliveryDbDao: DeliveryDbDao,\r\n private serversConnectionsProvider: ServersConnectionsProvider,\r\n private appSqlProvider: AppSqlProvider) {\r\n }\r\n\r\n private static isDeliverySame(localDelivery: Delivery, remoteDelivery: DeliveryDto) {\r\n return localDelivery.movement.id == remoteDelivery.movement.id;\r\n /*\r\n TODO : Dans l'idéal il faudrait un test comme cela, car pour l'instant cela ne synchronise\r\n pas le changement de conducteur ni la réouverture d'un mouvement clos\r\n mais l'object n'est pas hydraté\r\n return localDelivery.movement.id == remoteDelivery.movement.id\r\n && localDelivery.movement.driver.id == remoteDelivery.movement.driver.id\r\n && (localDelivery.movement.isClosed == 1) == remoteDelivery.movement.isClosed;\r\n */\r\n }\r\n\r\n public getSynchronisationFinishedObservable(): EventEmitter<{ day: DateTime, orders: DeliveryDto[] }> {\r\n return this.synchronisationFinishedSubject;\r\n }\r\n\r\n public publishSynchronisationFinished(data: { day: DateTime, orders: DeliveryDto[] }) {\r\n this.synchronisationFinishedSubject.emit(data);\r\n }\r\n\r\n public getLinkedMovements(deliveryDto: DeliveryDto, hydrate = false): Promise {\r\n return this.deliveryWsDao.getLinkedMovements(this.serversConnectionsProvider.getPrimaryServerConnection(), deliveryDto.movement.id, hydrate);\r\n }\r\n\r\n public getCountBetweenDates(startDate: DateTime, endDate: DateTime, myThirdPartyId: string): Promise {\r\n return new Promise(async (resolve) => {\r\n let allDeliveries = await this.deliveryWsDao.getList(this.serversConnectionsProvider.getPrimaryServerConnection(), startDate, endDate)\r\n .catch(reason => {\r\n return this.deliveryDbDao.getList(startDate, endDate, false, false)\r\n .then((deliveries: Delivery[]) => {\r\n let result = [];\r\n deliveries.forEach(delivery => {\r\n result.push(DeliveryDto.fromModel(delivery));\r\n });\r\n return result;\r\n });\r\n });\r\n\r\n let result: number[][] = [];\r\n let activeDay: DateTime = startDate;\r\n while (activeDay <= endDate) {\r\n let counts: number[] = [\r\n allDeliveries.filter((deliveryDto: DeliveryDto) => {\r\n let passFilter = deliveryDto.isOnDay(activeDay) && deliveryDto.driver.id == myThirdPartyId;\r\n return passFilter;\r\n }).length,\r\n allDeliveries.filter((deliveryDto: DeliveryDto) => {\r\n return false;\r\n }).length,\r\n allDeliveries.filter((deliveryDto: DeliveryDto) => {\r\n let passFilter = deliveryDto.isOnDay(activeDay) && deliveryDto.driver.id != myThirdPartyId;\r\n return passFilter;\r\n }).length,\r\n ];\r\n\r\n result.push(counts);\r\n\r\n activeDay = activeDay.plus({ days: 1 });\r\n }\r\n\r\n resolve(result);\r\n });\r\n }\r\n\r\n public async getListByDate(date: DateTime, deliveryPickerIdFilter?: string): Promise {\r\n let results = await this.synchronize(date, deliveryPickerIdFilter)\r\n .catch(reason => {\r\n return this.getOfflineListByDate(date, true, true, deliveryPickerIdFilter);\r\n });\r\n\r\n return results;\r\n }\r\n\r\n public getByIdOffline(id: string): Promise {\r\n return this.deliveryDbDao.get(id, true)\r\n .then(async delivery => {\r\n return DeliveryDto.fromModel(delivery);\r\n });\r\n }\r\n\r\n public async updateMovement(delivery: DeliveryDto) {\r\n await this.deliveryWsDao.save(this.serversConnectionsProvider.getPrimaryServerConnection(), delivery);\r\n\r\n return delivery;\r\n }\r\n\r\n public async changeState(delivery: DeliveryDto, deliveryState: DeliveryStates) {\r\n delivery.state = deliveryState;\r\n await this.deliveryDbDao.save(delivery.toModel());\r\n\r\n return delivery;\r\n }\r\n\r\n public async recordLunch(user: UserDto, delivery: DeliveryDto, selectedLunchId: string) {\r\n let expense = new ExpenseDto();\r\n delete expense.id;\r\n delete expense.supplier;\r\n\r\n expense.kilometers = 1;\r\n expense.driver = delivery.driver;\r\n\r\n expense.date = delivery.startDate;\r\n expense.amount = 0;\r\n\r\n expense.type = \"R\";\r\n expense.linkedMovement = { id: delivery.movement.id };\r\n\r\n expense.state = new ExpenseStateDto();\r\n expense.state.id = \"REPAS_PREPA\";\r\n\r\n expense.category = new ExpenseCategoryDto();\r\n expense.category.id = selectedLunchId;\r\n\r\n expense.startDate = this.dateProvider.now();\r\n expense.endDate = this.dateProvider.now();\r\n\r\n expense[\"paymentMethod\"] = { id: \"SANS\" };\r\n\r\n await this.expenseWsDao.save(this.serversConnectionsProvider.getPrimaryServerConnection(), expense);\r\n }\r\n\r\n public recordTimeForGroup(group: LinkedMovementDtoGroup, time: TimeDto) {\r\n return this.timeWsDao.recordTimeForGroup(this.serversConnectionsProvider.getPrimaryServerConnection(), group, time);\r\n }\r\n\r\n public recordTimeForDelivery(deliveryDto: DeliveryDto, time: TimeDto) {\r\n return this.timeWsDao.recordTimeForDelivery(this.serversConnectionsProvider.getPrimaryServerConnection(), deliveryDto, time);\r\n }\r\n\r\n private getOfflineListByDate(date: DateTime,\r\n hydrateMovement: boolean,\r\n hydrateObjects: boolean,\r\n driverIdFilter?: string): Promise {\r\n const startDate = date.startOf(\"day\");\r\n const endDate = date.endOf(\"day\");\r\n\r\n return this.deliveryDbDao.getList(startDate, endDate, hydrateMovement, hydrateObjects)\r\n .then(deliveries => {\r\n let result = [];\r\n\r\n deliveries.forEach(delivery => {\r\n if (!isNullOrEmpty(driverIdFilter)) {\r\n if (delivery.driver.id == driverIdFilter) {\r\n result.push(DeliveryDto.fromModel(delivery));\r\n }\r\n } else {\r\n result.push(DeliveryDto.fromModel(delivery));\r\n }\r\n });\r\n\r\n return result;\r\n });\r\n }\r\n\r\n private synchronize(date: DateTime, deliveryPickerIdFilter?: string): Promise {\r\n return new Promise((resolve, reject) => {\r\n let promises = [];\r\n let remoteDeliveries: DeliveryDto[] = [];\r\n let localDeliveries: Delivery[] = [];\r\n\r\n const startDate = date.startOf(\"day\");\r\n const endDate = date.endOf(\"day\");\r\n\r\n this.appSqlProvider.enableBulkWriting();\r\n\r\n promises.push(this.deliveryWsDao.getList(this.serversConnectionsProvider.getServerConnection(), startDate, endDate, false)\r\n .then(value => {\r\n remoteDeliveries = remoteDeliveries.concat(value);\r\n }));\r\n promises.push(this.deliveryDbDao.getList(startDate, endDate, false, false)\r\n .then(value => {\r\n localDeliveries = value;\r\n }));\r\n\r\n Promise.all(promises)\r\n .then(ignored => {\r\n let synchronizationNeeded = false;\r\n let synchronisationPromises = [];\r\n\r\n remoteDeliveries.forEach(remoteLtc => {\r\n let localLtc = localDeliveries.find(localLtc => {\r\n return DeliveryService.isDeliverySame(localLtc, remoteLtc);\r\n });\r\n\r\n if (!localLtc) {\r\n synchronizationNeeded = true;\r\n }\r\n });\r\n\r\n localDeliveries.forEach(localLtc => {\r\n let remoteLtc = remoteDeliveries.find(remoteLtc => {\r\n return DeliveryService.isDeliverySame(localLtc, remoteLtc);\r\n });\r\n\r\n if (!remoteLtc) {\r\n synchronisationPromises.push(this.deliveryDbDao.delete(localLtc.id));\r\n }\r\n });\r\n\r\n if (synchronizationNeeded) {\r\n synchronisationPromises.push(this.deliveryWsDao.getList(this.serversConnectionsProvider.getServerConnection(), startDate, endDate, true)\r\n .then(async deliveries => {\r\n for (const delivery of deliveries) {\r\n await this.deliveryDbDao.save(delivery.toModel());\r\n }\r\n }));\r\n }\r\n\r\n Promise.all(synchronisationPromises)\r\n .then(async (ignored) => {\r\n await this.appSqlProvider.commitBulk();\r\n\r\n this.getOfflineListByDate(date, true, true, deliveryPickerIdFilter)\r\n .then(deliveries => {\r\n this.publishSynchronisationFinished({\r\n day: date,\r\n orders: deliveries,\r\n });\r\n\r\n });\r\n\r\n resolve(remoteDeliveries);\r\n });\r\n\r\n })\r\n .catch(reason => {\r\n reject(reason);\r\n },\r\n );\r\n });\r\n }\r\n}\r\n"],"names":["EventEmitter","Injectable","isNullOrEmpty","DateProvider","AppSqlProvider","DeliveryDbDao","DeliveryWsDao","ExpenseWsDao","TimeWsDao","DeliveryDto","ExpenseDto","ExpenseCategoryDto","ExpenseStateDto","ServersConnectionsProvider","DeliveryService","_class","constructor","expenseWsDao","dateProvider","timeWsDao","deliveryWsDao","deliveryDbDao","serversConnectionsProvider","appSqlProvider","_defineProperty","isDeliverySame","localDelivery","remoteDelivery","movement","id","getSynchronisationFinishedObservable","synchronisationFinishedSubject","publishSynchronisationFinished","data","emit","getLinkedMovements","deliveryDto","hydrate","getPrimaryServerConnection","getCountBetweenDates","startDate","endDate","myThirdPartyId","_this","Promise","_ref","_asyncToGenerator","resolve","allDeliveries","getList","catch","reason","then","deliveries","result","forEach","delivery","push","fromModel","activeDay","counts","filter","passFilter","isOnDay","driver","length","plus","days","_x","apply","arguments","getListByDate","date","deliveryPickerIdFilter","_this2","results","synchronize","getOfflineListByDate","getByIdOffline","get","_ref2","_x2","updateMovement","_this3","save","changeState","deliveryState","_this4","state","toModel","recordLunch","user","selectedLunchId","_this5","expense","supplier","kilometers","amount","type","linkedMovement","category","now","recordTimeForGroup","group","time","recordTimeForDelivery","hydrateMovement","hydrateObjects","driverIdFilter","startOf","endOf","_this6","reject","promises","remoteDeliveries","localDeliveries","enableBulkWriting","getServerConnection","value","concat","all","ignored","synchronizationNeeded","synchronisationPromises","remoteLtc","localLtc","find","DeliveryService_1","delete","_ref3","_x3","_ref4","commitBulk","day","orders","_x4","__decorate","providedIn"],"sourceRoot":"webpack:///","x_google_ignoreList":[]}