{ "version": 3, "sources": ["src/app/cases/new-case/new-case.service.ts"], "sourcesContent": ["import { Injectable } from '@angular/core';\nimport { Observable, forkJoin, of } from 'rxjs';\nimport { catchError, map, mergeMap } from 'rxjs/operators';\nimport { AppConfigService } from '../../app-config.service';\nimport { KreditorService } from '../../shared/kreditor.service';\nimport { ICaseRegistered as INewCaseRegistered, ICountry, INewCase, INewInvoice, IRecentlyCreatedCase, ServiceResult, IUploadFileResult } from '../../shared/models';\nimport { UtilsService } from '../../shared/utils.service';\nimport { CasesService } from 'src/app/services/cases.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NewCaseService {\n constructor (\n private kreditorWs: KreditorService,\n private config: AppConfigService,\n private utils: UtilsService,\n private casesService: CasesService) { }\n\n createCase(newCase: INewCase, reminderAttachments: File[], invoiceAttachments: File[]): Observable {\n return this.kreditorWs.post, INewCase>('cases', newCase)\n .pipe(mergeMap(createResponse => {\n const registered = createResponse.result;\n\n const uploadReminders$ = reminderAttachments?.length > 0 ? this.uploadCaseDocuments(registered.caseNumber, reminderAttachments) : of([]);\n const uploadInvoicesRequestArray$ = this.buildUploadInvoicesRequestArray(registered.caseNumber, newCase, invoiceAttachments);\n\n return uploadReminders$\n .pipe(\n mergeMap(uploadRemindersResult => {\n const failedUploads = uploadRemindersResult.filter(x => !x.isSuccess);\n registered.failedUploadDocuments = failedUploads.map(x => x.fileName);\n return forkJoin(uploadInvoicesRequestArray$).pipe(\n map(invoicesUploadResult => {\n const failedUploads = invoicesUploadResult.filter(x => !x.isSuccess);\n registered.failedUploadDocuments = registered.failedUploadDocuments.concat(failedUploads.map(x => x.fileName));\n registered.attachmentsUploadSuccess = registered.failedUploadDocuments.length == 0;\n return registered;\n })\n )\n }),\n catchError(uploadError => {\n registered.attachmentsUploadSuccess = false;\n return of(registered)\n }));\n }));\n }\n\n uploadCaseDocuments(caseNumber: number, documents: File[]): Observable {\n return this.kreditorWs.postFormData>(`cases/${caseNumber}/documents/multiple`, this.utils.toFileFormData(documents, 'attachments'))\n .pipe(map(_ => _.result));\n }\n\n getDefaults(): Observable {\n return this.getInvoiceDefaults().pipe(map(inv => {\n return {\n invoices: [inv],\n countryCode: this.config.getConfig().countryCode,\n shouldSendReminder: true,\n debtorHasObjections: false,\n isRoadFreight: false\n } as INewCase;\n }));\n }\n\n getInvoiceDefaults(): Observable {\n return of({ amount: 0, currencyCode: this.config.getConfig().currencyCode } as INewInvoice);\n }\n\n getCountries(): Observable {\n return this.kreditorWs.getServiceResult('countries')\n .pipe(map(_ => _.result.sort((x,y) => x.name.localeCompare(y.name))));\n }\n\n getCurrencies(): Observable {\n return this.kreditorWs.getServiceResult('firm/currencies')\n .pipe(map(_ => _.result));\n }\n\n getRecentlyCreatedCases(): Observable {\n return this.kreditorWs.getServiceResult('cases/recentlyCreated')\n .pipe(map(_ => _.result));\n }\n\n private buildUploadInvoicesRequestArray(caseNumber: number, newCase: INewCase, invoiceAttachments: File[]): Observable[] {\n return newCase.invoices.map(x => {\n const invoiceCopy = invoiceAttachments.find(y => y.name == x.invoiceCopyName);\n return this.casesService.uploadInvoiceCopy(caseNumber, x.number, invoiceCopy, false)\n .pipe(\n map(_ => { return { fileName: invoiceCopy.name, isSuccess: true } as IUploadFileResult }),\n catchError(_ => { return of({ fileName: invoiceCopy.name, isSuccess: false } as IUploadFileResult) }));;\n });\n }\n}\n"], "mappings": ";;;;;;;;;;;;;;;;;;;AAYM,IAAO,kBAAP,MAAO,gBAAc;EACzB,YACU,YACA,QACA,OACA,cAA0B;AAH1B,SAAA,aAAA;AACA,SAAA,SAAA;AACA,SAAA,QAAA;AACA,SAAA,eAAA;EAA8B;EAExC,WAAW,SAAmB,qBAA6B,oBAA0B;AACnF,WAAO,KAAK,WAAW,KAAkD,SAAS,OAAO,EACtF,KAAK,SAAS,oBAAiB;AAC9B,YAAM,aAAa,eAAe;AAElC,YAAM,mBAAmB,qBAAqB,SAAS,IAAI,KAAK,oBAAoB,WAAW,YAAY,mBAAmB,IAAI,GAAG,CAAA,CAAE;AACvI,YAAM,8BAA8B,KAAK,gCAAgC,WAAW,YAAY,SAAS,kBAAkB;AAE3H,aAAO,iBACJ,KACC,SAAS,2BAAwB;AAC/B,cAAM,gBAAgB,sBAAsB,OAAO,OAAK,CAAC,EAAE,SAAS;AACpE,mBAAW,wBAAwB,cAAc,IAAI,OAAK,EAAE,QAAQ;AACpE,eAAO,SAAS,2BAA2B,EAAE,KAC3C,IAAI,0BAAuB;AACzB,gBAAMA,iBAAgB,qBAAqB,OAAO,OAAK,CAAC,EAAE,SAAS;AACnE,qBAAW,wBAAwB,WAAW,sBAAsB,OAAOA,eAAc,IAAI,OAAK,EAAE,QAAQ,CAAC;AAC7G,qBAAW,2BAA2B,WAAW,sBAAsB,UAAU;AACjF,iBAAO;QACT,CAAC,CAAC;MAEN,CAAC,GACD,WAAW,iBAAc;AACvB,mBAAW,2BAA2B;AACtC,eAAO,GAAG,UAAU;MACxB,CAAC,CAAC;IACN,CAAC,CAAC;EACN;EAEA,oBAAoB,YAAoB,WAAiB;AACvD,WAAO,KAAK,WAAW,aAAiD,SAAS,UAAU,uBAAuB,KAAK,MAAM,eAAe,WAAW,aAAa,CAAC,EAClK,KAAK,IAAI,OAAK,EAAE,MAAM,CAAC;EAC5B;EAEA,cAAW;AACT,WAAO,KAAK,mBAAkB,EAAG,KAAK,IAAI,SAAM;AAC9C,aAAO;QACL,UAAU,CAAC,GAAG;QACd,aAAa,KAAK,OAAO,UAAS,EAAG;QACrC,oBAAoB;QACpB,qBAAqB;QACrB,eAAe;;IAEnB,CAAC,CAAC;EACJ;EAEA,qBAAkB;AACf,WAAO,GAAG,EAAE,QAAQ,GAAG,cAAc,KAAK,OAAO,UAAS,EAAG,aAAY,CAAiB;EAC7F;EAEA,eAAY;AACV,WAAO,KAAK,WAAW,iBAA6B,WAAW,EAC5D,KAAK,IAAI,OAAK,EAAE,OAAO,KAAK,CAAC,GAAE,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC;EACxE;EAEA,gBAAa;AACX,WAAO,KAAK,WAAW,iBAA2B,iBAAiB,EAChE,KAAK,IAAI,OAAK,EAAE,MAAM,CAAC;EAC5B;EAEA,0BAAuB;AACrB,WAAO,KAAK,WAAW,iBAAyC,uBAAuB,EACpF,KAAK,IAAI,OAAK,EAAE,MAAM,CAAC;EAC5B;EAEQ,gCAAgC,YAAoB,SAAmB,oBAA0B;AACvG,WAAO,QAAQ,SAAS,IAAI,OAAI;AAC9B,YAAM,cAAc,mBAAmB,KAAK,OAAK,EAAE,QAAQ,EAAE,eAAe;AAC5E,aAAO,KAAK,aAAa,kBAAkB,YAAY,EAAE,QAAQ,aAAa,KAAK,EAClF,KACC,IAAI,OAAI;AAAG,eAAO,EAAE,UAAU,YAAY,MAAM,WAAW,KAAI;MAAwB,CAAC,GACxF,WAAW,OAAI;AAAG,eAAO,GAAG,EAAE,UAAU,YAAY,MAAM,WAAW,MAAK,CAAuB;MAAE,CAAC,CAAC;AAAE;IAC3G,CAAC;EACH;;;mCAhFW,iBAAc,mBAAA,eAAA,GAAA,mBAAA,gBAAA,GAAA,mBAAA,YAAA,GAAA,mBAAA,YAAA,CAAA;AAAA;mFAAd,iBAAc,SAAd,gBAAc,WAAA,YAFb,OAAM,CAAA;AAEd,IAAO,iBAAP;", "names": ["failedUploads"] }