import * as widgets from "oasi-widgets"; import { DocumentLinkRestService } from "isogd-document-link-rest"; import { IParcelDossierWrapper, DossierRestService, DossierLinkRestService } from "isogd-dossier-rest"; import * as _ from "lodash"; import { LinkedDocumentService } from "../../services/LinkedDocumentService"; import { DocumentIsogd, DocumentRestService, DocumentIsogdWrapper, DocumentTerritory } from "isogd-document-rest"; import { NsiRestService } from "oasi-nsi-rest"; class DossierViewController { static $inject = ['linkedDocumentService', '$timeout', 'documentLinkRestService', 'blockUI', 'nsiRestService', '$q', 'dossierRestService', 'dossierLinkRestService', 'documentRestService']; document: DocumentIsogd; hasDoc: boolean; dossiers: IParcelDossierWrapper[] = []; chapters: any[] = []; private loadingStatus: widgets.LoadingStatus = widgets.LoadingStatus.LOADING; constructor(private linkedDocumentService: LinkedDocumentService, private $timeout: ng.ITimeoutService, private documentLinkRestService: DocumentLinkRestService, private blockUI: any, private nsiRestService: NsiRestService, private $q: ng.IQService, private dossierRestService: DossierRestService, private dossierLinkRestService: DossierLinkRestService, private documentRestService: DocumentRestService) { } $onInit() { this.loadingStatus = widgets.LoadingStatus.LOADING; this.dossierLinkRestService.getToDocument(this.document.documentID).then(response => { this.hasDoc = response.length > 0; if (this.hasDoc) { this.nsiRestService.get("OldChapters").then(res => { this.chapters = res; let data = _.map(response, r => { return r.dossierId; }); this.dossierRestService.getDossiers(data).then(response => { this.dossiers = response; this.dossiers.forEach(d => { (d).documents = []; (d).loading = widgets.LoadingStatus.LOADING; this.dossierLinkRestService.getFromDossier(d.parcelDossier.dossierId).then(response => { let promises: ng.IPromise[] = []; response.forEach(r => { promises.push(this.documentRestService.getDocument(r.docId)); }); this.$q.all(promises).then(response => { (d).documents = _.map(response, d => { return d.document; }); (d).documents = _.orderBy((d).documents, function (e) { return e.documentRequisites.documentDate }, ['asc']); (d).loading = widgets.LoadingStatus.SUCCESS; }).catch(error => { (d).loading = widgets.LoadingStatus.ERROR; }); }).catch(error => { (d).loading = widgets.LoadingStatus.ERROR; }); }); this.loadingStatus = widgets.LoadingStatus.SUCCESS; }).catch(error => { this.loadingStatus = widgets.LoadingStatus.ERROR; console.log(error); }); }).catch(error => { this.loadingStatus = widgets.LoadingStatus.ERROR; console.log(error); }); } else { this.loadingStatus = widgets.LoadingStatus.SUCCESS; } }).catch(error => { this.loadingStatus = widgets.LoadingStatus.ERROR; console.log(error); }); } dossierToString(dossier: IParcelDossierWrapper): string { let result: string = ""; if (dossier.parcelDossier.cadastralNumber) { result += dossier.parcelDossier.cadastralNumber; result += " "; } result += this.getAddress(dossier); return result.trim(); } getAddress(dossier: IParcelDossierWrapper): string { let result: string = ''; if (dossier && dossier.parcelDossier && dossier.parcelDossier.address) { result += dossier.parcelDossier.address; result += " "; } let areaName = ''; if (dossier && dossier.parcelDossier && dossier.parcelDossier.area && dossier.parcelDossier.area.areaName) { areaName = dossier.parcelDossier.area.areaName; } let districtName = ''; if (dossier && dossier.parcelDossier && dossier.parcelDossier.district && dossier.parcelDossier.district.districtName) { districtName = dossier.parcelDossier.district.districtName; } let secondPart = ''; if (areaName) { secondPart += areaName; } if (districtName) { secondPart += (areaName) ? ', ' : ''; secondPart += districtName; } if (secondPart) { secondPart = ' (' + secondPart + ')'; } result += secondPart; return result; } _findChapterByCode(chapters: any[], code: string): any { let result = null; chapters.forEach(ch =>{ if (ch.chapterCode === code) { result = ch; } if (ch.children && ch.children.length > 0) { let r = this._findChapterByCode(ch.children, code); if (r !== null) { result = r; } } }); return result; } findChapterByCode(chapters: any[], code: string): string { let result = this._findChapterByCode(chapters, code); return (result) ? result.name : ""; } getAddressString(document: DocumentIsogd): string { if (document.territory) { let territoryValues = this.getTerritoryValues(document.territory); if (document.object && document.object.objectAddress) { let result = document.object.objectAddress; if (territoryValues && territoryValues.length > 0) { result += ' (' + territoryValues.join(', ') + ')'; } return result; } else if (territoryValues && territoryValues.length > 0) { return territoryValues.join(', '); } } else { return ""; } } getTerritoryValues(territory: DocumentTerritory): string[] { let areas: string[] = territory ? _.map(territory.area, (area) => { return area.areaName; }) : []; let districts: string[] = territory ? _.map(territory.district, (district) => { return district.districtName; }) : []; return areas.concat(districts); } } export const DossierViewComponent: angular.IComponentOptions = { controller: DossierViewController, template: require('./dossierView.html'), bindings: { document: "<" } };