import { Component, Injector, OnInit, ViewChild, ViewEncapsulation, Input, OnDestroy, ElementRef, Renderer, QueryList, ViewChildren, ViewContainerRef, Output, EventEmitter } from '@angular/core'; import { ActivatedRoute, Router } from '@angular/router'; import { AppConsts } from '@shared/AppConsts'; import { appModuleAnimation } from '@shared/animations/routerTransition'; import { AppComponentBase } from '@shared/common/app-component-base'; import { RouteListDto, RouteServiceProxy, ControllerRouteServiceProxy, ControllerKpiCountServiceProxy, UpdateRouteInput, UpdateCompleteRouteInput, VehicleLogServiceProxy, ShippingPackageServiceProxy, RealTimeEtaServiceProxy, GetControllerRouteStatusInputDto, UpdateLockedRouteInput, ShowBlindCountCodeInput, UpdateDepartureRouteInput, NameValueDto, VehicleInput, DriverListInput, ControllerRouteDetailServiceProxy, UpdateRouteByStopInput, ControllerRouteListDto } from '@shared/service-proxies/service-proxies'; import * as moment from 'moment-timezone'; import { LazyLoadEvent } from 'primeng/components/common/lazyloadevent'; import { Paginator } from 'primeng/components/paginator/paginator'; import { Table } from 'primeng/components/table/table'; import { HttpClient } from '@angular/common/http'; import { finalize } from 'rxjs/operators'; import { Subscription } from 'rxjs'; import { CheckBoxComponent } from '@app/sprintship/core-components/checkbox/checkbox.component.ts'; import { StatusComponent } from '@app/sprintship/controller/status/status.component.ts'; import { ControllerRoutesService } from '@app/sprintship/controller/routes/croutes.service'; import * as _ from 'lodash'; import * as status_icon from '@app/sprintship/controller/status/status_icon.json'; import { KPIBoxComponent } from '@app/sprintship/controller/kpi-box/kpi-box.component'; import { TimerService } from '@app/sprintship/core-components/timer/timer.service'; import { RouteDetailModal } from '@app/sprintship/controller/route-detail/route-detail-modal.component'; import { MarkAsCompleteModalComponent } from '../routes/mark-as-complete-modal.component'; import { analyzeAndValidateNgModules } from '@angular/compiler'; import { CommonLookupModalComponent } from '@app/shared/common/lookup/common-lookup-modal.component'; import { DeleteRoutesComponent } from './delete-routes.component'; import { AssignTenantComponent } from '@app/sprintship/supportTicket/assign-tenant.component'; import { AssignStopModalComponent } from '@app/shared/common/lookup/assignStop-modal.component'; import { EntityTypeHistoryModalComponent } from '@app/shared/common/entityHistory/entity-type-history-modal.component'; import { RouteDetailComponent } from '../route-detail/route-detail.component'; import { FreezeModalComponent } from '@app/sprintship/controller/modals/freeze-modal.component'; import { UnfreezeModalComponent } from '@app/sprintship/controller/modals/unfreeze-modal.component'; declare var $: any; declare var jquery: any; @Component({ selector: 'dispatch-details', templateUrl: 'dispatch-details.component.html', encapsulation: ViewEncapsulation.None, styleUrls: ['./dispatch-details.component.less', './dispatch-details.general.component.less'], animations: [appModuleAnimation()], providers: [VehicleLogServiceProxy, RealTimeEtaServiceProxy] }) export class DispatchDetailsComponents extends AppComponentBase implements OnInit, OnDestroy { @ViewChild('stopList', { static: true }) stopList: AssignStopModalComponent; @ViewChild('driversList', { static: true }) driversList: CommonLookupModalComponent; @ViewChild('dataTable', { static: true }) dataTable: Table; @ViewChild('paginator', { static: true }) paginator: Paginator; @ViewChildren('CheckBoxComponent') chkBoxList: QueryList; @ViewChildren(KPIBoxComponent) tKpiBoxComponents: KPIBoxComponent; @ViewChild(StatusComponent, { static: false }) statusDiv: StatusComponent; @ViewChild('routeDetailModal', { static: true }) routeDetailModal: RouteDetailModal; @ViewChild('markAsCompleteModalComponent', { static: true }) markAsCompleteModalComponent: MarkAsCompleteModalComponent; @ViewChild('deleteRoutes', { static: false }) deleteRoutes: DeleteRoutesComponent; @ViewChild('assignTenant', { static: false }) assignTenant: AssignTenantComponent; /**** ELEMENTS ****/ @ViewChild('dataTable', { read: ElementRef, static: true }) dTable: ElementRef; @ViewChild('entityTypeHistoryModal', { static: true }) entityTypeHistoryModal: EntityTypeHistoryModalComponent; _entityTypeFullName = 'SprintTek.Shipping.Routes.Route'; entityHistoryEnabled = false; @ViewChild('freezeModal', { static: true }) freezeModal: FreezeModalComponent; @ViewChild('unfreezeModal', { static: true }) unfreezeModal: UnfreezeModalComponent; @Input() filters: { locationFilter: number; statusFilter: number; typeFilter: number; startDate: Date; endDate: Date; datePicked: string; filterTxt: string, routeId: string, routeName: string, vehicleName: string, driverName: string, completed: boolean, orderType: Array, osName: string, routeIds: Array, managerIds: Array, routeTypeIds: Array, } = {}; device_type: string; routeIds: any; routeIdsStops: GetControllerRouteStatusInputDto = new GetControllerRouteStatusInputDto(); attr: any; respkey: any; saving = false; completion: any; route: UpdateRouteInput = new UpdateRouteInput(); updateCompletedInput = new UpdateCompleteRouteInput(); updateDepartureRouteInput = new UpdateDepartureRouteInput(); updateLockedInput = new UpdateLockedRouteInput(); showBlindCountCodes = new ShowBlindCountCodeInput() totalMileage: number; given: number; convert: any; hours: number; etaHours: any; minutes: number; routeIdStatus: any; etaMinutes: any; routeIdsForEta: any; routeIdsToLab: any; routeIdsToClinics: any; totalGroup: number; key2: any; driverStatusDisplay: boolean; packages: Array<{ id: number, name: string }> = new Array(); filterFlyout: {}; filterFlyoutHolder = []; finalFilterResult = []; routeGroupDetails = []; sprintIds: Array = new Array(); sprintIdsList = []; selectAll: boolean = false; checkboxes_: boolean = false; @Input('search_string') search: string; @Input('edition') edition: string; @Input('firstload') firstload: boolean; subscription: Subscription; kpiClick: boolean; routeTypeIds: any; managerIds: any; groupGridBy: any; totalNoStatus: number; noResultFound: boolean = false; selectedRouteId: any; localRouteIds = []; routeId: number = null; private cBox: CheckBoxComponent; constructor( injector: Injector, private _routeService: RouteServiceProxy, private _controllerRouteService: ControllerRouteServiceProxy, private _cRoutesService: ControllerRoutesService, private _cKpiService: ControllerKpiCountServiceProxy, private _vehicleLogsService: VehicleLogServiceProxy, private _controllerRoutePackages: ShippingPackageServiceProxy, private _timerService: TimerService, private router: Router, private renderer: Renderer, private elem: ElementRef, private _realTimeEtaService: RealTimeEtaServiceProxy, private viewContainerRef: ViewContainerRef, private _controllerRouteDetails: ControllerRouteDetailServiceProxy, ) { super(injector); // this.subscription = _cRoutesService.setStatisticsObj.subscribe(details => { // }); this.kpiClick = false; this.subscription = _timerService.tmrMediator.subscribe(details => {}); this.getPackages(); } ngOnInit(): void { this.setIsEntityHistoryEnabled(); this.sprintIdsList = []; localStorage.setItem('routeIds', JSON.stringify(this.sprintIdsList)); this.groupGridBy = localStorage.getItem('groupGridBy'); this.driverStatusDisplay = false; //assign driver this.driversList.configure({ title: this.l('Assign Driver'), dataSource: (skipCount: number, maxResultCount: number, filter: string, tenantId?: number, locationId?: number) => { let input = new DriverListInput(); input.filter = filter; input.maxResultCount = maxResultCount; input.skipCount = skipCount; input.tenantId = tenantId; input.locationId = parseInt(localStorage.getItem('operatingLocationId')); return this._controllerRouteDetails.assignDriversList(input); } }); // assign stop this.stopList.configure({ title: this.l('Select Delivery Address'), dataSource: (skipCount: number, maxResultCount: number, filter: string, tenantId?: number, locationId?: number) => { // let input = any; // input.filter = filter; // input.maxResultCount = maxResultCount; // input.skipCount = skipCount; // input.tenantId = tenantId; // input.locationId = parseInt(localStorage.getItem('operatingLocationId')); return this._controllerRouteDetails.getAllStopsList(tenantId, parseInt(localStorage.getItem('operatingLocationId')), maxResultCount, skipCount, filter); } }); } setFilter(value: string) { this.search = value; } ngOnDestroy(): void { } formatDate(date) { var d = new Date(date), month = '' + (d.getMonth() + 1), day = '' + d.getDate(), year = d.getFullYear(); if (month.length < 2) month = '0' + month; if (day.length < 2) day = '0' + day; return [year, month, day].join('-'); } populateTable(event?: LazyLoadEvent): void { this.spinnerService.show(); this.groupGridBy = localStorage.getItem('groupGridBy'); let timeId = localStorage.getItem('timeZoneId'); this.routeTypeIds = JSON.parse(localStorage.getItem('selectedRouteTypeIds')) == null ? undefined : JSON.parse(localStorage.getItem('selectedRouteTypeIds')); this.managerIds = JSON.parse(localStorage.getItem('selectedManagerIds')) == null ? undefined : JSON.parse(localStorage.getItem('selectedManagerIds')); var that = this; var key, key2, arrResult = [], resp; this.attr = []; that.routeIds = []; that.routeIdStatus = []; that.routeIdsForEta = []; that.routeIdsToLab = []; that.routeIdsToClinics = []; if (this.filters.locationFilter !== undefined) { this.device_type = 'IOS'; // that.primengTableHelper.defaultRecordsCountPerPage = 50; if (this.primengTableHelper.shouldResetPaging(event)) { this.paginator.changePage(0); return; } let routeIdObj = {}; this.filterFlyoutHolder = []; this.finalFilterResult = []; if (this.kpiClick == false && this.edition === 'LABORATORY') { this._cKpiService.getKPICountLab(undefined, this.filters.locationFilter, undefined, this.filters.routeId, this.filters.vehicleName, this.filters.routeName, this.filters.driverName, moment.tz(localStorage.getItem('loadDate'), timeId), moment.tz(localStorage.getItem('loadDate'), timeId).endOf('day'), this.filters.filterTxt, undefined, undefined, this.filters.routeIds, this.filters.orderType, this.edition, this.routeTypeIds, this.managerIds, undefined, undefined, this.primengTableHelper.getSorting(this.dataTable), this.primengTableHelper.getMaxResultCount(this.paginator, event), this.primengTableHelper.getSkipCount(this.paginator, event)) .subscribe(resultCount => { that._cRoutesService.setStatistics({ 'total_stops': resultCount.totalStops, 'total_callins': resultCount.totalWillCalls, 'total_routes': resultCount.totalRoutes, 'completed_stops': resultCount.totalCompletedStops, 'completed_callins': resultCount.totalCompletedWillCalls, 'total_completed_routes': resultCount.totalCompletedRoutes, 'total_unassigned_routes': resultCount.totalUnassignedRoutes, 'total_unassigned_stops': resultCount.totalUnassignedStops, 'total_not_checkin': resultCount.totalNotCheckedIn, 'total_twenty_minutes': resultCount.kpiCountLates[0].total20Minutes, 'total_thirty_minutes': resultCount.kpiCountLates[0].total30Minutes, 'unassigned_routes_ids': resultCount.unassignedRoutesIds, 'not_check_in_routes_ids': resultCount.notCheckedInRouteIds, 'completed_route_ids': resultCount.completedRouteIds, 'late20_route_ids': resultCount.kpiCountLates[0].total20MinutesList, 'late30_route_ids': resultCount.kpiCountLates[0].total30MinutesList, 'unassigned_willcall_ids': resultCount.unassignedWillCallIds, 'completed_stop_ids': resultCount.completedStopsIds, 'completed_willcalls_ids': resultCount.completedWillCallIds, 'incident': resultCount.incidentIds, 'total_unassigned_willcalls': resultCount.totalUnassignedWillCalls }); }); // this._cKpiService.getKPICountLaboratory(undefined, this.filters.locationFilter, undefined, this.filters.routeId, this.filters.vehicleName, this.filters.routeName, this.filters.driverName, // moment.tz(localStorage.getItem('loadDate'), timeId), // moment.tz(localStorage.getItem('loadDate'), timeId).endOf('day'), this.filters.filterTxt, undefined, undefined, this.filters.routeIds, this.filters.orderType, this.edition, this.routeTypeIds, this.managerIds, undefined, undefined, this.primengTableHelper.getSorting(this.dataTable), this.primengTableHelper.getMaxResultCount(this.paginator, event), this.primengTableHelper.getSkipCount(this.paginator, event)) // .subscribe(resultCount => { // this._cKpiService.getKPICountLaboratoryListing(undefined, this.filters.locationFilter, undefined, this.filters.routeId, this.filters.vehicleName, this.filters.routeName, this.filters.driverName, // moment.tz(localStorage.getItem('loadDate'), timeId), // moment.tz(localStorage.getItem('loadDate'), timeId).endOf('day'), this.filters.filterTxt, undefined, undefined, this.filters.routeIds, this.filters.orderType, this.edition, this.routeTypeIds, this.managerIds, undefined, undefined, this.primengTableHelper.getSorting(this.dataTable), this.primengTableHelper.getMaxResultCount(this.paginator, event), this.primengTableHelper.getSkipCount(this.paginator, event)) // .subscribe(resultCountDetails => { // sessionStorage.setItem('last-refresh', resultCount[0].currentDateTime); // this.getParentComponent().lastRefresh = sessionStorage.getItem('last-refresh'); // that._cRoutesService.setStatistics({ // 'total_stops': resultCount[0].totalStops, // 'total_callins': resultCount[0].totalWillCalls, // 'total_routes': resultCount[0].totalRoutes, // 'completed_stops': resultCount[0].totalCompletedStops, // 'completed_callins': resultCount[0].totalCompletedWillCalls, // 'total_completed_routes': resultCount[0].totalCompletedRoutes, // 'total_unassigned_routes': resultCount[0].totalUnassignedRoutes, // 'total_unassigned_stops': resultCount[0].totalUnassignedStops, // 'total_not_checkin': resultCount[0].totalNotCheckedIn, // 'total_twenty_minutes': resultCount[0].kpiCountLates[0].total20Minutes, // 'total_thirty_minutes': resultCount[0].kpiCountLates[0].total30Minutes, // 'unassigned_routes_ids': resultCountDetails[0].unassignedRoutesIds, // 'not_check_in_routes_ids': resultCountDetails[0].notCheckedInRouteIds, // 'completed_route_ids': resultCountDetails[0].completedRouteIds, // 'late20_route_ids': resultCount[0].kpiCountLates[0].total20MinutesList, // 'late30_route_ids': resultCount[0].kpiCountLates[0].total30MinutesList, // 'total_unassigned_willcalls': resultCount[0].totalUnassignedWillCalls // }); // }); // }); } if (localStorage.getItem('loadDate').search('-') > 0) { var str = localStorage.getItem('loadDate').split('-'); var str1 = str[1] + '/' + str[2] + '/' + str[0]; localStorage.setItem('loadDate', str1); } this._controllerRouteService.getDispatchList(undefined, this.filters.locationFilter, undefined, this.filters.routeId, this.filters.vehicleName, this.filters.routeName, this.filters.driverName, moment.tz(localStorage.getItem('loadDate'), timeId), moment.tz(localStorage.getItem('loadDate'), timeId).endOf('day'), this.filters.filterTxt, (this.filters.osName == "null") ? undefined : this.filters.osName, this.filters.completed, this.filters.routeIds, this.filters.orderType, this.edition, this.routeTypeIds, this.managerIds, undefined, undefined, this.primengTableHelper.getSorting(this.dataTable), this.primengTableHelper.getMaxResultCount(this.paginator, event), this.primengTableHelper.getSkipCount(this.paginator, event)) .subscribe(result => { var noresult = result == null || result.length == 0 ? false : result[0].routeNull; var noresult = false; if (noresult) { var result2 = []; this.primengTableHelper.totalRecordsCount = result2.length; this.primengTableHelper.records = result2; this.noResultFound = true; this.getParentComponent().firstload = false; this.spinnerService.hide(); } else { this.totalGroup = 0; let index; if (this.edition === 'LABORATORY') { this.routeGroupDetails = []; for (key in result) { let obj = this.routeGroupDetails.find(o => o.routeType === result[key].routeTypeDescription); let index = this.routeGroupDetails.findIndex(o => o.routeType === result[key].routeTypeDescription); if (obj === undefined) { this.routeGroupDetails.push({ routeType: result[key].routeTypeDescription, displayColor: result[key].displayColor.trim(), routeDetails: [] }); index = this.routeGroupDetails.findIndex(o => o.routeType === result[key].routeTypeDescription); this.routeGroupDetails[index].routeDetails.push(result[key]); } else { this.routeGroupDetails[index].routeDetails.push(result[key]); } } } if (result == null) { // sessionStorage.setItem('last-refresh', result[0].currentDateTime); this.getParentComponent().lastRefresh = sessionStorage.getItem('last-refresh'); var result2 = []; this.primengTableHelper.totalRecordsCount = result2.length; this.primengTableHelper.records = result2; this.getParentComponent().firstload = false; } else if (result.length > 0) { sessionStorage.setItem('last-refresh', result[0].currentDateTime); this.getParentComponent().lastRefresh = sessionStorage.getItem('last-refresh'); } if (this.edition === 'LABORATORY') { let finalResult = {}; let fResult = { "result": "OK", "total_vehicles": 0, "total_packages": 0 }; let vehicles = []; this.spinnerService.hide(); if (result === null) { var result2 = []; this.primengTableHelper.totalRecordsCount = result2.length; this.primengTableHelper.records = result2; that.getParentComponent().disableAll(); } else { that.getParentComponent().enableAll(); this.primengTableHelper.totalRecordsCount = result.length; // if (this.groupGridBy === 'Route-Type') { this.primengTableHelper.records = this.routeGroupDetails; } else { this.primengTableHelper.records = result; } if (result.length != 0) { var increment = 1; var temp = ""; this.totalNoStatus = 0; for (key in result) { if (result[key].driverStatus == "Clocked_in") { that.routeIdStatus.push({ "RouteId": result[key].routeId, "Status": result[key].driverStatus }); } if (result[key].completion == null && result[key].departure == null) { this.totalNoStatus++; } that.routeIds.push(result[key].routeId); result[key]['completionstr'] = moment(result[key]['completion']).tz(timeId).format('h:mm a'); result[key]['Status'] = 'NONE'; result[key]['TotalPackages'] = 0; if (result[key].loadLimit != null) { if (temp != "" && temp != result[key].routeTemplateName) { increment = 1; } if (result[key]['routeTemplateName'] == result[key].routeTemplateName) { // if (increment == 0) { // temp = result[key].routeTemplateName; // result[key]['routeTemplateName'] = result[key].routeTemplateName; // } // else { temp = result[key].routeTemplateName; result[key]['routeTemplateName'] = result[key].routeTemplateName + "-" + increment; //} } increment++; } vehicles[result[key].vehicleId] = result[key].vehicleId; let fullName = result[key].fullName ? "/" + result[key].fullName : ""; this.filterFlyout = { 'route_id': result[key].routeId, 'routeName': result[key].routeTemplateName + fullName, } this.filterFlyoutHolder.push(this.filterFlyout); } if (this.totalNoStatus == result.length) { // $('.thStatusHolder').css('display', 'none'); // $('.thDriverStatus').css('display', 'none') } this.getParentComponent().getRouteAndDriver(this.filterFlyoutHolder); fResult.total_vehicles = Object.keys(vehicles).length; this.routeIdsStops.routeIds = that.routeIds; this.routeIdsStops.editions = that.edition; that._controllerRouteService.stopsStats(that.routeIdsStops) .subscribe(resultStatus => { let total_packages = 0, key; if (resultStatus == null) { } else { if (Object.keys(resultStatus).length > 0) { var resp; var rStatus = []; var totalStandardPackages = 0; var totalStandardDeliveredPackages = 0; for (key in resultStatus) { rStatus[resultStatus[key].routeId] = []; resp = that.filterArrayKeys(result, 'routeId', resultStatus[key].routeId.toString()); if (resp !== null) { result[resp]['eta'] = resultStatus[key].eta; result[resp]['Status'] = resultStatus[key].statusCode; result[resp]['StatusDescription'] = resultStatus[key].statusDescription; result[resp]['TotalPackages'] = resultStatus[key].totalPackages; result[resp]['TotalPickedUp'] = resultStatus[key].totalPickedUp; result[resp]['TotalCallin'] = resultStatus[key].totalCallIn; result[resp]['TotalCallinPickedUp'] = resultStatus[key].totalCallInPickedUp; result[resp]['TotalWillCall'] = resultStatus[key].totalWillCall; totalStandardPackages = totalStandardPackages + resultStatus[key].totalPackages; totalStandardDeliveredPackages = totalStandardDeliveredPackages + resultStatus[key].totalPickedUp; } else { result[resp]['Status'] = 'NONE'; } for (that.key2 = 0; that.key2 < that.routeIdStatus.length; that.key2++) { if (resultStatus[key].totalPackages == resultStatus[key].totalPickedUp && resultStatus[key].routeId == that.routeIdStatus[that.key2].RouteId) { that.routeIdsToLab.push(resultStatus[key].routeId) } else if (resultStatus[key].totalPackages != resultStatus[key].totalPickedUp && resultStatus[key].routeId == that.routeIdStatus[that.key2].RouteId) { that.routeIdsToClinics.push(resultStatus[key].routeId); } } // this.dTable.nativeElement.querySelector('#packageStatus' + resultStatus[key].routeId).innerHTML = `
// //
`; // this.dTable.nativeElement.querySelector('#packageStatus' + resultStatus[key].routeId).innerHTML = `
`; this.dTable.nativeElement.querySelector('#packageStatus' + resultStatus[key].routeId).innerHTML = `
  ` + resultStatus[key].statusDescription + `
`; this.dTable.nativeElement.querySelector('#eta' + resultStatus[key].routeId).innerHTML = resultStatus[key].eta; if (resultStatus[key].totalPickedUp > 0) { resultStatus[key].totalPickedUp = resultStatus[key].totalPickedUp > resultStatus[key].totalPackages ? resultStatus[key].totalPackages : resultStatus[key].totalPickedUp; this.dTable.nativeElement.querySelector('#packageStatistics' + resultStatus[key].routeId).innerHTML = ` ` + resultStatus[key].totalPickedUp + ` / ` + resultStatus[key].totalPackages + ` `; } else { this.dTable.nativeElement.querySelector('#packageStatistics' + resultStatus[key].routeId).innerHTML = ` 0 / ` + resultStatus[key].totalPackages + ` `; } let noteIcon = ''; if (resultStatus[key].totalWillCall > 0) { // noteIcon = ''; noteIcon = ""; } if (this.edition === 'LABORATORY') { if (resultStatus[key].totalCallIn > 0) { this.dTable.nativeElement.querySelector("#callInStatus" + resultStatus[key].routeId).innerHTML = noteIcon + resultStatus[key].totalCallInPickedUp + " / " + resultStatus[key].totalCallIn; } else { this.dTable.nativeElement.querySelector("#callInStatus" + resultStatus[key].routeId).innerHTML = '-'; } } that.attr[resultStatus[key].routeId] = resultStatus[key].statusDescription; total_packages = total_packages + resultStatus[key].totalPackages; } if (that.routeIdsToLab.length > 0) { } if (that.routeIdsToClinics.length > 0) { } var packageStatObj = this.dTable.nativeElement.querySelectorAll('.packageStatus'); $.each($('.etaSpinner'), function (key, val) { if ($(val).children().hasClass('routeloader')) { $(val).html(' - '); } }); $.each($('.packageStatistics'), function (key, val) { if ($(val).children().hasClass('routeloader')) { $(val).html(' '); } }); $.each($('.mileage'), function (key, val) { if ($(val).children().hasClass('routeloader')) { $(val).html(' '); } }); this.getParentComponent().firstload = false; } // END ONE } // END OF ELSE fResult.total_packages = total_packages; if (this.edition === 'STANDARD') { that._cRoutesService.setStatistics({ 'total_stops': totalStandardPackages, 'total_delivered': totalStandardDeliveredPackages }); } $.each($('.callInStatus'), function (key, val) { if ($(val).children().hasClass('routeloader')) { $(val).html(' '); } }); $.each($('.packageStatus'), function (key, val) { if ($(val).children().hasClass('routeloader')) { $(val).html(' '); } }); }); that._controllerRouteService.getProximityCodes(that.routeIds, that.edition, undefined) .subscribe(resultProximity => { for (key in resultProximity) { $('.proximity-lbl-' + resultProximity[key].routeId).html('PROXIMITY'); $('.proximity' + resultProximity[key].routeId).html(resultProximity[key].proximityCode); $('.proximityList' + resultProximity[key].routeId).css('visibility', 'visible'); } }); that._controllerRouteService.getCountRouteDetails(that.routeIds, that.edition, undefined) .subscribe(resultCount => { var fCount = JSON.parse(JSON.stringify(resultCount)); var fStatus = []; var x; for (key in fCount) { x = $('#statsCountRoute' + fCount[key].routeId + fCount[key].packageId).data('total'); x = x + parseInt(fCount[key].totalPackages); $('#statsCountRoute' + fCount[key].routeId + fCount[key].packageId).data('total', x); if ($('#statsCountRoute' + fCount[key].routeId + fCount[key].packageId).data('total') !== undefined) { $('#statsCountRoute' + fCount[key].routeId + fCount[key].packageId).data('total', x); $('#statsCountRoute' + fCount[key].routeId + fCount[key].packageId).html(x); $('.totalRoute' + fCount[key].routeId).html(parseInt($('.totalRoute' + fCount[key].routeId).html()) + parseInt(fCount[key].totalPackages)); } } $.each($('.totalRouteHolder'), function (key, val) { if ($(val).html().trim() == '0') { $(val).html('-'); } }); $.each($('.statsCountRoute'), function (key, val) { if ($(val).children().hasClass('routeloader')) { $(val).html('-'); } }); }); that._vehicleLogsService.getTotalMileage(that.routeIds).subscribe(result => { for (var data in this.primengTableHelper.records) { for (var data1 in result) if (this.primengTableHelper.records[data].routeId == result[data1].routeId) { this.primengTableHelper.records[data].totalMileage = result[data1].totalMileage; break; } } }); } } } else { this.spinnerService.hide(); let finalResult = {}; let fResult = { "result": "OK", "total_vehicles": 0, "total_packages": 0 }; let vehicles = []; if (result === null) { var result2 = []; this.primengTableHelper.totalRecordsCount = result2.length; this.primengTableHelper.records = result2; that.getParentComponent().disableAll(); } else { that.getParentComponent().enableAll(); this.primengTableHelper.totalRecordsCount = result.length; // if (this.groupGridBy === 'Route-Type') { this.primengTableHelper.records = this.routeGroupDetails; } else { this.primengTableHelper.records = result; } if (result.length != 0) { var increment = 1; var temp = ""; this.totalNoStatus = 0; for (key in result) { if (result[key].driverStatus == "Clocked_in") { that.routeIdStatus.push({ "RouteId": result[key].routeId, "Status": result[key].driverStatus }); } if (result[key].completion == null && result[key].departure == null) { this.totalNoStatus++; } that.routeIds.push(result[key].routeId); result[key]['completionstr'] = moment(result[key]['completion']).tz(timeId).format('h:mm a'); result[key]['Status'] = 'NONE'; result[key]['TotalPackages'] = 0; if (result[key].loadLimit != null) { if (temp != "" && temp != result[key].routeTemplateName) { increment = 1; } if (result[key]['routeTemplateName'] == result[key].routeTemplateName) { temp = result[key].routeTemplateName; if (increment == 1) { result[key]['routeTemplateName'] = result[key].routeTemplateName; } else { if (increment == 2) { var counter = increment result[key - 1]['routeTemplateName'] = result[key - 1].routeTemplateName + "-" + (counter - 1); result[key]['routeTemplateName'] = result[key].routeTemplateName + "-" + increment; } if (increment > 2) { result[key]['routeTemplateName'] = result[key].routeTemplateName + "-" + increment; } } } increment++; } vehicles[result[key].vehicleId] = result[key].vehicleId; let fullName = result[key].fullName ? "/" + result[key].fullName : ""; this.filterFlyout = { 'route_id': result[key].routeId, 'routeName': result[key].routeTemplateName + fullName, } this.filterFlyoutHolder.push(this.filterFlyout); } if (this.totalNoStatus == result.length) { // $('.thStatusHolder').css('display', 'none'); // $('.thDriverStatus').css('display', 'none') } this.getParentComponent().getRouteAndDriver(this.filterFlyoutHolder); that.packages = []; fResult.total_vehicles = Object.keys(vehicles).length; this.routeIdsStops.routeIds = that.routeIds; this.routeIdsStops.editions = that.edition; that._controllerRouteService.stopsStats(that.routeIdsStops) .subscribe(resultStatus => { let total_packages = 0, key; if (resultStatus == null) { } else { if (Object.keys(resultStatus).length > 0) { var resp; var rStatus = []; var totalStandardPackages = 0; var totalStandardDeliveredPackages = 0; for (key in resultStatus) { rStatus[resultStatus[key].routeId] = []; resp = that.filterArrayKeys(result, 'routeId', resultStatus[key].routeId.toString()); if (resp !== null) { result[resp]['eta'] = resultStatus[key].eta; result[resp]['Status'] = resultStatus[key].statusCode; result[resp]['StatusDescription'] = resultStatus[key].statusDescription; result[resp]['TotalPackages'] = resultStatus[key].totalPackages; result[resp]['TotalPickedUp'] = resultStatus[key].totalPickedUp; result[resp]['TotalCallin'] = resultStatus[key].totalCallIn; result[resp]['TotalCallinPickedUp'] = resultStatus[key].totalCallInPickedUp; result[resp]['TotalWillCall'] = resultStatus[key].totalWillCall; totalStandardPackages = totalStandardPackages + resultStatus[key].totalPackages; totalStandardDeliveredPackages = totalStandardDeliveredPackages + resultStatus[key].totalPickedUp; } else { result[resp]['Status'] = 'NONE'; } this.dTable.nativeElement.querySelector('#packageStatus' + resultStatus[key].routeId).innerHTML = `
  ` + resultStatus[key].statusDescription + `
`; this.dTable.nativeElement.querySelector('#eta' + resultStatus[key].routeId).innerHTML = resultStatus[key].eta; if (resultStatus[key].totalPickedUp > 0) { resultStatus[key].totalPickedUp = resultStatus[key].totalPickedUp > resultStatus[key].totalPackages ? resultStatus[key].totalPackages : resultStatus[key].totalPickedUp; this.dTable.nativeElement.querySelector('#packageStatistics' + resultStatus[key].routeId).innerHTML = ` ` + resultStatus[key].totalPickedUp + ` / ` + resultStatus[key].totalPackages + ` `; } else { this.dTable.nativeElement.querySelector('#packageStatistics' + resultStatus[key].routeId).innerHTML = ` 0 / ` + resultStatus[key].totalPackages + ` `; } let noteIcon = ''; if (resultStatus[key].totalWillCall > 0) { noteIcon = ""; } that.attr[resultStatus[key].routeId] = resultStatus[key].statusDescription; total_packages = total_packages + resultStatus[key].totalPackages; } var packageStatObj = this.dTable.nativeElement.querySelectorAll('.packageStatus'); $.each($('.etaSpinner'), function (key, val) { if ($(val).children().hasClass('routeloader')) { $(val).html(' - '); } }); $.each($('.packageStatistics'), function (key, val) { if ($(val).children().hasClass('routeloader')) { $(val).html(' '); } }); $.each($('.mileage'), function (key, val) { if ($(val).children().hasClass('routeloader')) { $(val).html(' '); } }); this.getParentComponent().firstload = false; } // END ONE } // END OF ELSE fResult.total_packages = total_packages; if (this.edition === 'STANDARD') { that._cRoutesService.setStatistics({ 'total_stops': totalStandardPackages, 'total_delivered': totalStandardDeliveredPackages }); } $.each($('.packageStatus'), function (key, val) { if ($(val).children().hasClass('routeloader')) { $(val).html(' '); } }); }); that._controllerRouteService.getProximityCodes(that.routeIds, that.edition, undefined) .subscribe(resultProximity => { for (key in resultProximity) { $('.proximity-lbl-' + resultProximity[key].routeId).html('PROXIMITY'); $('.proximity' + resultProximity[key].routeId).html(resultProximity[key].proximityCode); $('.proximityList' + resultProximity[key].routeId).css('visibility', 'visible'); } }); that._vehicleLogsService.getTotalMileage(that.routeIds).subscribe(result => { for (var data in this.primengTableHelper.records) { for (var data1 in result) if (this.primengTableHelper.records[data].routeId == result[data1].routeId) { this.primengTableHelper.records[data].totalMileage = result[data1].totalMileage; break; } } }); that._controllerRouteService.getDeliveredPackages(that.routeIds).subscribe(result => { for (var data in this.primengTableHelper.records) { for (var data1 in result) if (this.primengTableHelper.records[data].routeId == result[data1].routeId) { this.primengTableHelper.records[data].totalPackages = result[data1].totalPackages + "/" + result[data1].totalDelivered; break; } } }); } } } } }); // END FULL LIST } } tickBox() { this.cBox.tickBox(); } getSelected() { } acceptProximity(routeId: any) { alert(routeId); } filterArray(array: any, key: any, value: any) { var i, arrList = []; for (i in array) { if (array[i][key] == value) { arrList.push(array[i]); } } return arrList; } filterArrayKeys(array: any, key: any, value: any) { var i, keys = 0; for (i in array) { if (array[i][key] == value) { keys = i; } } return keys; } createOrder(routeId: number) { // window.open('/app/sprintship/locator/'+routeId+'/'+this.filters); this.router.navigate([]).then(result => { window.open('/app/sprintship/order-create/' + routeId); }); } openMap(userId, routeId) { // window.open('/app/sprintship/locator/'+routeId+'/'+this.filters); this.router.navigate([]).then(result => { window.open('/app/sprintship/locator/' + userId + '/' + routeId, '_blank'); }); } navigateDetail(id, routeName) { this.router.navigate(['/app/sprintship/controller-routes-details/', id]); localStorage.setItem('RouteName', routeName) } updateRoute() { this._routeService.updateRoute(this.route) .pipe(finalize(() => this.saving = false)) .subscribe(() => { this.notify.info(this.l('SavedSuccessfully')); }); } freezeRoute(routeId, routeCode): void { /* this._controllerRouteService.updateFreeze(true, routeId) .pipe(finalize(() => this.saving = false)) .subscribe(() => { this.message.confirm( '', '', (isConfirmed) => { if (isConfirmed) { //this.reloadPage(); this.populateTable(null); this.notify.success(this.l('Success')); } } ); });*/ this.freezeModal.show(routeId, routeCode); } unfreezeRoute(routeId, routeCode): void { /* this._controllerRouteService.updateFreeze(false, routeId) .pipe(finalize(() => this.saving = false)) .subscribe(() => { this.message.confirm( '', '', (isConfirmed) => { if (isConfirmed) { //this.reloadPage(); this.populateTable(null); this.notify.success(this.l('Success')); } } ); });*/ this.unfreezeModal.show(routeId, routeCode); } // setDeparture(route: any) { // if (!this.route.locked) { // if (this.route.departure) { // this.route.departure = null; // } else { // this.route.departure = moment(new Date()); // } // this.route.vehicleId = route.vehicleId; // this.route.loadDate = route.loadDate; // this.route.locked = route.locked; // this.route.locationId = parseInt(localStorage.getItem('operatingLocationId')); // this.route.id = route.routeId; // this.updateRoute(); // } else { // this.notify.info(this.l('Unlocked Loadlist First')); // } // } setDepature(record) { this.saving = true; if (!record.locked) { this.updateDepartureRouteInput.id = record.routeId; if (record.departure) { this.updateDepartureRouteInput.departure = false; this._controllerRouteService.updateDepartureRoute(this.updateDepartureRouteInput) .pipe(finalize(() => { this.saving = false; })) .subscribe(() => { this.populateTable(); this.notify.info(this.l('Saved Successfully')); record.departure = false; }); } else { this.updateDepartureRouteInput.departure = true; this._controllerRouteService.updateDepartureRoute(this.updateDepartureRouteInput) .pipe(finalize(() => { this.saving = false; })) .subscribe(() => { this.populateTable(); this.notify.info(this.l('Saved Successfully')); record.departure = true; }); } } else { this.notify.info(this.l('Unlocked Loadlist First')); } } setCompleted(record) { this.saving = true; if (!record.locked) { this.updateCompletedInput.id = record.routeId; if (record.completion) { this.updateCompletedInput.completion = false; this._controllerRouteService.updateCompletedRoute(this.updateCompletedInput) .pipe(finalize(() => { this.saving = false; })) .subscribe(() => { // this.populateTable(); this.getParentComponent().filterRoutes(); this.notify.info(this.l('Saved Successfully')); record.completion = false; }); } else { this.updateCompletedInput.completion = true; this._controllerRouteService.updateCompletedRoute(this.updateCompletedInput) .pipe(finalize(() => { this.saving = false; })) .subscribe(() => { // this.populateTable(); this.getParentComponent().filterRoutes(); this.notify.info(this.l('Saved Successfully')); record.completion = true; }); } } else { this.notify.info(this.l('Unlocked Loadlist First')); } } setLocked(record) { this.updateLockedInput.routeId = record.routeId; if (record.locked == true) { this.updateLockedInput.locked = false; this._controllerRouteService.updateLockedRoute(this.updateLockedInput) .pipe(finalize(() => { this.saving = false; })) .subscribe(() => { this.notify.info(this.l('Route Unlocked Successfully')); }); record.locked = false; } else { this.updateLockedInput.locked = true; this._controllerRouteService.updateLockedRoute(this.updateLockedInput) .pipe(finalize(() => { this.saving = false; })) .subscribe(() => { this.notify.info(this.l('Route Locked Successfully')); }); record.locked = true; } } getParentComponent() { return this.viewContainerRef['_data'].componentView.component.viewContainerRef['_view'].component } expandDetails(obj: string) { if ($('.tr-' + obj).css('display') == 'none') { $('.span-' + obj).html(obj + ' Routes'); $('.tr-' + obj).css('display', 'table-row'); } else { $('.span-' + obj).html(obj + ' Routes'); $('.tr-' + obj).css('display', 'none'); } } selectRoute(id: number) { if (this.sprintIdsList.indexOf(id) == -1) { this.sprintIdsList.push(id); } else { this.sprintIdsList.splice(this.sprintIdsList.indexOf(id), 1); } localStorage.setItem('routeIds', JSON.stringify(this.sprintIdsList)); if (this.sprintIdsList.length == this.routeIds.length) { this.selectAll = true; } else { this.selectAll = false; } } CheckAllOptions() { if (!this.selectAll) { this.primengTableHelper.records.forEach(val => { val.selectedRoute = false }); this.sprintIdsList = []; localStorage.setItem('routeIds', JSON.stringify(this.sprintIdsList)); } else this.primengTableHelper.records.forEach(val => { val.selectedRoute = true; this.sprintIdsList.push(val.routeId) }); // this.sprintIdsList = this.routeIds; localStorage.setItem('routeIds', JSON.stringify(this.sprintIdsList)); } showBlindCountCode(routeId) { this.showBlindCountCodes.routeId = routeId; this._controllerRouteService.showBlindcode(this.showBlindCountCodes).subscribe(result => { $("#showBlindCount" + routeId).show(); $("#hideCount" + routeId).hide(); }); } disableAll() { this.getParentComponent().disableAll(); } generateRoutes() { this.getParentComponent().generateRoute(); } //asign driver assignDriverModal(record: any): void { console.log(record) this.driversList.tenantId = record.id; this.driversList.show(); this.selectedRouteId = record.routeId; } updateRouteByVehicle(item: NameValueDto): void { let input = new VehicleInput(); input.driverId = parseInt(item.value); input.routeId = this.selectedRouteId; this._controllerRouteDetails.updateRouteByVehicleId(input).subscribe(result => { $('.dispatch-refresh').trigger('click'); }); } printRouteSheet(id: number) { this.routeId = id; if (localStorage.getItem('routeIds') == null) { this.localRouteIds = []; this.localRouteIds.push(this.routeId) localStorage.setItem('routeIds', JSON.stringify(this.localRouteIds)); } else { localStorage.removeItem('routeIds'); this.localRouteIds = []; this.localRouteIds.push(this.routeId) localStorage.setItem('routeIds', JSON.stringify(this.localRouteIds)); } if (this.edition === 'LABORATORY') { window.open('/app/sprintship/route-sheet-print', '_blank'); } else { window.open('/app/sprintship/route-print', '_blank'); } } removeRoutes(id: number, routeCode: string) { this.message.confirm( this.l('Are you sure you want to delete ' + routeCode + '?'), '', isConfirmed => { if (isConfirmed) { // this._packageService.deleteShippingPackage(packages.id).subscribe(() => { // this.reloadPage(); // this.notify.info(this.l('Successfully Deleted')); // }); let input: any; input = { 'RouteId': id }; this._controllerRouteService.closedRoutes(input).pipe().subscribe(result => { this.notify.info(this.l('Deleted Successfully')); this.populateTable(null); }); } } ); // this.deleteRoutes.show(id, null, routeCode); } markAsDeliveredModal(record: any): void { this.stopList.tenantId = record.id; this.selectedRouteId = record.routeId; this.stopList.show(); } updateRouteByStop(item: NameValueDto): void { let input = new UpdateRouteByStopInput(); input.contactId = parseInt(item.value); input.routeId = this.selectedRouteId; input.loadDate = moment($('input[name=completionDate]').val()); this._controllerRouteDetails.updateRouteByStop(input).subscribe(result => { $('.dispatch-refresh').trigger('click'); }); } private setIsEntityHistoryEnabled(): void { let customSettings = (abp as any).custom; this.entityHistoryEnabled = customSettings.EntityHistory && customSettings.EntityHistory.isEnabled && _.filter(customSettings.EntityHistory.enabledEntities, entityType => entityType === this._entityTypeFullName).length === 1; } showHistory(controller: ControllerRouteListDto): void { this.entityTypeHistoryModal.show({ entityId: controller.routeId.toString(), entityTypeFullName: this._entityTypeFullName, entityTypeDescription: controller.routeTemplateName }); } getPackages(): void { this._controllerRoutePackages.getShippingPackageListOptions(undefined, undefined, undefined, undefined, undefined, undefined) .subscribe(resultPackages => { resultPackages.forEach(element => { if (element.name !== 'Default') { if (element.isHiddenPackages === '0') { this.packages.push(element); } } }); }); } }