@posiwise/enterprise-module 0.0.91 → 0.0.92
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/enterprise-insights/enterprise-insights.component.mjs +3 -2
- package/esm2022/lib/components/enterprise-members/enterprise-members.component.mjs +13 -4
- package/fesm2022/posiwise-enterprise-module.mjs +14 -4
- package/fesm2022/posiwise-enterprise-module.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"posiwise-enterprise-module.mjs","sources":["../../../../libs/enterprise-module/src/lib/components/enterprise-communication-details/enterprise-communication-details.component.ts","../../../../libs/enterprise-module/src/lib/components/enterprise-communication-details/enterprise-communication-details.component.html","../../../../libs/enterprise-module/src/lib/models/enterprise.model.ts","../../../../libs/enterprise-module/src/lib/components/enterprise-communications/enterprise-communications.component.ts","../../../../libs/enterprise-module/src/lib/components/enterprise-communications/enterprise-communications.component.html","../../../../libs/enterprise-module/src/lib/components/enterprise-insights/enterprise-insights.component.ts","../../../../libs/enterprise-module/src/lib/components/enterprise-insights/enterprise-insights.component.html","../../../../libs/enterprise-module/src/lib/components/enterprise-members/enterprise-members.component.ts","../../../../libs/enterprise-module/src/lib/components/enterprise-members/enterprise-members.component.html","../../../../libs/enterprise-module/src/lib/components/enterprise-partners/enterprise-partners.component.ts","../../../../libs/enterprise-module/src/lib/components/enterprise-partners/enterprise-partners.component.html","../../../../libs/enterprise-module/src/lib/components/enterprise-subscriptions/enterprise-subscriptions.component.ts","../../../../libs/enterprise-module/src/lib/components/enterprise-subscriptions/enterprise-subscriptions.component.html","../../../../libs/enterprise-module/src/lib/components/enterprise-tabs/enterprise-tabs.component.ts","../../../../libs/enterprise-module/src/lib/components/enterprise-tabs/enterprise-tabs.component.html","../../../../libs/enterprise-module/src/lib/components/enterprise-wiki/enterprise-wiki.component.ts","../../../../libs/enterprise-module/src/lib/components/enterprise-wiki/enterprise-wiki.component.html","../../../../libs/enterprise-module/src/lib/components/enterprise-wiki-details/enterprise-wiki-details.component.ts","../../../../libs/enterprise-module/src/lib/components/enterprise-wiki-details/enterprise-wiki-details.component.html","../../../../libs/enterprise-module/src/lib/enterprise.module.ts","../../../../libs/enterprise-module/src/posiwise-enterprise-module.ts"],"sourcesContent":["import { Component, Injector, OnDestroy, OnInit } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { GroupService, PermissionService } from '@posiwise/common-services';\nimport { HelperService } from '@posiwise/helper-service';\n\nimport { EnterPriseCommunication } from '../../interfaces/enterprise.interface';\n\n@Component({\n selector: 'pw-enterprise-communication-details',\n templateUrl: './enterprise-communication-details.component.html',\n styleUrls: ['./enterprise-communication-details.component.scss']\n})\nexport class EnterpriseViewParticularCommunicationComponent\n extends AppBaseComponent\n implements OnInit, OnDestroy\n{\n id: number;\n communicationId: number;\n\n chatPermission: string;\n\n communicationDetails: EnterPriseCommunication;\n\n isLoaded = false;\n\n constructor(\n injector: Injector,\n private readonly groupService: GroupService,\n private readonly sanitizer: DomSanitizer\n ) {\n super(injector);\n }\n\n ngOnInit() {\n this.getUserSubscriptionId().subscribe(id => {\n this.id = id;\n });\n this.route.params.subscribe(param => {\n this.communicationId = Number(param['communicationId']);\n });\n this.getCommunication();\n this.chatPermission = `${PermissionService.selectedProduct?.permission}.${PermissionService.selectedProduct?.feature_key}`;\n }\n\n /** Function to call communication */\n private getCommunication() {\n this.groupService.getCommunicationDetails(this.communicationId).subscribe(response => {\n let blogBody;\n if (response?.body) {\n blogBody = HelperService.sanitizeQuillBody(response.body, this.sanitizer);\n }\n this.communicationDetails = { ...response, body: blogBody };\n this.isLoaded = true;\n });\n }\n\n onCancel() {\n this.back();\n }\n\n trackByFileId(_index: number, item) {\n return item.id;\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<div class=\"row\">\n <div class=\"col-12 d-flex\">\n <a aria-label=\"Navigate to Target\"\n (keydown.enter)=\"onCancel()\"\n (click)=\"onCancel()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h2 class=\"mt-0 mb-0\">Communication</h2>\n </div>\n</div>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<div *ngIf=\"isLoaded\">\n <div class=\"content-quill-wrapper container-fluid pw-tab overflow-hidden mt-3\" *ngIf=\"communicationDetails\">\n <div class=\"pb-0\">\n <div class=\"card-body p-4\">\n <div class=\"row mb-3\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-center mb-md-2\">\n <div class=\"d-flex flex-wrap mb-3 mb-md-0\">\n <span [ngClass]=\"communicationDetails?.pushed ? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.pushed ? 'Pushed' : 'Not Pushed' }}\n </span>\n <span [ngClass]=\"communicationDetails?.published? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.published ? 'Published' : 'Not Published' }}\n </span>\n <span [ngClass]=\"communicationDetails?.published ? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.visible_globally ? 'Visible Globally' : 'Not Visible Globally' }}\n </span>\n </div>\n <div class=\"d-flex flex-wrap mb-3 mb-md-0\">\n <span class=\"badge bg-cyan mb-2 me-2 mb-md-0\">{{communicationDetails?.group?.name}}</span>\n <span class=\"badge bg-blue-grey mb-2 me-2 mb-md-0\">{{ 'Created At (' + (communicationDetails?.created_at | date: 'dd-MMM-YYYY') + ')' }}</span>\n <span *ngIf=\"communicationDetails?.pushed_at\" class=\"badge bg-grey mb-2 mb-md-0\">{{ 'Pushed At (' + (communicationDetails?.pushed_at | date: 'dd-MMM-YYYY') + ')' }}</span>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 mb-3 ms-2\">\n <h5>{{ communicationDetails?.title }}</h5>\n </div>\n <div class=\"col-12 mb-3 ms-2 message-icon\">\n <a [routerLink]=\"['/members', communicationDetails?.author?.slug]\">{{\n communicationDetails?.author | ifNameNullShowEmail\n }}</a>\n <div class=\"ms-2\"\n ngbTooltip=\"Message\"\n *rbacAllow=\"chatPermission\">\n <i\n [routerLink]=\"['/message']\"\n [fragment]=\"communicationDetails?.author?.slug\"\n class=\"fa fa-comments cta1-icon\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n\n <div class=\"col-12 ms-2\">\n <div class=\"ql-container ql-snow body-quill\">\n <div class=\"ql-editor\"\n [innerHTML]=\"communicationDetails?.body\">\n </div>\n </div>\n </div>\n <div class=\"col-12 col-sm-10\">\n <p *ngFor=\"\n let files of communicationDetails?.group_communication_files;\n trackBy: trackByFileId\n \">\n <a [href]=\"files?.name?.url\"\n target=\"blank\">{{\n files?.name?.url?.split('?')[0]?.split('/')[\n files?.name?.url.split('?')[0]?.split('/')?.length - 1\n ]\n }}</a>\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n</div>\n\n","import { UntypedFormBuilder, Validators } from '@angular/forms';\n\nexport class AppEnterprise {\n static getWikiForm() {\n return new UntypedFormBuilder().group({\n body: ['', [Validators.required]],\n group_id: ['', [Validators.required]],\n user_id: [''],\n visible_globally: [false],\n title: ['', [Validators.required]],\n communication_type: ['wiki'],\n published: [false],\n pushed: [false]\n });\n }\n\n static getCommunicationsForm() {\n return new UntypedFormBuilder().group({\n body: ['', [Validators.required]],\n group_id: ['', [Validators.required]],\n user_id: [],\n visible_globally: [false],\n title: ['', [Validators.required]],\n communication_type: ['communication'],\n published: [false],\n pushed: [false]\n });\n }\n}\n","import {\n AfterViewChecked,\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Injector,\n OnDestroy,\n OnInit,\n Renderer2\n} from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { GroupService } from '@posiwise/common-services';\nimport { PAGE_SIZE, Paging, Subscription, User } from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\nimport { QuillHelper, ValidateForm } from '@posiwise/utils';\n\nimport { LazyLoadEvent } from 'primeng/api';\n\nimport {\n EnterPriseCommunication,\n EnterPriseGroup,\n EnterPriseGroupDefinition\n} from '../../interfaces/enterprise.interface';\nimport { AppEnterprise } from '../../models/enterprise.model';\n\n@Component({\n selector: 'pw-enterprise-communications',\n templateUrl: './enterprise-communications.component.html',\n styleUrls: ['./enterprise-communications.component.scss']\n})\nexport class EnterpriseCommunicationsComponent\n extends AppBaseComponent\n implements OnInit, OnDestroy, AfterViewChecked, AfterViewInit\n{\n private page = 1;\n\n groupDefinition: EnterPriseGroupDefinition[] = [];\n allGroups: EnterPriseGroup[] = [];\n allCommunicationGroups: EnterPriseGroup[] = [];\n allCommunication: EnterPriseCommunication[] = [];\n\n data: { id?: number };\n\n form: UntypedFormGroup;\n\n submitted = false;\n buttonBusy = false;\n\n user: User;\n hasAccess: boolean;\n subscriptionId: number;\n subscription: Subscription;\n\n id: number;\n groupId: number;\n groupName: string;\n\n uploadedFiles = [];\n filesData: string[];\n\n busy: boolean;\n loading = true;\n isLoaded = false;\n filesUploaded: boolean;\n\n invalidFile = false;\n searchText = '';\n totalRecords: number;\n totalRecordsUnFiltered = 0;\n\n editorConfig;\n\n isEdit = false;\n isAdd = false;\n\n constructor(\n private readonly groupService: GroupService,\n injector: Injector,\n private readonly cdr: ChangeDetectorRef,\n private readonly renderer: Renderer2,\n private readonly el: ElementRef\n ) {\n super(injector);\n QuillHelper.init();\n this.editorConfig = QuillHelper.getEditorConfig();\n this.form = AppEnterprise.getCommunicationsForm();\n }\n ngAfterViewInit(): void {\n this.attachCloseButtonListener();\n HelperService.subscribeToEditorChanges(this.form, 'body');\n }\n\n ngOnInit() {\n this.getUserSubscription().subscribe(response => {\n this.subscription = response;\n if (this.subscription?.id) {\n this.id = this.subscription?.id;\n this.hasAccess = this.hasAdminAccess(this.subscription?.id);\n }\n });\n this.groupId = Number(this.route.snapshot.queryParams['entity_id']);\n // eslint-disable-next-line no-restricted-globals\n this.groupId = Number.isNaN(this.groupId) ? 0 : this.groupId;\n\n this.userStore().subscribe(user => {\n if (user) {\n this.user = user;\n }\n });\n this.getAllGroupDefinition();\n }\n\n ngAfterViewChecked() {\n this.cdr.detectChanges();\n }\n\n onLazyLoad(event: LazyLoadEvent) {\n const pageDetails = HelperService.onTableLazyLoad(event);\n this.page = pageDetails.page;\n this.getAllCommunications({\n page: this.page,\n page_size: PAGE_SIZE,\n order_by: pageDetails.sortField,\n order_direction: pageDetails.sortOrder,\n search: this.searchText\n });\n }\n\n /** Function to get all labels */\n private getAllGroupDefinition() {\n this.groupService.groupDefinitionGetAll(this.id, 'Subscription').subscribe(response => {\n if (response?.group_definitions?.length) {\n this.groupDefinition = response.group_definitions;\n this.groupDefinition.forEach((data, index) => {\n const totalDefinitions = ++index;\n if (data?.groups?.length) {\n data.groups.forEach(group => {\n this.allGroups.push(group);\n });\n }\n if (totalDefinitions === this.groupDefinition.length) {\n this.getParticularGroupDetails();\n }\n });\n this.allCommunicationGroups = [\n {\n id: 0,\n name: 'All Communications',\n description: '',\n group_definition_id: 0,\n members: []\n },\n ...this.allGroups\n ];\n }\n });\n }\n\n /** Function to get group name and to setValue to group field if we have group_id */\n private getParticularGroupDetails() {\n if (this.groupId) {\n const data = this.allGroups.find(group => group.id === this.groupId);\n this.groupName = data?.name;\n this.form.get('group_id').setValue(data?.id);\n }\n }\n\n /** Function to get all communications */\n private getAllCommunications(paging: Paging) {\n this.isLoaded = false;\n if (this.groupId) {\n this.groupService\n .getAllCommunications(this.id, 'communication', this.groupId || '', paging)\n .subscribe(response => {\n this.loading = false;\n this.isLoaded = true;\n this.allCommunication = response.group_communications;\n this.totalRecords = response.object_count;\n this.totalRecordsUnFiltered = response.unfiltered_count;\n });\n } else {\n this.groupService\n .getAllCommunicationsWithOutGroupId(this.id, 'communication', paging)\n .subscribe(response => {\n this.allCommunication = response.group_communications;\n this.totalRecords = response.object_count;\n this.totalRecordsUnFiltered = response.unfiltered_count;\n })\n .add(() => {\n this.loading = false;\n this.isLoaded = true;\n });\n }\n }\n\n /** Function to filter by groups */\n filterDomainsList() {\n this.groupId = Number(this.groupId);\n this.getAllCommunications({\n page: this.page,\n page_size: PAGE_SIZE\n });\n this.getParticularGroupDetails();\n }\n\n @ValidateForm('form')\n onSave() {\n const rawHtml = HelperService.SaveRawHTML();\n this.form.controls['body'].setValue(rawHtml);\n this.buttonBusy = true;\n if (this.data?.id) {\n this.updateCommunications();\n } else {\n this.postCommunications();\n }\n }\n\n /** Function to Post communications */\n postCommunications() {\n this.saveCommunication(false);\n }\n\n /** Function to edit communications */\n updateCommunications() {\n this.totalRecordsUnFiltered = 0;\n this.saveCommunication(true);\n }\n\n /** Shared method to save communications (post or update) */\n private saveCommunication(isUpdate: boolean) {\n this.form.get('user_id').setValue(this.user.id);\n this.form.get('communication_type')?.setValue('communication');\n const data = this.form?.value;\n this.submitted = true;\n\n if (this.form.invalid) {\n return;\n }\n\n const operation = isUpdate\n ? this.groupService.editCommunications(this.data?.id, data)\n : this.groupService.postCommunications(data);\n\n operation\n .subscribe(response => {\n const id = isUpdate ? response.group_communication.id : response.id;\n this.saveFile(id);\n const message = isUpdate\n ? 'Communication Updated Successfully'\n : 'Communication Added Successfully';\n this.toast.success(this.translation.translate(message));\n this.onCancel();\n })\n .add(() => {\n this.buttonBusy = false;\n });\n\n this.submitted = false;\n }\n\n /** Function to get edit communication details */\n getCommunicationDetails(id: number) {\n this.isLoaded = false;\n this.isAdd = false;\n this.isEdit = true;\n this.groupService\n .getCommunicationDetails(id)\n .subscribe(response => {\n this.data = response;\n this.form.patchValue(response);\n this.filesData = response.group_communication_files;\n })\n .add(() => {\n this.isLoaded = true;\n });\n }\n\n /** Function to delete communications */\n onDelete(id: number) {\n HelperService.raiseDeletePopup().then(rep => {\n if (rep.value) {\n this.groupService.deleteCommunications(id).subscribe(() => {\n this.toast.success(\n this.translation.translate('Communication Deleted Successfully')\n );\n this.onCancel();\n });\n }\n });\n }\n\n /** Function to delete communications Files */\n deleteCommunicationFiles(id: number, index: number) {\n HelperService.raiseDeletePopup().then(rep => {\n if (rep.value) {\n this.groupService.deleteCommunicationFiles(id).subscribe(() => {\n this.toast.success(\n this.translation.translate('Communication File Deleted Successfully')\n );\n this.filesData.splice(index, 1);\n });\n }\n });\n }\n\n /** Function to get form controls */\n get f() {\n return this.form.controls;\n }\n\n /** Function to show question edit form */\n showEditForm() {\n this.data = {};\n this.isAdd = true;\n this.isEdit = true;\n }\n\n /** Function to hide the edit form */\n onCancel() {\n this.totalRecordsUnFiltered = 0;\n this.getAllCommunications({\n page: this.page,\n page_size: PAGE_SIZE\n });\n this.form.reset();\n this.submitted = false;\n this.isEdit = false;\n }\n\n /** Function for toggle */\n onChange(event: boolean, formControlName: string) {\n this.form.get(formControlName)?.setValue(event);\n }\n\n onSelect(event = null) {\n this.invalidFile = false;\n for (const file of event.files) {\n if (!HelperService.validateFile(file, this.toast)) {\n this.invalidFile = true;\n } else {\n this.uploadedFiles.push(file);\n }\n }\n this.filesUploaded = true;\n\n if (this.invalidFile) {\n setTimeout(() => this.attachCloseButtonListener(), 0);\n }\n }\n\n attachCloseButtonListener() {\n const closeButton = this.el.nativeElement.querySelector('.p-message-close');\n\n if (closeButton) {\n this.renderer.listen(closeButton, 'click', () => {\n this.handleCloseButtonClick();\n });\n }\n }\n\n handleCloseButtonClick() {\n this.invalidFile = false;\n this.filesUploaded = false;\n }\n\n onRemove(event) {\n this.uploadedFiles = this.uploadedFiles.filter(x => event.file.name !== x.name);\n this.filesUploaded = false;\n this.invalidFile = false;\n }\n\n onUploadError(event) {\n HelperService.onUploadError(event, this.toast);\n }\n\n saveFile(id: number) {\n if (this.uploadedFiles.length > 0) {\n this.busy = true;\n this.uploadedFiles.forEach(file => {\n const fileData = new FormData();\n fileData.append('name', file, file.name);\n fileData.append('group_communication_id', `${id}`);\n this.groupService.postCommunicationFiles(fileData).subscribe(() => {\n this.translation.translate('Communication File Added Successfully');\n });\n });\n }\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<section>\n <div class=\"row\">\n <div class=\"col-12\" [ngClass]=\"{'mb-3': !isEdit}\">\n <div class=\"title\">\n <a *ngIf=\"isEdit\"\n aria-label=\"Navigate to Target\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 *ngIf=\"isEdit\" class=\"m-subheader__title m-subheader__title--separator mt-1\">\n <span>{{ !isAdd ? 'Edit' : 'Create new' }} Communication</span>\n </h3>\n <h2 *ngIf=\"!isEdit\" [ngClass]=\"{ 'mt-2': isEdit }\">Communications <span *ngIf=\"groupId\">for {{ groupName }}</span></h2>\n </div>\n <p *ngIf=\"!isEdit\">\n Here you can send communications to your organization, based on the teams they are\n part of.\n </p>\n </div>\n </div>\n</section>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded && isEdit\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<ng-container *ngIf=\"isEdit && isLoaded\">\n <div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"p-2 mt-1\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n <div class=\"row mb-3\">\n <div class=\"col-12 col-md-12\">\n <pw-input-container [label]=\"'Enterprise.Documentation.Title' | transloco\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Title' | transloco\"\n name=\"title\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"title\"\n [ngClass]=\"{ 'is-invalid': submitted && f['title'].errors }\" />\n </pw-input-container>\n </div>\n\n <pw-input-container [label]=\"'Enterprise.Documentation.Body' | transloco\"\n class=\"col-12\"\n name=\"body\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Body' | transloco\">\n <quill-editor [styles]=\"{ height: '220px' }\"\n class=\"quillEditor quill-container\" [modules]=\"editorConfig\"\n formControlName=\"body\"\n [ngClass]=\"{ 'is-invalid': submitted && f['body'].errors }\">\n </quill-editor>\n </pw-input-container>\n\n <div class=\"col-12 col-md-6\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Group' | transloco\"\n [label]=\"'Enterprise.Documentation.Team' | transloco\"\n [isLeftTooltip]=\"true\"\n name=\"group_id\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Team' | transloco\">\n <p-dropdown\n [options]=\"allGroups\"\n formControlName=\"group_id\"\n [ngClass]=\"{ 'is-invalid': submitted && f['group_id'].errors }\"\n optionValue=\"id\"\n optionLabel=\"name\">\n </p-dropdown>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.VisibleGlobally' | transloco\"\n [label]=\"'Enterprise.Documentation.VisibleGlobally' | transloco\"\n name=\"visible_globally\">\n <ui-switch class=\"d-block\"\n formControlName=\"visible_globally\"\n (change)=\"onChange($event, 'visible_globally')\"\n name=\"visible_globally\">\n </ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Published' | transloco\"\n [label]=\"'Enterprise.Documentation.Published' | transloco\"\n name=\"published\">\n <ui-switch class=\"d-block\"\n formControlName=\"published\"\n (change)=\"onChange($event, 'published')\"\n name=\"published\">\n </ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Pushed' | transloco\"\n [label]=\"'Enterprise.Documentation.Pushed' | transloco\"\n name=\"pushed\">\n <ui-switch class=\"d-block\"\n formControlName=\"pushed\"\n (change)=\"onChange($event, 'pushed')\"\n name=\"pushed\">\n </ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-6\">\n <h4 class=\"mt-4\">You can add files to your communication here</h4>\n <div class=\"mb-3\">\n <label for=\"file\">Upload Communication File</label>\n <p-fileUpload #forms\n name=\"myfile[]\"\n [customUpload]=\"true\"\n [showUploadButton]=\"false\"\n accept=\"\"\n [disabled]=\"uploadedFiles && uploadedFiles.length > 0\"\n (onSelect)=\"onSelect($event)\"\n (onRemove)=\"onRemove($event)\"\n (onError)=\"onUploadError($event)\">\n <ng-template pTemplate=\"content\"\n [ngIf]=\"uploadedFiles?.length\">\n <div class=\"drag-drop-text\" *ngIf=\"!filesUploaded && (!uploadedFiles || uploadedFiles.length === 0)\">\n <p>You can drag and drop your file here</p>\n </div>\n </ng-template>\n </p-fileUpload>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 text-end mt-3\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\" >\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\" [disabled]=\"invalidFile\">\n {{ 'Button.Submit' | transloco }}\n </button>\n </div>\n </div>\n </form>\n <div *ngIf=\"filesData?.length\"\n class=\"mt-5\">\n <h2>Communications files attached to this communication</h2>\n <div class=\"communication-files\"\n *ngFor=\"let files of filesData; let i = index\">\n <p>\n <a target=\"blank\"\n href=\"{{ files.name.url }}\">{{\n files.name.url.split('?')[0].split('/')[\n files.name.url.split('?')[0].split('/').length - 1\n ]\n }}</a>\n </p>\n <p ngbTooltip=\"Delete\"\n class=\"ms-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"deleteCommunicationFiles(files.id, i)\"\n (keydown.space)=\"deleteCommunicationFiles(files.id, i)\"\n (click)=\"deleteCommunicationFiles(files.id, i)\"\n aria-hidden=\"true\"\n ></i>\n </p>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n<ng-container *ngIf=\"!isEdit\">\n <div class=\"row\">\n <div class=\"col-12 text-end mb-3\">\n <button class=\"btn btn-sm btn-outline-primary\"\n (click)=\"showEditForm()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> {{ 'Add Communication' }}\n </button>\n </div>\n </div>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n\n <div class=\"primeng-datatable-container mt-0 table-responsive\"\n [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <p-table #dt\n [value]=\"allCommunication\"\n [paginator]=\"totalRecords !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n (onLazyLoad)=\"onLazyLoad($event)\">\n <ng-template pTemplate=\"caption\">\n <div class=\"search-contact\">\n <div class=\"col-12 col-md-3 mb-2 mb-md-0 filter-domain-list\">\n <p-dropdown\n [options]=\"allCommunicationGroups\"\n optionLabel=\"name\"\n optionValue=\"id\"\n [(ngModel)]=\"groupId\"\n placeholder=\"Select Communication Team\"\n [appendTo]=\"'body'\"\n (onChange)=\"filterDomainsList()\">\n </p-dropdown>\n </div>\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search Communications...\"\n class=\"mw-90\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\" />\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Title' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Sender' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Team' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Files' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Date' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Status' | transloco }}</th>\n <th scope=\"true\"\n class=\"actions-column\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-item>\n <tr class=\"table-row\">\n <td data-head=\"Title\">\n <a [routerLink]=\"[item.id]\">{{ item.title }}</a>\n </td>\n <td data-head=\"Sender\">{{ item.author | ifNameNullShowEmail }}</td>\n <td data-head=\"Team\">{{ item.group?.name }}</td>\n <td data-head=\"Files\">\n <span *ngFor=\"let files of item.group_communication_files\">\n <a target=\"blank\"\n [href]=\"files.name.url\">{{\n files.name.url.split('?')[0].split('/')[\n files.name.url.split('?')[0].split('/').length - 1\n ]\n }}</a>\n </span>\n </td>\n <td data-head=\"Date\">{{ item.created_at | dateFormat: 'datetime' }}</td>\n <td data-head=\"Status\">\n <span *ngIf=\"item.visible_globally\"\n class=\"badge bg-warning ms-2\">{{\n 'Enterprise.Documentation.Global' | transloco\n }}</span><span *ngIf=\"item.published\"\n class=\"badge bg-info ms-2\">{{\n 'Enterprise.Documentation.Published' | transloco\n }}</span><span *ngIf=\"item.pushed\"\n class=\"badge bg-success ms-2\">{{\n 'Enterprise.Documentation.Pushed' | transloco\n }}</span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Edit\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-edit edit-icon\"\n (click)=\"getCommunicationDetails(item.id)\"\n (keydown.enter)=\"getCommunicationDetails(item.id)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Delete\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"onDelete(item.id)\"\n (click)=\"onDelete(item.id)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"See Communication\"\n class=\"me-2 me-sm-3 see-icon\"\n [routerLink]=\"[item.id]\">\n <i class=\"fa fa-eye eye-icon\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <div *ngIf=\"totalRecords === 0 && totalRecordsUnFiltered !== 0 && !groupId\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n <span class=\"total-records-count\" *ngIf=\"totalRecords !== 0\">{{ 'Label.Total' | transloco }}: {{ totalRecords }}</span>\n </div>\n <div *ngIf=\"totalRecordsUnFiltered === 0 && isLoaded\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Communication.NoCommunication' | transloco\">\n </pw-no-data>\n </div>\n</ng-container>\n","import { Component, Injector, OnDestroy, OnInit } from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { SubscriptionService } from '@posiwise/common-services';\nimport { Plotly, User } from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\nimport { handleDateRangeSelection } from '@posiwise/utils';\n\n@Component({\n selector: 'pw-enterprise-insights',\n templateUrl: './enterprise-insights.component.html'\n})\nexport class EnterpriseInsightsComponent extends AppBaseComponent implements OnInit, OnDestroy {\n graph: Plotly.Figure;\n\n user: User;\n subscriptionId: number;\n\n hasAccess = false;\n isLoaded = false;\n\n userId: number;\n\n selectedDateRange;\n dateRanges;\n\n constructor(\n private readonly subscriptionService: SubscriptionService,\n injector: Injector\n ) {\n super(injector);\n }\n\n ngOnInit() {\n this.getUserSubscriptionId().subscribe(id => {\n this.subscriptionId = id;\n });\n this.dateRanges = HelperService.initializeDateRanges();\n this.selectedDateRange = '';\n this.getChartData();\n this.hasAccess = this.hasAdminAccess(this.subscriptionId);\n }\n\n private getChartData() {\n this.isLoaded = false;\n this.subscriptionService\n .getEnterpriseInsight(\n this.subscriptionId,\n this.selectedDateRange?.startDate\n ? this.selectedDateRange.startDate.format('YYYY-MM-DD')\n : '',\n this.selectedDateRange?.endDate\n ? this.selectedDateRange.endDate.format('YYYY-MM-DD')\n : ''\n )\n .subscribe(response => {\n this.graph = response;\n })\n .add(() => {\n this.isLoaded = true;\n });\n }\n\n onDateRangeSelect(event: { startDate: moment.Moment; endDate: moment.Moment }) {\n this.selectedDateRange = handleDateRangeSelection(event, this.selectedDateRange);\n this.getChartData();\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<div class=\"row\">\n <div class=\"col-12 mb-3\">\n <h2>Enterprise Insight</h2>\n\n <p *ngIf=\"hasAccess\">Please find below some insight for your Enterprise subscription.</p>\n </div>\n\n <app-date-picker\n [selectedDateRange]=\"selectedDateRange\"\n [dateRanges]=\"dateRanges\"\n (dateRangeChange)=\"onDateRangeSelect($event)\">\n</app-date-picker>\n<div class=\"w-100 text-center mt-3\" *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n\n\n <div class=\"col-12\"\n *ngIf=\"hasAccess\">\n <ng-template [ngIf]=\"graph\">\n <plotly-plot [data]=\"graph?.data\"\n [config]=\"graph?.config\"\n [layout]=\"graph?.layout\" [useResizeHandler]=\"graph? true : false\"></plotly-plot>\n </ng-template>\n </div>\n\n <div *ngIf=\"!hasAccess && isLoaded\"\n class=\"w-100\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Insight.NoDataMessage' | transloco\"> </pw-no-data>\n </div>\n</div>\n","import {\n AfterViewChecked,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Injector,\n OnDestroy,\n OnInit\n} from '@angular/core';\nimport { UntypedFormArray, UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\n\nimport { AdminService } from '@posiwise/admin-module-utils';\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport {\n AuthService,\n PermissionService,\n PrimeNgHelper,\n SubscriptionService,\n ValidationService\n} from '@posiwise/common-services';\nimport {\n DOCUMENT_TYPE_EXT,\n PAGE_SIZE,\n Paging,\n Subscription,\n TOKEN_HEADER_KEY,\n User\n} from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\nimport { ValidateForm } from '@posiwise/utils';\n\nimport { StatusCodes } from 'http-status-codes';\nimport {\n humanizeBytes,\n UploaderOptions,\n UploadFile,\n UploadInput,\n UploadOutput,\n UploadStatus\n} from 'ngx-uploader';\nimport { LazyLoadEvent } from 'primeng/api';\nimport { Observable } from 'rxjs';\nimport swal from 'sweetalert2';\n\nimport { EnterpriseMembersResponse } from '../../interfaces/enterprise.interface';\n\n@Component({\n selector: 'pw-enterprise-members',\n templateUrl: './enterprise-members.component.html',\n styleUrls: ['./enterprise-members.component.scss']\n})\nexport class EnterpriseMembersComponent\n extends AppBaseComponent\n implements OnInit, OnDestroy, AfterViewChecked\n{\n private readonly token: string;\n private userSubscription: Subscription;\n private page = 1;\n previousRolesMap = new Map<number, string[]>();\n\n id: number;\n\n form: UntypedFormGroup;\n emailsFormArray: UntypedFormArray; // Used for adding the member dynamically\n\n user: User;\n subscription: Subscription;\n subscriptionOwner: number;\n chatPermission: string;\n hasAccess: boolean;\n\n productName: string;\n allRoles = [];\n subscriptionMembers: EnterpriseMembersResponse;\n\n files: UploadFile[];\n uploadInput: EventEmitter<UploadInput>;\n dragOver: boolean;\n options: UploaderOptions;\n\n isLoaded = false;\n loading = true;\n isAddEnabled: boolean;\n\n availableUnits = 0;\n totalRecordsUnFiltered = 0;\n\n searchText = '';\n\n humanizeBytes: (bytes: number) => string;\n buttonBusy = false;\n\n constructor(\n injector: Injector,\n private readonly formBuilder: UntypedFormBuilder,\n private readonly subscriptionService: SubscriptionService,\n private readonly authService: AuthService,\n private readonly adminService: AdminService,\n private readonly cdr: ChangeDetectorRef\n ) {\n super(injector);\n this.options = { concurrency: 1, maxUploads: 3 };\n this.files = [];\n this.uploadInput = new EventEmitter<UploadInput>();\n this.humanizeBytes = humanizeBytes;\n this.token = btoa(this.authService.getToken());\n this.form = this.formBuilder.group({\n email: ['', ValidationService.email],\n emailsFormArray: this.formBuilder.array([this.createItem()])\n });\n }\n\n ngOnInit() {\n this.getUserSubscription().subscribe(response => {\n this.userSubscription = response;\n if (this.userSubscription?.id) {\n this.id = this.userSubscription?.id;\n this.getSubscriptionDetails();\n }\n });\n\n this.userStore().subscribe(user => {\n if (user) {\n this.user = user;\n }\n });\n\n this.chatPermission = `${PermissionService.selectedProduct?.permission}.${PermissionService.selectedProduct?.feature_key}.Chat`;\n }\n\n ngAfterViewChecked() {\n this.cdr.detectChanges();\n }\n\n onLazyLoad(event: LazyLoadEvent) {\n if (this.user) {\n const pageDetails = HelperService.onTableLazyLoad(event);\n this.page = pageDetails.page;\n this.getSubscribedUsers({\n page: this.page,\n page_size: PAGE_SIZE,\n order_by: pageDetails.sortField,\n order_direction: pageDetails.sortOrder,\n search: this.searchText\n });\n }\n }\n onUploadOutput(output: UploadOutput): void {\n switch (output.type) {\n case 'allAddedToQueue':\n if (this.files.length > 0) {\n const event: UploadInput = {\n type: 'uploadAll',\n url: this.subscriptionService.signUpMemberUrl(this.id),\n method: 'POST',\n data: {\n send_marketing_emails: 'true',\n confirmation_path: 'confirm'\n },\n headers: {\n [TOKEN_HEADER_KEY]: this.token\n }\n };\n this.uploadInput.emit(event);\n }\n\n break;\n case 'addedToQueue':\n if (typeof output.file !== 'undefined') {\n const ext = output.file.name.split('.').pop();\n if (DOCUMENT_TYPE_EXT.includes(ext)) {\n this.files.push(output.file);\n } else {\n this.toast.error('Only csv and xlsx formats are supported.');\n }\n }\n break;\n case 'uploading':\n if (typeof output.file !== 'undefined') {\n // update current data in files array for uploading file\n const index = this.files.findIndex(\n file => typeof output.file !== 'undefined' && file.id === output.file.id\n );\n this.files[index] = output.file;\n }\n break;\n case 'removed':\n this.files = this.files.filter((file: UploadFile) => file !== output.file);\n break;\n case 'dragOver':\n this.dragOver = true;\n break;\n case 'dragOut':\n case 'drop':\n this.dragOver = false;\n break;\n case 'done':\n break;\n default:\n }\n\n this.files = this.files.filter(file => file.progress.status !== UploadStatus.Done);\n }\n\n private createItem(): UntypedFormGroup {\n return this.formBuilder.group({\n email: ['', [Validators.email, Validators.required]]\n });\n }\n\n addItem(): void {\n this.emailsFormArray = this.form.get('emailsFormArray') as UntypedFormArray;\n if (\n this.emailsFormArray.valid &&\n this.emailsFormArray.controls.length < this.availableUnits\n ) {\n this.emailsFormArray.push(this.createItem());\n }\n }\n\n removeItem(index) {\n this.emailsFormArray = this.form.get('emailsFormArray') as UntypedFormArray;\n this.emailsFormArray.controls.splice(index, 1);\n }\n\n /**\n * Gets the list of members for the subscription and also shows the admins for the\n * subscription\n * @param page Page number\n * @param page_size Page Size\n */\n private getSubscribedUsers(paging: Paging) {\n this.isLoaded = false;\n this.subscriptionService.getEnrolledSubscription(this.id, paging).subscribe(response => {\n this.isLoaded = true;\n if (response?.members && response.members.length > 0) {\n this.subscriptionMembers = response;\n this.subscriptionOwner = this.subscriptionMembers.owner_id;\n this.totalRecordsUnFiltered = response.unfiltered_count;\n this.isLoaded = true;\n this.loading = false;\n this.hasAccess =\n this.subscriptionMembers.admins.includes(this.user.id) ||\n this.user.id === this.subscriptionOwner ||\n this.permissionService.isSuperAdmin();\n if (this.hasAccess) {\n this.getSubscriptionRoles();\n }\n }\n });\n }\n\n getSubscriptionRoles() {\n this.adminService.getSubscriptionRoles(this.id).subscribe(roles => {\n this.allRoles = PrimeNgHelper.dropdownDataSource(roles, 'name', 'id');\n if (this.allRoles) {\n this.filterRoles();\n }\n });\n }\n\n filterRoles() {\n this.subscriptionMembers.members.forEach(element => {\n const userRoleIds = element.user_roles.map(x => x.id);\n element['selected_roles'] = userRoleIds.filter(roleId =>\n this.allRoles.find(x => x.id === roleId)\n );\n this.previousRolesMap.set(element.id, [...element['selected_roles']]);\n });\n }\n onRoleChange(event, user) {\n const prevRoles = this.previousRolesMap.get(user.id) || [];\n const unselected = prevRoles.find(id => !event.value.includes(id));\n this.previousRolesMap.set(user.id, [...event.value]);\n let subscription$: Observable<string>;\n let isAdded: boolean;\n if (!unselected && user.user_roles.map(x => x.id).indexOf(event.itemValue) <= -1) {\n const updateData = {\n subscription_id: this.id,\n role_id: event.itemValue.id,\n id: user.id\n };\n subscription$ = this.adminService.saveUserSubscriptionRole(updateData);\n isAdded = true;\n } else {\n const deleteData = {\n role_id: event.itemValue.id,\n subscription_id: this.id,\n id: user.id\n };\n subscription$ = this.adminService.deleteUserSubscriptionRole(deleteData);\n isAdded = false;\n }\n\n subscription$.subscribe(() => {\n if (isAdded) {\n this.toast.success(this.translation.translate('Admin.Users.UpdatedRole'));\n } else {\n this.toast.success(this.translation.translate('Admin.Users.DeletedMessage'));\n }\n });\n }\n\n private getSubscriptionDetails() {\n this.isLoaded = false;\n this.subscriptionService.getById(this.id).subscribe(resp => {\n this.isLoaded = true;\n this.productName = resp.products[0].name;\n this.subscription = resp;\n this.availableUnits = resp.products[0].purchased_units - resp.units_in_use;\n });\n }\n\n @ValidateForm('form')\n onSignUpMember() {\n swal.fire({\n title: this.translation.translate('Label.Confirm'),\n text: this.translation.translate(\n 'Admin.Subscriptions.confirmEnterpriseMembersSubscriptionMessage'\n ),\n showCancelButton: true,\n reverseButtons: true,\n icon: 'warning',\n confirmButtonText: 'Yes'\n }).then(rep => {\n if (rep.value) {\n const emails = this.form\n .get('emailsFormArray')\n ?.value?.map(item => item.email)\n .join(',');\n if (emails) {\n this.buttonBusy = true;\n const data = {\n confirmation_path: 'confirm',\n emails,\n send_marketing_emails: true\n };\n this.subscriptionService\n .addMembersToSubscription(this.id, data)\n .subscribe(response => {\n if (response?.status === StatusCodes.OK) {\n this.getSubscribedUsers({\n page: this.page,\n page_size: PAGE_SIZE\n });\n this.toast.success(response.message);\n this.form.reset();\n } else {\n this.toast.error(response.error.message);\n }\n })\n .add(() => {\n this.buttonBusy = false;\n });\n }\n }\n });\n }\n\n onDelete(user: User) {\n swal.fire({\n title: 'Remove member',\n text: `Are you sure you want to remove ${user.first_name} from your subscription?`,\n showCancelButton: true,\n reverseButtons: true,\n icon: 'warning'\n }).then(rep => {\n if (rep.value) {\n this.subscriptionService\n .removeEnrolledSubscription(this.id, user.id)\n .subscribe(response => {\n if (response.status === StatusCodes.OK) {\n this.toast.success(response.message);\n this.getSubscribedUsers({\n page: this.page,\n page_size: PAGE_SIZE\n });\n } else {\n this.toast.success(response.error.message);\n }\n });\n }\n });\n }\n\n makeAdmin(user, value: boolean) {\n swal.fire({\n title: value === true ? 'Make Admin' : 'Remove Admin',\n text:\n value === true\n ? `This user will now have full access to your subscription. Read more in FAQ.`\n : `Are you sure?`,\n showCancelButton: true,\n reverseButtons: true,\n icon: 'warning'\n }).then(rep => {\n if (rep.value) {\n const data = {\n user_id: user.id,\n is_admin: value\n };\n this.subscriptionService.toggleAdmin(this.id, data).subscribe(response => {\n if (response.status === StatusCodes.OK) {\n this.toast.success(response.message);\n }\n this.getSubscribedUsers({\n page: this.page,\n page_size: PAGE_SIZE\n });\n });\n }\n });\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<section>\n <div class=\"row\">\n <div class=\"col-12 mb-3\">\n <div class=\"title\">\n <a *ngIf=\"isAddEnabled\"\n aria-label=\"Navigate to Target\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h2>Enterprise Members for {{ productName }}</h2>\n </div>\n <p *ngIf=\"!isAddEnabled\">\n You'll find in this section all the members of your subscription. Based on your role\n in the enterprise, you'll be able to see, add, edit or remove access to them.\n </p>\n <p *ngIf=\"isAddEnabled\">Here you can add members to your subscriptions</p>\n </div>\n </div>\n</section>\n<section id=\"enrolled\"\n *ngIf=\"!isAddEnabled\">\n <div class=\"row\">\n <div class=\"col-12 text-end\"\n *ngIf=\"hasAccess\">\n <button class=\"btn btn-sm btn-outline-primary\"\n *ngIf=\"!isAddEnabled\"\n (click)=\"isAddEnabled = true\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Add Members\n </button>\n </div>\n </div>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n <div class=\"primeng-datatable-container table-responsive\"\n [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <p-table #dt\n [value]=\"subscriptionMembers?.members\"\n [paginator]=\"subscriptionMembers?.members.length !== 0\"\n [totalRecords]=\"subscriptionMembers?.members.length\"\n [globalFilterFields]=\"['email', 'name']\"\n [rows]=\"PAGE_SIZE\"\n [loading]=\"loading\"\n [lazy]=\"true\"\n (onLazyLoad)=\"onLazyLoad($event)\">\n <ng-template pTemplate=\"caption\">\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search contact...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"mw-90\" />\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Label.Name' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Email' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Members.Team' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Members.LastSeen' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-users>\n <tr class=\"table-row\">\n <td data-head=\"Name\">\n <span>\n <a [routerLink]=\"['/members', users.slug]\">{{\n users?.preferred_name\n ? users?.preferred_name\n : (users | ifNameNullShowEmail)\n }}\n </a>\n <span class=\"ms-2\"\n *ngIf=\"!users?.has_password\"\n [pTooltip]=\"'This user hasn\\'t joined yet'\"\n tooltipPosition=\"top\">\n <i class=\"fas fa-exclamation-triangle text-warning\"></i>\n </span>\n <span class=\"ms-2\"\n *ngIf=\"users?.enable_two_factor_authenticator\"\n [pTooltip]=\"'2FA enabled'\"\n tooltipPosition=\"top\">\n <i class=\"fa-solid fa-lock text-success\"></i>\n </span>\n <span class=\"ms-2\"\n *ngIf=\"users?.blocked\"\n [pTooltip]=\"'This user has been blocked, please contact support'\"\n tooltipPosition=\"top\">\n <i class=\"fa-solid fa-hexagon-exclamation text-danger\"></i>\n </span>\n <span class=\"badge bg-dark mx-1\" *ngIf=\"users.id === subscriptionOwner\"> Owner </span>\n <span class=\"badge bg-success mx-1 admin-badge\" *ngIf=\"subscriptionMembers.admins.includes(users.id)\"> Admin </span>\n <span class=\"badge bg-info mx-1\" *ngIf=\"users.id === user.id\"> You </span>\n </span>\n </td>\n <td data-head=\"Email\">{{ users.email }}</td>\n <td data-head=\"Team\">\n <span *ngFor=\"let groups of users.user_groups\"><a class=\"badge bg-primary text-white ms-2\"\n [routerLink]=\"[\n '/' + subscription?.slug + '/enterprise',\n 'groups',\n groups.id,\n 'members'\n ]\">{{ groups.name }}</a>\n </span>\n </td>\n <td data-head=\"Last seen\">\n <span *ngIf=\"users?.current_sign_in_at; else lastSignin\">\n <span>{{ users.current_sign_in_at | dateFormat }}</span>\n <span *ngIf=\"users.current_sign_in_at\"> ({{ users.current_sign_in_at | sinceAgo }})</span>\n </span>\n <ng-template #lastSignin>\n <span>\n <span>{{ users.last_sign_in_at | dateFormat }}</span>\n <span *ngIf=\"users.last_sign_in_at\"> ({{ users.last_sign_in_at | sinceAgo }})</span>\n </span>\n </ng-template>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline d-inline-block me-2 list-action\">\n <ng-container *ngIf=\"hasAccess && allRoles.length\">\n <li class=\"enterprise-member-table mx-2 mb-2 mb-sm-0\" *rbacAllow=\"'Pages.Alpha'\">\n <p-multiSelect [(ngModel)]=\"users.selected_roles\" [options]=\"allRoles\" (onChange)=\"onRoleChange($event, users)\"\n placeholder=\"Set roles\" [showHeader]=\"false\" appendTo=\"body\">\n </p-multiSelect>\n </li>\n </ng-container>\n <!-- Message Icon -->\n <li ngbTooltip=\"Message\"\n class=\"me-2 me-sm-3 mx-2\"\n *rbacAllow=\"chatPermission\"\n [class.invisible]=\"user && user.id === users.id\"\n [routerLink]=\"['/message']\"\n [fragment]=\"users.slug\">\n <i class=\"fa fa-comments cta1-icon\" aria-hidden=\"true\"></i>\n </li>\n <!-- Action Buttons -->\n <ng-template [ngIf]=\"hasAccess && users.id !== subscriptionOwner\"\n [ngIfElse]=\"empty\">\n <!-- Make Admin -->\n <li ngbTooltip=\"Make Admin\"\n class=\"me-2 me-sm-3 mx-2\"\n *ngIf=\"!this.subscriptionMembers.admins.includes(users.id)\">\n <i\n class=\"fa fa-user-crown fa-lg success\"\n (click)=\"makeAdmin(users, true)\"\n (keydown.enter)=\"makeAdmin(users, true)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li></li>\n <!-- Remove Admin -->\n <li ngbTooltip=\"Remove Admin\"\n class=\"me-2 me-sm-3 mx-2\"\n *ngIf=\"this.subscriptionMembers.admins.includes(users.id)\">\n <i\n class=\"fa fa-ban warning fa-lg\"\n (keydown.enter)=\"makeAdmin(users, false)\"\n (click)=\"makeAdmin(users, false)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n </ng-template>\n <ng-template #empty>\n <li class=\"mx-3\"></li>\n </ng-template>\n <ng-container *rbacAllow=\"'SubscriptionAdmin'\">\n <li class=\"delete-user mx-2\"\n ngbTooltip=\"Delete\"\n *ngIf=\"users.id !== subscriptionOwner\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"onDelete(users)\"\n (keydown.space)=\"onDelete(users)\"\n (click)=\"onDelete(users)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n </ng-container>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <span class=\"total-records-count\" *ngIf=\"subscriptionMembers?.members.length !== 0\">{{ 'Label.Total' | transloco }}: {{ subscriptionMembers?.members.length || 0 }}</span>\n </div>\n</section>\n\n<section id=\"manage-members\"\n *ngIf=\"isAddEnabled\">\n <h5 class=\"ms-2 pt-3\">Upload File (CSV)</h5>\n <div class=\"row p-2\">\n <div class=\"col-12\">\n <div class=\"upload-box\">\n <div class=\"upload-box-content\">\n <div class=\"drop-container\"\n ngFileDrop\n [options]=\"options\"\n (uploadOutput)=\"onUploadOutput($event)\"\n [uploadInput]=\"uploadInput\">\n <p>\n Drag files here or\n <label class=\"upload-button\">\n <input type=\"file\"\n ngFileSelect\n [options]=\"options\"\n (uploadOutput)=\"onUploadOutput($event)\"\n [uploadInput]=\"uploadInput\"\n multiple />\n browse\n </label>\n to upload.\n </p>\n </div>\n <div class=\"upload-item\"\n *ngFor=\"let f of files; let i = index\">\n <div class=\"upload-item-content\">\n <div class=\"filename\">\n <div class=\"filename-left\">\n <i class=\"ionicon ion-ios-copy\" aria-hidden=\"true\"></i>\n <span>{{ f.name }}</span>\n </div>\n </div>\n <div class=\"progress-content\">\n <div class=\"progress\">\n <span class=\"bar\"\n [style.width]=\"f?.progress?.data?.percentage + '%'\"\n [class.is-done]=\"f?.progress?.data?.percentage === 100\"></span>\n </div>\n </div>\n <div class=\"progress-text-content\">\n <span class=\"progress-text\"\n [class.is-done]=\"f?.progress?.data?.percentage === 100\">\n <span>{{ f.progress?.data?.percentage }}% </span>\n <span *ngIf=\"f.progress?.data?.percentage !== 100\">Uploading...</span>\n <span *ngIf=\"f.progress?.data?.percentage === 100\">Done</span>\n </span>\n <span class=\"speed-and-eta-text\"\n *ngIf=\"\n f.progress?.data?.percentage !== 0 &&\n f.progress?.data?.percentage !== 100\n \">\n <span>{{ f.progress?.data?.speedHuman }} </span>\n <span>ETA {{ f.progress?.data?.etaHuman }}</span>\n </span>\n </div>\n </div>\n </div>\n <div class=\"help-text\">\n <span>Note: You can upload a .csv file containing the comma separated emails\n of the members to add.</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n <h5 class=\"ms-2 pt-3 d-inline-block me-2\">Add Member's Email</h5>\n <small><strong> (Available {{ availableUnits }} Seats) </strong></small>\n <div class=\"p-2\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSignUpMember()\">\n <div formArrayName=\"emailsFormArray\"\n *ngFor=\"\n let item of form.get('emailsFormArray')['controls'];\n let i = index;\n let last = last\n \">\n <div [formGroupName]=\"i\">\n <div class=\"row mb-2\">\n <label class=\"col-12 col-md-4 text-md-end col-form-label col-form-label-sm\" for=\"Email\">\n #{{ i + 1 }}</label>\n <div class=\"col-10 col-md-4\">\n <input formControlName=\"email\"\n class=\"form-control form-control-sm\"\n placeholder=\"Email\" />\n </div>\n <div class=\"col-2\">\n <button class=\"btn btn-sm btn-danger\"\n type=\"button\">\n <i\n class=\"fa fa-times\"\n title=\"Delete\"\n (click)=\"removeItem(i)\"\n (keydown.enter)=\"removeItem(i)\"\n aria-hidden=\"true\"\n ></i>\n </button>\n <i\n class=\"btn btn-sm btn-primary fal fa-plus ms-2\"\n *ngIf=\"last && emailsFormArray?.controls?.length < availableUnits\"\n title=\"Add More\"\n (click)=\"addItem()\"\n (keydown.enter)=\"addItem()\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n </div>\n </div>\n <div class=\"text-center mt-2\">\n <button class=\"btn btn-sm btn-outline-default me-2\"\n (click)=\"isAddEnabled = false\">\n <i class=\"fa fa-plus-times\" aria-hidden=\"true\"></i>\n {{ 'Button.Back' | transloco }}\n </button>\n <button type=\"submit\"\n class=\"btn btn-sm btn-outline-primary me-2\"\n [buttonBusy]=\"buttonBusy\"\n [disabled]=\"form.invalid || buttonBusy\">\n Add Members\n </button>\n </div>\n </form>\n </div>\n</section>\n","import {\n AfterViewChecked,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Injector,\n OnDestroy,\n OnInit,\n ViewChild\n} from '@angular/core';\nimport { UntypedFormArray, UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\n\nimport { AdminService } from '@posiwise/admin-module-utils';\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport {\n AuthService,\n FormHelperService,\n PermissionService,\n ProductService,\n SubscriptionService,\n ValidationService\n} from '@posiwise/common-services';\nimport { PAGE_SIZE, Paging, Subscription, User } from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\n\nimport { StatusCodes } from 'http-status-codes';\nimport groupBy from 'lodash/groupBy';\nimport { humanizeBytes, UploaderOptions, UploadFile, UploadInput } from 'ngx-uploader';\nimport { LazyLoadEvent } from 'primeng/api';\nimport { AutoComplete } from 'primeng/autocomplete';\nimport swal from 'sweetalert2';\n\n@Component({\n selector: 'pw-enterprise-partners',\n templateUrl: './enterprise-partners.component.html',\n styleUrls: ['./enterprise-partners.component.scss']\n})\nexport class EnterprisePartnersComponent\n extends AppBaseComponent\n implements OnInit, OnDestroy, AfterViewChecked\n{\n private readonly token: string;\n private userSubscription: Subscription;\n private page = 1;\n\n @ViewChild('refProduct') refProduct: AutoComplete;\n\n id: number;\n subscriptionId: number;\n\n form: UntypedFormGroup;\n emailsFormArray: UntypedFormArray; // Used for adding the member dynamically\n\n user: User;\n subscription: Subscription;\n subscriptionOwner: number;\n chatPermission: string;\n hasAccess: boolean;\n\n filteredProducts = [];\n searchOptions: { id: unknown; label: unknown }[] = [];\n searchText = '';\n\n productName: string;\n allRoles = [];\n subscriptionPartners;\n\n files: UploadFile[];\n uploadInput: EventEmitter<UploadInput>;\n dragOver: boolean;\n options: UploaderOptions;\n\n isLoaded = false;\n loading = true;\n isAddEnabled = false;\n\n invoiceFrequency = ['week', 'month', 'year'];\n availableUnits = 0;\n\n totalRecordsUnFiltered = 0;\n totalRecords = 0;\n\n humanizeBytes: (bytes: number) => string;\n buttonBusy = false;\n unitsText: string;\n currency: string;\n\n constructor(\n injector: Injector,\n private readonly formBuilder: UntypedFormBuilder,\n private readonly subscriptionService: SubscriptionService,\n private readonly authService: AuthService,\n private readonly adminService: AdminService,\n private readonly productService: ProductService,\n private readonly cdr: ChangeDetectorRef\n ) {\n super(injector);\n this.options = { concurrency: 1, maxUploads: 3 };\n this.files = [];\n this.uploadInput = new EventEmitter<UploadInput>();\n this.humanizeBytes = humanizeBytes;\n this.token = btoa(this.authService.getToken());\n this.form = this.formBuilder.group({\n email: ['', ValidationService.email],\n emailsFormArray: this.formBuilder.array([this.createItem()]),\n product_id: ['', Validators.required]\n });\n }\n\n ngOnInit() {\n this.getUserSubscription().subscribe(response => {\n this.userSubscription = response;\n if (this.userSubscription?.id) {\n this.id = this.userSubscription?.id;\n this.getSubscriptionDetails();\n }\n });\n\n this.userStore().subscribe(user => {\n if (user) {\n this.user = user;\n }\n });\n\n this.chatPermission = `${PermissionService.selectedProduct?.permission}.${PermissionService.selectedProduct?.feature_key}.Chat`;\n this.getProductsList();\n }\n\n ngAfterViewChecked() {\n this.cdr.detectChanges();\n }\n\n addItem(): void {\n this.emailsFormArray = this.form.get('emailsFormArray') as UntypedFormArray;\n if (\n this.emailsFormArray.valid &&\n this.emailsFormArray.controls.length < this.availableUnits\n ) {\n this.emailsFormArray.push(this.createItem());\n }\n }\n\n removeItem(index) {\n this.emailsFormArray = this.form.get('emailsFormArray') as UntypedFormArray;\n this.emailsFormArray.controls.splice(index, 1);\n }\n\n private createItem(): UntypedFormGroup {\n return this.formBuilder.group({\n email: ['', [Validators.email, Validators.required]]\n });\n }\n\n onLazyLoad(event: LazyLoadEvent) {\n if (this.user) {\n const pageDetails = HelperService.onTableLazyLoad(event);\n this.page = pageDetails.page;\n this.getSubscribedPartners({\n page: this.page,\n page_size: PAGE_SIZE,\n search: this.searchText\n });\n }\n }\n private getSubscribedPartners(paging: Paging) {\n this.isLoaded = false;\n this.subscriptionService.getAllSubscriptionPartners(this.id, paging).subscribe(response => {\n this.subscriptionPartners = response.partners;\n this.totalRecordsUnFiltered = response.unfiltered_count;\n this.totalRecords = response.object_count;\n this.isLoaded = true;\n this.loading = false;\n });\n }\n\n private getSubscriptionDetails() {\n this.subscriptionService.getById(this.id).subscribe(resp => {\n this.productName = resp.products[0].name;\n this.subscription = resp;\n this.availableUnits = resp.products[0].purchased_units - resp.units_in_use;\n });\n }\n\n getSupportedCurrency() {\n this.productService.getSupportedCurrency().subscribe(res => {\n this.currency = res?.regions;\n });\n }\n\n onSave() {\n if (this.form.invalid) {\n FormHelperService.validateAllFormFields(this.form);\n } else {\n this.buttonBusy = true;\n const productId = this.form.get('product_id').value.id;\n const emails = this.form\n .get('emailsFormArray')\n ?.value?.map(item => item.email)\n .join(',');\n if (emails) {\n const inviteObj = {\n emails,\n product_id: productId\n };\n this.subscriptionService\n .addPartnersToSubscription(this.id, inviteObj)\n .subscribe(response => {\n if (response?.status === StatusCodes.OK) {\n this.getSubscribedPartners({\n page: this.page,\n page_size: PAGE_SIZE\n });\n this.totalRecordsUnFiltered = 0;\n this.isAddEnabled = false;\n this.toast.success(response.message);\n this.form.reset();\n } else {\n this.toast.error(response.error.message);\n }\n })\n .add(() => {\n this.buttonBusy = false;\n });\n }\n }\n }\n\n onDelete(partner: { id: number }) {\n swal.fire({\n title: 'Delete',\n text: `Are you sure you want to delete?`,\n showCancelButton: true,\n reverseButtons: true,\n icon: 'warning'\n }).then(rep => {\n if (rep.value) {\n this.subscriptionService.removePartner(this.id, partner.id).subscribe(response => {\n if (response.status === StatusCodes.OK) {\n this.toast.success(response.message);\n this.getSubscribedPartners({\n page: this.page,\n page_size: PAGE_SIZE\n });\n } else {\n this.toast.success(response.error.message);\n }\n });\n }\n });\n }\n\n onDeactivate(partner: { id: number; is_active: boolean }) {\n swal.fire({\n title: partner.is_active ? 'Deactivate' : 'Activate',\n text: partner.is_active\n ? ` Are you sure you want to deactivate this partner`\n : 'Are you sure you want to activate this partner?',\n showCancelButton: true,\n reverseButtons: true,\n icon: 'warning'\n }).then(rep => {\n if (rep.value) {\n const data = {\n subscription_partner_id: partner.id,\n is_active: !partner.is_active\n };\n this.subscriptionService.deactivatePartner(this.id, data).subscribe(response => {\n if (response.status === StatusCodes.OK) {\n this.toast.success(response.message);\n this.getSubscribedPartners({\n page: this.page,\n page_size: PAGE_SIZE\n });\n } else {\n this.toast.success(response.error.message);\n }\n });\n }\n });\n }\n\n private getProductsList() {\n this.subscriptionService.getProductList({}, this.id).subscribe(response => {\n const featureKeys = Array.from(\n new Set(response.products.map(item => item.feature_key))\n );\n this.searchOptions = featureKeys.map(element => {\n return {\n id: element,\n label: element ?? ''\n };\n });\n });\n }\n\n sortObj(obj) {\n return Object.keys(obj)\n .sort((a, b) => a.localeCompare(b))\n .reduce((result, key) => {\n result[key] = obj[key];\n return result;\n }, {});\n }\n\n searchProduct(event) {\n this.subscriptionService\n .getProductList({ search: event.query }, this.id)\n .subscribe(response => {\n this.filteredProducts = this.groupProducts(response.products);\n });\n }\n\n onProductChange(event) {\n const productId = Number(event?.value.id);\n const productObj = this.filteredProducts.find(x => x.id === productId);\n this.form.patchValue({\n product_id: productObj\n });\n }\n\n onProductClear(_event) {\n if (!this.refProduct.inputEL.nativeElement.value) {\n this.form.get('product_id').setValue('');\n }\n }\n\n private groupProducts(products) {\n if (products?.length) {\n products = products.filter(x => x.dependency_products?.length < 1 && x.active);\n products = groupBy(products, 'currency');\n products = this.sortObj(products);\n let groupedArray = [];\n // eslint-disable-next-line no-restricted-syntax\n for (const p in products) {\n const value = products[p].sort(\n (a, b) => Number(b.price_per_unit) - Number(a.price_per_unit)\n );\n groupedArray.push(...value);\n }\n groupedArray =\n groupedArray?.map(x => {\n return {\n id: x.id,\n label: `${x.name} | ${x.region} | ${x.billing_frequency} | ${x.min_units} x ${(\n x.price_per_unit / 100\n ).toFixed(2)} | ${x.currency}`,\n unitsText: `(min ${x.min_units} - max ${x.max_units})`\n };\n }) || [];\n\n return groupedArray;\n }\n\n return [];\n }\n}\n","<section>\n <div class=\"row\">\n <div class=\"col-12 mb-3\">\n <div class=\"title\">\n <a *ngIf=\"isAddEnabled\"\n aria-label=\"Navigate to Target\"\n (click)=\"isAddEnabled = false;\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h2 [ngClass]=\"{ 'mt-2': isAddEnabled }\">Enterprise Partners for {{ productName }}</h2>\n </div>\n <p *ngIf=\"!isAddEnabled\">\n You'll find in this section all the partners of your subscription. Based on your role\n in the enterprise, you'll be able to see, add, edit or remove access to them.\n </p>\n <p *ngIf=\"isAddEnabled\">Here you can add partners to your subscriptions</p>\n </div>\n </div>\n</section>\n<section *ngIf=\"!isAddEnabled\">\n\n <div class=\"row\">\n <div class=\"col-12 text-end mb-3\">\n <button class=\"btn btn-sm btn-outline-primary\"\n *ngIf=\"!isAddEnabled\"\n (click)=\"isAddEnabled = true\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Add Partners\n </button>\n </div>\n </div>\n\n<div class=\"w-100 text-center mt-3\" *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n\n\n<div class=\"row faqlist primeng-datatable-container mt-0\" [class.custom-disable-wrapper]=\"buttonBusy\" [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <div class=\"col-12 px-0\">\n <p-table #dt\n [value]=\"subscriptionPartners\"\n [paginator]=\"totalRecords !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\">\n <ng-template pTemplate=\"caption\">\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search partner...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"mw-90\" />\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Label.Name' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Email' | transloco }}</th>\n <th scope=\"true\">{{ 'Relationship' | transloco }}</th>\n <th scope=\"true\">{{ 'Sessions' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-partner>\n <tr class=\"table-row\">\n <td data-head=\"Name\">\n {{partner.organisation}}\n </td>\n <td data-head=\"Email\">{{ partner.contact_email }}</td>\n <td data-head=\"Relationship\">\n {{partner.relationship_to_partner}}\n </td>\n <td>\n <span>{{ partner.sessions_last_month }}</span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Click to remove this partner\" class=\"me-2 me-sm-2\">\n <i class=\"fa fa-trash delete-icon\" (keydown.enter)=\"onDelete(partner)\"\n (keydown.space)=\"onDelete(partner)\"\n (click)=\"onDelete(partner)\" aria-hidden=\"true\"></i>\n </li>\n <li [ngClass]=\"{'me-2 me-sm-2': true, }\"\n [ngbTooltip]=\"partner.is_active ? 'Deactivate this partner' : 'Activate this partner'\"\n (keydown.enter)=\"onDeactivate(partner)\"\n (click)=\"onDeactivate(partner)\">\n <i class=\"fa fa-power-off deactivate-icon\"\n [ngClass]=\"{'text-success': partner.is_active, 'text-danger': !partner.is_active}\"\n aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <div *ngIf=\"totalRecords === 0 && totalRecordsUnFiltered !== 0\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n <span *ngIf=\"totalRecords !== 0\" class=\"total-records-count\">{{ 'Label.Total' | transloco }}: {{ totalRecords }}</span>\n </div>\n</div>\n\n<pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Partner.NoDataMessage' | transloco\" *ngIf=\"totalRecordsUnFiltered === 0 && isLoaded\">\n</pw-no-data>\n</section>\n\n<section id=\"manage-members\"\n *ngIf=\"isAddEnabled\">\n <div class=\"mt-4\"\n *ngIf=\"!isGroupEdit\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n <div formArrayName=\"emailsFormArray\"\n *ngFor=\"\n let item of form.get('emailsFormArray')['controls'];\n let i = index;\n let last = last\n \">\n <div [formGroupName]=\"i\">\n <div class=\"row mb-2\">\n <label class=\"col-12 col-md-4 text-md-end col-form-label col-form-label-sm\" for=\"Email\">\n #{{ i + 1 }}</label>\n <div class=\"col-10 col-md-4\">\n <input formControlName=\"email\"\n class=\"form-control form-control-sm\"\n placeholder=\"Email\" />\n </div>\n <div class=\"col-2\">\n <button class=\"btn btn-sm btn-danger\"\n type=\"button\">\n <i\n class=\"fa fa-times\"\n title=\"Delete\"\n (click)=\"removeItem(i)\"\n (keydown.enter)=\"removeItem(i)\"\n aria-hidden=\"true\"\n ></i>\n </button>\n <i\n class=\"btn btn-sm btn-primary fal fa-plus ms-2\"\n *ngIf=\"last && emailsFormArray?.controls?.length < availableUnits\"\n title=\"Add More\"\n (click)=\"addItem()\"\n (keydown.enter)=\"addItem()\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n </div>\n </div>\n <div class=\"mb-3 col-12 col-md-4 mx-sm-auto\">\n <pw-input-container [label]=\"'Label.Product' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.SubscriptionProduct' | transloco\"\n name=\"product_id\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.Product' | transloco\">\n <p-autoComplete #refProduct\n [suggestions]=\"filteredProducts\"\n formControlName=\"product_id\"\n dataKey=\"id\"\n field=\"label\"\n [dropdown]=\"true\"\n [delay]=\"1000\"\n [type]=\"'search'\"\n (completeMethod)=\"searchProduct($event)\"\n (onSelect)=\"onProductChange($event)\"\n (onClear)=\"onProductClear($event)\"\n styleClass=\"w-100\"\n placeholder=\"Search Product\"\n [inputStyle]=\"\n form.get('product_id').touched && form.get('product_id').invalid\n ? { border: '1px solid #ff586b' }\n : { border: '1px solid gray' }\n \"\n [multiple]=\"false\">\n </p-autoComplete>\n </pw-input-container>\n </div>\n <div class=\"text-center mt-4\">\n <input type=\"button\"\n class=\"btn btn-outline-primary me-3\"\n value=\"Cancel\"\n (click)=\"form.reset(); totalRecordsUnFiltered = 0; isAddEnabled = false;\" />\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n [disabled]=\"buttonBusy\"\n class=\"btn btn-primary\">Submit</button>\n </div>\n </form>\n</div>\n</section>\n","import { Component, Injector, OnDestroy, OnInit } from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { DataService, PermissionService } from '@posiwise/common-services';\nimport { Subscription, User } from '@posiwise/common-utilities';\n\nimport { switchMap } from 'rxjs/operators';\n\n@Component({\n selector: 'pw-enterprise-subscriptions',\n templateUrl: './enterprise-subscriptions.component.html'\n})\nexport class EnterpriseSubscriptionsComponent\n extends AppBaseComponent\n implements OnInit, OnDestroy\n{\n subscriptions = [];\n\n message: number;\n\n isLoaded = true;\n\n subscription: Subscription;\n\n userSlug: string;\n\n constructor(\n injector: Injector,\n private readonly data: DataService\n ) {\n super(injector);\n }\n\n ngOnInit() {\n this.getUserSubscription().subscribe(response => {\n this.subscription = response;\n this.userSlug = response?.slug;\n });\n this.userStore().subscribe((user: User) => {\n if (user) {\n const hasEnterprise = user.subscriptions.find(subscription => {\n return subscription.products.some(product => {\n return (\n product?.permission_key ===\n PermissionService.selectedProduct?.permission_key\n );\n });\n });\n\n if (hasEnterprise) {\n this.router.navigate([\n `/${this.userSlug}/enterprise/${hasEnterprise.id}/members`\n ]);\n }\n }\n });\n this.isLoaded = false;\n this.getEnterpriseSubscription();\n this.data.currentMessage.subscribe(message => {\n this.message = message;\n });\n }\n\n private getEnterpriseSubscription() {\n const subscribe$ = this.userService.getUserInfo().pipe(\n switchMap(user => {\n return this.userService.getUserSubscriptions(user.id);\n })\n );\n\n subscribe$.subscribe(response => {\n if (response.subscriptions.length > 0) {\n this.isLoaded = true;\n this.subscriptions = [\n response.subscriptions.find(subscription => {\n return subscription.products.some(product => {\n return product.max_units > 1 && !product.is_deleted;\n });\n })\n ];\n }\n });\n }\n\n nextUrl() {\n this.data.changeMessage(0);\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<div class=\"container-fluid overflow-hidden\">\n <div class=\"row\">\n <div class=\"col-12 col-md-6 col-xl-4 my-3\"\n *ngFor=\"let item of subscriptions\">\n <div class=\"card\">\n <div class=\"card-content\">\n <div class=\"card-header\">\n <h5 class=\"mb-3\">{{ item?.product?.name }}</h5>\n <p>\n <strong class=\"d-inline-block w-50\">Organisation:</strong>\n {{ item.organisation }}\n </p>\n <p>\n <strong class=\"d-inline-block w-50\">Units Purchased:</strong>\n {{ item.purchased_units }}\n </p>\n <p>\n <strong class=\"d-inline-block w-50\">Seats In Use:</strong>\n {{ item.units_in_use }}\n </p>\n </div>\n <div class=\"card-footer px-3\">\n <div class=\"float-end px-2\">\n <a (click)=\"nextUrl()\"\n class=\"btn btn-sm btn-outline-primary\"\n [routerLink]=\"['/' + subscription?.slug + item.id, 'members']\">\n Manage</a>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-12\">\n <pw-no-data [withImage]=\"true\" message=\"No current enterprise subscriptions.\"\n *ngIf=\"subscriptions.length === 0\">\n </pw-no-data>\n </div>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n </div>\n</div>\n","import { Component, Injector } from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\n\nimport { MenuItem } from 'primeng/api';\n\n@Component({\n selector: 'pw-enterprise-tabs',\n templateUrl: './enterprise-tabs.component.html'\n})\nexport class EnterpriseTabsComponent extends AppBaseComponent {\n constructor(injector: Injector) {\n super(injector);\n }\n\n activeTab: MenuItem;\n\n items: MenuItem[] = [\n {\n id: 'manage_members',\n label: 'Members',\n routerLink: ['/enterprise/members'],\n icon: 'fa fa-fw fa-users'\n },\n {\n id: 'manage_partners',\n label: 'Partners',\n routerLink: ['/enterprise/partners'],\n icon: 'fa fa-fw fa-users',\n visible: this.permissionService.evaluatePermissions('Pages.Alpha')\n },\n {\n id: 'manage_teams',\n label: 'Teams',\n routerLink: ['/enterprise/groups'],\n icon: 'fa fa-fw fa-users-class',\n visible: this.permissionService.evaluatePermissions('Pages.Beta')\n },\n {\n id: 'members_communications',\n label: 'Communications',\n routerLink: ['/enterprise/communications'],\n icon: 'fas fa-comments',\n visible: this.permissionService.evaluatePermissions('Pages.Beta')\n },\n {\n id: 'members_wiki',\n label: 'Documentation',\n routerLink: ['/enterprise/wiki'],\n icon: 'fab fa-wikipedia-w',\n visible: this.permissionService.evaluatePermissions('Pages.Beta')\n },\n {\n id: 'members_insight',\n label: 'Insight',\n routerLink: ['/enterprise/insights'],\n icon: 'fa fa-fw fa-tag',\n visible: this.permissionService.evaluatePermissions('Pages.Beta')\n }\n ];\n}\n","<pw-tabs [items]=\"items\"\n [withSubscription]=\"true\"></pw-tabs>\n","import {\n AfterViewChecked,\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Injector,\n OnDestroy,\n OnInit,\n Renderer2\n} from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { GroupService } from '@posiwise/common-services';\nimport { PAGE_SIZE, Paging, Subscription, User } from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\nimport { QuillHelper, ValidateForm } from '@posiwise/utils';\n\nimport { LazyLoadEvent } from 'primeng/api';\n\nimport {\n EnterPriseCommunication,\n EnterPriseGroup,\n EnterPriseGroupDefinition\n} from '../../interfaces/enterprise.interface';\nimport { AppEnterprise } from '../../models/enterprise.model';\n\n@Component({\n selector: 'pw-enterprise-wiki',\n templateUrl: './enterprise-wiki.component.html',\n styleUrls: ['./enterprise-wiki.component.scss']\n})\nexport class EnterpriseWikiComponent\n extends AppBaseComponent\n implements OnInit, OnDestroy, AfterViewChecked, AfterViewInit\n{\n private page = 1;\n\n groupDefinition: EnterPriseGroupDefinition[] = [];\n allGroups: EnterPriseGroup[] = [];\n allDocumentationGroups: EnterPriseGroup[];\n allCommunication: EnterPriseCommunication[] = [];\n\n data: { id?: number };\n\n form: UntypedFormGroup;\n\n submitted = false;\n buttonBusy = false;\n\n user: User;\n hasAccess: boolean;\n subscriptionId: number;\n subscription: Subscription;\n masterSubscriptionId = this.appConfig.master_subscription.subscription_id;\n\n id: number;\n groupId: number;\n groupName: string;\n\n uploadedFiles = [];\n filesData: string[];\n\n busy: boolean;\n loading = true;\n isLoaded = false;\n filesUploaded: boolean;\n\n invalidFile = false;\n searchText = '';\n totalRecords: number;\n totalRecordsUnFiltered = 0;\n\n editorConfig;\n\n isEdit = false;\n isAdd = false;\n\n constructor(\n private readonly groupService: GroupService,\n injector: Injector,\n private readonly cdr: ChangeDetectorRef,\n private readonly renderer: Renderer2,\n private readonly el: ElementRef\n ) {\n super(injector);\n QuillHelper.init();\n this.editorConfig = QuillHelper.getEditorConfig();\n this.form = AppEnterprise.getWikiForm();\n }\n\n ngAfterViewInit(): void {\n this.attachCloseButtonListener();\n HelperService.subscribeToEditorChanges(this.form, 'body');\n }\n\n ngOnInit() {\n this.getUserSubscription().subscribe(response => {\n this.subscription = response;\n if (this.subscription?.id) {\n this.id = this.subscription?.id;\n }\n });\n this.groupId = Number(this.route.snapshot.queryParams['entity_id']);\n // eslint-disable-next-line no-restricted-globals\n this.groupId = Number.isNaN(this.groupId) ? 0 : this.groupId;\n this.userStore().subscribe(user => {\n if (user) {\n this.user = user;\n }\n });\n this.getAllGroupDefinition();\n }\n\n ngAfterViewChecked() {\n this.cdr.detectChanges();\n }\n\n onLazyLoad(event: LazyLoadEvent) {\n const pageDetails = HelperService.onTableLazyLoad(event);\n this.page = pageDetails.page;\n this.getAllCommunications({\n page: this.page,\n page_size: PAGE_SIZE,\n order_by: pageDetails.sortField,\n order_direction: pageDetails.sortOrder,\n search: this.searchText\n });\n }\n\n /** Function to get all labels */\n private getAllGroupDefinition() {\n this.groupService.groupDefinitionGetAll(this.id, 'Subscription').subscribe(response => {\n if (response.group_definitions.length > 0) {\n this.groupDefinition = response.group_definitions;\n this.groupDefinition.forEach((data, index) => {\n const totalDefinitions = ++index;\n if (data.groups?.length) {\n data.groups.forEach(group => {\n this.allGroups.push(group);\n });\n }\n if (totalDefinitions === this.groupDefinition.length) {\n this.getParticularGroupDetails();\n }\n });\n this.allDocumentationGroups = [\n {\n id: 0,\n name: 'All Documentations',\n description: '',\n group_definition_id: 0,\n members: []\n },\n ...this.allGroups\n ];\n }\n });\n }\n\n /** Function to get group name and to setValue to group field if we have group_id */\n private getParticularGroupDetails() {\n if (this.groupId) {\n const data = this.allGroups.find(group => group.id === this.groupId);\n this.groupName = data?.name;\n this.form.get('group_id').setValue(data?.id);\n }\n }\n\n /** Function to get all communications */\n private getAllCommunications(paging: Paging) {\n this.isLoaded = false;\n const operation = this.groupId\n ? this.groupService.getAllCommunications(this.id, 'wiki', this.groupId || '', paging)\n : this.groupService.getAllCommunicationsWithOutGroupId(this.id, 'wiki', paging);\n\n operation\n .subscribe({\n next: response => {\n this.allCommunication = response.group_communications;\n this.totalRecords = response.object_count;\n this.totalRecordsUnFiltered = response.unfiltered_count;\n },\n error: error => this.toast.showToast(error)\n })\n .add(() => {\n this.isLoaded = true;\n this.loading = false;\n });\n }\n /** Function to filter by groups */\n filterDomainsList() {\n this.groupId = Number(this.groupId);\n this.getAllCommunications({\n page: this.page,\n page_size: PAGE_SIZE\n });\n this.getParticularGroupDetails();\n }\n\n @ValidateForm('form')\n onSave() {\n const rawHtml = HelperService.SaveRawHTML();\n this.form.controls['body'].setValue(rawHtml);\n this.buttonBusy = true;\n if (this.data?.id) {\n this.updateCommunications(this.data?.id);\n } else {\n this.postCommunications();\n }\n }\n\n /** Function to Post communications */\n postCommunications() {\n this.saveCommunication(false);\n }\n\n /** Function to edit communications */\n updateCommunications(id: number) {\n this.totalRecordsUnFiltered = 0;\n this.saveCommunication(true, id);\n }\n\n /** Shared method to save communications (post or update) */\n private saveCommunication(isUpdate: boolean, id?: number) {\n this.buttonBusy = true;\n this.form.get('user_id')?.setValue(this.user.id);\n this.form.get('communication_type')?.setValue('wiki');\n const data = this.form?.value;\n this.submitted = true;\n\n const operation = isUpdate\n ? this.groupService.editCommunications(id, data)\n : this.groupService.postCommunications(data);\n\n operation\n .subscribe(response => {\n const responseId = isUpdate ? response.group_communication.id : response.id;\n this.saveFile(responseId);\n const message = isUpdate\n ? 'Communication Updated Successfully'\n : 'Communication Added Successfully';\n this.toast.success(this.translation.translate(message));\n this.onCancel();\n })\n .add(() => {\n this.buttonBusy = false;\n });\n\n this.submitted = false;\n }\n\n /** Function to get edit communication details */\n getCommunicationDetails(id: number) {\n this.isLoaded = false;\n this.isAdd = false;\n this.isEdit = true;\n this.groupService\n .getCommunicationDetails(id)\n .subscribe(response => {\n this.data = response;\n this.form.patchValue(response);\n this.filesData = response.group_communication_files;\n })\n .add(() => {\n this.isLoaded = true;\n });\n }\n\n /** Function to delete communications */\n onDelete(id: number) {\n this.confirmAndExecute(\n () => this.groupService.deleteCommunications(id),\n 'Communication Deleted Successfully',\n () => this.onCancel()\n );\n }\n\n /** Function to delete communications Files */\n deleteCommunicationFiles(id: number, index: number) {\n this.confirmAndExecute(\n () => this.groupService.deleteCommunicationFiles(id),\n 'Communication File Deleted Successfully',\n () => this.filesData.splice(index, 1)\n );\n }\n\n /** Helper method to confirm and execute delete operations */\n private confirmAndExecute(operation, successMessage: string, onSuccess?: () => void) {\n HelperService.raiseDeletePopup().then(rep => {\n if (rep.value) {\n operation().subscribe(() => {\n this.toast.success(this.translation.translate(successMessage));\n if (onSuccess) {\n onSuccess();\n }\n });\n }\n });\n }\n\n /** Function to get form controls */\n get f() {\n return this.form.controls;\n }\n\n /** Function to show question edit form */\n showEditForm() {\n this.data = {};\n this.isAdd = true;\n this.isEdit = true;\n }\n\n /** Function to hide the edit form */\n onCancel() {\n this.totalRecordsUnFiltered = 0;\n this.getAllCommunications({\n page: this.page,\n page_size: PAGE_SIZE\n });\n this.form.reset();\n this.submitted = false;\n this.isEdit = false;\n }\n\n /** Function for toggle */\n onChange(event: boolean, formControlName: string) {\n this.form.get(formControlName)?.setValue(event);\n }\n\n onSelect(event = null) {\n this.invalidFile = false;\n for (const file of event.files) {\n if (!HelperService.validateFile(file, this.toast)) {\n this.invalidFile = true;\n } else {\n this.uploadedFiles.push(file);\n }\n }\n this.filesUploaded = true;\n\n if (this.invalidFile) {\n setTimeout(() => this.attachCloseButtonListener(), 0);\n }\n }\n\n onRemove(event) {\n this.uploadedFiles = this.uploadedFiles.filter(x => event.file.name !== x.name);\n this.filesUploaded = false;\n this.invalidFile = false;\n }\n\n onUploadError(event) {\n HelperService.onUploadError(event, this.toast);\n }\n\n attachCloseButtonListener() {\n const closeButton = this.el.nativeElement.querySelector('.p-message-close');\n\n if (closeButton) {\n this.renderer.listen(closeButton, 'click', () => {\n this.handleCloseButtonClick();\n });\n }\n }\n\n handleCloseButtonClick() {\n this.invalidFile = false;\n this.filesUploaded = false;\n }\n\n saveFile(id: number) {\n if (this.uploadedFiles.length > 0) {\n this.busy = true;\n this.uploadedFiles.forEach(file => {\n const fileData = new FormData();\n fileData.append('name', file, file.name);\n fileData.append('group_communication_id', `${id}`);\n this.groupService.postCommunicationFiles(fileData).subscribe(() => {\n this.translation.translate('Communication File Added Successfully');\n });\n });\n }\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<section>\n <div class=\"row\">\n <div class=\"col-12\" [ngClass]=\"{'mb-3': !isEdit}\">\n <div class=\"title\">\n <a *ngIf=\"isEdit\"\n aria-label=\"Navigate to Target\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 *ngIf=\"isEdit\" class=\"m-subheader__title m-subheader__title--separator mt-1\">\n <span>{{ !isAdd ? 'Edit' : 'Create a new' }} documentation page</span>\n </h3>\n <h2 *ngIf=\"!isEdit\" [ngClass]=\"{ 'mt-2': isEdit }\">Documentation <span *ngIf=\"groupId\">for {{ groupName }}</span></h2>\n </div>\n <p *ngIf=\"!isEdit\">\n Here you can write the documentation for your organization's members. Documentation\n pages are visible based on the teams the subscription's members are part of.\n </p>\n </div>\n </div>\n</section>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded && isEdit\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<ng-container *ngIf=\"isEdit && isLoaded\">\n <div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"p-2 mt-1\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n <div class=\"row mb-3\">\n <div class=\"col-12 col-md-12\">\n <pw-input-container [label]=\"'Enterprise.Documentation.Title' | transloco\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Title' | transloco\"\n name=\"title\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"title\"\n [ngClass]=\"{ 'is-invalid': submitted && f.title.errors }\" />\n </pw-input-container>\n </div>\n\n <pw-input-container [label]=\"'Enterprise.Documentation.Body' | transloco\"\n class=\"col-12\"\n name=\"body\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Body' | transloco\">\n <quill-editor [styles]=\"{ height: '220px' }\"\n class=\"quillEditor quill-container\" [modules]=\"editorConfig\"\n formControlName=\"body\"\n [ngClass]=\"{ 'is-invalid': submitted && f.body.errors }\">\n </quill-editor>\n </pw-input-container>\n <div class=\"col-12 col-md-6\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Group' | transloco\"\n [label]=\"'Enterprise.Documentation.Team' | transloco\"\n [isLeftTooltip]=\"true\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Team' | transloco\"\n name=\"group_id\">\n <p-dropdown\n [options]=\"allGroups\"\n formControlName=\"group_id\"\n [ngClass]=\"{ 'is-invalid': submitted && f['group_id'].errors }\"\n [placeholder]=\"'Select Team'\"\n optionValue=\"id\"\n optionLabel=\"name\">\n </p-dropdown>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.VisibleGlobally' | transloco\"\n [label]=\"'Enterprise.Documentation.VisibleGlobally' | transloco\"\n name=\"visible_globally\">\n <ui-switch class=\"d-block\"\n formControlName=\"visible_globally\"\n (change)=\"onChange($event, 'visible_globally')\"\n name=\"visible_globally\">\n </ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Published' | transloco\"\n [label]=\"'Enterprise.Documentation.Published' | transloco\"\n name=\"published\">\n <ui-switch class=\"d-block\"\n formControlName=\"published\"\n (change)=\"onChange($event, 'published')\"\n name=\"published\">\n </ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Pushed' | transloco\"\n [label]=\"'Enterprise.Documentation.Pushed' | transloco\"\n name=\"published\">\n <ui-switch class=\"d-block\"\n formControlName=\"pushed\"\n (change)=\"onChange($event, 'pushed')\"\n name=\"pushed\">\n </ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-6\">\n <h4 class=\"mt-4\">You can add files to your documentation page here</h4>\n <div class=\"mb-3\">\n <label for=\"file\">Upload File</label>\n <p-fileUpload #forms\n name=\"myfile[]\"\n [customUpload]=\"true\"\n [showUploadButton]=\"false\"\n accept=\"\"\n [disabled]=\"uploadedFiles && uploadedFiles.length > 0\"\n (onSelect)=\"onSelect($event)\"\n (onRemove)=\"onRemove($event)\"\n (onError)=\"onUploadError($event)\">\n <ng-template pTemplate=\"content\"\n [ngIf]=\"uploadedFiles?.length\">\n <div class=\"drag-drop-text\" *ngIf=\"!filesUploaded && (!uploadedFiles || uploadedFiles.length === 0)\">\n <p>You can drag and drop your file here</p>\n </div>\n </ng-template>\n </p-fileUpload>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 text-end mt-3\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\" >\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\" [disabled]=\"invalidFile\">\n {{ 'Button.Submit' | transloco }}\n </button>\n </div>\n </div>\n </form>\n <div *ngIf=\"filesData?.length\"\n class=\"mt-5\">\n <h2>Files attached to this documentation page</h2>\n <div class=\"communication-files\"\n *ngFor=\"let files of filesData; let i = index\">\n <p>\n <a target=\"blank\"\n [href]=\"files.name.url\">\n {{\n files.name.url.split('?')[0].split('/')[\n files.name?.url?.split('?')[0].split('/').length - 1\n ]\n }}\n </a>\n </p>\n <p ngbTooltip=\"Delete\"\n class=\"ms-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"deleteCommunicationFiles(files.id, i)\"\n (keydown.space)=\"deleteCommunicationFiles(files.id, i)\"\n (click)=\"deleteCommunicationFiles(files.id, i)\"\n aria-hidden=\"true\"\n ></i>\n </p>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n<ng-container *ngIf=\"!isEdit\">\n <div class=\"row\">\n <div class=\"col-12 text-end mb-3\">\n <button class=\"btn btn-sm btn-outline-primary\"\n (click)=\"showEditForm()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> {{ 'Add documentation' }}\n </button>\n </div>\n </div>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n\n <div class=\"primeng-datatable-container mt-0 table-responsive\"\n [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <p-table #dt\n [value]=\"allCommunication\"\n [paginator]=\"totalRecords !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n (onLazyLoad)=\"onLazyLoad($event)\">\n <ng-template pTemplate=\"caption\">\n <div class=\"search-contact\">\n <div class=\"col-sm-3 mb-2 mb-md-0 filter-domain-list\">\n <p-dropdown\n [options]=\"allDocumentationGroups\"\n optionLabel=\"name\"\n optionValue=\"id\"\n [(ngModel)]=\"groupId\"\n placeholder=\"Select Documentation Team\"\n [appendTo]=\"'body'\"\n (onChange)=\"filterDomainsList()\">\n </p-dropdown>\n </div>\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search Documentation...\"\n class=\"mw-90\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\" />\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Title' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Sender' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Team' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Files' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Date' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Status' | transloco }}</th>\n <th scope=\"true\"\n class=\"actions-column\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-item>\n <tr class=\"table-row\">\n <td data-head=\"Title\">\n <a [routerLink]=\"[item.id]\">{{ item.title }}</a>\n </td>\n <td data-head=\"Sender\">{{ item.author | ifNameNullShowEmail }}</td>\n <td data-head=\"Team\">{{ item.group?.name }}</td>\n <td data-head=\"Files\">\n <span *ngFor=\"let files of item.group_communication_files\">\n <a target=\"blank\"\n [href]=\"files.name.url\">\n {{\n files.name.url.split('?')[0].split('/')[\n files.name.url.split('?')[0].split('/').length - 1\n ]\n }}\n </a>\n </span>\n </td>\n <td data-head=\"Date\">{{ item.created_at | dateFormat: 'datetime' }}</td>\n <td data-head=\"Status\">\n <span *ngIf=\"item.visible_globally\"\n class=\"badge bg-warning ms-2\">{{\n 'Enterprise.Documentation.Global' | transloco\n }}</span><span *ngIf=\"item.published\"\n class=\"badge bg-info ms-2\">{{\n 'Enterprise.Documentation.Published' | transloco\n }}</span><span *ngIf=\"item.pushed\"\n class=\"badge bg-success ms-2\">{{\n 'Enterprise.Documentation.Pushed' | transloco\n }}</span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Edit\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-edit edit-icon\"\n (click)=\"getCommunicationDetails(item.id)\"\n (keydown.enter)=\"getCommunicationDetails(item.id)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Delete\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"onDelete(item.id)\"\n (keydown.space)=\"onDelete(item.id)\"\n (click)=\"onDelete(item.id)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"See Communication\"\n class=\"me-2 me-sm-3 see-icon\"\n [routerLink]=\"[item.id]\">\n <i class=\"fa fa-eye eye-icon \" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <div *ngIf=\"totalRecords === 0 && totalRecordsUnFiltered !== 0 && !groupId\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage'| transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n <span class=\"total-records-count\" *ngIf=\"totalRecords !== 0\">{{ 'Label.Total' | transloco }}: {{ totalRecords }}</span>\n </div>\n <div *ngIf=\"totalRecordsUnFiltered === 0 && isLoaded\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Documentation.NoDocumentation' | transloco\">\n </pw-no-data>\n </div>\n</ng-container>\n","import { Component, Injector, OnDestroy, OnInit } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { GroupService, PermissionService } from '@posiwise/common-services';\nimport { HelperService } from '@posiwise/helper-service';\n\nimport { EnterPriseCommunication } from '../../interfaces/enterprise.interface';\n\n@Component({\n selector: 'pw-enterprise-wiki-details',\n templateUrl: './enterprise-wiki-details.component.html',\n styleUrls: ['./enterprise-wiki-details.component.scss']\n})\nexport class EnterpriseWikiDetailsComponent extends AppBaseComponent implements OnInit, OnDestroy {\n id: number;\n communicationId: number;\n\n communicationDetails: EnterPriseCommunication;\n\n isLoaded = false;\n\n chatPermission: string;\n\n constructor(\n injector: Injector,\n private readonly groupService: GroupService,\n private readonly sanitizer: DomSanitizer\n ) {\n super(injector);\n }\n\n ngOnInit() {\n this.getUserSubscriptionId().subscribe(id => {\n this.id = id;\n });\n this.route.params.subscribe(param => {\n this.communicationId = Number(param['wikiId']);\n });\n this.getCommunication();\n this.chatPermission = `${PermissionService.selectedProduct?.permission}.${PermissionService.selectedProduct?.feature_key}`;\n }\n\n /** Function to call communication */\n private getCommunication() {\n this.groupService\n .getCommunicationDetails(this.communicationId)\n .subscribe(response => {\n let blogBody;\n if (response?.body) {\n blogBody = HelperService.sanitizeQuillBody(response.body, this.sanitizer);\n }\n this.communicationDetails = { ...response, body: blogBody };\n })\n .add(() => {\n this.isLoaded = true;\n });\n }\n\n onCancel() {\n this.back();\n }\n\n trackByFileId(_index: number, item) {\n return item.id;\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<div class=\"row\">\n <div class=\"col-12 d-flex\">\n <a aria-label=\"Navigate to Target\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h2 class=\"mt-0 mb-0\">Documentation</h2>\n </div>\n</div>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<div *ngIf=\"isLoaded\">\n <div class=\"content-quill-wrapper container-fluid pw-tab overflow-hidden mt-3\" *ngIf=\"communicationDetails\">\n <div class=\"pb-0\">\n <div class=\"card-body p-4\">\n <div class=\"row mb-3\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-center mb-md-2\">\n <div class=\"d-flex flex-wrap mb-3 mb-md-0\">\n <span [ngClass]=\"communicationDetails?.pushed ? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.pushed ? 'Pushed' : 'Not Pushed' }}\n </span>\n <span [ngClass]=\"communicationDetails?.published? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.published ? 'Published' : 'Not Published' }}\n </span>\n <span [ngClass]=\"communicationDetails?.published ? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.visible_globally ? 'Visible Globally' : 'Not Visible Globally' }}\n </span>\n </div>\n <div class=\"d-flex flex-wrap mb-3 mb-md-0\">\n <span class=\"badge bg-cyan mb-2 me-2 mb-md-0\">{{communicationDetails?.group?.name}}</span>\n <span class=\"badge bg-blue-grey mb-2 me-2 mb-md-0\">{{ 'Created At (' + (communicationDetails?.created_at | date: 'dd-MMM-YYYY') + ')' }}</span>\n <span *ngIf=\"communicationDetails?.pushed_at\" class=\"badge bg-grey mb-2 mb-md-0\">{{ 'Pushed At (' + (communicationDetails?.pushed_at | date: 'dd-MMM-YYYY') + ')' }}</span>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 mb-3 ms-2\">\n <h5>{{ communicationDetails?.title }}</h5>\n </div>\n <div class=\"col-12 mb-3 ms-2 message-icon\">\n <a [routerLink]=\"['/members', communicationDetails?.author?.slug]\">{{\n communicationDetails?.author | ifNameNullShowEmail\n }}</a>\n <div class=\"ms-2\"\n ngbTooltip=\"Message\"\n *rbacAllow=\"chatPermission\">\n <i\n [routerLink]=\"['/message']\"\n [fragment]=\"communicationDetails?.author?.slug\"\n class=\"fa fa-comments cta1-icon\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n\n <div class=\"col-12 ms-2\">\n <div class=\"ql-container ql-snow body-quill\">\n <div class=\"ql-editor\"\n [innerHTML]=\"communicationDetails?.body\">\n </div>\n </div>\n </div>\n <div class=\"col-12 col-sm-10\">\n <p *ngFor=\"\n let files of communicationDetails?.group_communication_files;\n trackBy: trackByFileId\n \">\n <a [href]=\"files?.name?.url\"\n target=\"blank\">{{\n files?.name?.url?.split('?')[0]?.split('/')[\n files?.name?.url.split('?')[0]?.split('/')?.length - 1\n ]\n }}</a>\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n</div>\n\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule, Routes } from '@angular/router';\n\nimport { CoreTranslocoModule } from '@posiwise/core-transloco';\nimport { DirectivesModule } from '@posiwise/directives';\nimport { PipesModule } from '@posiwise/pipes';\nimport {\n EntityGroupComponent,\n GroupDefinitionComponent,\n GroupsComponent,\n SharedComponentsModule\n} from '@posiwise/shared-components';\n\nimport { PlotlyViaCDNModule } from 'angular-plotly.js';\nimport { QuillModule } from 'ngx-quill';\nimport { UiSwitchModule } from 'ngx-ui-switch';\nimport { NgxUploaderModule } from 'ngx-uploader';\nimport { DropdownModule } from 'primeng/dropdown';\nimport { FileUploadModule } from 'primeng/fileupload';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { MultiSelectModule } from 'primeng/multiselect';\n\nimport { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\n\nimport { EnterpriseViewParticularCommunicationComponent } from './components/enterprise-communication-details/enterprise-communication-details.component';\nimport { EnterpriseCommunicationsComponent } from './components/enterprise-communications/enterprise-communications.component';\nimport { EnterpriseInsightsComponent } from './components/enterprise-insights/enterprise-insights.component';\nimport { EnterpriseMembersComponent } from './components/enterprise-members/enterprise-members.component';\nimport { EnterprisePartnersComponent } from './components/enterprise-partners/enterprise-partners.component';\nimport { EnterpriseSubscriptionsComponent } from './components/enterprise-subscriptions/enterprise-subscriptions.component';\nimport { EnterpriseTabsComponent } from './components/enterprise-tabs/enterprise-tabs.component';\nimport { EnterpriseWikiComponent } from './components/enterprise-wiki/enterprise-wiki.component';\nimport { EnterpriseWikiDetailsComponent } from './components/enterprise-wiki-details/enterprise-wiki-details.component';\n\nPlotlyViaCDNModule.setPlotlyVersion('1.55.2');\n\nconst routes: Routes = [\n {\n path: '',\n component: EnterpriseSubscriptionsComponent,\n pathMatch: 'full'\n },\n {\n path: '',\n component: EnterpriseTabsComponent,\n children: [\n {\n path: 'members',\n component: EnterpriseMembersComponent,\n data: {\n title: 'Enterprise - Members'\n }\n },\n {\n path: 'partners',\n component: EnterprisePartnersComponent,\n data: {\n permission: 'Pages.Alpha',\n title: 'Enterprise - Partners'\n }\n },\n {\n path: 'groups',\n component: GroupsComponent,\n data: {\n permission: 'Pages.Beta',\n title: 'Enterprise - Groups'\n }\n },\n {\n path: 'groups/labels',\n component: GroupDefinitionComponent,\n data: {\n permission: 'Pages.Beta',\n title: 'Enterprise - Groups - Definition'\n }\n },\n {\n path: 'groups/:groupId/members',\n component: EntityGroupComponent,\n data: {\n permission: 'Pages.Beta',\n title: 'Enterprise - Groups - Entity'\n }\n },\n {\n path: 'communications',\n component: EnterpriseCommunicationsComponent,\n data: {\n permission: 'Pages.Beta',\n title: 'Enterprise - Communication'\n }\n },\n {\n path: 'wiki',\n component: EnterpriseWikiComponent,\n data: {\n permission: 'Pages.Beta',\n title: 'Enterprise - Wiki'\n }\n },\n {\n path: 'wiki/:wikiId',\n component: EnterpriseWikiDetailsComponent,\n data: {\n permission: 'Pages.Beta',\n title: 'Enterprise - Wiki'\n }\n },\n {\n path: 'communications/:communicationId',\n component: EnterpriseViewParticularCommunicationComponent,\n data: {\n permission: 'Pages.Beta',\n title: 'Enterprise - Wiki'\n }\n },\n {\n path: 'insights',\n component: EnterpriseInsightsComponent,\n data: {\n permission: 'Pages.Beta',\n title: 'Enterprise - Insight'\n }\n }\n ]\n }\n];\n\n@NgModule({\n declarations: [\n EnterpriseSubscriptionsComponent,\n EnterpriseMembersComponent,\n EnterprisePartnersComponent,\n EnterpriseTabsComponent,\n EnterpriseInsightsComponent,\n EnterpriseCommunicationsComponent,\n EnterpriseViewParticularCommunicationComponent,\n EnterpriseWikiComponent,\n EnterpriseWikiDetailsComponent\n ],\n imports: [\n CommonModule,\n InputTextModule,\n CoreTranslocoModule,\n PlotlyViaCDNModule,\n NgbTooltipModule,\n UiSwitchModule,\n FormsModule,\n DropdownModule,\n FileUploadModule,\n ReactiveFormsModule,\n PipesModule,\n DirectivesModule,\n SharedComponentsModule,\n RouterModule.forChild(routes),\n NgxUploaderModule,\n MultiSelectModule,\n // SharedModule,\n QuillModule.forRoot()\n // LazyLoadModules\n ]\n})\nexport class EnterpriseModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3","i5","i6","i7","i8","i2","i10","i11","i4","i1","i9","i12","i14","i15","i16","i13"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"posiwise-enterprise-module.mjs","sources":["../../../../libs/enterprise-module/src/lib/components/enterprise-communication-details/enterprise-communication-details.component.ts","../../../../libs/enterprise-module/src/lib/components/enterprise-communication-details/enterprise-communication-details.component.html","../../../../libs/enterprise-module/src/lib/models/enterprise.model.ts","../../../../libs/enterprise-module/src/lib/components/enterprise-communications/enterprise-communications.component.ts","../../../../libs/enterprise-module/src/lib/components/enterprise-communications/enterprise-communications.component.html","../../../../libs/enterprise-module/src/lib/components/enterprise-insights/enterprise-insights.component.ts","../../../../libs/enterprise-module/src/lib/components/enterprise-insights/enterprise-insights.component.html","../../../../libs/enterprise-module/src/lib/components/enterprise-members/enterprise-members.component.ts","../../../../libs/enterprise-module/src/lib/components/enterprise-members/enterprise-members.component.html","../../../../libs/enterprise-module/src/lib/components/enterprise-partners/enterprise-partners.component.ts","../../../../libs/enterprise-module/src/lib/components/enterprise-partners/enterprise-partners.component.html","../../../../libs/enterprise-module/src/lib/components/enterprise-subscriptions/enterprise-subscriptions.component.ts","../../../../libs/enterprise-module/src/lib/components/enterprise-subscriptions/enterprise-subscriptions.component.html","../../../../libs/enterprise-module/src/lib/components/enterprise-tabs/enterprise-tabs.component.ts","../../../../libs/enterprise-module/src/lib/components/enterprise-tabs/enterprise-tabs.component.html","../../../../libs/enterprise-module/src/lib/components/enterprise-wiki/enterprise-wiki.component.ts","../../../../libs/enterprise-module/src/lib/components/enterprise-wiki/enterprise-wiki.component.html","../../../../libs/enterprise-module/src/lib/components/enterprise-wiki-details/enterprise-wiki-details.component.ts","../../../../libs/enterprise-module/src/lib/components/enterprise-wiki-details/enterprise-wiki-details.component.html","../../../../libs/enterprise-module/src/lib/enterprise.module.ts","../../../../libs/enterprise-module/src/posiwise-enterprise-module.ts"],"sourcesContent":["import { Component, Injector, OnDestroy, OnInit } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { GroupService, PermissionService } from '@posiwise/common-services';\nimport { HelperService } from '@posiwise/helper-service';\n\nimport { EnterPriseCommunication } from '../../interfaces/enterprise.interface';\n\n@Component({\n selector: 'pw-enterprise-communication-details',\n templateUrl: './enterprise-communication-details.component.html',\n styleUrls: ['./enterprise-communication-details.component.scss']\n})\nexport class EnterpriseViewParticularCommunicationComponent\n extends AppBaseComponent\n implements OnInit, OnDestroy\n{\n id: number;\n communicationId: number;\n\n chatPermission: string;\n\n communicationDetails: EnterPriseCommunication;\n\n isLoaded = false;\n\n constructor(\n injector: Injector,\n private readonly groupService: GroupService,\n private readonly sanitizer: DomSanitizer\n ) {\n super(injector);\n }\n\n ngOnInit() {\n this.getUserSubscriptionId().subscribe(id => {\n this.id = id;\n });\n this.route.params.subscribe(param => {\n this.communicationId = Number(param['communicationId']);\n });\n this.getCommunication();\n this.chatPermission = `${PermissionService.selectedProduct?.permission}.${PermissionService.selectedProduct?.feature_key}`;\n }\n\n /** Function to call communication */\n private getCommunication() {\n this.groupService.getCommunicationDetails(this.communicationId).subscribe(response => {\n let blogBody;\n if (response?.body) {\n blogBody = HelperService.sanitizeQuillBody(response.body, this.sanitizer);\n }\n this.communicationDetails = { ...response, body: blogBody };\n this.isLoaded = true;\n });\n }\n\n onCancel() {\n this.back();\n }\n\n trackByFileId(_index: number, item) {\n return item.id;\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<div class=\"row\">\n <div class=\"col-12 d-flex\">\n <a aria-label=\"Navigate to Target\"\n (keydown.enter)=\"onCancel()\"\n (click)=\"onCancel()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h2 class=\"mt-0 mb-0\">Communication</h2>\n </div>\n</div>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<div *ngIf=\"isLoaded\">\n <div class=\"content-quill-wrapper container-fluid pw-tab overflow-hidden mt-3\" *ngIf=\"communicationDetails\">\n <div class=\"pb-0\">\n <div class=\"card-body p-4\">\n <div class=\"row mb-3\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-center mb-md-2\">\n <div class=\"d-flex flex-wrap mb-3 mb-md-0\">\n <span [ngClass]=\"communicationDetails?.pushed ? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.pushed ? 'Pushed' : 'Not Pushed' }}\n </span>\n <span [ngClass]=\"communicationDetails?.published? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.published ? 'Published' : 'Not Published' }}\n </span>\n <span [ngClass]=\"communicationDetails?.published ? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.visible_globally ? 'Visible Globally' : 'Not Visible Globally' }}\n </span>\n </div>\n <div class=\"d-flex flex-wrap mb-3 mb-md-0\">\n <span class=\"badge bg-cyan mb-2 me-2 mb-md-0\">{{communicationDetails?.group?.name}}</span>\n <span class=\"badge bg-blue-grey mb-2 me-2 mb-md-0\">{{ 'Created At (' + (communicationDetails?.created_at | date: 'dd-MMM-YYYY') + ')' }}</span>\n <span *ngIf=\"communicationDetails?.pushed_at\" class=\"badge bg-grey mb-2 mb-md-0\">{{ 'Pushed At (' + (communicationDetails?.pushed_at | date: 'dd-MMM-YYYY') + ')' }}</span>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 mb-3 ms-2\">\n <h5>{{ communicationDetails?.title }}</h5>\n </div>\n <div class=\"col-12 mb-3 ms-2 message-icon\">\n <a [routerLink]=\"['/members', communicationDetails?.author?.slug]\">{{\n communicationDetails?.author | ifNameNullShowEmail\n }}</a>\n <div class=\"ms-2\"\n ngbTooltip=\"Message\"\n *rbacAllow=\"chatPermission\">\n <i\n [routerLink]=\"['/message']\"\n [fragment]=\"communicationDetails?.author?.slug\"\n class=\"fa fa-comments cta1-icon\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n\n <div class=\"col-12 ms-2\">\n <div class=\"ql-container ql-snow body-quill\">\n <div class=\"ql-editor\"\n [innerHTML]=\"communicationDetails?.body\">\n </div>\n </div>\n </div>\n <div class=\"col-12 col-sm-10\">\n <p *ngFor=\"\n let files of communicationDetails?.group_communication_files;\n trackBy: trackByFileId\n \">\n <a [href]=\"files?.name?.url\"\n target=\"blank\">{{\n files?.name?.url?.split('?')[0]?.split('/')[\n files?.name?.url.split('?')[0]?.split('/')?.length - 1\n ]\n }}</a>\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n</div>\n\n","import { UntypedFormBuilder, Validators } from '@angular/forms';\n\nexport class AppEnterprise {\n static getWikiForm() {\n return new UntypedFormBuilder().group({\n body: ['', [Validators.required]],\n group_id: ['', [Validators.required]],\n user_id: [''],\n visible_globally: [false],\n title: ['', [Validators.required]],\n communication_type: ['wiki'],\n published: [false],\n pushed: [false]\n });\n }\n\n static getCommunicationsForm() {\n return new UntypedFormBuilder().group({\n body: ['', [Validators.required]],\n group_id: ['', [Validators.required]],\n user_id: [],\n visible_globally: [false],\n title: ['', [Validators.required]],\n communication_type: ['communication'],\n published: [false],\n pushed: [false]\n });\n }\n}\n","import {\n AfterViewChecked,\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Injector,\n OnDestroy,\n OnInit,\n Renderer2\n} from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { GroupService } from '@posiwise/common-services';\nimport { PAGE_SIZE, Paging, Subscription, User } from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\nimport { QuillHelper, ValidateForm } from '@posiwise/utils';\n\nimport { LazyLoadEvent } from 'primeng/api';\n\nimport {\n EnterPriseCommunication,\n EnterPriseGroup,\n EnterPriseGroupDefinition\n} from '../../interfaces/enterprise.interface';\nimport { AppEnterprise } from '../../models/enterprise.model';\n\n@Component({\n selector: 'pw-enterprise-communications',\n templateUrl: './enterprise-communications.component.html',\n styleUrls: ['./enterprise-communications.component.scss']\n})\nexport class EnterpriseCommunicationsComponent\n extends AppBaseComponent\n implements OnInit, OnDestroy, AfterViewChecked, AfterViewInit\n{\n private page = 1;\n\n groupDefinition: EnterPriseGroupDefinition[] = [];\n allGroups: EnterPriseGroup[] = [];\n allCommunicationGroups: EnterPriseGroup[] = [];\n allCommunication: EnterPriseCommunication[] = [];\n\n data: { id?: number };\n\n form: UntypedFormGroup;\n\n submitted = false;\n buttonBusy = false;\n\n user: User;\n hasAccess: boolean;\n subscriptionId: number;\n subscription: Subscription;\n\n id: number;\n groupId: number;\n groupName: string;\n\n uploadedFiles = [];\n filesData: string[];\n\n busy: boolean;\n loading = true;\n isLoaded = false;\n filesUploaded: boolean;\n\n invalidFile = false;\n searchText = '';\n totalRecords: number;\n totalRecordsUnFiltered = 0;\n\n editorConfig;\n\n isEdit = false;\n isAdd = false;\n\n constructor(\n private readonly groupService: GroupService,\n injector: Injector,\n private readonly cdr: ChangeDetectorRef,\n private readonly renderer: Renderer2,\n private readonly el: ElementRef\n ) {\n super(injector);\n QuillHelper.init();\n this.editorConfig = QuillHelper.getEditorConfig();\n this.form = AppEnterprise.getCommunicationsForm();\n }\n ngAfterViewInit(): void {\n this.attachCloseButtonListener();\n HelperService.subscribeToEditorChanges(this.form, 'body');\n }\n\n ngOnInit() {\n this.getUserSubscription().subscribe(response => {\n this.subscription = response;\n if (this.subscription?.id) {\n this.id = this.subscription?.id;\n this.hasAccess = this.hasAdminAccess(this.subscription?.id);\n }\n });\n this.groupId = Number(this.route.snapshot.queryParams['entity_id']);\n // eslint-disable-next-line no-restricted-globals\n this.groupId = Number.isNaN(this.groupId) ? 0 : this.groupId;\n\n this.userStore().subscribe(user => {\n if (user) {\n this.user = user;\n }\n });\n this.getAllGroupDefinition();\n }\n\n ngAfterViewChecked() {\n this.cdr.detectChanges();\n }\n\n onLazyLoad(event: LazyLoadEvent) {\n const pageDetails = HelperService.onTableLazyLoad(event);\n this.page = pageDetails.page;\n this.getAllCommunications({\n page: this.page,\n page_size: PAGE_SIZE,\n order_by: pageDetails.sortField,\n order_direction: pageDetails.sortOrder,\n search: this.searchText\n });\n }\n\n /** Function to get all labels */\n private getAllGroupDefinition() {\n this.groupService.groupDefinitionGetAll(this.id, 'Subscription').subscribe(response => {\n if (response?.group_definitions?.length) {\n this.groupDefinition = response.group_definitions;\n this.groupDefinition.forEach((data, index) => {\n const totalDefinitions = ++index;\n if (data?.groups?.length) {\n data.groups.forEach(group => {\n this.allGroups.push(group);\n });\n }\n if (totalDefinitions === this.groupDefinition.length) {\n this.getParticularGroupDetails();\n }\n });\n this.allCommunicationGroups = [\n {\n id: 0,\n name: 'All Communications',\n description: '',\n group_definition_id: 0,\n members: []\n },\n ...this.allGroups\n ];\n }\n });\n }\n\n /** Function to get group name and to setValue to group field if we have group_id */\n private getParticularGroupDetails() {\n if (this.groupId) {\n const data = this.allGroups.find(group => group.id === this.groupId);\n this.groupName = data?.name;\n this.form.get('group_id').setValue(data?.id);\n }\n }\n\n /** Function to get all communications */\n private getAllCommunications(paging: Paging) {\n this.isLoaded = false;\n if (this.groupId) {\n this.groupService\n .getAllCommunications(this.id, 'communication', this.groupId || '', paging)\n .subscribe(response => {\n this.loading = false;\n this.isLoaded = true;\n this.allCommunication = response.group_communications;\n this.totalRecords = response.object_count;\n this.totalRecordsUnFiltered = response.unfiltered_count;\n });\n } else {\n this.groupService\n .getAllCommunicationsWithOutGroupId(this.id, 'communication', paging)\n .subscribe(response => {\n this.allCommunication = response.group_communications;\n this.totalRecords = response.object_count;\n this.totalRecordsUnFiltered = response.unfiltered_count;\n })\n .add(() => {\n this.loading = false;\n this.isLoaded = true;\n });\n }\n }\n\n /** Function to filter by groups */\n filterDomainsList() {\n this.groupId = Number(this.groupId);\n this.getAllCommunications({\n page: this.page,\n page_size: PAGE_SIZE\n });\n this.getParticularGroupDetails();\n }\n\n @ValidateForm('form')\n onSave() {\n const rawHtml = HelperService.SaveRawHTML();\n this.form.controls['body'].setValue(rawHtml);\n this.buttonBusy = true;\n if (this.data?.id) {\n this.updateCommunications();\n } else {\n this.postCommunications();\n }\n }\n\n /** Function to Post communications */\n postCommunications() {\n this.saveCommunication(false);\n }\n\n /** Function to edit communications */\n updateCommunications() {\n this.totalRecordsUnFiltered = 0;\n this.saveCommunication(true);\n }\n\n /** Shared method to save communications (post or update) */\n private saveCommunication(isUpdate: boolean) {\n this.form.get('user_id').setValue(this.user.id);\n this.form.get('communication_type')?.setValue('communication');\n const data = this.form?.value;\n this.submitted = true;\n\n if (this.form.invalid) {\n return;\n }\n\n const operation = isUpdate\n ? this.groupService.editCommunications(this.data?.id, data)\n : this.groupService.postCommunications(data);\n\n operation\n .subscribe(response => {\n const id = isUpdate ? response.group_communication.id : response.id;\n this.saveFile(id);\n const message = isUpdate\n ? 'Communication Updated Successfully'\n : 'Communication Added Successfully';\n this.toast.success(this.translation.translate(message));\n this.onCancel();\n })\n .add(() => {\n this.buttonBusy = false;\n });\n\n this.submitted = false;\n }\n\n /** Function to get edit communication details */\n getCommunicationDetails(id: number) {\n this.isLoaded = false;\n this.isAdd = false;\n this.isEdit = true;\n this.groupService\n .getCommunicationDetails(id)\n .subscribe(response => {\n this.data = response;\n this.form.patchValue(response);\n this.filesData = response.group_communication_files;\n })\n .add(() => {\n this.isLoaded = true;\n });\n }\n\n /** Function to delete communications */\n onDelete(id: number) {\n HelperService.raiseDeletePopup().then(rep => {\n if (rep.value) {\n this.groupService.deleteCommunications(id).subscribe(() => {\n this.toast.success(\n this.translation.translate('Communication Deleted Successfully')\n );\n this.onCancel();\n });\n }\n });\n }\n\n /** Function to delete communications Files */\n deleteCommunicationFiles(id: number, index: number) {\n HelperService.raiseDeletePopup().then(rep => {\n if (rep.value) {\n this.groupService.deleteCommunicationFiles(id).subscribe(() => {\n this.toast.success(\n this.translation.translate('Communication File Deleted Successfully')\n );\n this.filesData.splice(index, 1);\n });\n }\n });\n }\n\n /** Function to get form controls */\n get f() {\n return this.form.controls;\n }\n\n /** Function to show question edit form */\n showEditForm() {\n this.data = {};\n this.isAdd = true;\n this.isEdit = true;\n }\n\n /** Function to hide the edit form */\n onCancel() {\n this.totalRecordsUnFiltered = 0;\n this.getAllCommunications({\n page: this.page,\n page_size: PAGE_SIZE\n });\n this.form.reset();\n this.submitted = false;\n this.isEdit = false;\n }\n\n /** Function for toggle */\n onChange(event: boolean, formControlName: string) {\n this.form.get(formControlName)?.setValue(event);\n }\n\n onSelect(event = null) {\n this.invalidFile = false;\n for (const file of event.files) {\n if (!HelperService.validateFile(file, this.toast)) {\n this.invalidFile = true;\n } else {\n this.uploadedFiles.push(file);\n }\n }\n this.filesUploaded = true;\n\n if (this.invalidFile) {\n setTimeout(() => this.attachCloseButtonListener(), 0);\n }\n }\n\n attachCloseButtonListener() {\n const closeButton = this.el.nativeElement.querySelector('.p-message-close');\n\n if (closeButton) {\n this.renderer.listen(closeButton, 'click', () => {\n this.handleCloseButtonClick();\n });\n }\n }\n\n handleCloseButtonClick() {\n this.invalidFile = false;\n this.filesUploaded = false;\n }\n\n onRemove(event) {\n this.uploadedFiles = this.uploadedFiles.filter(x => event.file.name !== x.name);\n this.filesUploaded = false;\n this.invalidFile = false;\n }\n\n onUploadError(event) {\n HelperService.onUploadError(event, this.toast);\n }\n\n saveFile(id: number) {\n if (this.uploadedFiles.length > 0) {\n this.busy = true;\n this.uploadedFiles.forEach(file => {\n const fileData = new FormData();\n fileData.append('name', file, file.name);\n fileData.append('group_communication_id', `${id}`);\n this.groupService.postCommunicationFiles(fileData).subscribe(() => {\n this.translation.translate('Communication File Added Successfully');\n });\n });\n }\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<section>\n <div class=\"row\">\n <div class=\"col-12\" [ngClass]=\"{'mb-3': !isEdit}\">\n <div class=\"title\">\n <a *ngIf=\"isEdit\"\n aria-label=\"Navigate to Target\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 *ngIf=\"isEdit\" class=\"m-subheader__title m-subheader__title--separator mt-1\">\n <span>{{ !isAdd ? 'Edit' : 'Create new' }} Communication</span>\n </h3>\n <h2 *ngIf=\"!isEdit\" [ngClass]=\"{ 'mt-2': isEdit }\">Communications <span *ngIf=\"groupId\">for {{ groupName }}</span></h2>\n </div>\n <p *ngIf=\"!isEdit\">\n Here you can send communications to your organization, based on the teams they are\n part of.\n </p>\n </div>\n </div>\n</section>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded && isEdit\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<ng-container *ngIf=\"isEdit && isLoaded\">\n <div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"p-2 mt-1\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n <div class=\"row mb-3\">\n <div class=\"col-12 col-md-12\">\n <pw-input-container [label]=\"'Enterprise.Documentation.Title' | transloco\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Title' | transloco\"\n name=\"title\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"title\"\n [ngClass]=\"{ 'is-invalid': submitted && f['title'].errors }\" />\n </pw-input-container>\n </div>\n\n <pw-input-container [label]=\"'Enterprise.Documentation.Body' | transloco\"\n class=\"col-12\"\n name=\"body\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Body' | transloco\">\n <quill-editor [styles]=\"{ height: '220px' }\"\n class=\"quillEditor quill-container\" [modules]=\"editorConfig\"\n formControlName=\"body\"\n [ngClass]=\"{ 'is-invalid': submitted && f['body'].errors }\">\n </quill-editor>\n </pw-input-container>\n\n <div class=\"col-12 col-md-6\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Group' | transloco\"\n [label]=\"'Enterprise.Documentation.Team' | transloco\"\n [isLeftTooltip]=\"true\"\n name=\"group_id\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Team' | transloco\">\n <p-dropdown\n [options]=\"allGroups\"\n formControlName=\"group_id\"\n [ngClass]=\"{ 'is-invalid': submitted && f['group_id'].errors }\"\n optionValue=\"id\"\n optionLabel=\"name\">\n </p-dropdown>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.VisibleGlobally' | transloco\"\n [label]=\"'Enterprise.Documentation.VisibleGlobally' | transloco\"\n name=\"visible_globally\">\n <ui-switch class=\"d-block\"\n formControlName=\"visible_globally\"\n (change)=\"onChange($event, 'visible_globally')\"\n name=\"visible_globally\">\n </ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Published' | transloco\"\n [label]=\"'Enterprise.Documentation.Published' | transloco\"\n name=\"published\">\n <ui-switch class=\"d-block\"\n formControlName=\"published\"\n (change)=\"onChange($event, 'published')\"\n name=\"published\">\n </ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Pushed' | transloco\"\n [label]=\"'Enterprise.Documentation.Pushed' | transloco\"\n name=\"pushed\">\n <ui-switch class=\"d-block\"\n formControlName=\"pushed\"\n (change)=\"onChange($event, 'pushed')\"\n name=\"pushed\">\n </ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-6\">\n <h4 class=\"mt-4\">You can add files to your communication here</h4>\n <div class=\"mb-3\">\n <label for=\"file\">Upload Communication File</label>\n <p-fileUpload #forms\n name=\"myfile[]\"\n [customUpload]=\"true\"\n [showUploadButton]=\"false\"\n accept=\"\"\n [disabled]=\"uploadedFiles && uploadedFiles.length > 0\"\n (onSelect)=\"onSelect($event)\"\n (onRemove)=\"onRemove($event)\"\n (onError)=\"onUploadError($event)\">\n <ng-template pTemplate=\"content\"\n [ngIf]=\"uploadedFiles?.length\">\n <div class=\"drag-drop-text\" *ngIf=\"!filesUploaded && (!uploadedFiles || uploadedFiles.length === 0)\">\n <p>You can drag and drop your file here</p>\n </div>\n </ng-template>\n </p-fileUpload>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 text-end mt-3\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\" >\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\" [disabled]=\"invalidFile\">\n {{ 'Button.Submit' | transloco }}\n </button>\n </div>\n </div>\n </form>\n <div *ngIf=\"filesData?.length\"\n class=\"mt-5\">\n <h2>Communications files attached to this communication</h2>\n <div class=\"communication-files\"\n *ngFor=\"let files of filesData; let i = index\">\n <p>\n <a target=\"blank\"\n href=\"{{ files.name.url }}\">{{\n files.name.url.split('?')[0].split('/')[\n files.name.url.split('?')[0].split('/').length - 1\n ]\n }}</a>\n </p>\n <p ngbTooltip=\"Delete\"\n class=\"ms-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"deleteCommunicationFiles(files.id, i)\"\n (keydown.space)=\"deleteCommunicationFiles(files.id, i)\"\n (click)=\"deleteCommunicationFiles(files.id, i)\"\n aria-hidden=\"true\"\n ></i>\n </p>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n<ng-container *ngIf=\"!isEdit\">\n <div class=\"row\">\n <div class=\"col-12 text-end mb-3\">\n <button class=\"btn btn-sm btn-outline-primary\"\n (click)=\"showEditForm()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> {{ 'Add Communication' }}\n </button>\n </div>\n </div>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n\n <div class=\"primeng-datatable-container mt-0 table-responsive\"\n [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <p-table #dt\n [value]=\"allCommunication\"\n [paginator]=\"totalRecords !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n (onLazyLoad)=\"onLazyLoad($event)\">\n <ng-template pTemplate=\"caption\">\n <div class=\"search-contact\">\n <div class=\"col-12 col-md-3 mb-2 mb-md-0 filter-domain-list\">\n <p-dropdown\n [options]=\"allCommunicationGroups\"\n optionLabel=\"name\"\n optionValue=\"id\"\n [(ngModel)]=\"groupId\"\n placeholder=\"Select Communication Team\"\n [appendTo]=\"'body'\"\n (onChange)=\"filterDomainsList()\">\n </p-dropdown>\n </div>\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search Communications...\"\n class=\"mw-90\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\" />\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Title' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Sender' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Team' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Files' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Date' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Status' | transloco }}</th>\n <th scope=\"true\"\n class=\"actions-column\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-item>\n <tr class=\"table-row\">\n <td data-head=\"Title\">\n <a [routerLink]=\"[item.id]\">{{ item.title }}</a>\n </td>\n <td data-head=\"Sender\">{{ item.author | ifNameNullShowEmail }}</td>\n <td data-head=\"Team\">{{ item.group?.name }}</td>\n <td data-head=\"Files\">\n <span *ngFor=\"let files of item.group_communication_files\">\n <a target=\"blank\"\n [href]=\"files.name.url\">{{\n files.name.url.split('?')[0].split('/')[\n files.name.url.split('?')[0].split('/').length - 1\n ]\n }}</a>\n </span>\n </td>\n <td data-head=\"Date\">{{ item.created_at | dateFormat: 'datetime' }}</td>\n <td data-head=\"Status\">\n <span *ngIf=\"item.visible_globally\"\n class=\"badge bg-warning ms-2\">{{\n 'Enterprise.Documentation.Global' | transloco\n }}</span><span *ngIf=\"item.published\"\n class=\"badge bg-info ms-2\">{{\n 'Enterprise.Documentation.Published' | transloco\n }}</span><span *ngIf=\"item.pushed\"\n class=\"badge bg-success ms-2\">{{\n 'Enterprise.Documentation.Pushed' | transloco\n }}</span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Edit\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-edit edit-icon\"\n (click)=\"getCommunicationDetails(item.id)\"\n (keydown.enter)=\"getCommunicationDetails(item.id)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Delete\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"onDelete(item.id)\"\n (click)=\"onDelete(item.id)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"See Communication\"\n class=\"me-2 me-sm-3 see-icon\"\n [routerLink]=\"[item.id]\">\n <i class=\"fa fa-eye eye-icon\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <div *ngIf=\"totalRecords === 0 && totalRecordsUnFiltered !== 0 && !groupId\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n <span class=\"total-records-count\" *ngIf=\"totalRecords !== 0\">{{ 'Label.Total' | transloco }}: {{ totalRecords }}</span>\n </div>\n <div *ngIf=\"totalRecordsUnFiltered === 0 && isLoaded\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Communication.NoCommunication' | transloco\">\n </pw-no-data>\n </div>\n</ng-container>\n","import { Component, Injector, OnDestroy, OnInit } from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { SubscriptionService } from '@posiwise/common-services';\nimport { Plotly, User } from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\nimport { handleDateRangeSelection } from '@posiwise/utils';\n\n@Component({\n selector: 'pw-enterprise-insights',\n templateUrl: './enterprise-insights.component.html'\n})\nexport class EnterpriseInsightsComponent extends AppBaseComponent implements OnInit, OnDestroy {\n graph: Plotly.Figure;\n\n user: User;\n subscriptionId: number;\n\n hasAccess = false;\n isLoaded = false;\n\n userId: number;\n\n selectedDateRange;\n dateRanges;\n\n constructor(\n private readonly subscriptionService: SubscriptionService,\n injector: Injector\n ) {\n super(injector);\n }\n\n ngOnInit() {\n this.getUserSubscriptionId().subscribe(id => {\n this.subscriptionId = id;\n });\n this.dateRanges = HelperService.initializeDateRanges();\n this.selectedDateRange = '';\n this.getChartData();\n this.hasAccess = this.hasAdminAccess(this.subscriptionId);\n }\n\n private getChartData() {\n this.isLoaded = false;\n this.subscriptionService\n .getEnterpriseInsight(\n this.subscriptionId,\n this.selectedDateRange?.startDate\n ? this.selectedDateRange.startDate.format('YYYY-MM-DD')\n : '',\n this.selectedDateRange?.endDate\n ? this.selectedDateRange.endDate.format('YYYY-MM-DD')\n : ''\n )\n .subscribe(response => {\n // API now returns { items: [], totals: {} } instead of array\n this.graph = response?.items || response;\n })\n .add(() => {\n this.isLoaded = true;\n });\n }\n\n onDateRangeSelect(event: { startDate: moment.Moment; endDate: moment.Moment }) {\n this.selectedDateRange = handleDateRangeSelection(event, this.selectedDateRange);\n this.getChartData();\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<div class=\"row\">\n <div class=\"col-12 mb-3\">\n <h2>Enterprise Insight</h2>\n\n <p *ngIf=\"hasAccess\">Please find below some insight for your Enterprise subscription.</p>\n </div>\n\n <app-date-picker\n [selectedDateRange]=\"selectedDateRange\"\n [dateRanges]=\"dateRanges\"\n (dateRangeChange)=\"onDateRangeSelect($event)\">\n</app-date-picker>\n<div class=\"w-100 text-center mt-3\" *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n\n\n <div class=\"col-12\"\n *ngIf=\"hasAccess\">\n <ng-template [ngIf]=\"graph\">\n <plotly-plot [data]=\"graph?.data\"\n [config]=\"graph?.config\"\n [layout]=\"graph?.layout\" [useResizeHandler]=\"graph? true : false\"></plotly-plot>\n </ng-template>\n </div>\n\n <div *ngIf=\"!hasAccess && isLoaded\"\n class=\"w-100\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Insight.NoDataMessage' | transloco\"> </pw-no-data>\n </div>\n</div>\n","import {\n AfterViewChecked,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Injector,\n OnDestroy,\n OnInit\n} from '@angular/core';\nimport { UntypedFormArray, UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\n\nimport { AdminService } from '@posiwise/admin-module-utils';\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport {\n AuthService,\n PermissionService,\n PrimeNgHelper,\n SubscriptionService,\n ValidationService\n} from '@posiwise/common-services';\nimport {\n DOCUMENT_TYPE_EXT,\n PAGE_SIZE,\n Paging,\n Subscription,\n TOKEN_HEADER_KEY,\n User\n} from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\nimport { ValidateForm } from '@posiwise/utils';\n\nimport { StatusCodes } from 'http-status-codes';\nimport {\n humanizeBytes,\n UploaderOptions,\n UploadFile,\n UploadInput,\n UploadOutput,\n UploadStatus\n} from 'ngx-uploader';\nimport { LazyLoadEvent } from 'primeng/api';\nimport { Observable } from 'rxjs';\nimport swal from 'sweetalert2';\n\nimport { EnterpriseMembersResponse } from '../../interfaces/enterprise.interface';\n\n@Component({\n selector: 'pw-enterprise-members',\n templateUrl: './enterprise-members.component.html',\n styleUrls: ['./enterprise-members.component.scss']\n})\nexport class EnterpriseMembersComponent\n extends AppBaseComponent\n implements OnInit, OnDestroy, AfterViewChecked\n{\n private readonly token: string;\n private userSubscription: Subscription;\n private page = 1;\n previousRolesMap = new Map<number, string[]>();\n\n id: number;\n\n form: UntypedFormGroup;\n emailsFormArray: UntypedFormArray; // Used for adding the member dynamically\n\n user: User;\n subscription: Subscription;\n subscriptionOwner: number;\n chatPermission: string;\n hasAccess: boolean;\n\n productName: string;\n allRoles = [];\n subscriptionMembers: EnterpriseMembersResponse;\n\n files: UploadFile[];\n uploadInput: EventEmitter<UploadInput>;\n dragOver: boolean;\n options: UploaderOptions;\n\n isLoaded = false;\n loading = true;\n isAddEnabled: boolean;\n\n availableUnits = 0;\n totalRecordsUnFiltered = 0;\n\n searchText = '';\n\n humanizeBytes: (bytes: number) => string;\n buttonBusy = false;\n\n constructor(\n injector: Injector,\n private readonly formBuilder: UntypedFormBuilder,\n private readonly subscriptionService: SubscriptionService,\n private readonly authService: AuthService,\n private readonly adminService: AdminService,\n private readonly cdr: ChangeDetectorRef\n ) {\n super(injector);\n this.options = { concurrency: 1, maxUploads: 3 };\n this.files = [];\n this.uploadInput = new EventEmitter<UploadInput>();\n this.humanizeBytes = humanizeBytes;\n this.token = btoa(this.authService.getToken());\n this.form = this.formBuilder.group({\n email: ['', ValidationService.email],\n emailsFormArray: this.formBuilder.array([this.createItem()])\n });\n }\n\n ngOnInit() {\n this.getUserSubscription().subscribe(response => {\n this.userSubscription = response;\n if (this.userSubscription?.id) {\n this.id = this.userSubscription?.id;\n this.getSubscriptionDetails();\n }\n });\n\n this.userStore().subscribe(user => {\n if (user) {\n this.user = user;\n }\n });\n\n this.chatPermission = `${PermissionService.selectedProduct?.permission}.${PermissionService.selectedProduct?.feature_key}.Chat`;\n }\n\n ngAfterViewChecked() {\n this.cdr.detectChanges();\n }\n\n onLazyLoad(event: LazyLoadEvent) {\n if (this.user) {\n const pageDetails = HelperService.onTableLazyLoad(event);\n this.page = pageDetails.page;\n this.getSubscribedUsers({\n page: this.page,\n page_size: PAGE_SIZE,\n order_by: pageDetails.sortField,\n order_direction: pageDetails.sortOrder,\n search: this.searchText\n });\n }\n }\n onUploadOutput(output: UploadOutput): void {\n switch (output.type) {\n case 'allAddedToQueue':\n if (this.files.length > 0) {\n const event: UploadInput = {\n type: 'uploadAll',\n url: this.subscriptionService.signUpMemberUrl(this.id),\n method: 'POST',\n data: {\n send_marketing_emails: 'true',\n confirmation_path: 'confirm'\n },\n headers: {\n [TOKEN_HEADER_KEY]: this.token\n }\n };\n this.uploadInput.emit(event);\n }\n\n break;\n case 'addedToQueue':\n if (typeof output.file !== 'undefined') {\n const ext = output.file.name.split('.').pop();\n if (DOCUMENT_TYPE_EXT.includes(ext)) {\n this.files.push(output.file);\n } else {\n this.toast.error('Only csv and xlsx formats are supported.');\n }\n }\n break;\n case 'uploading':\n if (typeof output.file !== 'undefined') {\n // update current data in files array for uploading file\n const index = this.files.findIndex(\n file => typeof output.file !== 'undefined' && file.id === output.file.id\n );\n this.files[index] = output.file;\n }\n break;\n case 'removed':\n this.files = this.files.filter((file: UploadFile) => file !== output.file);\n break;\n case 'dragOver':\n this.dragOver = true;\n break;\n case 'dragOut':\n case 'drop':\n this.dragOver = false;\n break;\n case 'done':\n break;\n default:\n }\n\n this.files = this.files.filter(file => file.progress.status !== UploadStatus.Done);\n }\n\n private createItem(): UntypedFormGroup {\n return this.formBuilder.group({\n email: ['', [Validators.email, Validators.required]]\n });\n }\n\n addItem(): void {\n this.emailsFormArray = this.form.get('emailsFormArray') as UntypedFormArray;\n if (\n this.emailsFormArray.valid &&\n this.emailsFormArray.controls.length < this.availableUnits\n ) {\n this.emailsFormArray.push(this.createItem());\n }\n }\n\n removeItem(index) {\n this.emailsFormArray = this.form.get('emailsFormArray') as UntypedFormArray;\n this.emailsFormArray.controls.splice(index, 1);\n }\n\n /**\n * Gets the list of members for the subscription and also shows the admins for the\n * subscription\n * @param page Page number\n * @param page_size Page Size\n */\n private getSubscribedUsers(paging: Paging) {\n this.isLoaded = false;\n this.subscriptionService.getEnrolledSubscription(this.id, paging).subscribe(response => {\n this.isLoaded = true;\n if (response?.members && response.members.length > 0) {\n this.subscriptionMembers = response;\n this.subscriptionOwner = this.subscriptionMembers.owner_id;\n this.totalRecordsUnFiltered = response.unfiltered_count;\n this.isLoaded = true;\n this.loading = false;\n const userMasterSubscription = this.user?.subscriptions?.find(sub =>\n sub.products?.some(p => p.is_master_product)\n );\n const masterProduct = userMasterSubscription?.products?.find(\n p => p.is_master_product\n );\n const masterProductWithSlug = masterProduct\n ? {\n ...masterProduct,\n subscription_slug: userMasterSubscription?.slug\n }\n : null;\n this.hasAccess =\n this.subscriptionMembers.admins.includes(this.user.id) ||\n this.user.id === this.subscriptionOwner ||\n this.permissionService.isSuperAdmin() ||\n this.permissionService.isUserSubscriptionSuperAdmin(masterProductWithSlug);\n if (this.hasAccess) {\n this.getSubscriptionRoles();\n }\n }\n });\n }\n\n getSubscriptionRoles() {\n this.adminService.getSubscriptionRoles(this.id).subscribe(roles => {\n this.allRoles = PrimeNgHelper.dropdownDataSource(roles, 'name', 'id');\n if (this.allRoles) {\n this.filterRoles();\n }\n });\n }\n\n filterRoles() {\n this.subscriptionMembers.members.forEach(element => {\n const userRoleIds = element.user_roles.map(x => x.id);\n element['selected_roles'] = userRoleIds.filter(roleId =>\n this.allRoles.find(x => x.id === roleId)\n );\n this.previousRolesMap.set(element.id, [...element['selected_roles']]);\n });\n }\n onRoleChange(event, user) {\n const prevRoles = this.previousRolesMap.get(user.id) || [];\n const unselected = prevRoles.find(id => !event.value.includes(id));\n this.previousRolesMap.set(user.id, [...event.value]);\n let subscription$: Observable<string>;\n let isAdded: boolean;\n if (!unselected && user.user_roles.map(x => x.id).indexOf(event.itemValue) <= -1) {\n const updateData = {\n subscription_id: this.id,\n role_id: event.itemValue.id,\n id: user.id\n };\n subscription$ = this.adminService.saveUserSubscriptionRole(updateData);\n isAdded = true;\n } else {\n const deleteData = {\n role_id: event.itemValue.id,\n subscription_id: this.id,\n id: user.id\n };\n subscription$ = this.adminService.deleteUserSubscriptionRole(deleteData);\n isAdded = false;\n }\n\n subscription$.subscribe(() => {\n if (isAdded) {\n this.toast.success(this.translation.translate('Admin.Users.UpdatedRole'));\n } else {\n this.toast.success(this.translation.translate('Admin.Users.DeletedMessage'));\n }\n });\n }\n\n private getSubscriptionDetails() {\n this.isLoaded = false;\n this.subscriptionService.getById(this.id).subscribe(resp => {\n this.isLoaded = true;\n this.productName = resp.products[0].name;\n this.subscription = resp;\n this.availableUnits = resp.products[0].purchased_units - resp.units_in_use;\n });\n }\n\n @ValidateForm('form')\n onSignUpMember() {\n swal.fire({\n title: this.translation.translate('Label.Confirm'),\n text: this.translation.translate(\n 'Admin.Subscriptions.confirmEnterpriseMembersSubscriptionMessage'\n ),\n showCancelButton: true,\n reverseButtons: true,\n icon: 'warning',\n confirmButtonText: 'Yes'\n }).then(rep => {\n if (rep.value) {\n const emails = this.form\n .get('emailsFormArray')\n ?.value?.map(item => item.email)\n .join(',');\n if (emails) {\n this.buttonBusy = true;\n const data = {\n confirmation_path: 'confirm',\n emails,\n send_marketing_emails: true\n };\n this.subscriptionService\n .addMembersToSubscription(this.id, data)\n .subscribe(response => {\n if (response?.status === StatusCodes.OK) {\n this.getSubscribedUsers({\n page: this.page,\n page_size: PAGE_SIZE\n });\n this.toast.success(response.message);\n this.form.reset();\n } else {\n this.toast.error(response.error.message);\n }\n })\n .add(() => {\n this.buttonBusy = false;\n });\n }\n }\n });\n }\n\n onDelete(user: User) {\n swal.fire({\n title: 'Remove member',\n text: `Are you sure you want to remove ${user.first_name} from your subscription?`,\n showCancelButton: true,\n reverseButtons: true,\n icon: 'warning'\n }).then(rep => {\n if (rep.value) {\n this.subscriptionService\n .removeEnrolledSubscription(this.id, user.id)\n .subscribe(response => {\n if (response.status === StatusCodes.OK) {\n this.toast.success(response.message);\n this.getSubscribedUsers({\n page: this.page,\n page_size: PAGE_SIZE\n });\n } else {\n this.toast.success(response.error.message);\n }\n });\n }\n });\n }\n\n makeAdmin(user, value: boolean) {\n swal.fire({\n title: value === true ? 'Make Admin' : 'Remove Admin',\n text:\n value === true\n ? `This user will now have full access to your subscription. Read more in FAQ.`\n : `Are you sure?`,\n showCancelButton: true,\n reverseButtons: true,\n icon: 'warning'\n }).then(rep => {\n if (rep.value) {\n const data = {\n user_id: user.id,\n is_admin: value\n };\n this.subscriptionService.toggleAdmin(this.id, data).subscribe(response => {\n if (response.status === StatusCodes.OK) {\n this.toast.success(response.message);\n }\n this.getSubscribedUsers({\n page: this.page,\n page_size: PAGE_SIZE\n });\n });\n }\n });\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<section>\n <div class=\"row\">\n <div class=\"col-12 mb-3\">\n <div class=\"title\">\n <a *ngIf=\"isAddEnabled\"\n aria-label=\"Navigate to Target\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h2>Enterprise Members for {{ productName }}</h2>\n </div>\n <p *ngIf=\"!isAddEnabled\">\n You'll find in this section all the members of your subscription. Based on your role\n in the enterprise, you'll be able to see, add, edit or remove access to them.\n </p>\n <p *ngIf=\"isAddEnabled\">Here you can add members to your subscriptions</p>\n </div>\n </div>\n</section>\n<section id=\"enrolled\"\n *ngIf=\"!isAddEnabled\">\n <div class=\"row\">\n <div class=\"col-12 text-end\"\n *ngIf=\"hasAccess\">\n <button class=\"btn btn-sm btn-outline-primary\"\n *ngIf=\"!isAddEnabled\"\n (click)=\"isAddEnabled = true\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Add Members\n </button>\n </div>\n </div>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n <div class=\"primeng-datatable-container table-responsive\"\n [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <p-table #dt\n [value]=\"subscriptionMembers?.members\"\n [paginator]=\"subscriptionMembers?.members.length !== 0\"\n [totalRecords]=\"subscriptionMembers?.members.length\"\n [globalFilterFields]=\"['email', 'name']\"\n [rows]=\"PAGE_SIZE\"\n [loading]=\"loading\"\n [lazy]=\"true\"\n (onLazyLoad)=\"onLazyLoad($event)\">\n <ng-template pTemplate=\"caption\">\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search contact...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"mw-90\" />\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Label.Name' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Email' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Members.Team' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Members.LastSeen' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-users>\n <tr class=\"table-row\">\n <td data-head=\"Name\">\n <span>\n <a [routerLink]=\"['/members', users.slug]\">{{\n users?.preferred_name\n ? users?.preferred_name\n : (users | ifNameNullShowEmail)\n }}\n </a>\n <span class=\"ms-2\"\n *ngIf=\"!users?.has_password\"\n [pTooltip]=\"'This user hasn\\'t joined yet'\"\n tooltipPosition=\"top\">\n <i class=\"fas fa-exclamation-triangle text-warning\"></i>\n </span>\n <span class=\"ms-2\"\n *ngIf=\"users?.enable_two_factor_authenticator\"\n [pTooltip]=\"'2FA enabled'\"\n tooltipPosition=\"top\">\n <i class=\"fa-solid fa-lock text-success\"></i>\n </span>\n <span class=\"ms-2\"\n *ngIf=\"users?.blocked\"\n [pTooltip]=\"'This user has been blocked, please contact support'\"\n tooltipPosition=\"top\">\n <i class=\"fa-solid fa-hexagon-exclamation text-danger\"></i>\n </span>\n <span class=\"badge bg-dark mx-1\" *ngIf=\"users.id === subscriptionOwner\"> Owner </span>\n <span class=\"badge bg-success mx-1 admin-badge\" *ngIf=\"subscriptionMembers.admins.includes(users.id)\"> Admin </span>\n <span class=\"badge bg-info mx-1\" *ngIf=\"users.id === user.id\"> You </span>\n </span>\n </td>\n <td data-head=\"Email\">{{ users.email }}</td>\n <td data-head=\"Team\">\n <span *ngFor=\"let groups of users.user_groups\"><a class=\"badge bg-primary text-white ms-2\"\n [routerLink]=\"[\n '/' + subscription?.slug + '/enterprise',\n 'groups',\n groups.id,\n 'members'\n ]\">{{ groups.name }}</a>\n </span>\n </td>\n <td data-head=\"Last seen\">\n <span *ngIf=\"users?.current_sign_in_at; else lastSignin\">\n <span>{{ users.current_sign_in_at | dateFormat }}</span>\n <span *ngIf=\"users.current_sign_in_at\"> ({{ users.current_sign_in_at | sinceAgo }})</span>\n </span>\n <ng-template #lastSignin>\n <span>\n <span>{{ users.last_sign_in_at | dateFormat }}</span>\n <span *ngIf=\"users.last_sign_in_at\"> ({{ users.last_sign_in_at | sinceAgo }})</span>\n </span>\n </ng-template>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline d-inline-block me-2 list-action\">\n <ng-container *ngIf=\"hasAccess && allRoles.length\">\n <li class=\"enterprise-member-table mx-2 mb-2 mb-sm-0\" *rbacAllow=\"'Pages.Alpha'\">\n <p-multiSelect [(ngModel)]=\"users.selected_roles\" [options]=\"allRoles\" (onChange)=\"onRoleChange($event, users)\"\n placeholder=\"Set roles\" [showHeader]=\"false\" appendTo=\"body\">\n </p-multiSelect>\n </li>\n </ng-container>\n <!-- Message Icon -->\n <li ngbTooltip=\"Message\"\n class=\"me-2 me-sm-3 mx-2\"\n *rbacAllow=\"chatPermission\"\n [class.invisible]=\"user && user.id === users.id\"\n [routerLink]=\"['/message']\"\n [fragment]=\"users.slug\">\n <i class=\"fa fa-comments cta1-icon\" aria-hidden=\"true\"></i>\n </li>\n <!-- Action Buttons -->\n <ng-template [ngIf]=\"hasAccess && users.id !== subscriptionOwner\"\n [ngIfElse]=\"empty\">\n <!-- Make Admin -->\n <li ngbTooltip=\"Make Admin\"\n class=\"me-2 me-sm-3 mx-2\"\n *ngIf=\"!this.subscriptionMembers.admins.includes(users.id)\">\n <i\n class=\"fa fa-user-crown fa-lg success\"\n (click)=\"makeAdmin(users, true)\"\n (keydown.enter)=\"makeAdmin(users, true)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li></li>\n <!-- Remove Admin -->\n <li ngbTooltip=\"Remove Admin\"\n class=\"me-2 me-sm-3 mx-2\"\n *ngIf=\"this.subscriptionMembers.admins.includes(users.id)\">\n <i\n class=\"fa fa-ban warning fa-lg\"\n (keydown.enter)=\"makeAdmin(users, false)\"\n (click)=\"makeAdmin(users, false)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n </ng-template>\n <ng-template #empty>\n <li class=\"mx-3\"></li>\n </ng-template>\n <ng-container *ngIf=\"hasAccess\">\n <li class=\"delete-user mx-2\"\n ngbTooltip=\"Delete\"\n *ngIf=\"users.id !== subscriptionOwner\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"onDelete(users)\"\n (keydown.space)=\"onDelete(users)\"\n (click)=\"onDelete(users)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n </ng-container>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <span class=\"total-records-count\" *ngIf=\"subscriptionMembers?.members.length !== 0\">{{ 'Label.Total' | transloco }}: {{ subscriptionMembers?.members.length || 0 }}</span>\n </div>\n</section>\n\n<section id=\"manage-members\"\n *ngIf=\"isAddEnabled\">\n <h5 class=\"ms-2 pt-3\">Upload File (CSV)</h5>\n <div class=\"row p-2\">\n <div class=\"col-12\">\n <div class=\"upload-box\">\n <div class=\"upload-box-content\">\n <div class=\"drop-container\"\n ngFileDrop\n [options]=\"options\"\n (uploadOutput)=\"onUploadOutput($event)\"\n [uploadInput]=\"uploadInput\">\n <p>\n Drag files here or\n <label class=\"upload-button\">\n <input type=\"file\"\n ngFileSelect\n [options]=\"options\"\n (uploadOutput)=\"onUploadOutput($event)\"\n [uploadInput]=\"uploadInput\"\n multiple />\n browse\n </label>\n to upload.\n </p>\n </div>\n <div class=\"upload-item\"\n *ngFor=\"let f of files; let i = index\">\n <div class=\"upload-item-content\">\n <div class=\"filename\">\n <div class=\"filename-left\">\n <i class=\"ionicon ion-ios-copy\" aria-hidden=\"true\"></i>\n <span>{{ f.name }}</span>\n </div>\n </div>\n <div class=\"progress-content\">\n <div class=\"progress\">\n <span class=\"bar\"\n [style.width]=\"f?.progress?.data?.percentage + '%'\"\n [class.is-done]=\"f?.progress?.data?.percentage === 100\"></span>\n </div>\n </div>\n <div class=\"progress-text-content\">\n <span class=\"progress-text\"\n [class.is-done]=\"f?.progress?.data?.percentage === 100\">\n <span>{{ f.progress?.data?.percentage }}% </span>\n <span *ngIf=\"f.progress?.data?.percentage !== 100\">Uploading...</span>\n <span *ngIf=\"f.progress?.data?.percentage === 100\">Done</span>\n </span>\n <span class=\"speed-and-eta-text\"\n *ngIf=\"\n f.progress?.data?.percentage !== 0 &&\n f.progress?.data?.percentage !== 100\n \">\n <span>{{ f.progress?.data?.speedHuman }} </span>\n <span>ETA {{ f.progress?.data?.etaHuman }}</span>\n </span>\n </div>\n </div>\n </div>\n <div class=\"help-text\">\n <span>Note: You can upload a .csv file containing the comma separated emails\n of the members to add.</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n <h5 class=\"ms-2 pt-3 d-inline-block me-2\">Add Member's Email</h5>\n <small><strong> (Available {{ availableUnits }} Seats) </strong></small>\n <div class=\"p-2\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSignUpMember()\">\n <div formArrayName=\"emailsFormArray\"\n *ngFor=\"\n let item of form.get('emailsFormArray')['controls'];\n let i = index;\n let last = last\n \">\n <div [formGroupName]=\"i\">\n <div class=\"row mb-2\">\n <label class=\"col-12 col-md-4 text-md-end col-form-label col-form-label-sm\" for=\"Email\">\n #{{ i + 1 }}</label>\n <div class=\"col-10 col-md-4\">\n <input formControlName=\"email\"\n class=\"form-control form-control-sm\"\n placeholder=\"Email\" />\n </div>\n <div class=\"col-2\">\n <button class=\"btn btn-sm btn-danger\"\n type=\"button\">\n <i\n class=\"fa fa-times\"\n title=\"Delete\"\n (click)=\"removeItem(i)\"\n (keydown.enter)=\"removeItem(i)\"\n aria-hidden=\"true\"\n ></i>\n </button>\n <i\n class=\"btn btn-sm btn-primary fal fa-plus ms-2\"\n *ngIf=\"last && emailsFormArray?.controls?.length < availableUnits\"\n title=\"Add More\"\n (click)=\"addItem()\"\n (keydown.enter)=\"addItem()\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n </div>\n </div>\n <div class=\"text-center mt-2\">\n <button class=\"btn btn-sm btn-outline-default me-2\"\n (click)=\"isAddEnabled = false\">\n <i class=\"fa fa-plus-times\" aria-hidden=\"true\"></i>\n {{ 'Button.Back' | transloco }}\n </button>\n <button type=\"submit\"\n class=\"btn btn-sm btn-outline-primary me-2\"\n [buttonBusy]=\"buttonBusy\"\n [disabled]=\"form.invalid || buttonBusy\">\n Add Members\n </button>\n </div>\n </form>\n </div>\n</section>\n","import {\n AfterViewChecked,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Injector,\n OnDestroy,\n OnInit,\n ViewChild\n} from '@angular/core';\nimport { UntypedFormArray, UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\n\nimport { AdminService } from '@posiwise/admin-module-utils';\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport {\n AuthService,\n FormHelperService,\n PermissionService,\n ProductService,\n SubscriptionService,\n ValidationService\n} from '@posiwise/common-services';\nimport { PAGE_SIZE, Paging, Subscription, User } from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\n\nimport { StatusCodes } from 'http-status-codes';\nimport groupBy from 'lodash/groupBy';\nimport { humanizeBytes, UploaderOptions, UploadFile, UploadInput } from 'ngx-uploader';\nimport { LazyLoadEvent } from 'primeng/api';\nimport { AutoComplete } from 'primeng/autocomplete';\nimport swal from 'sweetalert2';\n\n@Component({\n selector: 'pw-enterprise-partners',\n templateUrl: './enterprise-partners.component.html',\n styleUrls: ['./enterprise-partners.component.scss']\n})\nexport class EnterprisePartnersComponent\n extends AppBaseComponent\n implements OnInit, OnDestroy, AfterViewChecked\n{\n private readonly token: string;\n private userSubscription: Subscription;\n private page = 1;\n\n @ViewChild('refProduct') refProduct: AutoComplete;\n\n id: number;\n subscriptionId: number;\n\n form: UntypedFormGroup;\n emailsFormArray: UntypedFormArray; // Used for adding the member dynamically\n\n user: User;\n subscription: Subscription;\n subscriptionOwner: number;\n chatPermission: string;\n hasAccess: boolean;\n\n filteredProducts = [];\n searchOptions: { id: unknown; label: unknown }[] = [];\n searchText = '';\n\n productName: string;\n allRoles = [];\n subscriptionPartners;\n\n files: UploadFile[];\n uploadInput: EventEmitter<UploadInput>;\n dragOver: boolean;\n options: UploaderOptions;\n\n isLoaded = false;\n loading = true;\n isAddEnabled = false;\n\n invoiceFrequency = ['week', 'month', 'year'];\n availableUnits = 0;\n\n totalRecordsUnFiltered = 0;\n totalRecords = 0;\n\n humanizeBytes: (bytes: number) => string;\n buttonBusy = false;\n unitsText: string;\n currency: string;\n\n constructor(\n injector: Injector,\n private readonly formBuilder: UntypedFormBuilder,\n private readonly subscriptionService: SubscriptionService,\n private readonly authService: AuthService,\n private readonly adminService: AdminService,\n private readonly productService: ProductService,\n private readonly cdr: ChangeDetectorRef\n ) {\n super(injector);\n this.options = { concurrency: 1, maxUploads: 3 };\n this.files = [];\n this.uploadInput = new EventEmitter<UploadInput>();\n this.humanizeBytes = humanizeBytes;\n this.token = btoa(this.authService.getToken());\n this.form = this.formBuilder.group({\n email: ['', ValidationService.email],\n emailsFormArray: this.formBuilder.array([this.createItem()]),\n product_id: ['', Validators.required]\n });\n }\n\n ngOnInit() {\n this.getUserSubscription().subscribe(response => {\n this.userSubscription = response;\n if (this.userSubscription?.id) {\n this.id = this.userSubscription?.id;\n this.getSubscriptionDetails();\n }\n });\n\n this.userStore().subscribe(user => {\n if (user) {\n this.user = user;\n }\n });\n\n this.chatPermission = `${PermissionService.selectedProduct?.permission}.${PermissionService.selectedProduct?.feature_key}.Chat`;\n this.getProductsList();\n }\n\n ngAfterViewChecked() {\n this.cdr.detectChanges();\n }\n\n addItem(): void {\n this.emailsFormArray = this.form.get('emailsFormArray') as UntypedFormArray;\n if (\n this.emailsFormArray.valid &&\n this.emailsFormArray.controls.length < this.availableUnits\n ) {\n this.emailsFormArray.push(this.createItem());\n }\n }\n\n removeItem(index) {\n this.emailsFormArray = this.form.get('emailsFormArray') as UntypedFormArray;\n this.emailsFormArray.controls.splice(index, 1);\n }\n\n private createItem(): UntypedFormGroup {\n return this.formBuilder.group({\n email: ['', [Validators.email, Validators.required]]\n });\n }\n\n onLazyLoad(event: LazyLoadEvent) {\n if (this.user) {\n const pageDetails = HelperService.onTableLazyLoad(event);\n this.page = pageDetails.page;\n this.getSubscribedPartners({\n page: this.page,\n page_size: PAGE_SIZE,\n search: this.searchText\n });\n }\n }\n private getSubscribedPartners(paging: Paging) {\n this.isLoaded = false;\n this.subscriptionService.getAllSubscriptionPartners(this.id, paging).subscribe(response => {\n this.subscriptionPartners = response.partners;\n this.totalRecordsUnFiltered = response.unfiltered_count;\n this.totalRecords = response.object_count;\n this.isLoaded = true;\n this.loading = false;\n });\n }\n\n private getSubscriptionDetails() {\n this.subscriptionService.getById(this.id).subscribe(resp => {\n this.productName = resp.products[0].name;\n this.subscription = resp;\n this.availableUnits = resp.products[0].purchased_units - resp.units_in_use;\n });\n }\n\n getSupportedCurrency() {\n this.productService.getSupportedCurrency().subscribe(res => {\n this.currency = res?.regions;\n });\n }\n\n onSave() {\n if (this.form.invalid) {\n FormHelperService.validateAllFormFields(this.form);\n } else {\n this.buttonBusy = true;\n const productId = this.form.get('product_id').value.id;\n const emails = this.form\n .get('emailsFormArray')\n ?.value?.map(item => item.email)\n .join(',');\n if (emails) {\n const inviteObj = {\n emails,\n product_id: productId\n };\n this.subscriptionService\n .addPartnersToSubscription(this.id, inviteObj)\n .subscribe(response => {\n if (response?.status === StatusCodes.OK) {\n this.getSubscribedPartners({\n page: this.page,\n page_size: PAGE_SIZE\n });\n this.totalRecordsUnFiltered = 0;\n this.isAddEnabled = false;\n this.toast.success(response.message);\n this.form.reset();\n } else {\n this.toast.error(response.error.message);\n }\n })\n .add(() => {\n this.buttonBusy = false;\n });\n }\n }\n }\n\n onDelete(partner: { id: number }) {\n swal.fire({\n title: 'Delete',\n text: `Are you sure you want to delete?`,\n showCancelButton: true,\n reverseButtons: true,\n icon: 'warning'\n }).then(rep => {\n if (rep.value) {\n this.subscriptionService.removePartner(this.id, partner.id).subscribe(response => {\n if (response.status === StatusCodes.OK) {\n this.toast.success(response.message);\n this.getSubscribedPartners({\n page: this.page,\n page_size: PAGE_SIZE\n });\n } else {\n this.toast.success(response.error.message);\n }\n });\n }\n });\n }\n\n onDeactivate(partner: { id: number; is_active: boolean }) {\n swal.fire({\n title: partner.is_active ? 'Deactivate' : 'Activate',\n text: partner.is_active\n ? ` Are you sure you want to deactivate this partner`\n : 'Are you sure you want to activate this partner?',\n showCancelButton: true,\n reverseButtons: true,\n icon: 'warning'\n }).then(rep => {\n if (rep.value) {\n const data = {\n subscription_partner_id: partner.id,\n is_active: !partner.is_active\n };\n this.subscriptionService.deactivatePartner(this.id, data).subscribe(response => {\n if (response.status === StatusCodes.OK) {\n this.toast.success(response.message);\n this.getSubscribedPartners({\n page: this.page,\n page_size: PAGE_SIZE\n });\n } else {\n this.toast.success(response.error.message);\n }\n });\n }\n });\n }\n\n private getProductsList() {\n this.subscriptionService.getProductList({}, this.id).subscribe(response => {\n const featureKeys = Array.from(\n new Set(response.products.map(item => item.feature_key))\n );\n this.searchOptions = featureKeys.map(element => {\n return {\n id: element,\n label: element ?? ''\n };\n });\n });\n }\n\n sortObj(obj) {\n return Object.keys(obj)\n .sort((a, b) => a.localeCompare(b))\n .reduce((result, key) => {\n result[key] = obj[key];\n return result;\n }, {});\n }\n\n searchProduct(event) {\n this.subscriptionService\n .getProductList({ search: event.query }, this.id)\n .subscribe(response => {\n this.filteredProducts = this.groupProducts(response.products);\n });\n }\n\n onProductChange(event) {\n const productId = Number(event?.value.id);\n const productObj = this.filteredProducts.find(x => x.id === productId);\n this.form.patchValue({\n product_id: productObj\n });\n }\n\n onProductClear(_event) {\n if (!this.refProduct.inputEL.nativeElement.value) {\n this.form.get('product_id').setValue('');\n }\n }\n\n private groupProducts(products) {\n if (products?.length) {\n products = products.filter(x => x.dependency_products?.length < 1 && x.active);\n products = groupBy(products, 'currency');\n products = this.sortObj(products);\n let groupedArray = [];\n // eslint-disable-next-line no-restricted-syntax\n for (const p in products) {\n const value = products[p].sort(\n (a, b) => Number(b.price_per_unit) - Number(a.price_per_unit)\n );\n groupedArray.push(...value);\n }\n groupedArray =\n groupedArray?.map(x => {\n return {\n id: x.id,\n label: `${x.name} | ${x.region} | ${x.billing_frequency} | ${x.min_units} x ${(\n x.price_per_unit / 100\n ).toFixed(2)} | ${x.currency}`,\n unitsText: `(min ${x.min_units} - max ${x.max_units})`\n };\n }) || [];\n\n return groupedArray;\n }\n\n return [];\n }\n}\n","<section>\n <div class=\"row\">\n <div class=\"col-12 mb-3\">\n <div class=\"title\">\n <a *ngIf=\"isAddEnabled\"\n aria-label=\"Navigate to Target\"\n (click)=\"isAddEnabled = false;\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h2 [ngClass]=\"{ 'mt-2': isAddEnabled }\">Enterprise Partners for {{ productName }}</h2>\n </div>\n <p *ngIf=\"!isAddEnabled\">\n You'll find in this section all the partners of your subscription. Based on your role\n in the enterprise, you'll be able to see, add, edit or remove access to them.\n </p>\n <p *ngIf=\"isAddEnabled\">Here you can add partners to your subscriptions</p>\n </div>\n </div>\n</section>\n<section *ngIf=\"!isAddEnabled\">\n\n <div class=\"row\">\n <div class=\"col-12 text-end mb-3\">\n <button class=\"btn btn-sm btn-outline-primary\"\n *ngIf=\"!isAddEnabled\"\n (click)=\"isAddEnabled = true\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Add Partners\n </button>\n </div>\n </div>\n\n<div class=\"w-100 text-center mt-3\" *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n\n\n<div class=\"row faqlist primeng-datatable-container mt-0\" [class.custom-disable-wrapper]=\"buttonBusy\" [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <div class=\"col-12 px-0\">\n <p-table #dt\n [value]=\"subscriptionPartners\"\n [paginator]=\"totalRecords !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\">\n <ng-template pTemplate=\"caption\">\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search partner...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"mw-90\" />\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Label.Name' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Email' | transloco }}</th>\n <th scope=\"true\">{{ 'Relationship' | transloco }}</th>\n <th scope=\"true\">{{ 'Sessions' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-partner>\n <tr class=\"table-row\">\n <td data-head=\"Name\">\n {{partner.organisation}}\n </td>\n <td data-head=\"Email\">{{ partner.contact_email }}</td>\n <td data-head=\"Relationship\">\n {{partner.relationship_to_partner}}\n </td>\n <td>\n <span>{{ partner.sessions_last_month }}</span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Click to remove this partner\" class=\"me-2 me-sm-2\">\n <i class=\"fa fa-trash delete-icon\" (keydown.enter)=\"onDelete(partner)\"\n (keydown.space)=\"onDelete(partner)\"\n (click)=\"onDelete(partner)\" aria-hidden=\"true\"></i>\n </li>\n <li [ngClass]=\"{'me-2 me-sm-2': true, }\"\n [ngbTooltip]=\"partner.is_active ? 'Deactivate this partner' : 'Activate this partner'\"\n (keydown.enter)=\"onDeactivate(partner)\"\n (click)=\"onDeactivate(partner)\">\n <i class=\"fa fa-power-off deactivate-icon\"\n [ngClass]=\"{'text-success': partner.is_active, 'text-danger': !partner.is_active}\"\n aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <div *ngIf=\"totalRecords === 0 && totalRecordsUnFiltered !== 0\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n <span *ngIf=\"totalRecords !== 0\" class=\"total-records-count\">{{ 'Label.Total' | transloco }}: {{ totalRecords }}</span>\n </div>\n</div>\n\n<pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Partner.NoDataMessage' | transloco\" *ngIf=\"totalRecordsUnFiltered === 0 && isLoaded\">\n</pw-no-data>\n</section>\n\n<section id=\"manage-members\"\n *ngIf=\"isAddEnabled\">\n <div class=\"mt-4\"\n *ngIf=\"!isGroupEdit\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n <div formArrayName=\"emailsFormArray\"\n *ngFor=\"\n let item of form.get('emailsFormArray')['controls'];\n let i = index;\n let last = last\n \">\n <div [formGroupName]=\"i\">\n <div class=\"row mb-2\">\n <label class=\"col-12 col-md-4 text-md-end col-form-label col-form-label-sm\" for=\"Email\">\n #{{ i + 1 }}</label>\n <div class=\"col-10 col-md-4\">\n <input formControlName=\"email\"\n class=\"form-control form-control-sm\"\n placeholder=\"Email\" />\n </div>\n <div class=\"col-2\">\n <button class=\"btn btn-sm btn-danger\"\n type=\"button\">\n <i\n class=\"fa fa-times\"\n title=\"Delete\"\n (click)=\"removeItem(i)\"\n (keydown.enter)=\"removeItem(i)\"\n aria-hidden=\"true\"\n ></i>\n </button>\n <i\n class=\"btn btn-sm btn-primary fal fa-plus ms-2\"\n *ngIf=\"last && emailsFormArray?.controls?.length < availableUnits\"\n title=\"Add More\"\n (click)=\"addItem()\"\n (keydown.enter)=\"addItem()\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n </div>\n </div>\n <div class=\"mb-3 col-12 col-md-4 mx-sm-auto\">\n <pw-input-container [label]=\"'Label.Product' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.SubscriptionProduct' | transloco\"\n name=\"product_id\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.Product' | transloco\">\n <p-autoComplete #refProduct\n [suggestions]=\"filteredProducts\"\n formControlName=\"product_id\"\n dataKey=\"id\"\n field=\"label\"\n [dropdown]=\"true\"\n [delay]=\"1000\"\n [type]=\"'search'\"\n (completeMethod)=\"searchProduct($event)\"\n (onSelect)=\"onProductChange($event)\"\n (onClear)=\"onProductClear($event)\"\n styleClass=\"w-100\"\n placeholder=\"Search Product\"\n [inputStyle]=\"\n form.get('product_id').touched && form.get('product_id').invalid\n ? { border: '1px solid #ff586b' }\n : { border: '1px solid gray' }\n \"\n [multiple]=\"false\">\n </p-autoComplete>\n </pw-input-container>\n </div>\n <div class=\"text-center mt-4\">\n <input type=\"button\"\n class=\"btn btn-outline-primary me-3\"\n value=\"Cancel\"\n (click)=\"form.reset(); totalRecordsUnFiltered = 0; isAddEnabled = false;\" />\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n [disabled]=\"buttonBusy\"\n class=\"btn btn-primary\">Submit</button>\n </div>\n </form>\n</div>\n</section>\n","import { Component, Injector, OnDestroy, OnInit } from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { DataService, PermissionService } from '@posiwise/common-services';\nimport { Subscription, User } from '@posiwise/common-utilities';\n\nimport { switchMap } from 'rxjs/operators';\n\n@Component({\n selector: 'pw-enterprise-subscriptions',\n templateUrl: './enterprise-subscriptions.component.html'\n})\nexport class EnterpriseSubscriptionsComponent\n extends AppBaseComponent\n implements OnInit, OnDestroy\n{\n subscriptions = [];\n\n message: number;\n\n isLoaded = true;\n\n subscription: Subscription;\n\n userSlug: string;\n\n constructor(\n injector: Injector,\n private readonly data: DataService\n ) {\n super(injector);\n }\n\n ngOnInit() {\n this.getUserSubscription().subscribe(response => {\n this.subscription = response;\n this.userSlug = response?.slug;\n });\n this.userStore().subscribe((user: User) => {\n if (user) {\n const hasEnterprise = user.subscriptions.find(subscription => {\n return subscription.products.some(product => {\n return (\n product?.permission_key ===\n PermissionService.selectedProduct?.permission_key\n );\n });\n });\n\n if (hasEnterprise) {\n this.router.navigate([\n `/${this.userSlug}/enterprise/${hasEnterprise.id}/members`\n ]);\n }\n }\n });\n this.isLoaded = false;\n this.getEnterpriseSubscription();\n this.data.currentMessage.subscribe(message => {\n this.message = message;\n });\n }\n\n private getEnterpriseSubscription() {\n const subscribe$ = this.userService.getUserInfo().pipe(\n switchMap(user => {\n return this.userService.getUserSubscriptions(user.id);\n })\n );\n\n subscribe$.subscribe(response => {\n if (response.subscriptions.length > 0) {\n this.isLoaded = true;\n this.subscriptions = [\n response.subscriptions.find(subscription => {\n return subscription.products.some(product => {\n return product.max_units > 1 && !product.is_deleted;\n });\n })\n ];\n }\n });\n }\n\n nextUrl() {\n this.data.changeMessage(0);\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<div class=\"container-fluid overflow-hidden\">\n <div class=\"row\">\n <div class=\"col-12 col-md-6 col-xl-4 my-3\"\n *ngFor=\"let item of subscriptions\">\n <div class=\"card\">\n <div class=\"card-content\">\n <div class=\"card-header\">\n <h5 class=\"mb-3\">{{ item?.product?.name }}</h5>\n <p>\n <strong class=\"d-inline-block w-50\">Organisation:</strong>\n {{ item.organisation }}\n </p>\n <p>\n <strong class=\"d-inline-block w-50\">Units Purchased:</strong>\n {{ item.purchased_units }}\n </p>\n <p>\n <strong class=\"d-inline-block w-50\">Seats In Use:</strong>\n {{ item.units_in_use }}\n </p>\n </div>\n <div class=\"card-footer px-3\">\n <div class=\"float-end px-2\">\n <a (click)=\"nextUrl()\"\n class=\"btn btn-sm btn-outline-primary\"\n [routerLink]=\"['/' + subscription?.slug + item.id, 'members']\">\n Manage</a>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-12\">\n <pw-no-data [withImage]=\"true\" message=\"No current enterprise subscriptions.\"\n *ngIf=\"subscriptions.length === 0\">\n </pw-no-data>\n </div>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n </div>\n</div>\n","import { Component, Injector } from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\n\nimport { MenuItem } from 'primeng/api';\n\n@Component({\n selector: 'pw-enterprise-tabs',\n templateUrl: './enterprise-tabs.component.html'\n})\nexport class EnterpriseTabsComponent extends AppBaseComponent {\n constructor(injector: Injector) {\n super(injector);\n }\n\n activeTab: MenuItem;\n\n items: MenuItem[] = [\n {\n id: 'manage_members',\n label: 'Members',\n routerLink: ['/enterprise/members'],\n icon: 'fa fa-fw fa-users'\n },\n {\n id: 'manage_partners',\n label: 'Partners',\n routerLink: ['/enterprise/partners'],\n icon: 'fa fa-fw fa-users',\n visible: this.permissionService.evaluatePermissions('Pages.Alpha')\n },\n {\n id: 'manage_teams',\n label: 'Teams',\n routerLink: ['/enterprise/groups'],\n icon: 'fa fa-fw fa-users-class',\n visible: this.permissionService.evaluatePermissions('Pages.Beta')\n },\n {\n id: 'members_communications',\n label: 'Communications',\n routerLink: ['/enterprise/communications'],\n icon: 'fas fa-comments',\n visible: this.permissionService.evaluatePermissions('Pages.Beta')\n },\n {\n id: 'members_wiki',\n label: 'Documentation',\n routerLink: ['/enterprise/wiki'],\n icon: 'fab fa-wikipedia-w',\n visible: this.permissionService.evaluatePermissions('Pages.Beta')\n },\n {\n id: 'members_insight',\n label: 'Insight',\n routerLink: ['/enterprise/insights'],\n icon: 'fa fa-fw fa-tag',\n visible: this.permissionService.evaluatePermissions('Pages.Beta')\n }\n ];\n}\n","<pw-tabs [items]=\"items\"\n [withSubscription]=\"true\"></pw-tabs>\n","import {\n AfterViewChecked,\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Injector,\n OnDestroy,\n OnInit,\n Renderer2\n} from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { GroupService } from '@posiwise/common-services';\nimport { PAGE_SIZE, Paging, Subscription, User } from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\nimport { QuillHelper, ValidateForm } from '@posiwise/utils';\n\nimport { LazyLoadEvent } from 'primeng/api';\n\nimport {\n EnterPriseCommunication,\n EnterPriseGroup,\n EnterPriseGroupDefinition\n} from '../../interfaces/enterprise.interface';\nimport { AppEnterprise } from '../../models/enterprise.model';\n\n@Component({\n selector: 'pw-enterprise-wiki',\n templateUrl: './enterprise-wiki.component.html',\n styleUrls: ['./enterprise-wiki.component.scss']\n})\nexport class EnterpriseWikiComponent\n extends AppBaseComponent\n implements OnInit, OnDestroy, AfterViewChecked, AfterViewInit\n{\n private page = 1;\n\n groupDefinition: EnterPriseGroupDefinition[] = [];\n allGroups: EnterPriseGroup[] = [];\n allDocumentationGroups: EnterPriseGroup[];\n allCommunication: EnterPriseCommunication[] = [];\n\n data: { id?: number };\n\n form: UntypedFormGroup;\n\n submitted = false;\n buttonBusy = false;\n\n user: User;\n hasAccess: boolean;\n subscriptionId: number;\n subscription: Subscription;\n masterSubscriptionId = this.appConfig.master_subscription.subscription_id;\n\n id: number;\n groupId: number;\n groupName: string;\n\n uploadedFiles = [];\n filesData: string[];\n\n busy: boolean;\n loading = true;\n isLoaded = false;\n filesUploaded: boolean;\n\n invalidFile = false;\n searchText = '';\n totalRecords: number;\n totalRecordsUnFiltered = 0;\n\n editorConfig;\n\n isEdit = false;\n isAdd = false;\n\n constructor(\n private readonly groupService: GroupService,\n injector: Injector,\n private readonly cdr: ChangeDetectorRef,\n private readonly renderer: Renderer2,\n private readonly el: ElementRef\n ) {\n super(injector);\n QuillHelper.init();\n this.editorConfig = QuillHelper.getEditorConfig();\n this.form = AppEnterprise.getWikiForm();\n }\n\n ngAfterViewInit(): void {\n this.attachCloseButtonListener();\n HelperService.subscribeToEditorChanges(this.form, 'body');\n }\n\n ngOnInit() {\n this.getUserSubscription().subscribe(response => {\n this.subscription = response;\n if (this.subscription?.id) {\n this.id = this.subscription?.id;\n }\n });\n this.groupId = Number(this.route.snapshot.queryParams['entity_id']);\n // eslint-disable-next-line no-restricted-globals\n this.groupId = Number.isNaN(this.groupId) ? 0 : this.groupId;\n this.userStore().subscribe(user => {\n if (user) {\n this.user = user;\n }\n });\n this.getAllGroupDefinition();\n }\n\n ngAfterViewChecked() {\n this.cdr.detectChanges();\n }\n\n onLazyLoad(event: LazyLoadEvent) {\n const pageDetails = HelperService.onTableLazyLoad(event);\n this.page = pageDetails.page;\n this.getAllCommunications({\n page: this.page,\n page_size: PAGE_SIZE,\n order_by: pageDetails.sortField,\n order_direction: pageDetails.sortOrder,\n search: this.searchText\n });\n }\n\n /** Function to get all labels */\n private getAllGroupDefinition() {\n this.groupService.groupDefinitionGetAll(this.id, 'Subscription').subscribe(response => {\n if (response.group_definitions.length > 0) {\n this.groupDefinition = response.group_definitions;\n this.groupDefinition.forEach((data, index) => {\n const totalDefinitions = ++index;\n if (data.groups?.length) {\n data.groups.forEach(group => {\n this.allGroups.push(group);\n });\n }\n if (totalDefinitions === this.groupDefinition.length) {\n this.getParticularGroupDetails();\n }\n });\n this.allDocumentationGroups = [\n {\n id: 0,\n name: 'All Documentations',\n description: '',\n group_definition_id: 0,\n members: []\n },\n ...this.allGroups\n ];\n }\n });\n }\n\n /** Function to get group name and to setValue to group field if we have group_id */\n private getParticularGroupDetails() {\n if (this.groupId) {\n const data = this.allGroups.find(group => group.id === this.groupId);\n this.groupName = data?.name;\n this.form.get('group_id').setValue(data?.id);\n }\n }\n\n /** Function to get all communications */\n private getAllCommunications(paging: Paging) {\n this.isLoaded = false;\n const operation = this.groupId\n ? this.groupService.getAllCommunications(this.id, 'wiki', this.groupId || '', paging)\n : this.groupService.getAllCommunicationsWithOutGroupId(this.id, 'wiki', paging);\n\n operation\n .subscribe({\n next: response => {\n this.allCommunication = response.group_communications;\n this.totalRecords = response.object_count;\n this.totalRecordsUnFiltered = response.unfiltered_count;\n },\n error: error => this.toast.showToast(error)\n })\n .add(() => {\n this.isLoaded = true;\n this.loading = false;\n });\n }\n /** Function to filter by groups */\n filterDomainsList() {\n this.groupId = Number(this.groupId);\n this.getAllCommunications({\n page: this.page,\n page_size: PAGE_SIZE\n });\n this.getParticularGroupDetails();\n }\n\n @ValidateForm('form')\n onSave() {\n const rawHtml = HelperService.SaveRawHTML();\n this.form.controls['body'].setValue(rawHtml);\n this.buttonBusy = true;\n if (this.data?.id) {\n this.updateCommunications(this.data?.id);\n } else {\n this.postCommunications();\n }\n }\n\n /** Function to Post communications */\n postCommunications() {\n this.saveCommunication(false);\n }\n\n /** Function to edit communications */\n updateCommunications(id: number) {\n this.totalRecordsUnFiltered = 0;\n this.saveCommunication(true, id);\n }\n\n /** Shared method to save communications (post or update) */\n private saveCommunication(isUpdate: boolean, id?: number) {\n this.buttonBusy = true;\n this.form.get('user_id')?.setValue(this.user.id);\n this.form.get('communication_type')?.setValue('wiki');\n const data = this.form?.value;\n this.submitted = true;\n\n const operation = isUpdate\n ? this.groupService.editCommunications(id, data)\n : this.groupService.postCommunications(data);\n\n operation\n .subscribe(response => {\n const responseId = isUpdate ? response.group_communication.id : response.id;\n this.saveFile(responseId);\n const message = isUpdate\n ? 'Communication Updated Successfully'\n : 'Communication Added Successfully';\n this.toast.success(this.translation.translate(message));\n this.onCancel();\n })\n .add(() => {\n this.buttonBusy = false;\n });\n\n this.submitted = false;\n }\n\n /** Function to get edit communication details */\n getCommunicationDetails(id: number) {\n this.isLoaded = false;\n this.isAdd = false;\n this.isEdit = true;\n this.groupService\n .getCommunicationDetails(id)\n .subscribe(response => {\n this.data = response;\n this.form.patchValue(response);\n this.filesData = response.group_communication_files;\n })\n .add(() => {\n this.isLoaded = true;\n });\n }\n\n /** Function to delete communications */\n onDelete(id: number) {\n this.confirmAndExecute(\n () => this.groupService.deleteCommunications(id),\n 'Communication Deleted Successfully',\n () => this.onCancel()\n );\n }\n\n /** Function to delete communications Files */\n deleteCommunicationFiles(id: number, index: number) {\n this.confirmAndExecute(\n () => this.groupService.deleteCommunicationFiles(id),\n 'Communication File Deleted Successfully',\n () => this.filesData.splice(index, 1)\n );\n }\n\n /** Helper method to confirm and execute delete operations */\n private confirmAndExecute(operation, successMessage: string, onSuccess?: () => void) {\n HelperService.raiseDeletePopup().then(rep => {\n if (rep.value) {\n operation().subscribe(() => {\n this.toast.success(this.translation.translate(successMessage));\n if (onSuccess) {\n onSuccess();\n }\n });\n }\n });\n }\n\n /** Function to get form controls */\n get f() {\n return this.form.controls;\n }\n\n /** Function to show question edit form */\n showEditForm() {\n this.data = {};\n this.isAdd = true;\n this.isEdit = true;\n }\n\n /** Function to hide the edit form */\n onCancel() {\n this.totalRecordsUnFiltered = 0;\n this.getAllCommunications({\n page: this.page,\n page_size: PAGE_SIZE\n });\n this.form.reset();\n this.submitted = false;\n this.isEdit = false;\n }\n\n /** Function for toggle */\n onChange(event: boolean, formControlName: string) {\n this.form.get(formControlName)?.setValue(event);\n }\n\n onSelect(event = null) {\n this.invalidFile = false;\n for (const file of event.files) {\n if (!HelperService.validateFile(file, this.toast)) {\n this.invalidFile = true;\n } else {\n this.uploadedFiles.push(file);\n }\n }\n this.filesUploaded = true;\n\n if (this.invalidFile) {\n setTimeout(() => this.attachCloseButtonListener(), 0);\n }\n }\n\n onRemove(event) {\n this.uploadedFiles = this.uploadedFiles.filter(x => event.file.name !== x.name);\n this.filesUploaded = false;\n this.invalidFile = false;\n }\n\n onUploadError(event) {\n HelperService.onUploadError(event, this.toast);\n }\n\n attachCloseButtonListener() {\n const closeButton = this.el.nativeElement.querySelector('.p-message-close');\n\n if (closeButton) {\n this.renderer.listen(closeButton, 'click', () => {\n this.handleCloseButtonClick();\n });\n }\n }\n\n handleCloseButtonClick() {\n this.invalidFile = false;\n this.filesUploaded = false;\n }\n\n saveFile(id: number) {\n if (this.uploadedFiles.length > 0) {\n this.busy = true;\n this.uploadedFiles.forEach(file => {\n const fileData = new FormData();\n fileData.append('name', file, file.name);\n fileData.append('group_communication_id', `${id}`);\n this.groupService.postCommunicationFiles(fileData).subscribe(() => {\n this.translation.translate('Communication File Added Successfully');\n });\n });\n }\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<section>\n <div class=\"row\">\n <div class=\"col-12\" [ngClass]=\"{'mb-3': !isEdit}\">\n <div class=\"title\">\n <a *ngIf=\"isEdit\"\n aria-label=\"Navigate to Target\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 *ngIf=\"isEdit\" class=\"m-subheader__title m-subheader__title--separator mt-1\">\n <span>{{ !isAdd ? 'Edit' : 'Create a new' }} documentation page</span>\n </h3>\n <h2 *ngIf=\"!isEdit\" [ngClass]=\"{ 'mt-2': isEdit }\">Documentation <span *ngIf=\"groupId\">for {{ groupName }}</span></h2>\n </div>\n <p *ngIf=\"!isEdit\">\n Here you can write the documentation for your organization's members. Documentation\n pages are visible based on the teams the subscription's members are part of.\n </p>\n </div>\n </div>\n</section>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded && isEdit\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<ng-container *ngIf=\"isEdit && isLoaded\">\n <div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"p-2 mt-1\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n <div class=\"row mb-3\">\n <div class=\"col-12 col-md-12\">\n <pw-input-container [label]=\"'Enterprise.Documentation.Title' | transloco\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Title' | transloco\"\n name=\"title\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"title\"\n [ngClass]=\"{ 'is-invalid': submitted && f.title.errors }\" />\n </pw-input-container>\n </div>\n\n <pw-input-container [label]=\"'Enterprise.Documentation.Body' | transloco\"\n class=\"col-12\"\n name=\"body\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Body' | transloco\">\n <quill-editor [styles]=\"{ height: '220px' }\"\n class=\"quillEditor quill-container\" [modules]=\"editorConfig\"\n formControlName=\"body\"\n [ngClass]=\"{ 'is-invalid': submitted && f.body.errors }\">\n </quill-editor>\n </pw-input-container>\n <div class=\"col-12 col-md-6\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Group' | transloco\"\n [label]=\"'Enterprise.Documentation.Team' | transloco\"\n [isLeftTooltip]=\"true\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Team' | transloco\"\n name=\"group_id\">\n <p-dropdown\n [options]=\"allGroups\"\n formControlName=\"group_id\"\n [ngClass]=\"{ 'is-invalid': submitted && f['group_id'].errors }\"\n [placeholder]=\"'Select Team'\"\n optionValue=\"id\"\n optionLabel=\"name\">\n </p-dropdown>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.VisibleGlobally' | transloco\"\n [label]=\"'Enterprise.Documentation.VisibleGlobally' | transloco\"\n name=\"visible_globally\">\n <ui-switch class=\"d-block\"\n formControlName=\"visible_globally\"\n (change)=\"onChange($event, 'visible_globally')\"\n name=\"visible_globally\">\n </ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Published' | transloco\"\n [label]=\"'Enterprise.Documentation.Published' | transloco\"\n name=\"published\">\n <ui-switch class=\"d-block\"\n formControlName=\"published\"\n (change)=\"onChange($event, 'published')\"\n name=\"published\">\n </ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Pushed' | transloco\"\n [label]=\"'Enterprise.Documentation.Pushed' | transloco\"\n name=\"published\">\n <ui-switch class=\"d-block\"\n formControlName=\"pushed\"\n (change)=\"onChange($event, 'pushed')\"\n name=\"pushed\">\n </ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-6\">\n <h4 class=\"mt-4\">You can add files to your documentation page here</h4>\n <div class=\"mb-3\">\n <label for=\"file\">Upload File</label>\n <p-fileUpload #forms\n name=\"myfile[]\"\n [customUpload]=\"true\"\n [showUploadButton]=\"false\"\n accept=\"\"\n [disabled]=\"uploadedFiles && uploadedFiles.length > 0\"\n (onSelect)=\"onSelect($event)\"\n (onRemove)=\"onRemove($event)\"\n (onError)=\"onUploadError($event)\">\n <ng-template pTemplate=\"content\"\n [ngIf]=\"uploadedFiles?.length\">\n <div class=\"drag-drop-text\" *ngIf=\"!filesUploaded && (!uploadedFiles || uploadedFiles.length === 0)\">\n <p>You can drag and drop your file here</p>\n </div>\n </ng-template>\n </p-fileUpload>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 text-end mt-3\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\" >\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\" [disabled]=\"invalidFile\">\n {{ 'Button.Submit' | transloco }}\n </button>\n </div>\n </div>\n </form>\n <div *ngIf=\"filesData?.length\"\n class=\"mt-5\">\n <h2>Files attached to this documentation page</h2>\n <div class=\"communication-files\"\n *ngFor=\"let files of filesData; let i = index\">\n <p>\n <a target=\"blank\"\n [href]=\"files.name.url\">\n {{\n files.name.url.split('?')[0].split('/')[\n files.name?.url?.split('?')[0].split('/').length - 1\n ]\n }}\n </a>\n </p>\n <p ngbTooltip=\"Delete\"\n class=\"ms-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"deleteCommunicationFiles(files.id, i)\"\n (keydown.space)=\"deleteCommunicationFiles(files.id, i)\"\n (click)=\"deleteCommunicationFiles(files.id, i)\"\n aria-hidden=\"true\"\n ></i>\n </p>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n<ng-container *ngIf=\"!isEdit\">\n <div class=\"row\">\n <div class=\"col-12 text-end mb-3\">\n <button class=\"btn btn-sm btn-outline-primary\"\n (click)=\"showEditForm()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> {{ 'Add documentation' }}\n </button>\n </div>\n </div>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n\n <div class=\"primeng-datatable-container mt-0 table-responsive\"\n [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <p-table #dt\n [value]=\"allCommunication\"\n [paginator]=\"totalRecords !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n (onLazyLoad)=\"onLazyLoad($event)\">\n <ng-template pTemplate=\"caption\">\n <div class=\"search-contact\">\n <div class=\"col-sm-3 mb-2 mb-md-0 filter-domain-list\">\n <p-dropdown\n [options]=\"allDocumentationGroups\"\n optionLabel=\"name\"\n optionValue=\"id\"\n [(ngModel)]=\"groupId\"\n placeholder=\"Select Documentation Team\"\n [appendTo]=\"'body'\"\n (onChange)=\"filterDomainsList()\">\n </p-dropdown>\n </div>\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search Documentation...\"\n class=\"mw-90\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\" />\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Title' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Sender' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Team' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Files' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Date' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Status' | transloco }}</th>\n <th scope=\"true\"\n class=\"actions-column\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-item>\n <tr class=\"table-row\">\n <td data-head=\"Title\">\n <a [routerLink]=\"[item.id]\">{{ item.title }}</a>\n </td>\n <td data-head=\"Sender\">{{ item.author | ifNameNullShowEmail }}</td>\n <td data-head=\"Team\">{{ item.group?.name }}</td>\n <td data-head=\"Files\">\n <span *ngFor=\"let files of item.group_communication_files\">\n <a target=\"blank\"\n [href]=\"files.name.url\">\n {{\n files.name.url.split('?')[0].split('/')[\n files.name.url.split('?')[0].split('/').length - 1\n ]\n }}\n </a>\n </span>\n </td>\n <td data-head=\"Date\">{{ item.created_at | dateFormat: 'datetime' }}</td>\n <td data-head=\"Status\">\n <span *ngIf=\"item.visible_globally\"\n class=\"badge bg-warning ms-2\">{{\n 'Enterprise.Documentation.Global' | transloco\n }}</span><span *ngIf=\"item.published\"\n class=\"badge bg-info ms-2\">{{\n 'Enterprise.Documentation.Published' | transloco\n }}</span><span *ngIf=\"item.pushed\"\n class=\"badge bg-success ms-2\">{{\n 'Enterprise.Documentation.Pushed' | transloco\n }}</span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Edit\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-edit edit-icon\"\n (click)=\"getCommunicationDetails(item.id)\"\n (keydown.enter)=\"getCommunicationDetails(item.id)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Delete\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"onDelete(item.id)\"\n (keydown.space)=\"onDelete(item.id)\"\n (click)=\"onDelete(item.id)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"See Communication\"\n class=\"me-2 me-sm-3 see-icon\"\n [routerLink]=\"[item.id]\">\n <i class=\"fa fa-eye eye-icon \" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <div *ngIf=\"totalRecords === 0 && totalRecordsUnFiltered !== 0 && !groupId\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage'| transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n <span class=\"total-records-count\" *ngIf=\"totalRecords !== 0\">{{ 'Label.Total' | transloco }}: {{ totalRecords }}</span>\n </div>\n <div *ngIf=\"totalRecordsUnFiltered === 0 && isLoaded\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Documentation.NoDocumentation' | transloco\">\n </pw-no-data>\n </div>\n</ng-container>\n","import { Component, Injector, OnDestroy, OnInit } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { GroupService, PermissionService } from '@posiwise/common-services';\nimport { HelperService } from '@posiwise/helper-service';\n\nimport { EnterPriseCommunication } from '../../interfaces/enterprise.interface';\n\n@Component({\n selector: 'pw-enterprise-wiki-details',\n templateUrl: './enterprise-wiki-details.component.html',\n styleUrls: ['./enterprise-wiki-details.component.scss']\n})\nexport class EnterpriseWikiDetailsComponent extends AppBaseComponent implements OnInit, OnDestroy {\n id: number;\n communicationId: number;\n\n communicationDetails: EnterPriseCommunication;\n\n isLoaded = false;\n\n chatPermission: string;\n\n constructor(\n injector: Injector,\n private readonly groupService: GroupService,\n private readonly sanitizer: DomSanitizer\n ) {\n super(injector);\n }\n\n ngOnInit() {\n this.getUserSubscriptionId().subscribe(id => {\n this.id = id;\n });\n this.route.params.subscribe(param => {\n this.communicationId = Number(param['wikiId']);\n });\n this.getCommunication();\n this.chatPermission = `${PermissionService.selectedProduct?.permission}.${PermissionService.selectedProduct?.feature_key}`;\n }\n\n /** Function to call communication */\n private getCommunication() {\n this.groupService\n .getCommunicationDetails(this.communicationId)\n .subscribe(response => {\n let blogBody;\n if (response?.body) {\n blogBody = HelperService.sanitizeQuillBody(response.body, this.sanitizer);\n }\n this.communicationDetails = { ...response, body: blogBody };\n })\n .add(() => {\n this.isLoaded = true;\n });\n }\n\n onCancel() {\n this.back();\n }\n\n trackByFileId(_index: number, item) {\n return item.id;\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<div class=\"row\">\n <div class=\"col-12 d-flex\">\n <a aria-label=\"Navigate to Target\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h2 class=\"mt-0 mb-0\">Documentation</h2>\n </div>\n</div>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<div *ngIf=\"isLoaded\">\n <div class=\"content-quill-wrapper container-fluid pw-tab overflow-hidden mt-3\" *ngIf=\"communicationDetails\">\n <div class=\"pb-0\">\n <div class=\"card-body p-4\">\n <div class=\"row mb-3\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-center mb-md-2\">\n <div class=\"d-flex flex-wrap mb-3 mb-md-0\">\n <span [ngClass]=\"communicationDetails?.pushed ? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.pushed ? 'Pushed' : 'Not Pushed' }}\n </span>\n <span [ngClass]=\"communicationDetails?.published? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.published ? 'Published' : 'Not Published' }}\n </span>\n <span [ngClass]=\"communicationDetails?.published ? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.visible_globally ? 'Visible Globally' : 'Not Visible Globally' }}\n </span>\n </div>\n <div class=\"d-flex flex-wrap mb-3 mb-md-0\">\n <span class=\"badge bg-cyan mb-2 me-2 mb-md-0\">{{communicationDetails?.group?.name}}</span>\n <span class=\"badge bg-blue-grey mb-2 me-2 mb-md-0\">{{ 'Created At (' + (communicationDetails?.created_at | date: 'dd-MMM-YYYY') + ')' }}</span>\n <span *ngIf=\"communicationDetails?.pushed_at\" class=\"badge bg-grey mb-2 mb-md-0\">{{ 'Pushed At (' + (communicationDetails?.pushed_at | date: 'dd-MMM-YYYY') + ')' }}</span>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 mb-3 ms-2\">\n <h5>{{ communicationDetails?.title }}</h5>\n </div>\n <div class=\"col-12 mb-3 ms-2 message-icon\">\n <a [routerLink]=\"['/members', communicationDetails?.author?.slug]\">{{\n communicationDetails?.author | ifNameNullShowEmail\n }}</a>\n <div class=\"ms-2\"\n ngbTooltip=\"Message\"\n *rbacAllow=\"chatPermission\">\n <i\n [routerLink]=\"['/message']\"\n [fragment]=\"communicationDetails?.author?.slug\"\n class=\"fa fa-comments cta1-icon\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n\n <div class=\"col-12 ms-2\">\n <div class=\"ql-container ql-snow body-quill\">\n <div class=\"ql-editor\"\n [innerHTML]=\"communicationDetails?.body\">\n </div>\n </div>\n </div>\n <div class=\"col-12 col-sm-10\">\n <p *ngFor=\"\n let files of communicationDetails?.group_communication_files;\n trackBy: trackByFileId\n \">\n <a [href]=\"files?.name?.url\"\n target=\"blank\">{{\n files?.name?.url?.split('?')[0]?.split('/')[\n files?.name?.url.split('?')[0]?.split('/')?.length - 1\n ]\n }}</a>\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n</div>\n\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule, Routes } from '@angular/router';\n\nimport { CoreTranslocoModule } from '@posiwise/core-transloco';\nimport { DirectivesModule } from '@posiwise/directives';\nimport { PipesModule } from '@posiwise/pipes';\nimport {\n EntityGroupComponent,\n GroupDefinitionComponent,\n GroupsComponent,\n SharedComponentsModule\n} from '@posiwise/shared-components';\n\nimport { PlotlyViaCDNModule } from 'angular-plotly.js';\nimport { QuillModule } from 'ngx-quill';\nimport { UiSwitchModule } from 'ngx-ui-switch';\nimport { NgxUploaderModule } from 'ngx-uploader';\nimport { DropdownModule } from 'primeng/dropdown';\nimport { FileUploadModule } from 'primeng/fileupload';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { MultiSelectModule } from 'primeng/multiselect';\n\nimport { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\n\nimport { EnterpriseViewParticularCommunicationComponent } from './components/enterprise-communication-details/enterprise-communication-details.component';\nimport { EnterpriseCommunicationsComponent } from './components/enterprise-communications/enterprise-communications.component';\nimport { EnterpriseInsightsComponent } from './components/enterprise-insights/enterprise-insights.component';\nimport { EnterpriseMembersComponent } from './components/enterprise-members/enterprise-members.component';\nimport { EnterprisePartnersComponent } from './components/enterprise-partners/enterprise-partners.component';\nimport { EnterpriseSubscriptionsComponent } from './components/enterprise-subscriptions/enterprise-subscriptions.component';\nimport { EnterpriseTabsComponent } from './components/enterprise-tabs/enterprise-tabs.component';\nimport { EnterpriseWikiComponent } from './components/enterprise-wiki/enterprise-wiki.component';\nimport { EnterpriseWikiDetailsComponent } from './components/enterprise-wiki-details/enterprise-wiki-details.component';\n\nPlotlyViaCDNModule.setPlotlyVersion('1.55.2');\n\nconst routes: Routes = [\n {\n path: '',\n component: EnterpriseSubscriptionsComponent,\n pathMatch: 'full'\n },\n {\n path: '',\n component: EnterpriseTabsComponent,\n children: [\n {\n path: 'members',\n component: EnterpriseMembersComponent,\n data: {\n title: 'Enterprise - Members'\n }\n },\n {\n path: 'partners',\n component: EnterprisePartnersComponent,\n data: {\n permission: 'Pages.Alpha',\n title: 'Enterprise - Partners'\n }\n },\n {\n path: 'groups',\n component: GroupsComponent,\n data: {\n permission: 'Pages.Beta',\n title: 'Enterprise - Groups'\n }\n },\n {\n path: 'groups/labels',\n component: GroupDefinitionComponent,\n data: {\n permission: 'Pages.Beta',\n title: 'Enterprise - Groups - Definition'\n }\n },\n {\n path: 'groups/:groupId/members',\n component: EntityGroupComponent,\n data: {\n permission: 'Pages.Beta',\n title: 'Enterprise - Groups - Entity'\n }\n },\n {\n path: 'communications',\n component: EnterpriseCommunicationsComponent,\n data: {\n permission: 'Pages.Beta',\n title: 'Enterprise - Communication'\n }\n },\n {\n path: 'wiki',\n component: EnterpriseWikiComponent,\n data: {\n permission: 'Pages.Beta',\n title: 'Enterprise - Wiki'\n }\n },\n {\n path: 'wiki/:wikiId',\n component: EnterpriseWikiDetailsComponent,\n data: {\n permission: 'Pages.Beta',\n title: 'Enterprise - Wiki'\n }\n },\n {\n path: 'communications/:communicationId',\n component: EnterpriseViewParticularCommunicationComponent,\n data: {\n permission: 'Pages.Beta',\n title: 'Enterprise - Wiki'\n }\n },\n {\n path: 'insights',\n component: EnterpriseInsightsComponent,\n data: {\n permission: 'Pages.Beta',\n title: 'Enterprise - Insight'\n }\n }\n ]\n }\n];\n\n@NgModule({\n declarations: [\n EnterpriseSubscriptionsComponent,\n EnterpriseMembersComponent,\n EnterprisePartnersComponent,\n EnterpriseTabsComponent,\n EnterpriseInsightsComponent,\n EnterpriseCommunicationsComponent,\n EnterpriseViewParticularCommunicationComponent,\n EnterpriseWikiComponent,\n EnterpriseWikiDetailsComponent\n ],\n imports: [\n CommonModule,\n InputTextModule,\n CoreTranslocoModule,\n PlotlyViaCDNModule,\n NgbTooltipModule,\n UiSwitchModule,\n FormsModule,\n DropdownModule,\n FileUploadModule,\n ReactiveFormsModule,\n PipesModule,\n DirectivesModule,\n SharedComponentsModule,\n RouterModule.forChild(routes),\n NgxUploaderModule,\n MultiSelectModule,\n // SharedModule,\n QuillModule.forRoot()\n // LazyLoadModules\n ]\n})\nexport class EnterpriseModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3","i5","i6","i7","i8","i2","i10","i11","i4","i1","i9","i12","i14","i15","i16","i13"],"mappings":"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"}
|