import { Component, ElementRef, EventEmitter, Injector, Output, ViewChild } from '@angular/core'; import { AppComponentBase } from '@shared/common/app-component-base'; import { CreateOrUpdateRoleInput, RoleEditDto, RoleServiceProxy, ShippingRoleActionServiceProxy } from '@shared/service-proxies/service-proxies'; import { ModalDirective } from 'ngx-bootstrap'; import { PermissionTreeComponent } from '../shared/permission-tree.component'; import { finalize } from 'rxjs/operators'; import { RoleWarehousePickupStatusComponent } from '../roles/role-warehouse-pickup-status.component'; import { RoleDeliveryStatusComponent } from '../roles/role-delivery-status.component'; @Component({ selector: 'createOrEditRoleModal', templateUrl: './create-or-edit-role-modal.component.html' }) export class CreateOrEditRoleModalComponent extends AppComponentBase { @ViewChild('createOrEditModal', {static: true}) modal: ModalDirective; @ViewChild('permissionTree', { static: false }) permissionTree: PermissionTreeComponent; @ViewChild('roleWarehousePickupStatus', { static: false }) roleWarehousePickupStatus: RoleWarehousePickupStatusComponent; @ViewChild('roleDeliveryStatus', { static: false }) roleDeliveryStatus: RoleDeliveryStatusComponent; @Output() modalSave: EventEmitter = new EventEmitter(); active = false; saving = false; showPickupStatusMaintenance = false; showDeliveryStatusMaintenance = false; role: RoleEditDto = new RoleEditDto(); constructor( injector: Injector, private _roleService: RoleServiceProxy, private _shippingRoleActionServiceProxy: ShippingRoleActionServiceProxy ) { super(injector); } show(roleId?: number, showPickupMaintenance: boolean = false, showDeliveryMaintenance: boolean = false): void { const self = this; self.active = true; self.showPickupStatusMaintenance = showPickupMaintenance; self.showDeliveryStatusMaintenance = showDeliveryMaintenance; self._roleService.getRoleForEdit(roleId).subscribe(result => { self.role = result.role; this.permissionTree.editData = result; if (self.showPickupStatusMaintenance && roleId) { self.roleWarehousePickupStatus.loadRoleOrderStatusTypes(self.role); } if (self.showDeliveryStatusMaintenance && roleId) { self.roleDeliveryStatus.loadRoleOrderStatusTypes(self.role); } if (result) { // setTimeout(function(){ self.modal.show(); }, 1500); self.modal.show(); } }); } onShown(): void { document.getElementById('RoleDisplayName').focus(); } save(): void { const self = this; const input = new CreateOrUpdateRoleInput(); input.role = self.role; input.grantedPermissionNames = self.permissionTree.getGrantedPermissionNames(); this.saving = true; this._roleService.createOrUpdateRole(input) .pipe(finalize(() => this.saving = false)) .subscribe(() => { this.notify.info(this.l('SavedSuccessfully')); this.close(); this.modalSave.emit(null); }); } close(): void { this.active = false; this.modal.hide(); } }