Commit 09826c32 by Muhammad Usman

intro letters completed

parent b2f5f2ca
...@@ -27,7 +27,9 @@ export const CLASSES = { ...@@ -27,7 +27,9 @@ export const CLASSES = {
SKILL: 'performa.orm.Skill', SKILL: 'performa.orm.Skill',
REFEREE: 'performa.orm.Referee', REFEREE: 'performa.orm.Referee',
CandidateTemplate: 'performa.orm.CandidateTemplate', CandidateTemplate: 'performa.orm.CandidateTemplate',
INTRO: 'performa.orm.IntroductionLetter' INTRO: 'performa.orm.IntroductionLetter',
ILWorkExperience: 'performa.orm.ILWorkExperience',
ILSkill: 'performa.orm.ILSkill',
}; };
export const SERVICES = { export const SERVICES = {
......
...@@ -45,13 +45,13 @@ ...@@ -45,13 +45,13 @@
<app-overlay [isActive]="isLoadingSkillAndExp"></app-overlay> <app-overlay [isActive]="isLoadingSkillAndExp"></app-overlay>
<div class="col-md-6 mc-exp-table"> <div class="col-md-6 mc-exp-table">
<h5>Work Experience</h5> <h5>Work Experience</h5>
<p-table [columns]="[]" [value]="careerProfile.WorkExperiences" [reorderableColumns]="true"> <p-table [columns]="[]" [value]="introductionLetter.WorkExperiences" [reorderableColumns]="true">
<ng-template pTemplate="body" let-rowData let-columns="columns" let-index="rowIndex"> <ng-template pTemplate="body" let-ILWorkExperience let-columns="columns" let-index="rowIndex">
<tr [pReorderableRow]="index"> <tr [pReorderableRow]="index">
<td> <td>
<div class="exp-row"> <div class="exp-row">
<i class="fa fa-bars" pReorderableRowHandle></i> <i class="fa fa-bars" pReorderableRowHandle></i>
<p-checkbox [value]="rowData.ObjectID" [(ngModel)]="introductionLetter.WorkExperiences" name="EXP{{index}}" [label]="rowData?.ActualJobTitle + ' - ' + rowData?.Employer"></p-checkbox> <p-checkbox [binary]="true" [(ngModel)]="ILWorkExperience.IsSelected" name="EXP{{index}}" [label]="ILWorkExperience?.WorkExperience?.ActualJobTitle + ' - ' + ILWorkExperience?.WorkExperience?.Employer"></p-checkbox>
</div> </div>
</td> </td>
</tr> </tr>
...@@ -61,13 +61,13 @@ ...@@ -61,13 +61,13 @@
<div class="col-md-6 mc-skill-table"> <div class="col-md-6 mc-skill-table">
<h5>Skills</h5> <h5>Skills</h5>
<p-table [columns]="[]" [value]="careerProfile.Skills" [reorderableColumns]="true"> <p-table [columns]="[]" [value]="introductionLetter.Skills" [reorderableColumns]="true">
<ng-template pTemplate="body" let-rowData let-columns="columns" let-index="rowIndex"> <ng-template pTemplate="body" let-ILSkill let-columns="columns" let-index="rowIndex">
<tr [pReorderableRow]="index"> <tr [pReorderableRow]="index">
<td> <td>
<div class="skill-row"> <div class="skill-row">
<i class="fa fa-bars" pReorderableRowHandle></i> <i class="fa fa-bars" pReorderableRowHandle></i>
<p-checkbox [value]="rowData.ObjectID" [(ngModel)]="introductionLetter.Skills" name="SKILLS{{index}}" [label]="rowData?.Skill?.Description"></p-checkbox> <p-checkbox [binary]="true" [(ngModel)]="ILSkill.IsSelected" name="SKILLS{{index}}" [label]="ILSkill?.Skill?.Description"></p-checkbox>
</div> </div>
</td> </td>
</tr> </tr>
......
...@@ -9,6 +9,8 @@ import { CareerProfileModel } from '../../models/career-profile.model'; ...@@ -9,6 +9,8 @@ import { CareerProfileModel } from '../../models/career-profile.model';
import { IntroLetterService } from '../../services/intro-letter.service'; import { IntroLetterService } from '../../services/intro-letter.service';
import { NgForm } from '@angular/forms'; import { NgForm } from '@angular/forms';
import { HelperService } from '../../services/helper.service'; import { HelperService } from '../../services/helper.service';
import { ILWorkExperienceModel } from '../../models/il-work-experience.model';
import { ILSkillModel } from '../../models/il-skill.model';
@Component({ @Component({
selector: 'app-intro-letter', selector: 'app-intro-letter',
...@@ -50,7 +52,7 @@ export class IntroLetterComponent extends BaseComponent implements OnInit { ...@@ -50,7 +52,7 @@ export class IntroLetterComponent extends BaseComponent implements OnInit {
getCareerProfile(): void { getCareerProfile(): void {
this.isLoadingSkillAndExp = true; this.isLoadingSkillAndExp = true;
const assocs = ['WorkExperiences', 'WorkExperiences.WorkExperiences', 'Skills.Skill']; const assocs = ['WorkExperiences', 'WorkExperiences', 'Skills.Skill'];
this.personalDetailsService.getCareerProfile(assocs) this.personalDetailsService.getCareerProfile(assocs)
.pipe(takeUntil(this.componentInView)) .pipe(takeUntil(this.componentInView))
.subscribe(response => { .subscribe(response => {
...@@ -60,8 +62,8 @@ export class IntroLetterComponent extends BaseComponent implements OnInit { ...@@ -60,8 +62,8 @@ export class IntroLetterComponent extends BaseComponent implements OnInit {
this.introductionLetter = new IntroductionLetterModel(); this.introductionLetter = new IntroductionLetterModel();
this.introductionLetter.Candidate = this.careerProfile.Candidate; this.introductionLetter.Candidate = this.careerProfile.Candidate;
this.utilsService.createObject(this.introductionLetter, this.createdObjs); this.utilsService.createObject(this.introductionLetter, this.createdObjs);
this.initialProcessing();
} }
console.log(this.careerProfile);
}, err => { }, err => {
this.isLoadingSkillAndExp = false; this.isLoadingSkillAndExp = false;
this.utilsService.handleError(err); this.utilsService.handleError(err);
...@@ -70,7 +72,7 @@ export class IntroLetterComponent extends BaseComponent implements OnInit { ...@@ -70,7 +72,7 @@ export class IntroLetterComponent extends BaseComponent implements OnInit {
getIntroLetter(): void { getIntroLetter(): void {
this.isLoading = true; this.isLoading = true;
this.introLetterService.getIntroLetter(this.introLetterId) this.introLetterService.getIntroLetter(this.introLetterId, ['WorkExperiences.WorkExperience', 'Skills.Skill'])
.pipe(takeUntil(this.componentInView)) .pipe(takeUntil(this.componentInView))
.subscribe(response => { .subscribe(response => {
this.isLoading = false; this.isLoading = false;
...@@ -82,10 +84,37 @@ export class IntroLetterComponent extends BaseComponent implements OnInit { ...@@ -82,10 +84,37 @@ export class IntroLetterComponent extends BaseComponent implements OnInit {
}) })
} }
initialProcessing(): void {
this.careerProfile.WorkExperiences.forEach((w, i) => {
const ilWorkExperience = new ILWorkExperienceModel();
ilWorkExperience.IntroductionLetter = this.introductionLetter.ObjectID;
ilWorkExperience.WorkExperience = w;
ilWorkExperience.SortOrder = i;
this.utilsService.addMultiRefObject(ilWorkExperience, this.introductionLetter, 'WorkExperiences', this.createdObjs);
});
this.careerProfile.Skills.forEach((s, i) => {
const ilSkillModel = new ILSkillModel();
ilSkillModel.IntroductionLetter = this.introductionLetter.ObjectID;
ilSkillModel.Skill = s.Skill;
ilSkillModel.SortOrder = i;
this.utilsService.addMultiRefObject(ilSkillModel, this.introductionLetter, 'Skills', this.createdObjs);
});
}
saveIntroLetter(): void { saveIntroLetter(): void {
if (this.form.invalid) { if (this.form.invalid) {
return this.helperService.validateAllFormFields(this.form); return this.helperService.validateAllFormFields(this.form);
} }
if (this.introductionLetter.WorkExperiences) {
this.introductionLetter.WorkExperiences.forEach((w, i) => {
w.SortOrder = i;
});
}
if (this.introductionLetter.Skills) {
this.introductionLetter.Skills.forEach((s, i) => {
s.SortOrder = i;
});
}
this.isLoading = true; this.isLoading = true;
this.introLetterService.saveIntroLetters(this.createdObjs, this.updatedObjs, this.deletedObjs) this.introLetterService.saveIntroLetters(this.createdObjs, this.updatedObjs, this.deletedObjs)
.pipe(takeUntil(this.componentInView)) .pipe(takeUntil(this.componentInView))
......
...@@ -7,6 +7,7 @@ export class CareerSkillModel extends BaseModel { ...@@ -7,6 +7,7 @@ export class CareerSkillModel extends BaseModel {
SkillRating: string; SkillRating: string;
Skill: SkillModel; Skill: SkillModel;
CareerProfile?: string; CareerProfile?: string;
Selected: boolean;
} }
......
import { BaseModel } from './base.model';
import { CLASSES } from '../config/constants';
export class ILSkillModel extends BaseModel {
ObjectClass = CLASSES.ILSkill;
SortOrder: number;
IsSelected: boolean;
Skill: any;
IntroductionLetter: any;
}
import { BaseModel } from './base.model';
import { CLASSES } from '../config/constants';
export class ILWorkExperienceModel extends BaseModel {
ObjectClass = CLASSES.ILWorkExperience;
SortOrder: number;
IsSelected: boolean;
WorkExperience: any;
IntroductionLetter: any;
}
import { BaseModel } from './base.model'; import { BaseModel } from './base.model';
import { CLASSES } from '../config/constants'; import { CLASSES } from '../config/constants';
import { ILWorkExperienceModel } from './il-work-experience.model';
import { ILSkillModel } from './il-skill.model';
export class IntroductionLetterModel extends BaseModel { export class IntroductionLetterModel extends BaseModel {
ObjectClass = CLASSES.INTRO; ObjectClass = CLASSES.INTRO;
...@@ -8,6 +10,6 @@ export class IntroductionLetterModel extends BaseModel { ...@@ -8,6 +10,6 @@ export class IntroductionLetterModel extends BaseModel {
Employer: string; Employer: string;
ContactName: string; ContactName: string;
Candidate: any; Candidate: any;
Skills: any[]; Skills: ILSkillModel[];
WorkExperiences: any[]; WorkExperiences: ILWorkExperienceModel[];
} }
...@@ -14,4 +14,5 @@ export class WorkExperienceModel extends BaseModel { ...@@ -14,4 +14,5 @@ export class WorkExperienceModel extends BaseModel {
JobRoleSummary: boolean; JobRoleSummary: boolean;
ILOJobTitle: any; ILOJobTitle: any;
CareerProfile: string; CareerProfile: string;
Selected: boolean;
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment