{"version":3,"file":"Common-DEbUzNLx.js","sources":["../../Client/api/Common.ts"],"sourcesContent":["import { DocType } from '@shared/Models';\r\n\r\nexport const upload = (uri: string, model: any, files: File[], onError?: (e: any, statusCode: number) => void) => {\r\n    return new Promise<void>((resolve, reject) => {\r\n        const formData = new FormData();\r\n        files.forEach(file => formData.append(file.name, file));\r\n\r\n        const query = Object.keys(model)\r\n            .filter(key => model[key] !== null && model[key] !== undefined)\r\n            .map((key, index) => `${index === 0 ? '?' : '&'}${key}=${model[key]}`)\r\n            .join('');\r\n\r\n        const xhr = new XMLHttpRequest();\r\n\r\n        xhr.onreadystatechange = () => {\r\n            if (xhr.readyState === 4) {\r\n                if (xhr.status === 200) {\r\n                    resolve();\r\n                } else {\r\n                    if (onError) {\r\n                        onError(xhr.responseText, xhr.status);\r\n                        reject();\r\n                        return;\r\n                    }\r\n\r\n                    if (xhr.status === 403) {\r\n                        reject(new Error('You are not authorized to perform this action.'));\r\n                        return;\r\n                    }\r\n\r\n                    const response = JSON.parse(xhr.responseText);\r\n                    reject(new Error(response.ExceptionMessage));\r\n                }\r\n            }\r\n        };\r\n\r\n        xhr.open('POST', uri + query, true);\r\n        xhr.send(formData);\r\n    });\r\n};\r\n\r\n/** Returns an endpoint url to request a policy document stored in IMS by DocType enum. */\r\nexport function getPolicyDocumentEndpoint(docType: DocType, quoteId: string) {\r\n    switch (docType) {\r\n        case DocType.Policy:\r\n            return getUrl('policydocuments');\r\n        case DocType.Invoice:\r\n            return getUrl('invoicedocuments');\r\n        case DocType.Payment:\r\n            return getUrl('paymentdocuments');\r\n        case DocType.ChecklistOfCoverage:\r\n            return getUrl('checklistofcoverage');\r\n        default:\r\n            throw 'Unexpected docType: ' + docType;\r\n    }\r\n\r\n    function getUrl(route: string) {\r\n        return `/api/ims/${route}/${quoteId}`;\r\n    }\r\n}\r\n\r\n/** Returns the file name provided by a response from the server. If there is no Content-Disposition header in the response\r\n * it returns 'file'. */\r\nexport function getFileNameFromResponse(response: Response) {\r\n    const contentDisposition = response.headers.get('Content-Disposition'),\r\n        rawFileName = contentDisposition?.split('filename=')[1] || 'file',\r\n        fileName = rawFileName.replace(/\"/g, '');\r\n    return fileName;\r\n}\r\n"],"names":["upload","uri","model","files","onError","resolve","reject","formData","file","query","key","index","xhr","response","getPolicyDocumentEndpoint","docType","quoteId","DocType","getUrl","route","getFileNameFromResponse","contentDisposition"],"mappings":"yCAEO,MAAMA,EAAS,CAACC,EAAaC,EAAYC,EAAeC,IACpD,IAAI,QAAc,CAACC,EAASC,IAAW,CACpC,MAAAC,EAAW,IAAI,SACrBJ,EAAM,QAAgBK,GAAAD,EAAS,OAAOC,EAAK,KAAMA,CAAI,CAAC,EAEtD,MAAMC,EAAQ,OAAO,KAAKP,CAAK,EAC1B,OAAOQ,GAAOR,EAAMQ,CAAG,IAAM,MAAQR,EAAMQ,CAAG,IAAM,MAAS,EAC7D,IAAI,CAACA,EAAKC,IAAU,GAAGA,IAAU,EAAI,IAAM,GAAG,GAAGD,CAAG,IAAIR,EAAMQ,CAAG,CAAC,EAAE,EACpE,KAAK,EAAE,EAENE,EAAM,IAAI,eAEhBA,EAAI,mBAAqB,IAAM,CACvB,GAAAA,EAAI,aAAe,EACf,GAAAA,EAAI,SAAW,IACPP,EAAA,MACL,CACH,GAAID,EAAS,CACDA,EAAAQ,EAAI,aAAcA,EAAI,MAAM,EAC7BN,EAAA,EACP,MAAA,CAGA,GAAAM,EAAI,SAAW,IAAK,CACbN,EAAA,IAAI,MAAM,gDAAgD,CAAC,EAClE,MAAA,CAGJ,MAAMO,EAAW,KAAK,MAAMD,EAAI,YAAY,EAC5CN,EAAO,IAAI,MAAMO,EAAS,gBAAgB,CAAC,CAAA,CAGvD,EAEAD,EAAI,KAAK,OAAQX,EAAMQ,EAAO,EAAI,EAClCG,EAAI,KAAKL,CAAQ,CAAA,CACpB,EAIW,SAAAO,EAA0BC,EAAkBC,EAAiB,CACzE,OAAQD,EAAS,CACb,KAAKE,EAAQ,OACT,OAAOC,EAAO,iBAAiB,EACnC,KAAKD,EAAQ,QACT,OAAOC,EAAO,kBAAkB,EACpC,KAAKD,EAAQ,QACT,OAAOC,EAAO,kBAAkB,EACpC,KAAKD,EAAQ,oBACT,OAAOC,EAAO,qBAAqB,EACvC,QACI,KAAM,uBAAyBH,CAAA,CAGvC,SAASG,EAAOC,EAAe,CACpB,MAAA,YAAYA,CAAK,IAAIH,CAAO,EAAA,CAE3C,CAIO,SAASI,EAAwBP,EAAoB,CACxD,MAAMQ,EAAqBR,EAAS,QAAQ,IAAI,qBAAqB,EAG9D,QAFWQ,GAAA,YAAAA,EAAoB,MAAM,aAAa,KAAM,QACpC,QAAQ,KAAM,EAAE,CAE/C"}