import { Component, Injector, ViewEncapsulation, ViewChild, Input } from '@angular/core'; import { ActivatedRoute, Router } from '@angular/router'; import { RouteDefinitionsServiceProxy, RouteDefinitionDto, ControllerRouteDetailServiceProxy, ControllerGetDriverListDto, LocationServiceProxy, LocationNameDto, RouteTypesServiceProxy, PagedResultDtoOfGetRouteTypeForViewDto, GetManagerListDto, GetRouteDefinitionForViewDto } from '@shared/service-proxies/service-proxies'; import { NotifyService } from '@abp/notify/notify.service'; import { AppComponentBase } from '@shared/common/app-component-base'; import { TokenAuthServiceProxy } from '@shared/service-proxies/service-proxies'; import { CreateOrEditRouteDefinitionModalComponent } from './create-or-edit-routeDefinition-modal.component'; import { ViewRouteDefinitionModalComponent } from './view-routeDefinition-modal.component'; import { appModuleAnimation } from '@shared/animations/routerTransition'; import { Table } from 'primeng/components/table/table'; import { Paginator } from 'primeng/components/paginator/paginator'; import { LazyLoadEvent } from 'primeng/components/common/lazyloadevent'; import { FileDownloadService } from '@shared/utils/file-download.service'; import { EntityTypeHistoryModalComponent } from '@app/shared/common/entityHistory/entity-type-history-modal.component'; import * as _ from 'lodash'; import * as moment from 'moment'; import { AssignRouteToManagerModalComponent } from './assign-route-to-manager.modal.component'; import { AssignManagerToLocationModalComponent } from './assign-manager-to-location.modal.component'; import { HttpClient } from '@angular/common/http'; import { AppConsts } from '@shared/AppConsts'; @Component({ templateUrl: './routeDefinitions.component.html', encapsulation: ViewEncapsulation.None, animations: [appModuleAnimation()], styleUrls: ['./create-or-edit-routeDefinition-modal.component.less'] }) export class RouteDefinitionsComponent extends AppComponentBase { @ViewChild('createOrEditRouteDefinitionModal', { static: true }) createOrEditRouteDefinitionModal: CreateOrEditRouteDefinitionModalComponent; @ViewChild('assignRouteToManagerModal', { static: true }) assignRouteToManagerModal: AssignRouteToManagerModalComponent; @ViewChild('assignManagerToLocationModal', { static: true }) assignManagerToLocationModal: AssignManagerToLocationModalComponent; @ViewChild('viewRouteDefinitionModalComponent', { static: true }) viewRouteDefinitionModal: ViewRouteDefinitionModalComponent; @ViewChild('entityTypeHistoryModal', { static: true }) entityTypeHistoryModal: EntityTypeHistoryModalComponent; @ViewChild('dataTable', { static: true }) dataTable: Table; @ViewChild('paginator', { static: true }) paginator: Paginator; advancedFiltersAreShown = false; filterText = ''; maxThresholdFilter: number; maxThresholdFilterEmpty: number; minThresholdFilter: number; minThresholdFilterEmpty: number; routeTypeRouteTypeCodeFilter = ''; routeTemplateNameFilter = ''; routeTemplateId : number; _entityTypeFullName = 'SprintTek.Laboratory.RouteDefinition'; entityHistoryEnabled = false; driverList: ControllerGetDriverListDto[]; @Input('selectedDriverId') selectedDriverId: any; filteredLocations: LocationNameDto[]; getManagerListDto: GetManagerListDto[]; getAdminListDto: GetManagerListDto[]; filteredRouteTypes: any; locationId: number; routeTypeId: number; selectedManagerId: number; selectedAdminId: number; selectAll: boolean = false; sprintIds: Array = new Array(); sprintIdsList = []; routedefinitionIds: any; public dateRange: moment.Moment[] = null; isEnabledLaboratory : boolean uploadUrl : string; constructor( injector: Injector, private _routeDefinitionsServiceProxy: RouteDefinitionsServiceProxy, private _fileDownloadService: FileDownloadService, private _controllerRouteDetails: ControllerRouteDetailServiceProxy, private _locationService: LocationServiceProxy, private _routeTypesServiceProxy: RouteTypesServiceProxy, private _httpClient: HttpClient, private router: Router, ) { super(injector); this.uploadUrl = AppConsts.remoteServiceBaseUrl + '/Import/ImportFromExcel'; } ngOnInit(): void { this.isEnabledLaboratory = abp.features.isEnabled('App.ControllerRouteManagementFeature.RouteDetailsManagementFeature'); this.entityHistoryEnabled = this.setIsEntityHistoryEnabled(); $('.kt-select2').select2(); this._controllerRouteDetails.getDriverList().subscribe(result => { this.driverList = result; }); this.filterLocation(); this.filterRouteTypes(); this.filterManager(); this.filterAdmin() } private setIsEntityHistoryEnabled(): boolean { let customSettings = (abp as any).custom; return customSettings.EntityHistory && customSettings.EntityHistory.isEnabled && _.filter(customSettings.EntityHistory.enabledEntities, entityType => entityType === this._entityTypeFullName).length === 1; } getRouteDefinitions(event?: LazyLoadEvent) { this.routedefinitionIds = []; this.sprintIdsList = []; this.selectAll = false; this.locationId = Number((document.getElementById('locationSelectInput')).value) != 0 ? Number((document.getElementById('locationSelectInput')).value) : undefined; this.routeTypeId = Number((document.getElementById('selectedRouteType')).value) != 0 ? Number((document.getElementById('selectedRouteType')).value) : undefined;; this.selectedDriverId = Number((document.getElementById('selectedDriverId')).value) != 0 ? Number((document.getElementById('selectedDriverId')).value) : undefined;; this.selectedManagerId = Number((document.getElementById('selectedManagerId')).value) != 0 ? Number((document.getElementById('selectedManagerId')).value) : undefined;; this.selectedAdminId = Number((document.getElementById('selectedAdminId')).value) != 0 ? Number((document.getElementById('selectedAdminId')).value) : undefined; if (this.primengTableHelper.shouldResetPaging(event)) { this.paginator.changePage(0); return; } this.spinnerService.show(); this._routeDefinitionsServiceProxy.getAll( this.filterText, this.routeTypeRouteTypeCodeFilter, this.routeTemplateNameFilter, this.routeTypeId, this.selectedDriverId, this.locationId, this.selectedManagerId, this.selectedAdminId, this.dateRange==null ? undefined : this.dateRange[0], this.dateRange==null ? undefined : this.dateRange[1].endOf('day'), this.routeTemplateId, this.primengTableHelper.getSorting(this.dataTable), this.primengTableHelper.getSkipCount(this.paginator, event), this.primengTableHelper.getMaxResultCount(this.paginator, event) ).subscribe(result => { this.primengTableHelper.totalRecordsCount = result.totalCount; this.primengTableHelper.records = result.items; this.spinnerService.hide(); this.dateRange = null; }); } reloadPage(): void { this.paginator.changePage(this.paginator.getPage()); } createRouteDefinition(): void { this.createOrEditRouteDefinitionModal.show(); } showAssignRouteToManagerModal():void{ if(this.sprintIdsList.length!=0) { this.assignRouteToManagerModal.show(this.sprintIdsList); }else{ this.notify.error(this.l('Please check atleast one in checkbox')); } } showAssignManagerToLocationModal():void{ this.assignManagerToLocationModal.show(); } showHistory(routeDefinition: GetRouteDefinitionForViewDto): void { this.entityTypeHistoryModal.show({ entityId: routeDefinition.routeDefinition.id.toString(), entityTypeFullName: this._entityTypeFullName, entityTypeDescription: "Route Definition - " +routeDefinition.routeTemplateName }); } deleteRouteDefinition(routeDefinition: RouteDefinitionDto): void { this.message.confirm( '', '', (isConfirmed) => { if (isConfirmed) { this._routeDefinitionsServiceProxy.delete(routeDefinition.id) .subscribe(() => { this.reloadPage(); this.notify.success(this.l('SuccessfullyDeleted')); }); } } ); } exportToExcel(): void { this.spinnerService.show(); this._routeDefinitionsServiceProxy.getRouteDefinitionsToExcel( this.filterText, this.maxThresholdFilter == null ? this.maxThresholdFilterEmpty : this.maxThresholdFilter, this.minThresholdFilter == null ? this.minThresholdFilterEmpty : this.minThresholdFilter, this.routeTypeRouteTypeCodeFilter, this.routeTemplateNameFilter, ) .subscribe(result => { if(result!=undefined){ if(result.fileUrl!=undefined){ this.router.navigate([]).then(result1 => { window.open(result.fileUrl, '_blank'); }); this.spinnerService.hide(); }else{ this.spinnerService.hide(); } }else{ this.message.warn('', "No data to export"); this.spinnerService.hide(); } }); } filterLocation(): void { this._locationService.getLocationNames(undefined, undefined, undefined, undefined, undefined, undefined) .subscribe(result => { this.filteredLocations = result; }); } filterRouteTypes(): void { this._routeTypesServiceProxy.getAll(undefined, undefined, undefined, undefined, undefined, undefined, undefined, 1000).subscribe(result => { this.filteredRouteTypes = result.items; }); } filterManager(): void { this._routeDefinitionsServiceProxy.getManagerList().subscribe(result => { this.getManagerListDto = result; }); } filterAdmin(): void { this._routeDefinitionsServiceProxy.getAdminList().subscribe(result => { this.getAdminListDto = result; }); } CheckAllOptions() { if (!this.selectAll) { this.primengTableHelper.records.forEach(val => { val.selectedRouteDefinition = false }); this.sprintIdsList = []; } else this.primengTableHelper.records.forEach(val => { val.selectedRouteDefinition = true; this.sprintIdsList.push(val.routeDefinition.id) }); } selectRoute(id: number) { if (this.sprintIdsList.indexOf(id) == -1) { this.sprintIdsList.push(id); } else { this.sprintIdsList.splice(this.sprintIdsList.indexOf(id), 1); } if (this.sprintIdsList.length == this.routedefinitionIds.length && this.sprintIdsList.length != 0) { this.selectAll = true; } else { this.selectAll = false; } } uploadExcel(data: { files: File }): void { //this.importOrderTracking.clearMessages(); //this.importOrderTracking.modal.show(); const formData: FormData = new FormData(); const file = data.files[0]; formData.append('file', file, file.name); formData.append('key','routeDefinitionManager'); formData.append('locale', abp.localization.currentLanguage.name); formData.append('loadDate', moment().tz(localStorage.getItem('timeZoneId')).format()); // formData.append('entity','addresses','addresses'); // console.log(abp.localization.currentLanguage.name); this._httpClient .post(this.uploadUrl, formData) .subscribe(response => { if (response.success) { this.notify.success('Import process is queued. Please wait'); //this.l('ImportOrderStart') } else if (response.error != null) { this.notify.error(this.l('ImportOrderFailed')); } }); } onUploadExcelError(): void { this.notify.error(this.l('ImportOrderFailed')); } }