This commit is contained in:
dineshkumarkannan 2018-12-27 10:24:24 +05:30
commit 755a493b96
2 changed files with 162 additions and 83 deletions

View File

@ -31,54 +31,67 @@
</mat-card-header>
<mat-card-content formArrayName="applicant_relation">
<div fxLayout="row wrap">
<div fxFlex.xs="100" fxFlex.sm="100" fxFlex.md="50" fxFlex.lg="50" fxFlex.xl="50" *ngFor="let relation of _generalForm.controls.applicant_relation['controls']; let r = index;" [formGroupName]="r">
<div fxFlex.xs="100" fxFlex.sm="100" fxFlex.md="100" fxFlex.lg="100" fxFlex.xl="100" *ngFor="let relation of _generalForm.controls.applicant_relation['controls']; let r = index;" [formGroupName]="r">
<mat-card >
<mat-card-header>
<mat-card-title>{{relation.controls.applicant_name.value | titlecase}}</mat-card-title>
</mat-card-header>
<mat-card-content>
<mat-form-field style="width: 50%" *ngIf="relation.controls.company_name.value">
<input matInput placeholder="Company / Firm" formControlName="company_name" [readonly]="true" type="text">
</mat-form-field>
<mat-form-field style="width: 40%" *ngIf="relation.controls.company_name.value">
<mat-select placeholder="Relation" formControlName="company_relationship">
<mat-option>Select</mat-option>
<mat-option *ngFor="let comrelShip of companyRelationShipList" [value]="comrelShip.company_relationship_id">
{{comrelShip.name | titlecase}}
</mat-option>
</mat-select>
</mat-form-field>
<mat-form-field style="width: 50%">
<mat-select placeholder="Relation to" formControlName="applicant_relation_to">
<mat-option>Select</mat-option>
<mat-option *ngFor="let rel of fetch_related_details" [value]="rel">
<!-- [disabled]="relation.controls.applicant_name.value == rel" -->
{{rel | titlecase}}
</mat-option>
</mat-select>
<!-- <input matInput placeholder="Relation to" formControlName="applicant_relation_to" type="text"> -->
</mat-form-field>
<mat-form-field style="width: 40%" *ngIf="relation.controls.applicant_relation_to.value">
<mat-select placeholder="Relation" formControlName="relationship">
<mat-option>Select</mat-option>
<mat-option *ngFor="let relShip of relationShipList" [value]="relShip.relationship_id">
{{relShip.name | titlecase}}
</mat-option>
</mat-select>
</mat-form-field>
<div align="end" *ngIf="relation.controls.pd_co_applicant_id.value==0">
<button type="button" class="mr-1 mb-1 hover-icon" mat-raised-button mat-icon-button (click)="removeOthers(r,relation.value)"
matTooltip="Delete" matTooltipPosition="above">
<mat-icon>delete</mat-icon>
</button>
<div formArrayName="multiple_relation">
<div *ngFor="let mulRel of relation.get('multiple_relation').controls; let m = index" [formGroupName]="m">
<div fxLayout="row nowrap">
<mat-form-field style="width: 45%">
<mat-select placeholder="Relation to" formControlName="applicant_relation_to">
<mat-option>Select</mat-option>
<mat-option *ngFor="let rel of fetch_related_details" [value]="rel">
<!-- [disabled]="relation.controls.applicant_name.value == rel" -->
{{rel | titlecase}}
</mat-option>
</mat-select>
</mat-form-field>
<mat-form-field style="width: 40%">
<mat-select placeholder="Relation" formControlName="relationship">
<mat-option>Select</mat-option>
<mat-option *ngFor="let relShip of relationShipList" [value]="relShip.relationship_id">
{{relShip.name | titlecase}}
</mat-option>
</mat-select>
</mat-form-field>
<button mat-raised-button mat-icon-button class="mr-1 mb-1 hover-icon" type="button" matTooltip="Add More Relation" matTooltipPosition="above" color="primary" (click)="addMoreRelation(r,m)" *ngIf="m==0"><mat-icon>add</mat-icon></button>
<button type="button" class="mr-1 mb-1 hover-icon" mat-raised-button mat-icon-button (click)="removeRelation(r,m)" *ngIf="m>0"
matTooltip="Remove Relation" matTooltipPosition="above">
<mat-icon>delete</mat-icon>
</button>
</div>
<div formArrayName="multiple_company_relation">
<div fxLayout="row nowrap" *ngFor="let comRel of mulRel.get('multiple_company_relation').controls; let c = index" [formGroupName]="c">
<mat-form-field style="width: 40%">
<input matInput placeholder="Company / Firm" formControlName="company_name" type="text">
</mat-form-field>
<mat-form-field style="width: 30%">
<mat-select placeholder="Relation" formControlName="company_relationship">
<mat-option>Select</mat-option>
<mat-option *ngFor="let comrelShip of companyRelationShipList" [value]="comrelShip.company_relationship_id">
{{comrelShip.name | titlecase}}
</mat-option>
</mat-select>
</mat-form-field>
<button mat-raised-button mat-icon-button class="mr-1 mb-1 hover-icon" type="button" matTooltip="Add More Company" matTooltipPosition="above" color="primary" (click)="addMoreCompanyRelation(r,m,c)" *ngIf="c==0"><mat-icon>add</mat-icon></button>
<button type="button" class="mr-1 mb-1 hover-icon" mat-raised-button mat-icon-button (click)="removeCompanyRelation(r,m,c)" *ngIf="c>0"
matTooltip="Remove Company" matTooltipPosition="above">
<mat-icon>delete</mat-icon>
</button>
</div>
</div>
</div>
</div>
</mat-card-content>
<mat-card-actions align="end" *ngIf="relation.controls.pd_co_applicant_id.value==0">
<button type="button" class="mr-1 mb-1 hover-icon" mat-raised-button mat-icon-button (click)="removeOthers(r,relation.value)"
matTooltip="Delete" matTooltipPosition="above">
<mat-icon>delete</mat-icon>
</button>
</mat-card-actions>
</mat-card>
</div>

View File

@ -112,16 +112,54 @@ export class GeneralInfoComponent implements OnInit {
}
if(exist_applicant_relation.length > 0){
exist_applicant_relation.forEach(val => {
relationControl.push(this.createApplicantRelation(val));
exist_applicant_relation.forEach((val,key) => {
let control: any = this._generalForm.get('applicant_relation') as FormArray;
control.push(this.createApplicantRelation(val));
control = control.controls[key].get('multiple_relation') as FormArray;
val.multiple_relation.forEach((firstInnerelement,firstInnerKey) => {
control.push(this.createMultipleRelation(firstInnerelement));
let innerControl = this._generalForm.get('applicant_relation') as FormArray;
innerControl = innerControl.controls[key].get('multiple_relation') as FormArray;
innerControl = innerControl.controls[firstInnerKey].get('multiple_company_relation') as FormArray;
firstInnerelement.multiple_company_relation.forEach((secondInnerValue,secondInnerKey) => {
innerControl.push(this.createMultipleCompanyRelation(secondInnerValue))
});
});
//push related to details
this.fetch_related_details.push(val.applicant_name);
this.fetch_related_details.push(val.applicant_name);
});
}
}, error => this.errorMessage = <any> error);
}
// check and uncheck function
checkboxChange(event, index, item) {
if(item.exist_status.value){
let relationControl: any = <FormArray>this._generalForm.controls['applicant_relation'];
let applicant_details: any= {'pd_co_applicant_id':item.pd_co_applicant_id.value,'applicant_name':item.applicant_name.value,'applicant_relation_to':'','relation':'','company_name':item.company_name.value,'company_relation':''};
relationControl.push(this.createApplicantRelation(applicant_details));
relationControl = <FormArray> relationControl.controls[relationControl.controls.length-1].get('multiple_relation');
relationControl.push(this.createMultipleRelation(applicant_details))
relationControl = <FormArray> relationControl.controls[relationControl.controls.length-1].get('multiple_company_relation');
relationControl.push(this.createMultipleCompanyRelation(applicant_details))
// to push selected persons names
this.fetch_related_details.push(item.applicant_name.value);
}
else {
if(item.pd_co_applicant_id.value!=0){
let relationControl = <FormArray>this._generalForm.controls['applicant_relation'];
let pos_id = relationControl.value.map(e=> e.pd_co_applicant_id).indexOf(item.pd_co_applicant_id.value);
relationControl.removeAt(pos_id);
// remove related to details
let pos_name=this.fetch_related_details.indexOf(item.applicant_name.value);
this.fetch_related_details.splice(pos_name, 1);
}
}
}
// create applicant form array
createApplicant(elementValue:any){
return this._fb.group({
@ -137,34 +175,59 @@ export class GeneralInfoComponent implements OnInit {
return this._fb.group({
pd_co_applicant_id: [elementValue.pd_co_applicant_id],
applicant_name: [elementValue.applicant_name],
company_name: [elementValue.company_name,elementValue.company_name ? Validators.required : Validators.nullValidator],
company_relationship: [elementValue.company_relationship],
applicant_relation_to: [elementValue.applicant_relation_to, Validators.required],
relationship: [elementValue.relationship],
multiple_relation: this._fb.array([]),
});
}
// checkand un check function
checkboxChange(event, index, item) {
if(item.exist_status.value){
let relationControl = <FormArray>this._generalForm.controls['applicant_relation'];
let applicant_details: any= {'pd_co_applicant_id':item.pd_co_applicant_id.value,'applicant_name':item.applicant_name.value,'applicant_relation_to':'','relation':'','company_name':item.company_name.value,'company_relation':''};
relationControl.push(this.createApplicantRelation(applicant_details));
// push related to details
this.fetch_related_details.push(item.applicant_name.value);
}
else {
if(item.pd_co_applicant_id.value!=0){
let relationControl = <FormArray>this._generalForm.controls['applicant_relation'];
let pos_id = relationControl.value.map(e=> e.pd_co_applicant_id).indexOf(item.pd_co_applicant_id.value);
relationControl.removeAt(pos_id);
// remove related to details
let pos_name=this.fetch_related_details.indexOf(item.applicant_name.value);
this.fetch_related_details.splice(pos_name, 1);
}
// create multiple relation details
createMultipleRelation(elementValue: any) {
return this._fb.group({
applicant_relation_to: [elementValue.applicant_relation_to, Validators.required],
relationship: [elementValue.relationship],
multiple_company_relation : this._fb.array([]),
});
}
// add more relation
addMoreRelation(rindex,mindex) {
let control: any = this._generalForm.get('applicant_relation') as FormArray;
control = control.controls[rindex].get('multiple_relation') as FormArray;
let setValues: any = {applicant_relation_to :'',relationship:''}
control.push(this.createMultipleRelation(setValues))
let setCompanyValue = {company_name :'',company_relationship:''};
control = <FormArray> control.controls[control.controls.length-1].get('multiple_company_relation');
control.push(this.createMultipleCompanyRelation(setCompanyValue))
}
// remove relation
removeRelation(rindex,mindex) {
let control: any = this._generalForm.get('applicant_relation') as FormArray;
control = control.controls[rindex].get('multiple_relation') as FormArray;
control.removeAt(mindex);
}
// create multiple company relation
createMultipleCompanyRelation(elementValue: any) {
return this._fb.group({
company_name: [elementValue.company_name,elementValue.company_name ? Validators.required : Validators.nullValidator],
company_relationship: [elementValue.company_relationship],
});
}
// add more company relation
addMoreCompanyRelation(rindex,mindex,cindex) {
let control: any = this._generalForm.get('applicant_relation') as FormArray;
control = control.controls[rindex].get('multiple_relation') as FormArray;
control = control.controls[mindex].get('multiple_company_relation') as FormArray;
let setValues: any = {company_name :'',company_relationship:''}
control.push(this.createMultipleCompanyRelation(setValues))
}
// remove company relation
removeCompanyRelation(rindex,mindex,cindex) {
let control: any = this._generalForm.get('applicant_relation') as FormArray;
control = control.controls[rindex].get('multiple_relation') as FormArray;
control = control.controls[mindex].get('multiple_company_relation') as FormArray;
control.removeAt(cindex);
}
}
// add more applicant details
addOtherApplicant() {
@ -176,10 +239,14 @@ export class GeneralInfoComponent implements OnInit {
dialogRef.afterClosed()
.subscribe(dataresult => {
if(dataresult.data.length>0){
let relationControl = <FormArray>this._generalForm.controls['applicant_relation'];
dataresult.data.forEach(element => {
let applicant_details: any= {'pd_co_applicant_id':element.pd_co_applicant_id,'applicant_name':element.applicant_name,'applicant_relation_to':'','relation':'','company_name':element.company_name,'company_relation':''};
let relationControl = <FormArray>this._generalForm.controls['applicant_relation'];
let applicant_details: any= {'pd_co_applicant_id':element.pd_co_applicant_id,'applicant_name':element.applicant_name,'applicant_relation_to':'','relation':'','company_name':element.company_name,'company_relation':''};
relationControl.push(this.createApplicantRelation(applicant_details));
relationControl = <FormArray> relationControl.controls[relationControl.controls.length-1].get('multiple_relation');
relationControl.push(this.createMultipleRelation(applicant_details))
relationControl = <FormArray> relationControl.controls[relationControl.controls.length-1].get('multiple_company_relation');
relationControl.push(this.createMultipleCompanyRelation(applicant_details))
// push related to details
this.fetch_related_details.push(element.applicant_name);
});
@ -192,7 +259,6 @@ export class GeneralInfoComponent implements OnInit {
// remove other details
removeOthers(index, item: any){
console.log(item)
if(item.pd_co_applicant_id==0){
let relationControl = <FormArray>this._generalForm.controls['applicant_relation'];
relationControl.removeAt(index);
@ -226,22 +292,22 @@ export class GeneralInfoComponent implements OnInit {
}
});
// this is for selected applicant relation
formData.applicant_relation.forEach((element,key) => {
applicantRelationList.push({
"pd_co_applicant_id":element.pd_co_applicant_id,
"applicant_name":element.applicant_name,
"company_name":element.company_name,
"company_relationship":element.company_relationship,
"applicant_relation_to":element.applicant_relation_to,
"relationship":element.relationship,
})
});
// formData.applicant_relation.forEach((element,key) => {
// applicantRelationList.push({
// "pd_co_applicant_id":element.pd_co_applicant_id,
// "applicant_name":element.applicant_name,
// "company_name":element.company_name,
// "company_relationship":element.company_relationship,
// "applicant_relation_to":element.applicant_relation_to,
// "relationship":element.relationship,
// })
// });
saveRecords.pdid=formData.pdid;
saveRecords.formid=formData.formid;
saveRecords.general_remark=formData.general_remark;
saveRecords.selected_applicant=applicantList;
saveRecords.applicant_relation=applicantRelationList;
saveRecords.applicant_relation=formData.applicant_relation;
this._pd.savePDFormDetailsWithID(saveRecords).subscribe(
dataresult => {
if (dataresult.status == 200) {