{ "version": 3, "sources": ["libs/crm/dynamic/src/lib/multi-object-bulk-import/bulk-import-stepper.service.ts", "libs/crm/dynamic/src/lib/multi-object-bulk-import/field-mapping-step/field-mapping.service.ts", "libs/crm/dynamic/src/lib/multi-object-bulk-import/file-upload-step/csv-parser.service.ts"], "sourcesContent": ["import { Injectable } from '@angular/core';\nimport { RxState } from '@rx-angular/state';\nimport { CSVHeaderMappingInterface } from '@vendasta/crm';\nimport { Observable, of } from 'rxjs';\n\nexport type Step = 'fileUploadCompleted' | 'fieldMappingCompleted';\nexport type PermissionType = 'contactPermissions' | 'companyPermissions';\nexport type CsvRow = { [key: string]: CsvRowValue };\nexport interface CsvRowValue {\n value: string;\n isDuplicateHeaderName: boolean;\n}\n\n@Injectable()\nexport class BulkImportStepperService {\n csvFilename$: Observable = this.state.select('csvFilename');\n csvRows$: Observable = this.state.select('csvRows');\n csvIsRowEstimate$: Observable = this.state.select('csvIsRowEstimate');\n csvFirstRow$: Observable = this.state.select('csvFirstRow');\n csvMappings$: Observable = this.state.select('csvHeaderMappings');\n fileUploadCompleted$: Observable = this.state.select('fileUploadCompleted');\n fieldMappingCompleted$: Observable = this.state.select('fieldMappingCompleted');\n contactPermissions$: Observable = this.state.select('contactPermissions');\n companyPermissions$: Observable = this.state.select('companyPermissions');\n\n constructor(private readonly state: RxState) {\n this.reset();\n }\n\n reset(): void {\n const initial: ComponentState = {\n csvFilename: '',\n csvRows: '0',\n csvIsRowEstimate: false,\n csvFirstRow: {},\n csvHeaderMappings: [],\n fileUploadCompleted: false,\n fieldMappingCompleted: false,\n contactPermissions: false,\n companyPermissions: false,\n };\n this.state.set(initial);\n }\n\n isStepComplete(stepKey: Step): boolean {\n return this.state.get(stepKey);\n }\n\n completeStep(stepKey: Step, complete: boolean) {\n this.state.set({ [stepKey]: complete });\n }\n\n hasPermission$(permissionType: PermissionType): Observable {\n return of(this.state.get(permissionType));\n }\n\n setPermission(permissionType: PermissionType, complete: boolean) {\n this.state.set({ [permissionType]: complete });\n }\n\n setCSVFilename(csvFilename: string) {\n this.state.set({ csvFilename: csvFilename });\n }\n\n setCSVRows(csvRows: string, isEstimated: boolean): void {\n this.state.set({ csvRows: csvRows, csvIsRowEstimate: isEstimated });\n }\n\n setCSVFirstRow(csvFirstRow: CsvRow): void {\n this.state.set({ csvFirstRow });\n }\n\n setCSVHeaderMappings(csvHeaderMappings: CSVHeaderMappingInterface[]): void {\n this.state.set({ csvHeaderMappings });\n }\n}\n\ninterface ComponentState {\n csvFilename: string;\n csvRows: string;\n csvIsRowEstimate: boolean;\n csvFirstRow: CsvRow;\n csvHeaderMappings: CSVHeaderMappingInterface[];\n fileUploadCompleted: boolean;\n fieldMappingCompleted: boolean;\n contactPermissions: boolean;\n companyPermissions: boolean;\n}\n", "import { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { combineLatest, map, Observable, ReplaySubject } from 'rxjs';\nimport { shareReplay, take, tap } from 'rxjs/operators';\nimport { BulkImportStepperService } from '../bulk-import-stepper.service';\nimport { CSVHeaderMappingInterface, FieldType } from '@vendasta/crm';\nimport { FieldSchemaInterface, ObjectType, CrmFormService, SystemFieldIds } from '@galaxy/crm/static';\n\nexport interface FieldSchemaGroup {\n label: string;\n schemaOptions: FieldSchemaInterface[];\n}\n\n@Injectable()\nexport class FieldMappingService {\n fieldMappings$: Observable;\n importTypeValues$$ = new ReplaySubject<{ [key: number]: ObjectType }>(1);\n\n constructor(\n private readonly translate: TranslateService,\n private readonly formService: CrmFormService,\n private readonly stepperService: BulkImportStepperService,\n ) {\n this.fieldMappings$ = this.stepperService.csvMappings$;\n this.importTypeValues$$.next({});\n }\n\n getFieldSchemaMap$(objectType: ObjectType): Observable> {\n return this.formService.listAllFormFields$(objectType).pipe(\n map((schemas) => {\n const schemaMap: Map = new Map();\n for (const schema of schemas) {\n schemaMap.set(schema.fieldId, schema);\n }\n return schemaMap;\n }),\n );\n }\n\n displayField(s: FieldSchemaInterface | undefined): boolean {\n if (s?.fieldId == SystemFieldIds.CompanyID || s?.fieldId == SystemFieldIds.ContactID) return true;\n return !!s && !s.readOnly;\n }\n\n listFieldGroups$(objectType: ObjectType): Observable {\n const fieldSchemaMap$ = this.getFieldSchemaMap$(objectType);\n const fieldGroups$ = this.formService.listAllObjectFormFieldGroups$(objectType);\n return combineLatest([fieldSchemaMap$, fieldGroups$]).pipe(\n map(([schemaMap, groups]) => {\n return groups.map((g) => ({\n label: this.translate.instant(g.description || 'BULK_IMPORT.MAP_FIELDS_STEP.OTHER_FIELDS'),\n schemaOptions: g.fieldIds.map((id) => schemaMap.get(id)).filter(this.displayField) as FieldSchemaInterface[],\n }));\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n }\n\n private fieldAllowsMultipleMappings(fieldType: FieldType): boolean {\n const typesWithMultipleMappings = [FieldType.FIELD_TYPE_TAG];\n return typesWithMultipleMappings.includes(fieldType || FieldType.FIELD_TYPE_INVALID);\n }\n\n availableFieldGroups$(objectType: ObjectType): Observable {\n return combineLatest([this.listFieldGroups$(objectType), this.fieldMappings$]).pipe(\n map(([groups, mappings]) => {\n const fieldIDs = mappings.map((m) => m.fieldId);\n return groups\n .map((g) => {\n const fg = {\n label: g.label,\n } as FieldSchemaGroup;\n fg.schemaOptions = g.schemaOptions.filter((option) => {\n return !fieldIDs.includes(option.fieldId) || this.fieldAllowsMultipleMappings(option.fieldType);\n });\n return fg;\n })\n .filter((g) => g.schemaOptions.length > 0);\n }),\n );\n }\n\n addMapping(header: string, fieldId: string, objectType: string): void {\n this.stepperService.csvMappings$\n .pipe(\n take(1),\n map((mappings) => {\n const newMappings = Object.assign([], mappings); // If we don't do this, the stepper service won't detect the change\n newMappings.push({\n headerName: header,\n fieldId: fieldId,\n crmObjectType: objectType,\n } as CSVHeaderMappingInterface);\n return newMappings;\n }),\n tap((mappings) => this.stepperService.setCSVHeaderMappings(mappings)),\n )\n .subscribe();\n }\n\n removeMapping(header: string): void {\n this.stepperService.csvMappings$\n .pipe(\n map((mappings) => {\n return mappings.filter((mapping) => mapping.headerName !== header);\n }),\n tap((mappings) => this.stepperService.setCSVHeaderMappings(mappings)),\n take(1),\n )\n .subscribe();\n }\n\n getImportTypeValues() {\n return this.importTypeValues$$;\n }\n\n resetImportTypeValues() {\n this.importTypeValues$$.next({});\n }\n}\n", "import { Inject, Injectable } from '@angular/core';\nimport { Observable, switchMap, map, of, forkJoin } from 'rxjs';\nimport { CRMImporterApiService, CSVHeaderMapping } from '@vendasta/crm';\nimport { CrmDependencies, CrmInjectionToken } from '@galaxy/crm/static';\nimport { BulkImportStepperService, CsvRow } from '../bulk-import-stepper.service';\n\ninterface CSVInfo {\n rows: string;\n isEstimate: boolean;\n firstRow: CsvRow;\n rowMapping: CSVHeaderMapping[];\n}\n\n@Injectable()\nexport class CsvParserService {\n private namespace$ = this.config.namespace$;\n\n constructor(\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n private importer: CRMImporterApiService,\n private stepper: BulkImportStepperService,\n ) {}\n\n parseCSV(crmObjectType: string, filename: string): Observable {\n return this.namespace$.pipe(\n switchMap((namespace) =>\n this.importer.getMultiFileUploadData({\n namespace,\n crmObjectType,\n filename: [filename],\n }),\n ),\n switchMap((response) =>\n forkJoin([\n of(response),\n this.stepper.hasPermission$('contactPermissions'),\n this.stepper.hasPermission$('companyPermissions'),\n ]),\n ),\n map(([response, contactPermissions, companyPermissions]) => {\n const file = response.files && response.files[0];\n\n const headers = file?.headers || [];\n const firstRowEntries = headers.map(({ name, sampleData }) => [name, (sampleData && sampleData[0]) || '']);\n // uses the first occurrence of repeat headers\n const seenHeader = new Set();\n const duplicateHeader = new Set();\n const uniqueFirstRowEntries = firstRowEntries.filter(([key]) => {\n if (seenHeader.has(key)) {\n duplicateHeader.add(key);\n return false;\n } else {\n seenHeader.add(key);\n return true;\n }\n });\n const firstRow = Object.fromEntries(\n uniqueFirstRowEntries.map(([key, value]) => [\n key,\n { value: value, isDuplicateHeaderName: duplicateHeader.has(key) },\n ]),\n );\n\n const mappingSuggestions: CSVHeaderMapping[] = file?.mappingSuggestions || [];\n const uniqueMappingSuggestions = mappingSuggestions.filter((entry, index, self) => {\n if (!contactPermissions && entry.crmObjectType === 'Contact') {\n return false;\n }\n if (!companyPermissions && entry.crmObjectType === 'Company') {\n return false;\n }\n\n const duplicateIndex = self.findIndex(\n (e) => e.headerName === entry.headerName && e.crmObjectType === entry.crmObjectType,\n );\n return duplicateIndex === index;\n });\n\n return {\n rows: file.size.totalRows || '0',\n isEstimate: !!file?.size?.isEstimate,\n firstRow: firstRow,\n rowMapping: uniqueMappingSuggestions,\n };\n }),\n );\n }\n}\n"], "mappings": "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", "names": ["BulkImportStepperService", "init_bulk_import_stepper_service", "__esmMin", "init_esm", "constructor", "state", "csvFilename$", "select", "csvRows$", "csvIsRowEstimate$", "csvFirstRow$", "csvMappings$", "fileUploadCompleted$", "fieldMappingCompleted$", "contactPermissions$", "companyPermissions$", "reset", "initial", "csvFilename", "csvRows", "csvIsRowEstimate", "csvFirstRow", "csvHeaderMappings", "fileUploadCompleted", "fieldMappingCompleted", "contactPermissions", "companyPermissions", "set", "isStepComplete", "stepKey", "get", "completeStep", "complete", "hasPermission$", "permissionType", "of", "setPermission", "setCSVFilename", "setCSVRows", "isEstimated", "setCSVFirstRow", "setCSVHeaderMappings", "\u0275\u0275inject", "RxState", "factory", "\u0275fac", "FieldMappingService", "init_field_mapping_service", "__esmMin", "init_esm", "init_operators", "init_vendasta_crm", "init_src", "constructor", "translate", "formService", "stepperService", "importTypeValues$$", "ReplaySubject", "fieldMappings$", "csvMappings$", "next", "getFieldSchemaMap$", "objectType", "listAllFormFields$", "pipe", "map", "schemas", "schemaMap", "Map", "schema", "set", "fieldId", "displayField", "s", "SystemFieldIds", "CompanyID", "ContactID", "readOnly", "listFieldGroups$", "fieldSchemaMap$", "fieldGroups$", "listAllObjectFormFieldGroups$", "combineLatest", "groups", "g", "label", "instant", "description", "schemaOptions", "fieldIds", "id", "get", "filter", "shareReplay", "refCount", "bufferSize", "fieldAllowsMultipleMappings", "fieldType", "FieldType", "FIELD_TYPE_TAG", "includes", "FIELD_TYPE_INVALID", "availableFieldGroups$", "mappings", "fieldIDs", "m", "fg", "option", "length", "addMapping", "header", "take", "newMappings", "Object", "assign", "push", "headerName", "crmObjectType", "tap", "setCSVHeaderMappings", "subscribe", "removeMapping", "mapping", "getImportTypeValues", "resetImportTypeValues", "\u0275\u0275inject", "TranslateService", "CrmFormService", "BulkImportStepperService", "factory", "\u0275fac", "CsvParserService", "init_csv_parser_service", "__esmMin", "init_esm", "init_src", "constructor", "config", "importer", "stepper", "namespace$", "parseCSV", "crmObjectType", "filename", "pipe", "switchMap", "namespace", "getMultiFileUploadData", "response", "forkJoin", "of", "hasPermission$", "map", "contactPermissions", "companyPermissions", "file", "files", "firstRowEntries", "headers", "name", "sampleData", "seenHeader", "Set", "duplicateHeader", "uniqueFirstRowEntries", "filter", "key", "has", "add", "firstRow", "Object", "fromEntries", "value", "isDuplicateHeaderName", "uniqueMappingSuggestions", "mappingSuggestions", "entry", "index", "self", "findIndex", "e", "headerName", "rows", "size", "totalRows", "isEstimate", "rowMapping", "\u0275\u0275inject", "CrmInjectionToken", "CRMImporterApiService", "BulkImportStepperService", "factory", "\u0275fac"] }