import { Component, OnInit, ViewChild } from '@angular/core'; import { Location } from '@angular/common'; import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service'; import { CommonService } from 'src/app/hmg-common/services/common/common.service'; import { AuthenticationService } from 'src/app/hmg-common/services/authentication/authentication.service'; import { MenuResponse } from 'src/app/hmg-common/services/menu/models/menu-response'; import { MyTeamService } from '../service/my-team.service'; import { MenuService } from 'src/app/hmg-common/services/menu/menuservice.service'; import { ModalController } from '@ionic/angular'; import { IonInfiniteScroll } from '@ionic/angular'; @Component({ selector: 'app-details', templateUrl: './details.component.html', styleUrls: ['./details.component.scss'] }) export class DetailsComponent implements OnInit { public static opendEmployeesARR = 'opend_employees_arr'; @ViewChild(IonInfiniteScroll) infiniteScroll: IonInfiniteScroll; public activeSegment = 'About'; pageNum = 1; pageLimit = 50; modalFlag: any = false; empSubordinate: any; employee: any; IsReachEnd = false; searchKey: any; public searchKeySelect: any; infiniteRequest: any; isSpecialist = false; selMenu: MenuResponse = new MenuResponse(); public opendEmployees: any = []; public headerTitle = ''; public userImage: any = '../assets/imgs/profile.png'; constructor( public menuService: MenuService, public common: CommonService, public myTeamService: MyTeamService, public ts: TranslatorService, public modalController: ModalController, private location: Location, public authService: AuthenticationService, ) { } ngOnInit() { this.intializeMemberDetail(); } public segmentChanged(event: any) { console.log(event); this.activeSegment = event.detail.value; } intializeMemberDetail(userID?) { this.pageLimit = 50; this.pageNum = 1; this.employee = this.common.sharedService.getSharedData(MyTeamService.EMPLOYEE_SHARED_DATA, false); const employees = this.common.sharedService.getSharedData( DetailsComponent.opendEmployeesARR, false); if ( employees ) { this.opendEmployees.push(this.employee); this.common.sharedService.setSharedData(this.opendEmployees, DetailsComponent.opendEmployeesARR); } this.selMenu = this.common.sharedService.getSharedData( MenuResponse.SHARED_DATA, false ); this.headerTitle = this.selMenu.List_Menu.MENU_NAME; this.isSpecialist = this.common.sharedService.getSharedData('isSpecialist', false) ? true : false; if (this.employee) { this.getEmpSubordinate(userID); } } goback() { const user = this.authService.getAuthenticatedUser(); if (this.employee.SUPERVISOR_NUMBER === user.EMPLOYEE_NUMBER || this.opendEmployees.length == 1){ this.opendEmployees = []; this.common.openMyTeamPage(); } else { for (let i = 0; i < this.opendEmployees.length; i++){ if (this.opendEmployees[i].EMPLOYEE_NUMBER === this.employee.SUPERVISOR_NUMBER) { this.common.sharedService.setSharedData( this.opendEmployees[i], MyTeamService.EMPLOYEE_SHARED_DATA ); break; } } this.intializeMemberDetail(this.employee.SUPERVISOR_NUMBER); } } getEmpSubordinate(userID) { this.modalFlag = this.employee.isModal; let selEmpNo: string = null; this.pageNum = 1; this.IsReachEnd = false; let searchEmpNum = ''; let searchEmpName = ''; let searchEmpEmail = ''; if (this.searchKey) { switch (this.searchKeySelect) { case '1': { searchEmpName = this.searchKey; searchEmpNum = ''; searchEmpEmail = ''; break; } case '2': { searchEmpNum = this.searchKey; searchEmpName = ''; searchEmpEmail = ''; break; } case '3': { searchEmpEmail = this.searchKey; searchEmpNum = ''; searchEmpName = ''; break; } default: { searchEmpNum = ''; searchEmpName = ''; searchEmpEmail = ''; break; } } } else { searchEmpNum = ''; searchEmpName = ''; searchEmpEmail = ''; } if (userID) { selEmpNo = userID; } else { selEmpNo = this.employee.EMPLOYEE_NUMBER; } const body = { P_SELECTED_EMPLOYEE_NUMBER: selEmpNo, P_SEARCH_EMPLOYEE_NUMBER: searchEmpNum, P_SEARCH_EMPLOYEE_DISPLAY_NAME: searchEmpName, P_SEARCH_EMAIL_ADDRESS: searchEmpEmail, P_PAGE_NUM: this.pageNum, P_PAGE_LIMIT: this.pageLimit }; this.infiniteRequest = body; this.myTeamService .getEmployeeSubordinates(body) .subscribe((result: any) => { this.handleEmpResult(result); }); } handleEmpResult(result) { if (this.common.validResponse(result)) { if (this.common.hasData(result.GetEmployeeSubordinatesList)) { this.empSubordinate = result.GetEmployeeSubordinatesList; this.infiniteRequest.P_PAGE_NUM = this.pageNum++; const lastItemIndex = this.empSubordinate.length - 1; if (result.GetEmployeeSubordinatesList[lastItemIndex]) { const lastitem = result.GetEmployeeSubordinatesList[lastItemIndex]; if (lastitem.NO_OF_ROWS === lastitem.ROW_NUM) { this.IsReachEnd = true; } else { this.IsReachEnd = false; } } } else { this.empSubordinate = []; } } } doInfinite(infiniteScroll) { if (!this.IsReachEnd && this.infiniteRequest) { this.myTeamService .getEmployeeSubordinates(this.infiniteRequest) .subscribe( (result: any) => { if (this.common.validResponse(result)) { this.infiniteRequest.P_PAGE_NUM = this.pageNum++; if (this.common.hasData(result.GetEmployeeSubordinatesList)) { result.GetEmployeeSubordinatesList.forEach(vr => { if (vr.ROW_NUM === vr.NO_OF_ROWS) { this.IsReachEnd = true; } else { this.IsReachEnd = false; } this.empSubordinate.push(vr); }); } else { this.IsReachEnd = true; } } if (infiniteScroll) { this.infiniteScroll.complete(); } }, Error => console.log(Error), () => this.infiniteScroll.complete() ); } else { if (infiniteScroll) { this.infiniteScroll.complete(); } } } getDetails(index) { this.common.sharedService.setSharedData( this.empSubordinate[index], MyTeamService.EMPLOYEE_SHARED_DATA ); this.intializeMemberDetail(); } async presentModal() { const modal = await this.modalController.create({ component: DetailsComponent, keyboardClose: true, animated: false }); const dismissed = modal.onDidDismiss(); dismissed.then(() => { this.modalFlag = false; }); return await modal.present(); } getMenuEntries(item) { let selEmpNo = null; const respID: any = -999; let menuType = 'M'; let nationality: string; if (this.isSpecialist === true) { menuType = 'S'; } selEmpNo = item.EMPLOYEE_NUMBER; nationality = item.NATIONALITY_CODE; const body = { P_MENU_TYPE: menuType, // to check P_SELECTED_EMPLOYEE_NUMBER: selEmpNo, P_SELECTED_RESP_ID: respID, NationalityCode: nationality }; // set emp and resp id this.common.sharedService.setSharedData(selEmpNo, MenuResponse.SHARED_SEL_EMP); this.common.sharedService.setSharedData( body.P_SELECTED_RESP_ID, MenuResponse.SHARED_SEL_RESP_ID ); this.menuService.getMenuEntires(body).subscribe((result: MenuResponse) => { this.handleMenuEntiresResult(result); }); } private handleMenuEntiresResult(result) { if (this.common.validResponse(result)) { if (this.common.hasData(result.GetMenuEntriesList)) { this.sortMenuEntires(result.GetMenuEntriesList); } } } sortMenuEntires(list) { this.close().then(() => { }); const tree = this.common.list_to_tree(list); this.common.sharedService.setSharedData(tree, 'menuEntries'); this.common.openEITPage(); } public async close() { const modal = await this.modalController.getTop(); if (modal) { modal.dismiss(); } } goToSubordinate() { this.selMenu.search = true; this.common.sharedService.setSharedData( this.selMenu, MenuResponse.SHARED_DATA ); this.common.openMyTeamPage(); } dismiss() { this.modalController.dismiss({ dismissed: true }); } }