{ "version": 3, "sources": ["apps/partner-center-client/src/app/core/salesperson.service.ts"], "sourcesContent": ["import { Injectable } from '@angular/core';\nimport { BehaviorSubject, EMPTY, Observable, ReplaySubject } from 'rxjs';\nimport { catchError, first, map, skipWhile } from 'rxjs/operators';\nimport { ApiService } from '../api-service/api.service';\nimport { SalespersonServiceInterface } from '../sales-orders/interfaces/salesperson-service-interface';\nimport { Salesperson } from './salesperson';\n\n@Injectable({ providedIn: 'root' })\nexport class SalespersonService implements SalespersonServiceInterface {\n // TODO: This should be a Subject or a ReplaySubject with no value, initially.\n // Subscribers currently see \"there are no salespeople\" initially, when the\n // reality is: it's unknown how many salespeople there are until we load them.\n salespeopleSubject: BehaviorSubject = new BehaviorSubject([]);\n private salespeopleNoInitialValue$: Observable = this.salespeopleSubject.pipe(\n skipWhile((v) => Array.isArray(v) && v.length === 0),\n );\n latestSalespeople$$: ReplaySubject = new ReplaySubject(1);\n hasLoadedSalespeople$$: BehaviorSubject = new BehaviorSubject(false);\n\n constructor(private apiService: ApiService) {}\n\n readonly salespeople$: Observable = this.salespeopleNoInitialValue$;\n\n /**\n * @deprecated Use salespeople$\n */\n get salespeople(): Observable {\n return this.salespeopleSubject.asObservable();\n }\n\n get latestSalespeople$(): Observable {\n return this.latestSalespeople$$.asObservable();\n }\n\n get hasLoadedSalespeople$(): Observable {\n return this.hasLoadedSalespeople$$.asObservable();\n }\n\n loadAllSalespeopleAjax(): Observable {\n return this.apiService\n .get('/_ajax/v1/salesperson/list')\n .pipe(map((response) => response.map((salesperson) => Salesperson.fromSalesPersonVObject(salesperson))));\n }\n\n loadAllSalespeople(): void {\n this.loadAllSalespeopleAjax().subscribe((salespeople) => {\n this.hasLoadedSalespeople$$.next(true);\n this.salespeopleSubject.next(salespeople);\n this.latestSalespeople$$.next(salespeople);\n });\n }\n\n public loadAllSalespeopleIfNotLoaded(): void {\n this.hasLoadedSalespeople$$.pipe(first()).subscribe((hasLoaded) => {\n if (hasLoaded) {\n return;\n }\n this.loadAllSalespeople();\n });\n }\n\n updateSalespeople(salespeople: Salesperson[]): void {\n this.salespeopleSubject.next(salespeople);\n this.latestSalespeople$$.next(salespeople);\n }\n\n /**\n * @deprecated Use getSalesperson and allow the service to manage it's own\n * optimizations.\n *\n * Gets a salesperson from the list of \"all salespeople\" if that has been\n * loaded. Otherwise, loads all salespeople first.\n */\n getSalespersonFromCache(salespersonId: string): Salesperson {\n if (this.salespeopleSubject.getValue().length === 0) {\n this.loadAllSalespeople();\n }\n return this.salespeopleSubject.getValue().find((salesperson) => salesperson.salesPersonId === salespersonId);\n }\n\n getSalesperson(salespersonId: string, partnerId: string): Observable {\n const url = `/_ajax/v1/get-salesperson/?salespersonId=${salespersonId}&partnerId=${partnerId}`;\n\n return this.apiService.get(url).pipe(\n map((response) => {\n if (!response) {\n return null;\n }\n return response.salesPersonId ? new Salesperson(response) : null;\n }),\n );\n }\n\n getSalespeople(salespersonIds: string[], partnerId: string): Observable {\n const url = `/_ajax/v1/get-salespeople/`;\n const options = {\n params: {\n salespersonIds: salespersonIds,\n partnerId: partnerId,\n },\n };\n return this.apiService.get(url, options).pipe(\n map((response) => {\n if (!response) {\n return null;\n }\n const salesPeople: Salesperson[] = [];\n for (const salesPerson of response) {\n if (salesPerson?.salesPersonId) {\n salesPeople.push(new Salesperson(salesPerson));\n }\n }\n return salesPeople;\n }),\n catchError((err) => {\n console.error(err);\n return EMPTY;\n }),\n );\n }\n\n public getSortedSalespeople(): Observable {\n return this.latestSalespeople$.pipe(\n map((salespeople) => {\n salespeople.sort((a, b) => {\n const aName = a.name.toLowerCase(),\n bName = b.name.toLowerCase();\n\n return aName < bName ? -1 : 1;\n });\n return salespeople;\n }),\n );\n }\n}\n"], "mappings": "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", "names": ["SalespersonService", "constructor", "apiService", "salespeopleSubject", "BehaviorSubject", "salespeopleNoInitialValue$", "pipe", "skipWhile", "v", "Array", "isArray", "length", "latestSalespeople$$", "ReplaySubject", "hasLoadedSalespeople$$", "salespeople$", "salespeople", "asObservable", "latestSalespeople$", "hasLoadedSalespeople$", "loadAllSalespeopleAjax", "get", "map", "response", "salesperson", "Salesperson", "fromSalesPersonVObject", "loadAllSalespeople", "subscribe", "next", "loadAllSalespeopleIfNotLoaded", "first", "hasLoaded", "updateSalespeople", "getSalespersonFromCache", "salespersonId", "getValue", "find", "salesPersonId", "getSalesperson", "partnerId", "url", "getSalespeople", "salespersonIds", "options", "params", "salesPeople", "salesPerson", "push", "catchError", "err", "console", "error", "EMPTY", "getSortedSalespeople", "sort", "a", "b", "aName", "name", "toLowerCase", "bName", "\u0275\u0275inject", "ApiService", "factory", "\u0275fac", "providedIn", "_SalespersonService"] }