import { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core'; import { ActivatedRoute, Router } from '@angular/router'; import { FormBuilder, FormControl, FormGroup } from '@angular/forms'; import { ApiService } from '../app.api.service'; import { EmployeeServices } from '../_services/employee/employee.service'; import { DataStateChangeEvent, GridDataResult, SelectableSettings } from '@progress/kendo-angular-grid'; import { SearchEmployee, SearchManager } from '../_models/Employee/searchEmployee'; import { EnumExtension, EnumGender, EnumSearchFrom, EnumSearchObjDataType, EnumSearchParameter, EnumSQLOperator } from '../_models/enums'; import { DynamicPicker, EnumDynamicpickerType } from './dynamic-picker/Dynamic-Picker'; import { BasicService } from '../_services/Basic/basic.service'; import { Subscription, Subject } from 'rxjs'; import { PickerDataTransferService } from '../data.transfer.service'; import { loadingPanelService } from '../hrm-loding panel/loding.panel.service'; import { RecruitmentRequisition } from '../_models/Requisition/recruitmentRequisition'; import { RecruitmentService } from '../_services/recruitment/recruitment.service'; import { CV } from '../_models/Recruitement/CV'; import { Candidate } from '../_models/Recruitement/Candidate'; import { process, State } from '@progress/kendo-data-query'; import { DomSanitizer } from '@angular/platform-browser'; import { InternalRecruitment } from '../_models/Requisition/InternalRecruitment'; import { ErCV } from '../_models/Recruitement/ercv'; @Component({ selector: 'app-portal-cv-picker', templateUrl: './portal-cv-picker.component.html', //styleUrls: ['../../assets/kendo-grid/grid.css'], encapsulation: ViewEncapsulation.None, }) export class PortalCVPickerComponent implements OnInit { valueChangedSubscription: Subscription; genders: any = EnumExtension.getNamesAndValues(EnumGender); public active = true; public showPopUp = false; public checkboxOnly = false; public mode = 'multiple'; public selectableSettings: SelectableSettings; taggedSelection: number[] = []; CandidateItems: Candidate[] = []; assignCandidate: Candidate; public searchItems: ErCV[]; public selectedItems: RecruitmentRequisition[] = []; public selectedItem: InternalRecruitment; public selectedCV: ErCV; public searchCVs: ErCV[]; CVItems: ErCV[] = []; public gridState: State = { sort: [], skip: 0, take: 10 }; public state: State = { skip: 0, take: 10 }; //@Input() isRequisitionActive: boolean; public isRequisitionSelected; public gridView: GridDataResult; ItemCount: number = 0; @Input() pickerFormGroup: FormGroup; @Output() ItemSelected: EventEmitter = new EventEmitter(); objectUrl: string; @Input() public set setSelectedItem(inputedItem: InternalRecruitment) { debugger; if (inputedItem !== undefined) { this.selectedItem = inputedItem; this.selectedItemText = this.selectedItem.positionName; this.portalCvLoad(inputedItem.id); } else { this.selectedItem = new InternalRecruitment(); this.selectedItemText = ''; } } cvCount: number; private empCodeNameList: Array; private empCodeNameListSource: Array; public selectedItemText: string; public gridMultiSelect = false; @Input() public set MultiSelect(ismultiselect: boolean) { if (ismultiselect !== undefined) { /* this.gridMultiSelect = true;*/ this.gridMultiSelect = ismultiselect; this.setSelectableSettings(); } } @Input() public set isActive(isActive: boolean) { this.active = isActive; } @Input() public set isRequisitionActive(isRequisition: boolean) { //this.isRequisitionSelected = true; //if (isRequisition !== undefined) { // this.isRequisitionSelected = !isRequisition; //} this.isRequisitionSelected = !isRequisition; } /** role-permission-entry ctor */ constructor(public api: ApiService, public formBuilder: FormBuilder, public router: Router, public route: ActivatedRoute, public empSrvc: EmployeeServices, public basicService: BasicService, public pickerService: PickerDataTransferService, public loadingService: loadingPanelService, public recruitmentService: RecruitmentService, private sanitizer: DomSanitizer ) { if (this.pickerFormGroup === undefined) { this.pickerFormGroup = new FormGroup({ }); } } ngOnInit() { this.setSelectableSettings(); this.valueChangedSubscription == this.pickerService.dataChanged.subscribe( x => { if (x) { //this.employeeCount = x; } } ); } public GetSelectedRequisition(childData) { //this.selectedRequisition = new InternalRecruitment(); //this.selectedRequisition = childData; this.CVItems = []; this.loadGrid(); this.portalCvLoad(childData.id); } setSelectableSettings(): void { this.selectableSettings = { checkboxOnly: true, mode: 'multiple', // this.mode }; } //public portalCvLoad(requisitionID:number) { // this.searchItems = []; // this.loadingService.ShowLoadingPanel = true; // this.recruitmentService.getOnlinePortalCVs(requisitionID).subscribe( // (resp) => { // this.searchItems = resp; // }, // (x) => { // console.log(x); // this.loadingService.ShowLoadingPanel = false; // }, // () => { // console.log(this.searchItems); // this.loadingService.ShowLoadingPanel = false; // if (this.searchItems !== undefined && this.searchItems.length > 0) { // debugger; // this.searchItems.forEach(x => { // if (x.irFileAttacments !== null && x.irFileAttacments.length > 0) { // x.irFileAttacments.forEach(y => { // if (y.fileType === 10) { // let fileName = y.originalFileName; // let str = y.fileTobase64; // var fileExtension = fileName.split('.').pop(); // let _type = this.function(fileExtension.toLowerCase()); // const byteCharacters = atob(str); // const byteNumbers = new Array(byteCharacters.length); // for (let i = 0; i < byteCharacters.length; i++) { // byteNumbers[i] = byteCharacters.charCodeAt(i); // } // const byteArray = new Uint8Array(byteNumbers); // const blob = new Blob([byteArray], { type: _type }); // // x.imageBlob = blob; // let objectUrl = URL.createObjectURL(blob); // x.profilePhotoUrl = this.sanitizer.bypassSecurityTrustResourceUrl(objectUrl); // } // }) // } // if (this.CVItems !== undefined && this.CVItems.length > 0) { // debugger; // console.log(this.CVItems); // let ItemExist = this.CVItems.find(c => c.id === x.id); // if (ItemExist === undefined) { // let temp = new CV(); // temp = x; // temp.details = "Name: " + x.name + "\n" + "Mobile: " + x.mobile + "\n" + "Email: " + x.email + "\n" + "Expected Salary: " + "\n"; // if (x.allEduQualifications !== undefined && x.allEduQualifications.length > 0) { // for (let i = 0; i < x.allEduQualifications.length; i++) { // debugger; // temp.educationalSummary = "Degree Title: " + (x.allEduQualifications[i].educationLevels.length > 0 ? (x.allEduQualifications[i].educationLevels.find(c => c.id == x.allEduQualifications[i].degreeTitleID).description) : "") + "\n" // + "Department: " + (x.allEduQualifications[i].disciplines.length < 0 ) ? "" : x.allEduQualifications[i].disciplines.find(c => c.id == x.allEduQualifications[i].disciplineID).description + "\n" // + "Institute: " + x.allEduQualifications[i].instituteName + "\n" // + "Passing Year: " + x.allEduQualifications[i].passingYear + "\n" // + "CGPA: " + x.allEduQualifications[i].outOF + "\n" // } // } // if (x.allExperiences !== undefined && x.allExperiences.length > 0) { // for (let i = 0; i < x.allExperiences.length; i++) { // const oneDay = 24 * 60 * 60 * 1000; // hours*minutes*seconds*milliseconds // let firstDate: any = new Date(x.allExperiences[i].fromDate); // let secondDate: any = new Date(x.allExperiences[i].toDate); // let diffTime = Math.abs(secondDate - firstDate); // const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24)); // temp.careerSummary = "Total Experince: " + diffDays + "\n" // + "Company: " + x.allExperiences[i].industry + "\n" // + "Position: " + x.allExperiences[i].designation + "\n" // + "Role: " + x.allExperiences[i].roleDefination + "\n" // } // } // this.CVItems.push(temp); // } // } // else { // let temp = new CV(); // temp = x; // temp.details = "Name: " + x.name + "\n" + "Mobile: " + x.mobile + "\n" + "Email: " + x.email + "\n" + "Expected Salary: " + "\n"; // if (x.allEduQualifications !== undefined && x.allEduQualifications.length > 0) { // for (let i = 0; i < x.allEduQualifications.length; i++) { // temp.educationalSummary = "Degree Title: " + (x.allEduQualifications[i].educationLevels.length > 0 ? (x.allEduQualifications[i].educationLevels.find(c => c.id == x.allEduQualifications[i].degreeTitleID).description) : "") // + "\n" // + "Department: " + (x.allEduQualifications[i].disciplines.length > 0 ? x.allEduQualifications[i].disciplines.find(c => c.id == x.allEduQualifications[i].disciplineID).description : " ") + "\n" // + "Institute: " + x.allEduQualifications[i].instituteName + "\n" // + "Passing Year: " + x.allEduQualifications[i].passingYear + "\n" // + "CGPA: " + x.allEduQualifications[i].outOF + "\n" // } // } // if (x.allExperiences !== undefined && x.allExperiences.length > 0) { // for (let i = 0; i < x.allExperiences.length; i++) { // const oneDay = 24 * 60 * 60 * 1000; // hours*minutes*seconds*milliseconds // let firstDate: any = new Date(x.allExperiences[i].fromDate); // let secondDate: any = new Date(x.allExperiences[i].toDate); // let diffTime = Math.abs(secondDate - firstDate); // const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24)); // temp.careerSummary = "Total Experince: " + diffDays + "\n" // + "Company: " + x.allExperiences[i].industry + "\n" // + "Position: " + x.allExperiences[i].designation + "\n" // + "Role: " + x.allExperiences[i].roleDefination + "\n" // } // } // this.CVItems.push(temp); // } // }) // } // //this.saveMultipleCandidates(); // this.loadGrid(); // }, // ); //} public portalCvLoad(requisitionID: number) { this.searchItems = []; this.loadingService.ShowLoadingPanel = true; this.recruitmentService.getErCvByRequisitionId(requisitionID).subscribe( (resp) => { this.searchItems = resp; }, (x) => { console.log(x); this.loadingService.ShowLoadingPanel = false; }, () => { console.log(this.searchItems); this.loadingService.ShowLoadingPanel = false; if (this.searchItems !== undefined && this.searchItems.length > 0) { debugger; this.searchItems.forEach(x => { if (x.irFileAttacments !== null && x.irFileAttacments.length > 0) { x.irFileAttacments.forEach(y => { if (y.fileType === 9) { //ercv let fileName = y.originalFileName; let str = y.fileTobase64; var fileExtension = fileName.split('.').pop(); let _type = this.function(fileExtension.toLowerCase()); const byteCharacters = atob(str); const byteNumbers = new Array(byteCharacters.length); for (let i = 0; i < byteCharacters.length; i++) { byteNumbers[i] = byteCharacters.charCodeAt(i); } const byteArray = new Uint8Array(byteNumbers); const blob = new Blob([byteArray], { type: _type }); // x.imageBlob = blob; let objectUrl = URL.createObjectURL(blob); x.profilePhotoUrl = this.sanitizer.bypassSecurityTrustResourceUrl(objectUrl); } }) } if (this.CVItems !== undefined && this.CVItems.length > 0) { debugger; console.log(this.CVItems); let ItemExist = this.CVItems.find(c => c.id === x.id); if (ItemExist === undefined) { let temp = new ErCV(); temp = x; temp.details = "Name: " + x.name + "\n" + "Mobile: " + x.mobile + "\n" + "Email: " + x.email + "\n" + "Expected Salary: " + "\n"; if (x.allEduQualifications !== undefined && x.allEduQualifications.length > 0) { for (let i = 0; i < x.allEduQualifications.length; i++) { debugger; //temp.educationalSummary = "Degree Title: " + (x.allEduQualifications[i].educationLevels.length > 0 ? (x.allEduQualifications[i].educationLevels.find(c => c.id == x.allEduQualifications[i].degreeTitleID).description) : "") + "\n" // + "Department: " + (x.allEduQualifications[i].disciplines.length < 0) ? "" : x.allEduQualifications[i].disciplines.find(c => c.id == x.allEduQualifications[i].disciplineID).description + "\n" // + "Institute: " + x.allEduQualifications[i].instituteName + "\n" // + "Passing Year: " + x.allEduQualifications[i].passingYear + "\n" // + "CGPA: " + x.allEduQualifications[i].outOF + "\n" } } if (x.allExperiences !== undefined && x.allExperiences.length > 0) { for (let i = 0; i < x.allExperiences.length; i++) { const oneDay = 24 * 60 * 60 * 1000; // hours*minutes*seconds*milliseconds let firstDate: any = new Date(x.allExperiences[i].fromDate); let secondDate: any = new Date(x.allExperiences[i].toDate); let diffTime = Math.abs(secondDate - firstDate); const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24)); temp.careerSummary = "Total Experince: " + diffDays + "\n" + "Company: " + x.allExperiences[i].industry + "\n" + "Position: " + x.allExperiences[i].designation + "\n" + "Role: " + x.allExperiences[i].roleDefination + "\n" } } this.CVItems.push(temp); } } else { let temp = new ErCV(); temp = x; temp.details = "Name: " + x.name + "\n" + "Mobile: " + x.mobile + "\n" + "Email: " + x.email + "\n" + "Expected Salary: " + "\n"; if (x.allEduQualifications !== undefined && x.allEduQualifications.length > 0) { //for (let i = 0; i < x.allEduQualifications.length; i++) { // temp.educationalSummary = "Degree Title: " + (x.allEduQualifications[i].educationLevels.length > 0 ? (x.allEduQualifications[i].educationLevels.find(c => c.id == x.allEduQualifications[i].degreeTitleID).description) : "") // + "\n" // + "Department: " + (x.allEduQualifications[i].disciplines.length > 0 ? x.allEduQualifications[i].disciplines.find(c => c.id == x.allEduQualifications[i].disciplineID).description : " ") + "\n" // + "Institute: " + x.allEduQualifications[i].instituteName + "\n" // + "Passing Year: " + x.allEduQualifications[i].passingYear + "\n" // + "CGPA: " + x.allEduQualifications[i].outOF + "\n" //} } if (x.allExperiences !== undefined && x.allExperiences.length > 0) { for (let i = 0; i < x.allExperiences.length; i++) { const oneDay = 24 * 60 * 60 * 1000; // hours*minutes*seconds*milliseconds let firstDate: any = new Date(x.allExperiences[i].fromDate); let secondDate: any = new Date(x.allExperiences[i].toDate); let diffTime = Math.abs(secondDate - firstDate); const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24)); temp.careerSummary = "Total Experince: " + diffDays + "\n" + "Company: " + x.allExperiences[i].industry + "\n" + "Position: " + x.allExperiences[i].designation + "\n" + "Role: " + x.allExperiences[i].roleDefination + "\n" } } this.CVItems.push(temp); } }) } //this.saveMultipleCandidates(); this.loadGrid(); }, ); } loadGrid() { this.gridView = process(this.CVItems, this.state); } public dataStateChange(state: DataStateChangeEvent): void { this.state = state; this.gridView = process(this.CVItems, this.state); } //saveMultipleCandidates() { // this.CandidateItems = []; // this.CVItems.forEach( // x => { // if (x.candidateID === undefined || x.candidateID === null || x.candidateID === 0) { // this.assignCandidate = new Candidate(); // this.assignCandidate.startDate = new Date(); // this.assignCandidate.isEmployee = false; // this.assignCandidate.isSelected = false; // this.assignCandidate.processId = 0//this.selectedRequisition.id; // this.assignCandidate.cvID = x.id; // this.assignCandidate.cv = new CV(); // this.assignCandidate.cv = x; // this.CandidateItems.push(this.assignCandidate); // } // } // ); // this.loadingService.ShowLoadingPanel = true; // this.recruitmentService.saveCandidatesforRecruitment(this.CandidateItems).subscribe( // (resp) => { // }, // (x) => { // this.showError(x.message); // this.loadingService.ShowLoadingPanel = false; // }, // () => { // // this._notificationService.showSuccess('Saved Successfully'); // this.loadingService.ShowLoadingPanel = false; // // this.previousCVLoad(); // } // ); //} function(ext) { if (ext != undefined) { return this.extToMimes(ext); } return undefined; } extToMimes(ext) { let type = undefined; switch (ext) { case 'jpg': type = 'image/jpeg'; break; case 'png': type = 'image/jpeg'; break; case 'jpeg': type = 'image/jpeg'; break; case 'txt': type = 'text/plain'; break; case 'xls': type = 'application/vnd.ms-excel'; break; case 'doc': type = 'application/msword'; break; case 'xlsx': type = 'application/vnd.ms-excel'; break; default: } return type; } showError(message: any) { throw new Error('Method not implemented.'); } //search() { // this.loadingService.ShowLoadingPanel = true; // this.recruitmentService.getCVs().subscribe( // (resp) => { // this.searchItems = resp; // }, // (x) => { // console.log(x); // this.loadingService.ShowLoadingPanel = false; // }, // () => { // this.loadingService.ShowLoadingPanel = false; // }, // ); //} public onCancel(e): void { this.closeForm(); } public onSelect(): void { this.searchCVs = []; this.selectedCV = new ErCV(); debugger; if (this.taggedSelection.length > 0) { this.taggedSelection.forEach(positionid => { this.searchCVs.push(this.searchItems.find(x => x.id === positionid)); }); } this.ItemSelected.emit(this.searchCVs); this.cvCount = this.searchCVs === undefined ? 0 : this.searchCVs.length; } private closeForm(): void { this.showPopUp = false; } private OpenForm(): void { //this.selectedEmployees = []; //this.selectedEmployee = new SearchEmployee(); //this.taggedSelection = []; this.showPopUp = true; } onClose() { } onSelectCv() { } }