import { Component, Injector, OnInit, ViewChild, ViewEncapsulation, ElementRef, AfterViewInit, Renderer, Input } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; import { AppConsts } from '@shared/AppConsts'; import { appModuleAnimation } from '@shared/animations/routerTransition'; import { AppComponentBase } from '@shared/common/app-component-base'; import { RouteListDto, RouteAnalyzerOrderDto, RouteAnalyzerServiceProxy, UpdateScheduleInput, LocationServiceProxy, LocationNameDto } 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 * as _ from 'lodash'; import { result } from 'lodash'; import { RouteAnalyzerFlyoutComponent } from '@app/shared/layout/flyout/route-analyzer-flyout/route-analyzer-flyout.component'; import { log } from 'console'; import { FileDownloadService } from '@shared/utils/file-download.service'; import { numberBoxEditor } from 'devexpress-dashboard/designer/form-adapter/_form-adapter-editors'; import { EntityTypeHistoryModalComponent } from '@app/shared/common/entityHistory/entity-type-history-modal.component'; @Component({ templateUrl: 'route-analyzer.component.html', encapsulation: ViewEncapsulation.None, animations: [appModuleAnimation()], styleUrls: ['route-analyzer.component.less'] }) export class RouteAnalyzerPickupComponent extends AppComponentBase implements OnInit { advancedFiltersAreShown = false; dateContainer: any; dateData: any = {}; loadDate: any; locations: LocationNameDto[] = []; locationString: string; codeString: string; filterText: string; clinicAccountFilter: string; clinicNameFilter: string; checkAll: boolean = false; clinicList: any = {}; etaList: Array = new Array(); @ViewChild('routeAnalyzerFlyoutComponent', { static: false }) routeAnalyzerFlyoutComponent: RouteAnalyzerFlyoutComponent; @ViewChild('dataTable', { static: true }) dataTable: Table; @ViewChild('paginator', { static: true }) paginator: Paginator; @ViewChild('entityTypeHistoryModal', { static: true }) entityTypeHistoryModal: EntityTypeHistoryModalComponent; _entityTypeFullName = 'SprintTek.Laboratory.RouteScheduleDetail'; entityHistoryEnabled = false; constructor( injector: Injector, private _routeAnalyzerService: RouteAnalyzerServiceProxy, private _locationServiceProxy: LocationServiceProxy, private _fileDownloadService: FileDownloadService, ) { super(injector); } ngOnInit(): void { this.setIsEntityHistoryEnabled(); this.primengTableHelper.isLoading = true; this.dateContainer = []; this.etaList = []; // this.showFlyOut(); // this.routeAnalyzerFlyoutComponent.showFlyout(); // this.generateDate(); this.getLocations(); this.generateHeaders(); if (localStorage.getItem('analyzerStartDate') == null) { this.primengTableHelper.isLoading = false; } } generateHeaders() { if (localStorage.getItem('analyzerLocationString') != null) { this.locationString = localStorage.getItem('analyzerLocationString'); } else { this.locationString = "Select Location"; } if (localStorage.getItem('analyzerRouteCode') != null) { this.codeString = localStorage.getItem('analyzerRouteCode').toString(); } } getLocations() { this._locationServiceProxy.getLocationNames(undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined) .subscribe(result => { if (result == null) { $("#locationSelectInput").val(''); } else { this.locations = result; } }); } generateDate() { this.dateContainer = []; if (localStorage.getItem('analyzerStartDate') !== null) { for (let index = 0; index < 7; index++) { var end = moment(localStorage.getItem('analyzerStartDate'), "MM-DD-YYYY").add(index, 'days'); this.dateData.date = end.format("MM/DD/YYYY"); this.dateData.day = end.day(); this.dateContainer.push({ date: end.format("MM/DD/YYYY"), day: end.day() }); } } } findObjectByKey(array, key, value) { for (var i = 0; i < array.length; i++) { if (array[i][key] === value) { return array[i]; } } return null; } getOrdersByLocation(event?: LazyLoadEvent) { this.generateDate(); this.generateHeaders(); if (localStorage.getItem('analyzerLocationString') != null && localStorage.getItem('analyzerLocationId') != null && localStorage.getItem('analyzerLocationId') != "") { this.primengTableHelper.isLoading = true; var codes = localStorage.getItem('analyzerRouteCode') == null ? undefined : localStorage.getItem('analyzerRouteCode'); this.loadDate = moment.tz(localStorage.getItem('analyzerStartDate'), localStorage.getItem('timeZoneId')); this._routeAnalyzerService.getOrdersByLocation( parseInt(localStorage.getItem('analyzerLocationId')), this.loadDate, codes, this.filterText, this.clinicNameFilter, this.clinicAccountFilter, this.primengTableHelper.getSorting(this.dataTable), this.primengTableHelper.getSkipCount(this.paginator, event), this.primengTableHelper.getMaxResultCount(this.paginator, event)).subscribe(result => { this.primengTableHelper.records = result; this.primengTableHelper.totalRecordsCount = result.length; this.primengTableHelper.isLoading = false; }); } } updateScheduleByETA(id: number, eta: any) { let dataArray = []; let data = new UpdateScheduleInput(); data.routeScheduleId = id; data.eta = eta; dataArray.push(data); this._routeAnalyzerService.updateSchedule(dataArray).subscribe(result => { this.notify.info(this.l('Successfully Updated')); }); } showFlyOut(): void { this.routeAnalyzerFlyoutComponent.showFlyout(this.locations); } filterRouteAnalyzer() { this.routeAnalyzerFlyoutComponent.getOrdersByLocation(); } selectAllClinics() { for (let index = 0; index < this.primengTableHelper.records.length; index++) { if (this.checkAll == true) { if (this.primengTableHelper.records[index].timeSDString != null) { this.primengTableHelper.records[index].selected = true; } } else { this.primengTableHelper.records[index].selected = false; } } } batchUpdate() { let dataArray = []; if (this.primengTableHelper.records != null) { for (let index = 0; index < this.primengTableHelper.records.length; index++) { if (this.primengTableHelper.records[index].selected == true) { dataArray.push({ routeScheduleId:this.primengTableHelper.records[index].routeScheduleDetailId, eta:this.primengTableHelper.records[index].timeAverageWithExclusion }); } } } if (dataArray.length > 0) { this._routeAnalyzerService.updateSchedule(dataArray).subscribe(result => { this.notify.info(this.l('Successfully Updated')); }); } else { this.notify.info(this.l('Please Select Clinic to Update')); } } 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(role: RouteAnalyzerOrderDto): void { this.entityTypeHistoryModal.show({ entityId: role.routeScheduleDetailId.toString(), entityTypeFullName: this._entityTypeFullName, entityTypeDescription: "Route Analyzer" }); } exportToExcel() { if (localStorage.getItem('analyzerLocationString') != null && localStorage.getItem('analyzerLocationId') != null && localStorage.getItem('analyzerLocationId') != "") { this.primengTableHelper.isLoading = true; var codes = localStorage.getItem('analyzerRouteCode') == null ? undefined : localStorage.getItem('analyzerRouteCode'); this.loadDate = moment.tz(localStorage.getItem('analyzerStartDate'), localStorage.getItem('timeZoneId')); this._routeAnalyzerService.getAnalyedDataToExcel(parseInt(localStorage.getItem('analyzerLocationId')), this.loadDate, codes).subscribe(result => { this.primengTableHelper.isLoading = false; this._fileDownloadService.downloadTempFile(result); }); } } }