Commit c3f8d252 by Muhammad Usman

work history completed

parent 765edf29
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
@media only screen and (max-width: 768px) { @media only screen and (max-width: 768px) {
.was-referred { .was-referred {
display: block; display: block !important;
} }
.mt-sm-top { .mt-sm-top {
......
...@@ -30,10 +30,12 @@ ...@@ -30,10 +30,12 @@
<div class="assessment-body-tabs mc-card career-builder"> <div class="assessment-body-tabs mc-card career-builder">
<p-tabView> <p-tabView>
<p-tabPanel header="1{{isMobileView ? '' : '. Personal Data'}}" [selected]="activeTab === 'personal-data'"> <p-tabPanel header="1{{isMobileView ? '' : '. Personal Data'}}" [selected]="activeTab === 'personal-data'">
<app-personal-details [asChildComponent]="true" (detailsSaved)="activeTab = 'work-history'"></app-personal-details> <app-personal-details [asChildComponent]="true" (detailsSaved)="activeTab = 'work-history'">
</app-personal-details>
</p-tabPanel> </p-tabPanel>
<p-tabPanel header="2{{isMobileView ? '' : '. Work History'}}" [selected]="activeTab === 'work-history'"> <p-tabPanel header="2{{isMobileView ? '' : '. Work History'}}" [selected]="activeTab === 'work-history'">
<app-work-history></app-work-history> <app-work-history (workSaved)="careerHistory()">
</app-work-history>
</p-tabPanel> </p-tabPanel>
<p-tabPanel header="3{{isMobileView ? '' : '. Education'}}" [selected]="activeTab === 'education'"> <p-tabPanel header="3{{isMobileView ? '' : '. Education'}}" [selected]="activeTab === 'education'">
<app-education></app-education> <app-education></app-education>
......
...@@ -33,4 +33,8 @@ export class CareerHistoryComponent extends BaseComponent implements OnInit { ...@@ -33,4 +33,8 @@ export class CareerHistoryComponent extends BaseComponent implements OnInit {
this.r.navigate(['/my-career-web/dashboard/home']); this.r.navigate(['/my-career-web/dashboard/home']);
} }
careerHistory(): void {
this.activeTab = 'education';
}
} }
...@@ -7,7 +7,8 @@ import { Component, OnInit } from '@angular/core'; ...@@ -7,7 +7,8 @@ import { Component, OnInit } from '@angular/core';
}) })
export class EducationComponent implements OnInit { export class EducationComponent implements OnInit {
constructor() { } constructor() {
}
ngOnInit() { ngOnInit() {
} }
......
<h4 class="tab-heading">Tell us about your most recent job</h4> <div class="position-relative">
<app-overlay [isActive]="isLoading"></app-overlay>
<div class="row" style="margin-top: 24px;"> <h4 class="tab-heading">Tell us about your most recent job</h4>
<div class="row" style="margin-top: 24px;" *ngIf="!careerProfile?.WorkExperiences[0]?.Employer && careerProfile?.WorkExperiences?.length <= 1">
<div class="col-md-12 form-group"> <div class="col-md-12 form-group">
<p-checkbox label="I don't have any work experience"></p-checkbox> <p-checkbox label="I don't have any work experience" [binary]="true" [(ngModel)]="careerProfile.NoWorkExperience">
</p-checkbox>
</div>
</div> </div>
</div>
<form #form="ngForm" *ngIf="!careerProfile.NoWorkExperience">
<div class="row experience-wrapper"> <div class="row experience-wrapper" *ngFor="let experience of careerProfile.WorkExperiences; let i = index;">
<div class="remove-record">
<i class="fa fa-remove" (click)="removeExperience(experience)"></i>
</div>
<div class="col-md-9"> <div class="col-md-9">
<div class="row"> <div class="row">
<div class="col-md-6 form-group"> <div class="col-md-6 form-group">
<label>Employer</label> <label>Employer</label>
<input type="text" class="form-control" placeholder="Employeer name" name="Skype"> <app-form-control>
<input type="text" class="form-control" placeholder="Employeer name" name="Employer{{i}}" [(ngModel)]="experience.Employer" required>
</app-form-control>
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
<div class="row"> <div class="row">
<div class="col-md-6 form-group"> <div class="col-md-6 form-group">
<label>Start</label> <label>Start</label>
<p-calendar></p-calendar> <app-form-control>
<p-calendar placeholder="MM/YYYY" dateFormat="mm/yy" view="month" [icon]="true" [(ngModel)]="experience.StartMonthField" required name="StartMonth{{i}}">
</p-calendar>
</app-form-control>
</div> </div>
<div class="col-md-6 form-group"> <div class="col-md-6 form-group" *ngIf="!experience.StillInRole">
<label>End</label> <label>End</label>
<p-calendar></p-calendar> <app-form-control>
<p-calendar placeholder="MM/YYYY" dateFormat="mm/yy" view="month" [icon]="true" [(ngModel)]="experience.EndMonthField" required name="EndMonth{{i}}">
</p-calendar>
</app-form-control>
</div> </div>
</div> </div>
</div> </div>
<div class="col-md-2 currently-work-checkbox"> <div class="col-md-2 currently-work-checkbox">
<p-checkbox label="I currently work here"></p-checkbox> <p-checkbox label="I currently work here" [binary]="true" [(ngModel)]="experience.StillInRole" name="StillInRole{{i}}">
</p-checkbox>
</div> </div>
</div> </div>
</div> </div>
...@@ -38,36 +56,52 @@ ...@@ -38,36 +56,52 @@
<div class="row"> <div class="row">
<div class="col-md-6 form-group"> <div class="col-md-6 form-group">
<label>Actual job title</label> <label>Actual job title</label>
<input type="text" class="form-control" placeholder="Actual Title" name="Skype"> <app-form-control>
<input type="text" class="form-control" placeholder="Actual Title" name="ActualJobTitle{{i}}" [(ngModel)]="experience.ActualJobTitle">
</app-form-control>
</div> </div>
<div class="col-md-6 form-group"> <div class="col-md-6 form-group">
<label>ILO job title</label> <label>ILO job title</label>
<input type="text" class="form-control" placeholder="ILO Title" name="Skype"> <app-form-control>
<p-autoComplete [suggestions]="jobTitles" name="ILOJobTitle{{i}}" [(ngModel)]="experience.ILOJobTitle" placeholder="ILO Job Title"
(completeMethod)="getJobTitles($event)" [forceSelection]="true" dataKey="ObjectID" field="JobTitle">
</p-autoComplete>
</app-form-control>
</div> </div>
</div> </div>
</div> </div>
<div class="col-md-6 form-group"> <div class="col-md-6 form-group">
<label>Reason for Leaving (OPTIONAL)</label> <label>Reason for Leaving (OPTIONAL)</label>
<textarea class="form-control"></textarea> <app-form-control>
<textarea class="form-control" [(ngModel)]="experience.ReasonForLeaving" name="ReasonForLeaving{{i}}"></textarea>
</app-form-control>
</div> </div>
<div class="col-md-6 form-group"> <div class="col-md-6 form-group">
<label>Duties and Responsibilities</label> <label>Duties and Responsibilities</label>
<textarea class="form-control"></textarea> <app-form-control>
<textarea class="form-control" [(ngModel)]="experience.JobRoleSummary" name="JobRoleSummary{{i}}"></textarea>
</app-form-control>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-md-12"> <div class="col-md-12">
<button pButton class="btn btn-info-outline add-more" label="Add Experience +"></button> <button pButton class="btn btn-info-outline add-more" label="Add Experience +" (click)="addWorkExperience()"></button>
</div>
</div> </div>
</div>
</form>
<div class="d-flex justify-content-center" style="margin-top: 48px;">
<button pButton label="Next Section" class="ui-button-info next-section"></button>
</div>
<div class="d-flex justify-content-center" style="margin-top: 48px;">
<button pButton label="Next Section" class="ui-button-info next-section" (click)="saveWorkHistory()" [disabled]="isSaving">
</button>
</div>
</div>
import { Component, OnInit } from '@angular/core'; import { Component, EventEmitter, OnInit, Output, ViewChild } from '@angular/core';
import { BaseComponent } from '../../../base/base.component';
import { takeUntil } from 'rxjs/operators';
import { CareerProfileModel } from '../../../models/career-profile.model';
import { PersonalDetailsService } from '../../../services/personal-details.service';
import { HelperService } from '../../../services/helper.service';
import { UtilsService } from '../../../../../oneit/services/utils.service';
import { WorkExperienceModel } from '../../../models/work-experience.model';
import { NgForm } from '@angular/forms';
import { ConfirmationService } from 'primeng/api';
@Component({ @Component({
selector: 'app-work-history', selector: 'app-work-history',
templateUrl: './work-history.component.html', templateUrl: './work-history.component.html',
styleUrls: ['./work-history.component.scss'] styleUrls: ['./work-history.component.scss']
}) })
export class WorkHistoryComponent implements OnInit { export class WorkHistoryComponent extends BaseComponent implements OnInit {
constructor() { } assocs = ['WorkExperiences.ILOJobTitle'];
careerProfile = new CareerProfileModel();
jobTitles = [];
@ViewChild('form') form: NgForm;
@Output() workSaved = new EventEmitter();
constructor(
private ps: PersonalDetailsService,
private us: UtilsService,
private cs: ConfirmationService,
private hs: HelperService
) {
super();
}
ngOnInit() { ngOnInit() {
this.getCareerProfile();
}
getCareerProfile(): void {
this.isLoading = true;
this.ps.getCareerProfile(this.assocs)
.pipe(takeUntil(this.componentInView))
.subscribe(response => {
this.isLoading = false;
this.careerProfile = response;
if (this.careerProfile.WorkExperiences) {
this.careerProfile.WorkExperiences.forEach(exp => {
exp.StartMonthField = UtilsService.convertStringToDate(exp.StartMonth);
exp.EndMonthField = UtilsService.convertStringToDate(exp.EndMonth);
})
}
this.us.addObjsToJSONByObjectID(this.updatedObjs, this.careerProfile.WorkExperiences);
this.addWorkExperience(true);
}, err => {
this.hs.handleHttpError(err);
this.isLoading = false;
})
}
addWorkExperience(initLoad = false): void {
const newModel = new WorkExperienceModel();
newModel.CareerProfile = this.careerProfile.ObjectID;
if (initLoad && (!this.careerProfile.WorkExperiences || this.careerProfile.WorkExperiences.length === 0)) {
this.us.addMultiRefObject(newModel, this.careerProfile, 'WorkExperiences', this.createdObjs);
} else if (!initLoad) {
this.us.addMultiRefObject(newModel, this.careerProfile, 'WorkExperiences', this.createdObjs);
}
}
getJobTitles($event): void {
this.ps.getJobTitles({JobTitle: $event.query})
.pipe(takeUntil(this.componentInView))
.subscribe(response => {
this.jobTitles = response.filter(r => r.JobTitle);
}, err => {
this.hs.handleHttpError(err);
})
}
removeExperience(exp): void {
this.cs.confirm({
message:'Are you sure you want to remove this experience?',
accept: () => {
this.us.removeMultiRefObject(exp, this.careerProfile, 'WorkExperiences', this.createdObjs, this.updatedObjs, this.deletedObjs);
}
})
}
saveWorkHistory(): void {
this.hs.validateAllFormFields(this.form);
if (this.form.invalid) {
return ;
}
this.careerProfile.WorkExperiences.forEach(exp => {
exp.StartMonth = UtilsService.convertDateToString(exp.StartMonthField);
exp.EndMonth = UtilsService.convertDateToString(exp.EndMonthField);
});
this.isSaving = true;
this.ps.saveProfile(this.createdObjs, this.updatedObjs, this.deletedObjs)
.pipe(takeUntil(this.componentInView))
.subscribe(res => {
this.isSaving = false;
this.hs.oneItHttpResponse(res);
this.workSaved.emit();
console.log('SENT');
}, err => {
this.hs.handleHttpError(err);
this.isSaving = false;
})
} }
} }
...@@ -19,6 +19,7 @@ export const CLASSES = { ...@@ -19,6 +19,7 @@ export const CLASSES = {
WORK_PREFERENCE_QUESTION: 'performa.orm.WorkPreferencesQuestionNP', WORK_PREFERENCE_QUESTION: 'performa.orm.WorkPreferencesQuestionNP',
DIVERSITY_QUESTION: 'performa.orm.DiversityQuestion', DIVERSITY_QUESTION: 'performa.orm.DiversityQuestion',
DIVERSITY_ANSWER: 'performa.orm.DiversityAnswer', DIVERSITY_ANSWER: 'performa.orm.DiversityAnswer',
WORK_EXPERIENCE: 'performa.orm.WorkExperience',
QUESTION: 'performa.orm.Question' QUESTION: 'performa.orm.Question'
}; };
......
<div class="my-career-app container-fluid" [@routeAnimations]="o.isActivated ? o.activatedRoute : ''"> <div class="my-career-app container-fluid" [@routeAnimations]="o.isActivated ? o.activatedRoute : ''">
<p-confirmDialog header="Confirmation"></p-confirmDialog>
<p-toast> <p-toast>
<ng-template let-message pTemplate="message"> <ng-template let-message pTemplate="message">
<div class="mc-toast-msg"> <div class="mc-toast-msg">
......
...@@ -24,6 +24,7 @@ import { CalendarModule } from 'primeng/calendar'; ...@@ -24,6 +24,7 @@ import { CalendarModule } from 'primeng/calendar';
import { FileUploadModule } from 'primeng/fileupload'; import { FileUploadModule } from 'primeng/fileupload';
import { SelectButtonModule } from 'primeng/selectbutton'; import { SelectButtonModule } from 'primeng/selectbutton';
import { PersonalDetailsComponent } from './personal-details/personal-details.component'; import { PersonalDetailsComponent } from './personal-details/personal-details.component';
import { ConfirmDialogModule } from 'primeng/confirmdialog';
const MODULES = [ const MODULES = [
ReactiveFormsModule, ReactiveFormsModule,
...@@ -41,7 +42,8 @@ const MODULES = [ ...@@ -41,7 +42,8 @@ const MODULES = [
TabViewModule, TabViewModule,
CalendarModule, CalendarModule,
FileUploadModule, FileUploadModule,
SelectButtonModule SelectButtonModule,
ConfirmDialogModule
]; ];
const COMPONENTS = [ const COMPONENTS = [
......
import { BaseModel } from './base.model'; import { BaseModel } from './base.model';
import { CandidateModel } from './candidate.model'; import { CandidateModel } from './candidate.model';
import { CLASSES } from '../config/constants'; import { CLASSES } from '../config/constants';
import { WorkExperienceModel } from './work-experience.model';
export class CareerProfileModel extends BaseModel { export class CareerProfileModel extends BaseModel {
ObjectClass = CLASSES.CAREER_PROFILE; ObjectClass = CLASSES.CAREER_PROFILE;
...@@ -13,4 +14,6 @@ export class CareerProfileModel extends BaseModel { ...@@ -13,4 +14,6 @@ export class CareerProfileModel extends BaseModel {
Achievements: string; Achievements: string;
IsGoogleConnected: boolean; IsGoogleConnected: boolean;
IsLinkedInConnected: boolean; IsLinkedInConnected: boolean;
WorkExperiences: WorkExperienceModel[] = [];
NoWorkExperience: boolean;
} }
import { CLASSES } from '../config/constants';
import { BaseModel } from './base.model';
export class WorkExperienceModel extends BaseModel {
ObjectClass = CLASSES.WORK_EXPERIENCE;
Employer: string;
StartMonth: string;
StartMonthField: Date;
EndMonth: string;
EndMonthField: Date;
StillInRole: boolean;
ActualJobTitle: boolean;
ReasonForLeaving: boolean;
JobRoleSummary: boolean;
ILOJobTitle: any;
CareerProfile: string;
}
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