{"version":3,"file":"c8y-ngx-components-operations-bulk-operations-service.mjs","sources":["../../operations/bulk-operations-service/bulk-operations.service.ts","../../operations/bulk-operations-service/bulk-operations-service.module.ts","../../operations/bulk-operations-service/bulk-operation.model.ts","../../operations/bulk-operations-service/c8y-ngx-components-operations-bulk-operations-service.ts"],"sourcesContent":["import { Location } from '@angular/common';\nimport { Inject, Injectable, InjectionToken, Optional } from '@angular/core';\nimport { flatten, has, isUndefined } from 'lodash-es';\nimport { Subject } from 'rxjs';\n\nimport {\n  IdReference,\n  IManagedObject,\n  InventoryService,\n  IOperation,\n  IOperationBulk,\n  IResult,\n  OperationBulkService,\n  OperationService\n} from '@c8y/client';\n\nimport { GenericHookOptions, GenericHookType, hookGeneric, Pagination } from '@c8y/ngx-components';\nimport { BulkOperationType } from './bulk-operation.model';\nimport { OperationDetails } from './operation-details.model';\nimport { OperationType } from './operation-type.model';\n\nexport const baseUrl = 'devicecontrol/bulk/creation/';\n\n/**\n * @deprecated Consider using the `hookListBulkType` function instead.\n */\nexport const HOOK_LIST_BULK_TYPE = new InjectionToken<OperationType | OperationType[]>(\n  'HOOK_LIST_BULK_TYPE'\n);\n\n/**\n * You can either provide a single `OperationType` as parameter:\n * ```typescript\n *  hookListBulkType(...)\n * ```\n *\n * Or an array to directly register multiple:\n * ```typescript\n *  hookListBulkType([...])\n * ```\n *\n * Or you provide an Service that implements `ExtensionFactory<OperationType>`\n * ```typescript\n *  export class MyListBulkTypeFactory implements ExtensionFactory<OperationType> {...}\n *  ...\n *  hookListBulkType(MyListBulkTypeFactory)\n * ```\n * A typed alternative to `HOOK_LIST_BULK_TYPE`.\n * @param type The `OperationType`'s or `ExtensionFactory` to be provided.\n * @returns An `Provider` to be provided in your module.\n */\nexport function hookListBulkType(\n  type: GenericHookType<OperationType>,\n  options?: Partial<GenericHookOptions>\n) {\n  return hookGeneric<OperationType>(type, HOOK_LIST_BULK_TYPE, options);\n}\n\n@Injectable()\nexport class BulkOperationsService {\n  readonly DD_LOW_COUNT: number = 10;\n  firmwareId: Subject<IdReference> = new Subject<IdReference>();\n\n  private bulkTypes: OperationType[];\n\n  constructor(\n    private operationBulkService: OperationBulkService,\n    private operationService: OperationService,\n    private inventoryService: InventoryService,\n    private location: Location,\n\n    @Optional() @Inject(HOOK_LIST_BULK_TYPE) bulkTypes: Array<OperationType | OperationType[]>\n  ) {\n    this.bulkTypes = flatten(bulkTypes);\n\n    this.bulkTypes = this.bulkTypes.map(type => {\n      if (isUndefined(type.selected)) {\n        type.selected = false;\n      }\n      return type;\n    });\n  }\n\n  getBulkOperations(customFilter = {}) {\n    const filter = {\n      withTotalPages: true,\n      withDeleted: true,\n      pageSize: 50,\n      ...customFilter\n    };\n\n    return this.operationBulkService.list(filter);\n  }\n\n  getBulkOperationById(bulkOperationId: string | number) {\n    return this.operationBulkService.detail(bulkOperationId);\n  }\n\n  createBulkOperation(bulkOperation: Partial<IOperationBulk>) {\n    return this.operationBulkService.create(bulkOperation);\n  }\n\n  deleteBulkOperation(bulkOperationId) {\n    return this.operationBulkService.delete(bulkOperationId);\n  }\n\n  updateBulkOperation(bulkOperation: Partial<IOperationBulk>) {\n    return this.operationBulkService.update(bulkOperation);\n  }\n\n  getOperation(id: string): Promise<IResult<IOperation>> {\n    return this.operationService.detail(id);\n  }\n\n  returnToBulkOperationOverview() {\n    this.location.back();\n  }\n\n  setBulkTypes(list: OperationType[]) {\n    this.bulkTypes = list;\n  }\n\n  getBulkTypes(): OperationType[] {\n    return this.bulkTypes;\n  }\n\n  setFirmwareId(id: IdReference) {\n    this.firmwareId.next(id);\n  }\n\n  createGroup(deviceQueryDataString: string) {\n    const dynamicGroup: Partial<IManagedObject> = {\n      name: 'Bulk operations group',\n      type: 'c8y_DynamicGroup',\n      c8y_IsDynamicGroup: { invisible: {} },\n      c8y_DeviceQueryString: deviceQueryDataString\n    };\n\n    return this.inventoryService.create(dynamicGroup);\n  }\n\n  async scheduleBulkOperation(deviceQueryString: string, details: OperationDetails) {\n    const dynamicGroup = await this.createGroup(deviceQueryString);\n\n    const bulkOperation: IOperationBulk = {\n      groupId: dynamicGroup.data.id,\n      operationPrototype: details.prototype,\n      creationRamp: details.schedule.delayInSeconds,\n      startDate: details.schedule.scheduledDate.toISOString(),\n      note: details.note\n    };\n\n    await this.createBulkOperation(bulkOperation);\n  }\n\n  getSingleOperationsByStatus(status, bulkOperationId, pagination?: Pagination) {\n    const filter = {\n      withTotalPages: true,\n      pageSize: pagination?.pageSize,\n      currentPage: pagination?.currentPage,\n      bulkOperationId,\n      status: (status && status.toUpperCase()) || ''\n    };\n\n    return this.operationService.list(filter);\n  }\n\n  async getSingleOperationsCountByStatus(status, bulkOperationId): Promise<number> {\n    const filter = {\n      withTotalPages: true,\n      bulkOperationId,\n      status: (status && status.toUpperCase()) || '',\n      pageSize: 1\n    };\n\n    return (await this.operationService.list(filter))?.paging?.totalPages;\n  }\n\n  async getSingleOperationsTotal(bulkOperationId): Promise<number> {\n    const filter = {\n      withTotalPages: true,\n      bulkOperationId,\n      pageSize: 1\n    };\n\n    return (await this.operationService.list(filter))?.paging?.totalPages;\n  }\n\n  updateSingleOperation(partialUpdateObject: Partial<IOperation>) {\n    return this.operationService.update(partialUpdateObject);\n  }\n\n  retrieveBulkOperationType(operation: IOperation): BulkOperationType {\n    let type: BulkOperationType;\n\n    this.bulkTypes.some(t => {\n      if (t.fragments.some(fragment => has(operation, fragment))) {\n        type = t.type;\n        return true;\n      }\n    });\n\n    return type;\n  }\n}\n","import { NgModule } from '@angular/core';\n\nimport { BulkOperationsService } from './bulk-operations.service';\n\n/**\n * This module provides a shared bulk operations service.\n */\n@NgModule({\n  imports: [],\n  providers: [BulkOperationsService]\n})\nexport class BulkOperationsServiceModule {}\n","export enum BulkOperationType {\n  SOFTWARE = 'software',\n  FIRMWARE = 'firmware',\n  CONFIGURATION = 'configuration',\n  DEVICE_PROFILE = 'device-profile'\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}