Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import {Component, Inject, OnInit} from '@angular/core';
- import {MAT_DIALOG_DATA, MatAutocompleteSelectedEvent, MatDialog, MatDialogRef, MatSnackBar} from '@angular/material';
- import {EmployeeService} from '../../../core/services/employee.service';
- import {EmployeeOfficeModel} from '../../../shared/models/employee-office.model';
- import {TreeNode} from '../../../shared/models/tree-node-properties.model';
- import {EmployeeMasterModel} from '../../../shared/models/employee-master.model';
- import {OfficeUnit} from '../../../shared/models/office-unit.model';
- import {OfficeUnitPostModel} from '../../../shared/models/office-unit-post.model';
- import {OfficeUnitService} from '../../../../app/core/services/office-unit.service';
- import {Office} from '../../../shared/models/office.model';
- import {Observable} from 'rxjs';
- import {FormControl} from '@angular/forms';
- import {map, startWith} from 'rxjs/operators';
- import {OfficeService} from '../../../core/services/office.service';
- import {IHash} from '../../theme/typography.component';
- import {Tree} from '../../../shared/response-body/tree';
- import {SearchEmployeeModel} from '../../../shared/models/search-employee.model';
- import {EmployeeInfoModel} from '../../../shared/models/employee-info.model';
- @Component({
- selector: 'app-create-assign-employee',
- templateUrl: './create-assign-employee.component.html',
- styleUrls: ['./create-assign-employee.component.scss']
- })
- export class CreateAssignEmployeeComponent implements OnInit {
- masterModel: EmployeeMasterModel = new EmployeeMasterModel();
- empOptions: EmployeeInfoModel [];
- singleEmpInfo: EmployeeInfoModel;
- empOffice: EmployeeOfficeModel = new EmployeeOfficeModel();
- empFilteredOptions: Observable<EmployeeInfoModel []>;
- myEmpControl = new FormControl();
- officeList: Array<Office>;
- myControl = new FormControl();
- options: Office[];
- filteredOptions: Observable<Office[]>;
- NameToOid: IHash;
- OidName: string;
- treeNode: TreeNode;
- office: Office;
- backEndTree: Tree;
- OfficeOid: string;
- constructor(protected dialogRef: MatDialogRef<CreateAssignEmployeeComponent>,
- protected empService: EmployeeService,
- protected unitService: OfficeUnitService,
- protected officeService: OfficeService,
- protected snackbar: MatSnackBar,
- @Inject(MAT_DIALOG_DATA) public data: { dialogTitle: string, model: any, treeNode: TreeNode }) {
- // Search Office
- this.options = [];
- this.NameToOid = {};
- this.officeService.getOffice(new Office()).subscribe(result => {
- this.officeList = new Array<Office>();
- console.log(result.body.data);
- for (const child of result.body.data) {
- this.officeList.push(child);
- this.options.push(child);
- this.NameToOid[child.nameEn] = child.oid;
- }
- });
- // Fillup field for remove data
- if (this.data.dialogTitle === 'REMOVE_EMPLOYEE') {
- console.log('remove');
- console.log(this.data.model);
- this.masterModel.nameBn = this.data.model[0].nameBn;
- this.masterModel.nameEn = this.data.model[0].nameEn;
- }
- // this.singleEmpInfo.officeNameEn = this.data.model.officeNameEn;
- }
- ngOnInit() {
- // start searching office
- this.officeService.getOffice(new Office()).subscribe(result => {
- this.officeList = new Array<Office>();
- for (const child of result.body.data) {
- this.officeList.push(child);
- }
- });
- this.filteredOptions = this.myControl.valueChanges.pipe(
- startWith(''),
- map(value => this._filter(value))
- );
- // end searching office
- if (this.data.treeNode.type === 'OfficeUnitPost') {
- const OUorOUP: OfficeUnitPostModel = this.data.treeNode.objectDetails;
- this.data.model.officeUnitOid = OUorOUP.officeUnitOid;
- const offUnit: OfficeUnit = new OfficeUnit();
- offUnit.oid = OUorOUP.officeUnitOid;
- console.log(offUnit);
- this.unitService.getUnitByUnitOid(offUnit).subscribe(result => {
- const office: Office = new Office();
- console.log(result.body.data);
- office.oid = result.body.data[0].officeOid;
- this.empService.getEmployeeOfficeInfoByOfficeOid(office).subscribe(results => {
- const empModel: EmployeeMasterModel = new EmployeeMasterModel();
- console.log('result body employee oid');
- console.log(results.body.data);
- empModel.oid = results.body.data[0].employeeOid;
- if (results.body.data[0].joiningDate !== null) {
- console.log(results.body.data[0].joiningDate);
- // this.data.model.joiningDate = results.body.data[0].joiningDate.toDateString();
- }
- });
- });
- }
- }
- private _filter(name: string): Office[] {
- const filterValue = name.toLowerCase();
- return this.options.filter(option => option.nameEn.toLowerCase().indexOf(filterValue) === 0);
- }
- save() {
- if (this.data.treeNode.type === 'OfficeUnitPost') {
- console.log('Save Emlployee');
- console.log(this.OfficeOid);
- const OUorOUP: OfficeUnitPostModel = this.data.treeNode.objectDetails;
- console.log('Ofifce Unit Post');
- console.log(OUorOUP);
- this.data.model.officeOid = this.OfficeOid;
- this.data.model.officeUnitOid = OUorOUP.officeUnitOid;
- this.data.model.officeUnitPostOid = OUorOUP.oid;
- this.data.model.inchargeLabelBn = this.data.treeNode.nameBn;
- this.data.model.inchargeLabelEn = this.data.treeNode.nameEn;
- this.data.model.isOfficeAdmin = 'No';
- this.data.model.isOfficeHead = 'No';
- this.data.model.statusChangeDate = null;
- this.data.model.nodeLevel = null;
- this.data.model.nodeSequence = null;
- this.data.model.systemRoleId = null;
- this.data.model.status = null;
- console.log('data model');
- console.log(this.data.model);
- if (this.data.dialogTitle === 'ASSIGN_EMPLOYEE') {
- this.data.model.status = 'Active';
- this.data.model.lastOfficeDate = null;
- this.empService.createEmployeeOfficeForAssigningPost(this.data.model).subscribe(result => {
- if ( result.header.responseCode.toString() === '200') {
- const sendEmployee = [result.body.data[0], 'NEW_EMPLOYEE'];
- this.dialogRef.close(sendEmployee);
- }
- });
- } else if (this.data.dialogTitle === 'REMOVE_EMPLOYEE') {
- // this.data.model.joiningDate = null;
- // this.data.model.status = null;
- console.log(this.data.model);
- const empInfo: EmployeeInfoModel = this.data.model[0];
- this.empOffice.oid = empInfo.employeeOfficeOid;
- this.empOffice.employmentTypeOid = empInfo.employeeTypeOid;
- this.empOffice.officeOid = empInfo.officeOid;
- this.empOffice.officeUnitOid = empInfo.officeUnitOid;
- this.empOffice.officeUnitPostOid = empInfo.officeUnitPostOid;
- this.empOffice.employeeOid = empInfo.oid;
- this.empOffice.responsibilityType = 'Main';
- console.log(this.empOffice);
- this.empService.removeEmployee(this.empOffice).subscribe(result => {
- if ( result.header.responseCode.toString() === '200') {
- const sendEmployee = [result.body.data[0], 'REMOVE_EMPLOYEE'];
- this.dialogRef.close(sendEmployee);
- }
- });
- }
- }
- }
- cancel() {
- this.dialogRef.close();
- }
- loadEmployee(event: MatAutocompleteSelectedEvent) {
- console.log(event);
- console.log(this.empOptions);
- this.OidName = event.option.value;
- const Oid = this.NameToOid[this.OidName];
- this.data.model.employeeOid = Oid;
- // this.empOffice.employeeOid = Oid;
- this.masterModel.nameEn = this.OidName;
- this.singleEmpInfo = this.empOptions.find(x => x.oid === Oid);
- this.masterModel.nameBn = this.singleEmpInfo.nameBn;
- this.data.model.employmentTypeOid = this.singleEmpInfo.employeeTypeOid;
- this.data.model.isDefaultProfile = this.singleEmpInfo.isDefaultProfile;
- console.log(this.singleEmpInfo);
- }
- loadEmplyeeList(officeOid: string): void {
- const sendOffice: SearchEmployeeModel = new SearchEmployeeModel();
- console.log(officeOid);
- sendOffice.listOfOfficeOid.push(officeOid);
- this.empOptions = [];
- this.NameToOid = {};
- this.empService.searchEmployee(sendOffice).subscribe( searchResult => {
- console.log('search employee result');
- for (const child of searchResult.body.data) {
- this.empOptions = searchResult.body.data;
- this.NameToOid[child.nameEn] = child.oid;
- }
- console.log(this.empOptions);
- this.empFilteredOptions = this.myEmpControl.valueChanges.pipe(
- startWith(''),
- map(value => this._empfilter(value))
- );
- });
- }
- private _empfilter(name: string): EmployeeInfoModel[] {
- const filterValue = name.toLowerCase();
- console.log(name);
- return this.empOptions.filter(option => option.nameEn.toLowerCase().indexOf(filterValue) === 0);
- }
- loadOffice(event: MatAutocompleteSelectedEvent) {
- this.OidName = event.option.value;
- console.log('load office hierarchy');
- console.log(this.OidName);
- const officeOid = this.NameToOid[this.OidName];
- console.log(officeOid);
- this.OfficeOid = officeOid;
- this.getOfficeByOfficeOid(officeOid);
- this.loadEmplyeeList(officeOid);
- }
- getOfficeByOfficeOid(officeOid: string): void {
- const sendOffice: Office = new Office();
- sendOffice.oid = officeOid;
- this.officeService.getOfficeByOfficeOid(sendOffice).subscribe((officeByName) => {
- this.backEndTree = officeByName.body.data[0];
- this.treeNode = this.BackEndTreeToTreeNode(this.backEndTree);
- });
- }
- BackEndTreeToTreeNode(backEndTree: Tree): TreeNode {
- const treeNodeTemp: TreeNode = new TreeNode();
- if (backEndTree.type === null) {
- treeNodeTemp.type = 'OfficeOfOfficeHierarchy';
- let tempOffice = new Office();
- tempOffice = backEndTree.parentDTO;
- treeNodeTemp.objectDetails = tempOffice;
- treeNodeTemp.nameEn = tempOffice.nameEn;
- treeNodeTemp.nameBn = tempOffice.nameBn;
- treeNodeTemp.typeEn = tempOffice.officeLayerOid;
- treeNodeTemp.typeBn = tempOffice.officeLayerOid;
- treeNodeTemp.rootOid = tempOffice.ministryOid;
- treeNodeTemp.pid = tempOffice.parentOid;
- treeNodeTemp.id = tempOffice.oid;
- treeNodeTemp.displayOrder = tempOffice.sortOrder;
- if ( tempOffice.logoUrl != null ) {
- treeNodeTemp.logoUrl = tempOffice.logoUrl;
- } else {
- treeNodeTemp.logoUrl = '../../../../assets/img/office_icon.png';
- }
- treeNodeTemp.id = tempOffice.oid;
- if ( tempOffice.parentOid != null ) {
- treeNodeTemp.pid = tempOffice.parentOid;
- }
- if (this.backEndTree.childOffices !== undefined && this.backEndTree.childOffices.length > 0) {
- treeNodeTemp.children = new Array<TreeNode>();
- // tslint:disable-next-line:prefer-const
- for (let child of backEndTree.childOffices) {
- const tempChild = this.BackEndTreeToTreeNode(child);
- treeNodeTemp.children.push(tempChild);
- }
- treeNodeTemp.children.sort((a, b) => (a.displayOrder < b.displayOrder) ? 1 : -1 );
- }
- }
- return treeNodeTemp;
- }
- deleteEmployee() {
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement