{"version":3,"sources":["webpack:///./node_modules/@abaco/map-web-module/src/modules/map-web-module/api/ParcelApi.ts"],"names":["ParcelApi","http","contextMappings","FARM_MAP","FARM_CROP_PLAN_MAP","this","unAuthHttp","HTTPClient","context","regionId","makeXhrGetRequest","res","checkAdeError","hasError","errorCode","error","data","formattedRes","SIGLA_PROVINCIA","map","id","index","label","DENOMINAZIONE","provinceId","get","params","op","prov","tkn","COD_COMUNE","councilCode","section","SEZIONE","noDisplay","NODISPLAY","token","cod_com","FOGLIO","sheetId","foglio","NUM_PART","CODICE","parcelId","num_part","dataJson","JSON","parse","GEOMETRIA","coordinates","resNew","captcha","type","result","length","authorized","includes","url","options","method","headers","Accept","Connection","fetch","isBlob","Promise","resolve","reject","xhr","XMLHttpRequest","open","responseType","onload","status","reader","FileReader","readAsDataURL","response","json","Error","statusText","onerror","send"],"mappings":"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","file":"js/chunk-2d2311f6.38c8c09d.js","sourcesContent":["import { HTTPClient } from \"@abaco/web-common/src/HTTP\";\nimport {\n AdeError,\n AdeResponse,\n CaptchaAuthAde,\n Council,\n CouncilAde,\n Parcel,\n ParcelAde,\n ParcelGeometry,\n ParcelGeometryAde,\n Province,\n ProvinceAde,\n Sheet,\n SheetAde\n} from \"../models/Parcels\";\n// import https from \"https\";\n\nexport default class ParcelApi {\n private http: HTTPClient;\n private unAuthHttp!: HTTPClient;\n\n constructor(http: HTTPClient) {\n this.http = http;\n this.unAuthHttp = new HTTPClient();\n }\n\n private contextMappings: Record = {\n FARM_MAP: \"ACTIVE_LAYERS\",\n FARM_CROP_PLAN_MAP: \"ACTIVE_LAYERS\"\n };\n\n private getContext(context: string): string {\n return this.contextMappings[context] || context;\n }\n\n public async getRegionProvinces(regionId: string): Promise> {\n // const res = await this.http.get(\"/ade/inspire/ajax/ajax.php\", {\n // params: {\n // op: \"getProvince\",\n // reg: regionId,\n // tkn: \"\"\n // }\n // });\n const res = await this.makeXhrGetRequest(\"/ade/inspire/ajax/ajax.php?op=getProvince®=\" + regionId + \"&tkn=\");\n const { hasError, errorCode } = this.checkAdeError(res);\n if (hasError) {\n return {\n error: true,\n errorCode: errorCode,\n data: []\n };\n } else {\n // example of API response: {\"SIGLA_PROVINCIA\":[\"MT\"],\"DENOMINAZIONE\":[\"MATERA\"]}\n // id: SIGLA_PROVINCIA, label: DENOMINAZIONE\n const data = res as ProvinceAde;\n const formattedRes = data.SIGLA_PROVINCIA.map((id: string, index: number) => {\n return {\n id,\n label: data.DENOMINAZIONE[index]\n };\n });\n return {\n error: false,\n errorCode: null,\n data: formattedRes\n };\n }\n }\n\n // private testDone = false;\n public async getProvinceCouncils(provinceId: string): Promise> {\n const res = await this.http.get(\"/ade/inspire/ajax/ajax.php\", {\n params: {\n op: \"getComuniSez\",\n prov: provinceId,\n tkn: \"\"\n }\n });\n const { hasError, errorCode } = this.checkAdeError(res);\n // console.log(\"to remove before commit\");\n // let { hasError, errorCode } = this.checkAdeError(res);\n // if (!this.testDone) {\n // this.testDone = true;\n // hasError = true;\n // errorCode = \"tokenExpired\";\n // }\n if (hasError) {\n return {\n error: true,\n errorCode: errorCode,\n data: []\n };\n } else {\n // example of API response: {\"COD_COMUNE\":[\"A017\"],\"DENOMINAZIONE\":[\"ACCETTURA\"], \"NODISPLAY\": [\"0\"], SEZIONE\":[\"A\"]}\n // councilCode: COD_COMUNE, label: DENOMINAZIONE, section: SEZIONE, noDisplay: NODISPLAY\n const data = res.data as CouncilAde;\n const formattedRes = data.COD_COMUNE.map((councilCode: string, index: number) => {\n return {\n councilCode,\n label: data.DENOMINAZIONE[index],\n section: data.SEZIONE[index],\n noDisplay: data.NODISPLAY[index] === \"1\" ? true : false\n };\n });\n return {\n error: false,\n errorCode: null,\n data: formattedRes\n };\n }\n }\n\n public async getCouncilSheets(\n provinceId: string,\n councilCode: string,\n token: string\n ): Promise> {\n const res = await this.http.get(\"/ade/inspire/ajax/ajax.php\", {\n params: {\n op: \"getFogli\",\n prov: provinceId,\n cod_com: councilCode,\n tkn: token\n }\n });\n const { hasError, errorCode } = this.checkAdeError(res);\n if (hasError) {\n return {\n error: true,\n errorCode: errorCode,\n data: []\n };\n } else {\n // example of API response: {\"FOGLIO\":[\"1\"], \"NODISPLAY\": [\"0\"]}\n // id: FOGLIO, noDisplay: NODISPLAY, label: FOGLIO\n const data = res.data as SheetAde;\n const formattedRes = data.FOGLIO.map((id: string, index: number) => {\n return {\n id,\n noDisplay: data.NODISPLAY[index] === \"1\" ? true : false,\n label: id\n };\n });\n return {\n error: false,\n errorCode: null,\n data: formattedRes\n };\n }\n }\n\n public async getSheetParcels(\n provinceId: string,\n councilCode: string,\n sheetId: string,\n token: string\n ): Promise> {\n const res = await this.http.get(\"/ade/inspire/ajax/ajax.php\", {\n params: {\n op: \"getParts\",\n prov: provinceId,\n cod_com: councilCode,\n foglio: sheetId,\n tkn: token\n }\n });\n const { hasError, errorCode } = this.checkAdeError(res);\n if (hasError) {\n return {\n error: true,\n errorCode: errorCode,\n data: []\n };\n } else {\n // example of API response: {\"CODICE\":[\"A\"], \"NODISPLAY\": [\"0\"], NUM_PART\":[\"A/\"]}\n // id: NUM_PART, noDisplay: NODISPLAY, label: CODICE\n const data = res.data as ParcelAde;\n const formattedRes = data.NUM_PART.map((id: string, index: number) => {\n return {\n id,\n noDisplay: data.NODISPLAY[index] === \"1\" ? true : false,\n label: data.CODICE[index]\n };\n });\n return {\n error: false,\n errorCode: null,\n data: formattedRes\n };\n }\n }\n\n public async getParcelDetail(\n provinceId: string,\n councilCode: string,\n sheetId: string,\n parcelId: string,\n token: string\n ): Promise> {\n const res = await this.http.get(\"/ade/inspire/ajax/ajax.php\", {\n params: {\n op: \"getGeomPart\",\n prov: provinceId,\n cod_com: councilCode,\n foglio: sheetId,\n num_part: parcelId,\n tkn: token\n }\n });\n const { hasError, errorCode } = this.checkAdeError(res);\n if (hasError) {\n return {\n error: true,\n errorCode: errorCode,\n data: null\n };\n } else {\n // example of API response: {\"GEOMETRIA\": [\"{ \\\"type\\\": \\\"Polygon\\\", \\\"coordinates\\\": [ [ [13.66, 42.20], [13.66, 42.20], [13.66, 42.20]] }\"]}\n const data = res.data as ParcelGeometryAde;\n const dataJson = JSON.parse(data.GEOMETRIA[0]);\n const coordinates: ParcelGeometry = { coordinates: dataJson.coordinates[0] };\n return {\n error: false,\n errorCode: null,\n data: coordinates\n };\n }\n }\n\n public async getCaptchaImage(): Promise {\n try {\n const resNew: any = await this.makeXhrGetRequest(\"/age-inspire/srv/ita/Captcha?type=image&lang=ita\", true);\n return resNew;\n } catch (error) {\n return null;\n }\n }\n\n public async authorizeCaptcha(captcha: string): Promise<{ authorized: boolean; token: string | null }> {\n const res = await this.http.get(\"/age-inspire/srv/ita/Captcha\", {\n params: {\n type: \"check\",\n captcha: captcha,\n tkn: \"\"\n }\n });\n // example of API response: {\"message\": \"\", result: true, token: \"ASD123\"}\n const data = res.data as CaptchaAuthAde;\n if (data.result === true && data.token && data.token.length > 0) {\n return { authorized: true, token: data.token };\n } else {\n return { authorized: false, token: null };\n }\n }\n\n private checkAdeError(res: any): { hasError: boolean; errorCode: AdeError | null } {\n let hasError = false;\n let errorCode: AdeError | null = null;\n if (res && res.data) {\n if (typeof res.data === \"string\") {\n if (res.data.includes(\"chiamata non autorizzata\")) {\n hasError = true;\n errorCode = \"unauthorized\";\n } else if (res.data.includes(\"tk expired\")) {\n hasError = true;\n errorCode = \"tokenExpired\";\n } else if (res.data.includes(\"ERROR\")) {\n hasError = true;\n errorCode = \"generic\";\n }\n }\n } else if (res && typeof res === \"string\") {\n if (res.includes(\"chiamata non autorizzata\")) {\n hasError = true;\n errorCode = \"unauthorized\";\n } else if (res.includes(\"tk expired\")) {\n hasError = true;\n errorCode = \"tokenExpired\";\n } else if (res.includes(\"ERROR\")) {\n hasError = true;\n errorCode = \"generic\";\n }\n } else if (!res) {\n hasError = true;\n errorCode = \"generic\";\n }\n return { hasError, errorCode };\n }\n\n private async makeFetchGetRequest(url: string) {\n const options = {\n method: \"GET\",\n headers: {\n Accept: \"application/json, text/plain, */*\",\n \"Accept-Encoding\": \"gzip, deflate, br\",\n Connection: \"keep-alive\",\n \"Cache-Control\": \"no-cache\"\n }\n };\n try {\n const res = await fetch(url, options);\n return res;\n } catch (error) {\n return null;\n }\n }\n\n private makeXhrGetRequest(url: string, isBlob = false) {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url);\n if (isBlob) {\n xhr.responseType = \"blob\";\n }\n xhr.onload = function() {\n if (xhr.status >= 200 && xhr.status < 300) {\n if (isBlob) {\n const reader = new FileReader();\n reader.readAsDataURL(xhr.response);\n reader.onload = function() {\n resolve(reader.result);\n };\n } else {\n // transform in json\n const json = JSON.parse(xhr.response);\n resolve(json);\n }\n } else {\n reject(new Error(\"Request failed: \" + xhr.statusText));\n }\n };\n xhr.onerror = function() {\n reject(new Error(\"Network error\"));\n };\n xhr.send();\n });\n }\n}\n"],"sourceRoot":""}