{ "version": 3, "sources": ["apps/frontend/src/app/notifications/services/notifications.service.ts"], "sourcesContent": ["import { Injectable } from '@angular/core';\nimport { Entity } from '@proman/services/entity.service';\nimport { FilterService } from '@proman/services/filter.service';\nimport { Subject } from 'rxjs';\nimport { snakeCase } from '@proman/utils';\nimport { TextPreviewDialogComponent } from '../../shared/components/text-preview-dialog.component';\nimport { getFieldValue } from '@proman/table/utils/tools';\nimport { Dialog } from '../../shared/services/dialog.service';\nimport { ButtonListener, EmailListener, PeriodicListener, TableListener } from '@proman/interfaces/entity-interfaces';\nimport moment from 'moment/moment';\nimport { TableButton } from '@proman/interfaces/object-interfaces';\n\n@Injectable({ providedIn: 'root' })\nexport class NotificationsService {\n notificationEntity: any;\n objects: any;\n timeStamp: Subject = new Subject();\n\n constructor(private Entity: Entity, private Filter: FilterService, private Dialog: Dialog) {\n this.notificationEntity = this.Entity.get('notification');\n }\n\n toJsName = (name: string) => snakeCase(name);\n\n toJsTranslate = (name: string) => this.Filter.translate(this.toJsName(name));\n\n prepareField = (fieldData: any) => {\n return {\n id: fieldData.fieldName,\n type: fieldData.type,\n name: this.toJsTranslate(fieldData.fieldName),\n values: fieldData.values\n };\n };\n\n prepareAssociation = (associationData: any) => {\n return {\n id: associationData.fieldName,\n toOne: associationData.toOne,\n name: this.toJsTranslate(associationData.fieldName),\n className: associationData.className,\n fields: this.prepareAssociationFields(associationData)\n };\n };\n\n isDateType = (field: any) => field.type === 'date'\n\n prepareObject = (object: any) => {\n object.name = this.toJsTranslate(object.className);\n object.fields = object.fields.map(this.prepareField);\n object.dateFields = object.fields.filter(this.isDateType);\n object.associations = object.associations.map(this.prepareAssociation);\n\n return object;\n };\n\n prepareAssociationFields = (association: any) => {\n const assosiationFields: any = [];\n const objectItem = this.objects.Filter((object: any) => object.className === association.className)[0];\n\n if (!objectItem) return [];\n\n objectItem.fields.forEach((field: any) => {\n\n if (!field._translated) {\n field.name = this.toJsTranslate(association.className) + ' - ' + this.toJsTranslate(field.id);\n field._translated = true;\n\n }\n\n assosiationFields.push(field);\n });\n\n return assosiationFields;\n };\n\n getObjects = () => {\n return this.notificationEntity\n .getObjects()\n .then((response: any) => {\n this.objects = response;\n\n return response?.map(this.prepareObject);\n });\n };\n\n refresh() {\n this.timeStamp.next(new Date().getTime());\n }\n\n getTables = () => {\n return [\n 'sale_opportunity_project',\n 'purchase',\n 'orders',\n 'material_quants',\n 'shipments',\n 'productions',\n 'events',\n 'documents',\n 'persons',\n 'products',\n 'employees',\n 'development_project',\n ].map((item: string) => ({ id: item, name: this.Filter.translate(item) }))\n };\n\n readLastResult = (row: (PeriodicListener|TableListener|EmailListener|ButtonListener)) => {\n this.Dialog.open2(TextPreviewDialogComponent, {\n type: 'html',\n header: 'last_result',\n text: `${row.lastResult}`\n })\n }\n\n getActionValue = (row: any) => {\n if (!row.actionClass) return '';\n\n const splits = row.actionClass.split('\\\\');\n\n return splits[splits.length - 1];\n };\n fullDate = (date: string) => date ? moment(date).utcOffset(0).format('YYYY-MM-DD HH:mm:ss') : '';\n\n getBooleanIcon = (row: any, key: any) => {\n const value = getFieldValue(key, row);\n\n const icon = {\n icon: value ? 'check' : 'times',\n color: value ? 'green' : 'grey'\n };\n\n return {\n icon,\n text: ''\n };\n };\n\n getMultiselectEnabledButtons (entity: string, callback: () => void): TableButton[] {\n return [\n {\n action: 'update_status',\n acl: 'notification.create',\n theme: 'accent',\n label: 'enable',\n callback: (rows: (PeriodicListener|TableListener|EmailListener|ButtonListener)[]) => {\n const promises: Promise[] = [];\n rows.forEach(row => {\n promises.push(this.Entity.get(entity)\n .update({\n id: row.id,\n enabled: true\n }))\n });\n Promise.all(promises).then(() => callback());\n }\n },\n {\n action: 'update_status',\n acl: 'notification.create',\n theme: 'warn',\n label: 'disable',\n callback: (rows: (PeriodicListener|TableListener|EmailListener|ButtonListener)[]) => {\n const promises: Promise[] = [];\n rows.forEach(row => {\n promises.push(this.Entity.get(entity)\n .update({\n id: row.id,\n enabled: false\n }))\n });\n Promise.all(promises).then(() => callback());\n }\n },\n ];\n }\n}\n"], "mappings": "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", "names": ["import_moment", "NotificationsService", "constructor", "Entity", "Filter", "Dialog", "timeStamp", "Subject", "toJsName", "name", "snakeCase", "toJsTranslate", "translate", "prepareField", "fieldData", "id", "fieldName", "type", "values", "prepareAssociation", "associationData", "toOne", "className", "fields", "prepareAssociationFields", "isDateType", "field", "prepareObject", "object", "map", "dateFields", "filter", "associations", "association", "assosiationFields", "objectItem", "objects", "forEach", "_translated", "push", "getObjects", "notificationEntity", "then", "response", "getTables", "item", "readLastResult", "row", "open2", "TextPreviewDialogComponent", "header", "text", "lastResult", "getActionValue", "actionClass", "splits", "split", "length", "fullDate", "date", "moment", "utcOffset", "format", "getBooleanIcon", "key", "value", "getFieldValue", "icon", "color", "get", "refresh", "next", "Date", "getTime", "getMultiselectEnabledButtons", "entity", "callback", "action", "acl", "theme", "label", "rows", "promises", "update", "enabled", "Promise", "all", "\u0275\u0275inject", "FilterService", "factory", "\u0275fac", "providedIn"] }