From 6f0886ec7622810193b63b80e8d8eceb398a326b Mon Sep 17 00:00:00 2001 From: "venbatechnologies@gmail.com" Date: Wed, 30 Dec 2020 16:32:36 +0530 Subject: [PATCH] Fairoj : sales pd product config in user reg and smart pd field visit ques added --- .../qc-list/qc-view/qc-view.component.html | 18 +++- .../qc-list/qc-view/qc-view.component.ts | 86 +++++++++++++++++++ .../speed-dial-fab.animations.ts | 52 +++++++++++ .../speed-dial-fab.component.html | 26 ++++++ .../speed-dial-fab.component.scss | 50 +++++++++++ .../speed-dial-fab.component.spec.ts | 25 ++++++ .../speed-dial-fab.component.ts | 42 +++++++++ .../app/quality-check/quality-check.module.ts | 3 +- .../src/app/settings/service/user.service.ts | 8 +- .../users/register/register.component.html | 13 +++ .../users/register/register.component.ts | 54 +++++++++--- .../decision-dialog.component.html | 14 +++ .../decision-dialog.component.scss | 0 .../decision-dialog.component.spec.ts | 25 ++++++ .../decision-dialog.component.ts | 20 +++++ ng6-seed/src/app/shared/shared.module.ts | 16 ++-- 16 files changed, 427 insertions(+), 25 deletions(-) create mode 100644 ng6-seed/src/app/quality-check/qc-list/qc-view/speed-dial-fab/speed-dial-fab.animations.ts create mode 100644 ng6-seed/src/app/quality-check/qc-list/qc-view/speed-dial-fab/speed-dial-fab.component.html create mode 100644 ng6-seed/src/app/quality-check/qc-list/qc-view/speed-dial-fab/speed-dial-fab.component.scss create mode 100644 ng6-seed/src/app/quality-check/qc-list/qc-view/speed-dial-fab/speed-dial-fab.component.spec.ts create mode 100644 ng6-seed/src/app/quality-check/qc-list/qc-view/speed-dial-fab/speed-dial-fab.component.ts create mode 100644 ng6-seed/src/app/shared/decision-dialog/decision-dialog.component.html create mode 100644 ng6-seed/src/app/shared/decision-dialog/decision-dialog.component.scss create mode 100644 ng6-seed/src/app/shared/decision-dialog/decision-dialog.component.spec.ts create mode 100644 ng6-seed/src/app/shared/decision-dialog/decision-dialog.component.ts diff --git a/ng6-seed/src/app/quality-check/qc-list/qc-view/qc-view.component.html b/ng6-seed/src/app/quality-check/qc-list/qc-view/qc-view.component.html index 2cf4abd42..a5a2c2653 100755 --- a/ng6-seed/src/app/quality-check/qc-list/qc-view/qc-view.component.html +++ b/ng6-seed/src/app/quality-check/qc-list/qc-view/qc-view.component.html @@ -130,13 +130,23 @@
-
-
+
+ +
+ +
+ +
+ - + --> +
+ +
+
+ \ No newline at end of file diff --git a/ng6-seed/src/app/quality-check/qc-list/qc-view/speed-dial-fab/speed-dial-fab.component.scss b/ng6-seed/src/app/quality-check/qc-list/qc-view/speed-dial-fab/speed-dial-fab.component.scss new file mode 100644 index 000000000..729e995bb --- /dev/null +++ b/ng6-seed/src/app/quality-check/qc-list/qc-view/speed-dial-fab/speed-dial-fab.component.scss @@ -0,0 +1,50 @@ +.fab-container { + position: absolute; + // top: 1%; + // right: 35%; + z-index: 100; + display: flex; + flex-direction: column; + align-items: center; + + > div { + display: flex; + flex-direction: row; + align-items: center; + // margin-top: 5px; + // margin-top: 5px; + position: absolute; + right: 67px; + // top: -13px; + + button { + // margin-top: 17px; + background: #cfdd49; + margin-left:10px; + } + } + } + @media(max-width:580px) { + .fab-container { + > div { + flex-direction: column !important; + right: 0px; + top: 53px; + } + } + } + + .fab-toggler { + float: right; + z-index: 100; + } + + #fab-dismiss { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 99; + } + \ No newline at end of file diff --git a/ng6-seed/src/app/quality-check/qc-list/qc-view/speed-dial-fab/speed-dial-fab.component.spec.ts b/ng6-seed/src/app/quality-check/qc-list/qc-view/speed-dial-fab/speed-dial-fab.component.spec.ts new file mode 100644 index 000000000..323c57739 --- /dev/null +++ b/ng6-seed/src/app/quality-check/qc-list/qc-view/speed-dial-fab/speed-dial-fab.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SpeedDialFabComponent } from './speed-dial-fab.component'; + +describe('SpeedDialFabComponent', () => { + let component: SpeedDialFabComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ SpeedDialFabComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SpeedDialFabComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/ng6-seed/src/app/quality-check/qc-list/qc-view/speed-dial-fab/speed-dial-fab.component.ts b/ng6-seed/src/app/quality-check/qc-list/qc-view/speed-dial-fab/speed-dial-fab.component.ts new file mode 100644 index 000000000..b478e8ab0 --- /dev/null +++ b/ng6-seed/src/app/quality-check/qc-list/qc-view/speed-dial-fab/speed-dial-fab.component.ts @@ -0,0 +1,42 @@ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; +import { speedDialFabAnimations } from './speed-dial-fab.animations'; + +@Component({ + selector: 'app-speed-dial-fab', + templateUrl: './speed-dial-fab.component.html', + styleUrls: ['./speed-dial-fab.component.scss'], + animations: speedDialFabAnimations +}) +export class SpeedDialFabComponent implements OnInit { + + @Input() options; + @Output() fabClick = new EventEmitter() + buttons = []; + fabTogglerState = 'inactive'; + + constructor() { } + + ngOnInit() { + const maxButtons = 6; + if (this.options.buttons.length > maxButtons) { + this.options.buttons.splice(5, this.options.buttons.length - maxButtons); + } + } + + showItems() { + this.fabTogglerState = 'active'; + this.buttons = this.options.buttons; + } + + hideItems() { + this.fabTogglerState = 'inactive'; + this.buttons = []; + } + + onToggleFab() { + this.buttons.length ? this.hideItems() : this.showItems(); + } + onBtnClick(btnValue) { + this.fabClick.emit(btnValue) + } +} diff --git a/ng6-seed/src/app/quality-check/quality-check.module.ts b/ng6-seed/src/app/quality-check/quality-check.module.ts index a9bae7843..ff44bf00b 100755 --- a/ng6-seed/src/app/quality-check/quality-check.module.ts +++ b/ng6-seed/src/app/quality-check/quality-check.module.ts @@ -109,6 +109,7 @@ import { QcCusImagesComponent } from './qc-cus-images/qc-cus-images.component'; import { PdVisitTimeComponent } from './qc-list/pd-visit-time/pd-visit-time.component'; import { UploadVideoComponent } from './upload-video/upload-video.component' import { MatVideoModule } from 'mat-video'; +import { SpeedDialFabComponent } from './qc-list/qc-view/speed-dial-fab/speed-dial-fab.component'; // import { PdfViewerModule } from 'ng2-pdf-viewer'; @@ -184,7 +185,7 @@ const customNotifierOptions: NotifierOptions = { AngularSplitModule.forRoot(), MatVideoModule ], - declarations: [QualityCheckComponent,QcListComponent, QcViewComponent, QcStartComponent, QcPdReportComponent,DialogChangeCurrentVenrsion, QcReviewComponent, ModelEditPdReportComponent, NumberToWordsPipe, QcNewComponent, QcCusImagesComponent, PdVisitTimeComponent, UploadVideoComponent], + declarations: [QualityCheckComponent,QcListComponent, QcViewComponent, QcStartComponent, QcPdReportComponent,DialogChangeCurrentVenrsion, QcReviewComponent, ModelEditPdReportComponent, NumberToWordsPipe, QcNewComponent, QcCusImagesComponent, PdVisitTimeComponent, UploadVideoComponent,SpeedDialFabComponent], entryComponents: [PdVisitTimeComponent,PdAllocationComponent, SmartPdAllocationComponent, SchedulePdComponent, EditPdApplicantComponent, EditPdMasterComponent,DialogChangeCurrentVenrsion, QcReviewComponent, ModelEditPdReportComponent, InitiateAdditionalPdComponent,QcNewComponent, BusinessAssetsInfoComponent, ClientInfoComponent, diff --git a/ng6-seed/src/app/settings/service/user.service.ts b/ng6-seed/src/app/settings/service/user.service.ts index 7615285e7..291695c4b 100755 --- a/ng6-seed/src/app/settings/service/user.service.ts +++ b/ng6-seed/src/app/settings/service/user.service.ts @@ -108,7 +108,7 @@ export class UserService { let data: any = ''; if (cognitousers != '' && cognitousers !== undefined) { - //console.log(users); + // console.log(users); let aws_name :any; let updateby:any; let createdby:any; @@ -188,6 +188,9 @@ export class UserService { }; //console.log(roles); formData.append('records',JSON.stringify(records)); + if(users.hasOwnProperty('user_config') && users.user_config) { + formData.append('user_config',JSON.stringify(users.user_config)); + } formData.append('roles',JSON.stringify(({ "user_role": users.role.role_id}))); formData.append('profilepic',users.userpic); formData.append('pdofficer',JSON.stringify(pdofficer)); @@ -236,6 +239,9 @@ export class UserService { return this.http.get(apiurl + 'getListOfLenders'); } + getEntityPreferences(entity_id){ + return this.http.get(apiurl+'getEntityPreferences/'+entity_id) + } } diff --git a/ng6-seed/src/app/settings/users/register/register.component.html b/ng6-seed/src/app/settings/users/register/register.component.html index 2c6df0de0..aae7901c6 100755 --- a/ng6-seed/src/app/settings/users/register/register.component.html +++ b/ng6-seed/src/app/settings/users/register/register.component.html @@ -162,6 +162,19 @@
+ + Configurations
+ + + + + {{pd.product_name}} + + + Sales Products required + + +

diff --git a/ng6-seed/src/app/settings/users/register/register.component.ts b/ng6-seed/src/app/settings/users/register/register.component.ts index 4c01f8540..73cf8b722 100755 --- a/ng6-seed/src/app/settings/users/register/register.component.ts +++ b/ng6-seed/src/app/settings/users/register/register.component.ts @@ -63,6 +63,7 @@ export class RegisterComponent implements OnInit { entity_for_branch: any; branchList: any; enableBranch: boolean=false; + productsList: any = []; constructor( private router: Router, public fb: FormBuilder, public AWS: AwsService, private cd: ChangeDetectorRef ,private elementRef: ElementRef,public users:UserService,notifier:NotifierService) { @@ -94,13 +95,16 @@ export class RegisterComponent implements OnInit { pdteam:[null], pdtype:[null], fk_lender_branch_id:[null] - - }); + }); this.userupdate(); - + } - + addUserConfigControls() { + return this.fb.group({ + salespd_products:['',Validators.compose([Validators.required])] + }) + } regdata() { this.users.entityType().subscribe(res => { this.types = res; @@ -119,7 +123,14 @@ export class RegisterComponent implements OnInit { // this.checktype(this.types[0]); // } // }); - this.callrole(1,this.types[0],''); + this.users.entitiesDetails().subscribe(res=>{ + this.entitiesDetails = res; + if(this.entitiesDetails.dataStatus == true){ + this.entitiesDetails = this.entitiesDetails.records; + this.callrole(this.types[0].entity_type_id,this.types[0],''); + } + }) + } }); this.users.City().subscribe(res => { @@ -148,15 +159,6 @@ export class RegisterComponent implements OnInit { this.pdType = this.pdType.records.filter(pdty=>pdty.isactive ==1); } }); - - - - this.users.entitiesDetails().subscribe(res=>{ - this.entitiesDetails = res; - if(this.entitiesDetails.dataStatus == true){ - this.entitiesDetails = this.entitiesDetails.records; - } - }) this.users.getLenderDetails().subscribe(res=>{ this.entity_for_branch=res if(this.entity_for_branch.dataStatus == true){ @@ -280,6 +282,7 @@ console.log("cog",userData,this.usersData) this.getBranch(flag); } getBranch(flag?){ + this.checkUserConfigAvail() if(this.regForm.value.role != null && (this.regForm.value.role.role_name == "Branch Credit" || this.regForm.value.role.role_name == "Branch Sales") && this.regForm.value.lenVenName != null){ console.log(this.regForm.value.role,this.entity_for_branch,this.regForm.value.lenVenName); if(this.entity_for_branch.length > 0){ @@ -316,6 +319,27 @@ getBranch(flag?){ this.City = this.Cities.filter(city=>city.fk_state_id == e.value.state_id); + } + checkUserConfigAvail() { + console.log(this.types[0].entity_type_id,this.regForm.value.lenVenName) + if(this.types[0].entity_type_id == '2' && this.regForm.value.lenVenName.short_name == 'MWISE') { + this.regForm.addControl('user_config',this.addUserConfigControls()) + this.users.getEntityPreferences(this.regForm.value.lenVenName.entity_id).subscribe(res=>{ + if(res['dataStatus']) { + this.productsList = res['records'].salespd_products + if (this.users.localUserId != '' && this.users.localUserId != null && this.users.localUserId !== undefined && this.users.localUserId.user_config) { + this.regForm.get('user_config')['controls']['salespd_products'].setValue(this.users.localUserId.user_config.salespd_products) + } + else { + this.regForm.get('user_config')['controls']['salespd_products'].setValue(this.productsList.map(item=>item.product_id)) + } + } + }) + console.log(this.regForm.value) + } + else { + this.regForm.removeControl('user_config') + } } userupdate() { @@ -336,7 +360,9 @@ getBranch(flag?){ this.entitiesDetails = this.entitiesDetails.records.filter(ent=>ent.isactive ==1); let entitiy = this.entitiesDetails.filter(ent=>this.usersData.fk_entity_id == ent.entity_id)[0]; this.regForm.controls['lenVenName'].setValue(entitiy); + this.callrole(2,this.types[0],this.usersData); + this.checkUserConfigAvail() } else{ this.callrole(2,this.types[0],this.usersData); diff --git a/ng6-seed/src/app/shared/decision-dialog/decision-dialog.component.html b/ng6-seed/src/app/shared/decision-dialog/decision-dialog.component.html new file mode 100644 index 000000000..685595f60 --- /dev/null +++ b/ng6-seed/src/app/shared/decision-dialog/decision-dialog.component.html @@ -0,0 +1,14 @@ +

{{data.title}}

+ +
+

+ {{data.message}} +

+ +
+ +
+ + + + \ No newline at end of file diff --git a/ng6-seed/src/app/shared/decision-dialog/decision-dialog.component.scss b/ng6-seed/src/app/shared/decision-dialog/decision-dialog.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/ng6-seed/src/app/shared/decision-dialog/decision-dialog.component.spec.ts b/ng6-seed/src/app/shared/decision-dialog/decision-dialog.component.spec.ts new file mode 100644 index 000000000..d643becb4 --- /dev/null +++ b/ng6-seed/src/app/shared/decision-dialog/decision-dialog.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DecisionDialogComponent } from './decision-dialog.component'; + +describe('DecisionDialogComponent', () => { + let component: DecisionDialogComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DecisionDialogComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DecisionDialogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/ng6-seed/src/app/shared/decision-dialog/decision-dialog.component.ts b/ng6-seed/src/app/shared/decision-dialog/decision-dialog.component.ts new file mode 100644 index 000000000..fd67e9022 --- /dev/null +++ b/ng6-seed/src/app/shared/decision-dialog/decision-dialog.component.ts @@ -0,0 +1,20 @@ +import { Component, Inject, OnInit } from '@angular/core'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; + +@Component({ + selector: 'app-decision-dialog', + templateUrl: './decision-dialog.component.html', + styleUrls: ['./decision-dialog.component.scss'] +}) +export class DecisionDialogComponent implements OnInit { + + constructor(@Inject(MAT_DIALOG_DATA) public data:any, private dialogRef:MatDialogRef) { } + + ngOnInit() { + console.log(this.data); + } + updateString(result) { + this.dialogRef.close(result) + } + +} diff --git a/ng6-seed/src/app/shared/shared.module.ts b/ng6-seed/src/app/shared/shared.module.ts index ef69fa903..4a9c8286e 100755 --- a/ng6-seed/src/app/shared/shared.module.ts +++ b/ng6-seed/src/app/shared/shared.module.ts @@ -8,10 +8,12 @@ import { RatingComponent} from './rating/rating.component'; import { NumbersOnlyDirective } from './numbers-only/numbers-only.directive'; import { ForMobileNumbersDirective } from './for-mobile-numbers/for-mobile-numbers.directive'; import { ProgressSpineerDialogComponent } from './progress-spineer-dialog/progress-spineer-dialog.component'; -import { MatProgressSpinnerModule } from '@angular/material'; +import { MatButtonModule, MatDialogModule, MatProgressSpinnerModule } from '@angular/material'; +import { DecisionDialogComponent } from './decision-dialog/decision-dialog.component'; +import { CommonModule } from '@angular/common'; @NgModule({ - entryComponents:[ProgressSpineerDialogComponent], + entryComponents:[ProgressSpineerDialogComponent,DecisionDialogComponent], declarations: [ AccordionAnchorDirective, AccordionLinkDirective, @@ -20,9 +22,10 @@ import { MatProgressSpinnerModule } from '@angular/material'; RatingComponent, NumbersOnlyDirective, ForMobileNumbersDirective, - ProgressSpineerDialogComponent + ProgressSpineerDialogComponent, + DecisionDialogComponent ], - imports:[MatProgressSpinnerModule], + imports:[MatProgressSpinnerModule,MatDialogModule,CommonModule,MatButtonModule], exports: [ AccordionAnchorDirective, AccordionLinkDirective, @@ -31,7 +34,10 @@ import { MatProgressSpinnerModule } from '@angular/material'; RatingComponent, NumbersOnlyDirective, ForMobileNumbersDirective, - ProgressSpineerDialogComponent + ProgressSpineerDialogComponent, + DecisionDialogComponent, + CommonModule, + MatButtonModule ], providers: [ MenuItems, HorizontalMenuItems ] })