datadumb and qc report changes
This commit is contained in:
parent
4eeaca9d5d
commit
7ee9d40033
15
ng6-seed/package-lock.json
generated
15
ng6-seed/package-lock.json
generated
@ -1691,6 +1691,21 @@
|
||||
"tslib": "^1.9.0"
|
||||
}
|
||||
},
|
||||
"angular-svg-icon": {
|
||||
"version": "15.0.0",
|
||||
"resolved": "https://registry.npmjs.org/angular-svg-icon/-/angular-svg-icon-15.0.0.tgz",
|
||||
"integrity": "sha512-qurcOPbGri1ZveGd3Iol7CRSpveaxu21V1VCPwMSUfXlwwUT1hL4Aq3VE/RkJw5zZmFuR8akgaKeHLD+CFjjEQ==",
|
||||
"requires": {
|
||||
"tslib": "^2.3.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"tslib": {
|
||||
"version": "2.4.1",
|
||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz",
|
||||
"integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"angular-tree-component": {
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmjs.org/angular-tree-component/-/angular-tree-component-6.1.0.tgz",
|
||||
|
||||
@ -40,6 +40,7 @@
|
||||
"angular-notifier": "^4.1.2",
|
||||
"angular-sortablejs": "^2.7.0",
|
||||
"angular-split": "^3.0.2",
|
||||
"angular-svg-icon": "^15.0.0",
|
||||
"angular-tree-component": "6.1.0",
|
||||
"chart.js": "2.6.0",
|
||||
"core-js": "^2.6.11",
|
||||
|
||||
@ -68,6 +68,8 @@ import { ReqTokenInterceptor } from './_guard/req-token.interceptor';
|
||||
import { DynamicNotifyComponent } from './layouts/dynamic-notify/dynamic-notify.component';
|
||||
import { OtpComponent } from './session/otp/otp.component';
|
||||
import { NotifierModule, NotifierOptions } from 'angular-notifier';
|
||||
|
||||
|
||||
// import { SelectAllComponent } from './select-all/select-all.component';
|
||||
// import { CustomNotificationComponent } from './layouts/custom-notification/custom-notification.component';
|
||||
//import { SelectAllComponent } from './select-all/select-all.component';
|
||||
@ -165,7 +167,7 @@ const pdCustomNotifierOptions: NotifierOptions = {
|
||||
MatFormFieldModule,
|
||||
HttpClientModule,
|
||||
ResizableModule,
|
||||
|
||||
|
||||
TranslateModule.forRoot({
|
||||
loader: {
|
||||
provide: TranslateLoader,
|
||||
|
||||
@ -30,6 +30,10 @@ export const AppRoutes: Routes = [{
|
||||
path:'template2',
|
||||
loadChildren:'./template2/template2.module#Template2Module'
|
||||
},
|
||||
{
|
||||
path:'datadump',
|
||||
loadChildren:'./datadump/datadump.module#DatadumpModule'
|
||||
},
|
||||
{
|
||||
path:'quality_check_discussion',
|
||||
loadChildren:'./quality-check/quality-check.module#QualityCheckModule'
|
||||
|
||||
@ -0,0 +1,116 @@
|
||||
|
||||
<h2 mat-dialog-title class="paragraph_change">
|
||||
<div fxFlex="70" align="left" style="padding: 10px !important;">
|
||||
Trigger New Item in Data Dump List
|
||||
</div>
|
||||
<div fxFlex="30" align="end" style="padding: 10px !important;">
|
||||
<button mat-raised-button mat-icon-button class="mr-1 mb-1 hover-icon" type="button" matTooltip="Close" matTooltipPosition="right" mat-dialog-close><mat-icon>close</mat-icon></button>
|
||||
|
||||
</div>
|
||||
</h2>
|
||||
<!-- <h5 style="text-align: center;">{{message}}</h5> -->
|
||||
<mat-dialog-content >
|
||||
<!-- <mat-card *ngFor="let list of digilock_list;let quesIndex=index">
|
||||
|
||||
<mat-card-content>{{list.applicant_name
|
||||
}}</mat-card-content>
|
||||
|
||||
</mat-card> -->
|
||||
<mat-card>
|
||||
<!-- <mat-expansion-panel [(expanded)]="xpandStatus">
|
||||
<mat-expansion-panel-header>
|
||||
<mat-panel-title class="text-xs-left">
|
||||
<mat-toolbar-row>
|
||||
<mat-icon>filter_list</mat-icon>
|
||||
<span class="toolbar-space"></span>
|
||||
<span>Advanced Filter</span>
|
||||
</mat-toolbar-row>
|
||||
</mat-panel-title>
|
||||
|
||||
</mat-expansion-panel-header> -->
|
||||
<mat-list class="m-gap p-gap">
|
||||
<div [formGroup]="searchForm">
|
||||
<mat-form-field style="width:25%">
|
||||
<mat-select formControlName="pd_lender" placeholder="Lender Name" (selectionChange)="onChangeCategory($event)">
|
||||
<mat-option *ngFor="let ent of entity_lender" [value]="ent.entity_id">{{ent.full_name}}</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
<mat-form-field style="width:25%">
|
||||
<mat-select formControlName="pd_products" placeholder="Products">
|
||||
<mat-option *ngFor="let pro of product" [value]="pro.product_id">{{pro.product_name}}</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
<mat-form-field style="width:25%">
|
||||
<mat-select formControlName="pd_Customer_Segment" placeholder="Customer Segment">
|
||||
<mat-option *ngFor="let pro of customer_segments" [value]="pro.customer_segment_id">{{pro.customer_segment}}</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
<mat-form-field style="width:25%">
|
||||
<mat-select formControlName="pd_type" placeholder="PD Type">
|
||||
<mat-option *ngFor="let type of pd_types" [value]="type.pd_type_id">{{type.type_name}}</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
<mat-form-field style="width:25%">
|
||||
<mat-select formControlName="pd_state" placeholder="State" (selectionChange)="onChangeCity($event)">
|
||||
<mat-option *ngFor="let status of states" [value]="status.state_id">{{status.name }}</mat-option>
|
||||
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
<mat-form-field style="width:25%">
|
||||
<mat-select formControlName="pd_city" placeholder="City">
|
||||
<mat-option *ngFor="let city of city" [value]="city.city_id">{{city.city_name}}</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field style="width:25%">
|
||||
<input matInput [matDatepicker]="picker1" [min]="searchForm.get('pd_from_date').value" [max]="todaydate" formControlName="pd_from_date" placeholder="Choose a From date">
|
||||
<mat-datepicker-toggle matSuffix [for]="picker1"></mat-datepicker-toggle>
|
||||
<mat-datepicker #picker1></mat-datepicker>
|
||||
</mat-form-field>
|
||||
<mat-form-field style="width:25%">
|
||||
<input matInput [matDatepicker]="picker2" [min]="searchForm.get('pd_from_date').value" [max]="todaydate" formControlName="pd_to_date" placeholder="Choose a To date">
|
||||
<mat-datepicker-toggle matSuffix [for]="picker2"></mat-datepicker-toggle>
|
||||
<mat-datepicker #picker2></mat-datepicker>
|
||||
</mat-form-field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- <div align="right">
|
||||
|
||||
<button type="button" mat-raised-button mat-icon-button (click)="onReset()"
|
||||
matTooltip="Reset" matTooltipPosition="above" class="mr-1 mb-1 hover-icon" color="primary">
|
||||
<mat-icon>settings_backup_restore</mat-icon>
|
||||
</button>
|
||||
|
||||
<button type="button" mat-raised-button mat-icon-button (click)="searchItem()"
|
||||
matTooltip="Search" matTooltipPosition="above" class="mr-1 mb-1 hover-icon" color="primary" type="button">
|
||||
<mat-icon>search</mat-icon>
|
||||
</button>
|
||||
|
||||
</div> -->
|
||||
</div>
|
||||
</mat-list>
|
||||
|
||||
<!-- </mat-expansion-panel> -->
|
||||
</mat-card>
|
||||
|
||||
|
||||
|
||||
<!-- Copyright 2022 Google LLC. All Rights Reserved.
|
||||
Use of this source code is governed by an MIT-style license that
|
||||
can be found in the LICENSE file at https://angular.io/license -->
|
||||
|
||||
|
||||
</mat-dialog-content>
|
||||
<mat-dialog-actions align="end" >
|
||||
|
||||
<button mat-raised-button mat-icon-button class="mr-1 mb-1 hover-icon" color="primary" type="button" (click)="save(searchForm.value)" > <mat-icon>save</mat-icon></button>
|
||||
<!-- <button class="submit-btn" color="primary" mat-raised-button type="submit" >
|
||||
Submit
|
||||
</button> -->
|
||||
|
||||
</mat-dialog-actions>
|
||||
<notifier-container></notifier-container>
|
||||
@ -0,0 +1,53 @@
|
||||
.paragraph_change {
|
||||
color: #fff !important;
|
||||
background-color: #e00201 !important;
|
||||
}
|
||||
::ng-deep { .no-padding > mat-dialog-container {
|
||||
// background: black;
|
||||
padding: 0;
|
||||
// overflow-y: scroll !important;
|
||||
}
|
||||
}
|
||||
.example-full-width {
|
||||
width: 100%;
|
||||
}
|
||||
.mat-dialog-content{
|
||||
margin:0px !important;
|
||||
}
|
||||
// mat-placeholder{
|
||||
// margin-top: 20px;
|
||||
// word-wrap: break-word;
|
||||
// }
|
||||
// input{
|
||||
// height:40px;
|
||||
// }
|
||||
|
||||
.mat-form-field-label {
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
textarea.mat-input-element {
|
||||
padding: 0px 0;
|
||||
margin: 5px 0;
|
||||
}
|
||||
|
||||
.mat-input-placeholder {
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
mat-form-field {
|
||||
margin: 0 2%;
|
||||
}
|
||||
.paragraph_change {
|
||||
color: #fff !important;
|
||||
background-color: #e00201 !important;
|
||||
}
|
||||
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
}
|
||||
.mat-elevation-z8{
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
@ -0,0 +1,25 @@
|
||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { AddDatadumpComponent } from './add-datadump.component';
|
||||
|
||||
describe('AddDatadumpComponent', () => {
|
||||
let component: AddDatadumpComponent;
|
||||
let fixture: ComponentFixture<AddDatadumpComponent>;
|
||||
|
||||
beforeEach(async(() => {
|
||||
TestBed.configureTestingModule({
|
||||
declarations: [ AddDatadumpComponent ]
|
||||
})
|
||||
.compileComponents();
|
||||
}));
|
||||
|
||||
beforeEach(() => {
|
||||
fixture = TestBed.createComponent(AddDatadumpComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
||||
135
ng6-seed/src/app/datadump/add-datadump/add-datadump.component.ts
Normal file
135
ng6-seed/src/app/datadump/add-datadump/add-datadump.component.ts
Normal file
@ -0,0 +1,135 @@
|
||||
import { Component, Inject, OnInit } from '@angular/core';
|
||||
import { FormBuilder, FormGroup } from '@angular/forms';
|
||||
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material';
|
||||
import { NotifierService } from 'angular-notifier';
|
||||
import { DatadumpService } from '../datadump.service';
|
||||
|
||||
@Component({
|
||||
selector: 'app-add-datadump',
|
||||
templateUrl: './add-datadump.component.html',
|
||||
styleUrls: ['./add-datadump.component.scss']
|
||||
})
|
||||
export class AddDatadumpComponent implements OnInit {
|
||||
searchForm: FormGroup;
|
||||
entity_lender: any=[]
|
||||
product: any =[];
|
||||
customer_segments: any=[];
|
||||
pd_types: any=[];
|
||||
states: any=[];
|
||||
city: any=[];
|
||||
constructor(private dialogRef: MatDialogRef<AddDatadumpComponent>, private notifier: NotifierService,
|
||||
@Inject(MAT_DIALOG_DATA) public data: any,private _fb:FormBuilder,private datadumpservice : DatadumpService) {
|
||||
|
||||
this.getApiList()
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
this.searchForm = this._fb.group(
|
||||
{
|
||||
|
||||
pd_lender:[null],
|
||||
pd_products:[null],
|
||||
pd_Customer_Segment:[null],
|
||||
pd_type:[null],
|
||||
pd_state:[null],
|
||||
pd_city:[null],
|
||||
pd_from_date:[null],
|
||||
pd_to_date:[null]
|
||||
|
||||
});
|
||||
console.log( this.searchForm)
|
||||
this.searchForm.controls['pd_products'].disable()
|
||||
this.searchForm.controls['pd_Customer_Segment'].disable()
|
||||
this.searchForm.controls['pd_type'].disable()
|
||||
this.searchForm.controls['pd_city'].disable()
|
||||
}
|
||||
|
||||
getApiList(){
|
||||
|
||||
this.datadumpservice.getListOfLenders().subscribe(res => {
|
||||
console.log(res)
|
||||
if(res.status == 200 ){
|
||||
this.entity_lender = res.records
|
||||
}
|
||||
|
||||
})
|
||||
let param = {"master_name":"STATE"}
|
||||
this.datadumpservice.getListOfMaster(param).subscribe(res => {
|
||||
console.log(res)
|
||||
if(res.status == 200 ){
|
||||
this.states = res.records
|
||||
}
|
||||
|
||||
})
|
||||
console.log( this.searchForm)
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
onChangeCategory(event) {
|
||||
console.log(event.value);
|
||||
this.datadumpservice.getEntityPreferences(event.value).subscribe(res => {
|
||||
console.log(res)
|
||||
if(res.status == 200 ){
|
||||
console.log(res)
|
||||
this.product = res.records.products
|
||||
this.customer_segments = res.records.customer_segments
|
||||
this.pd_types = res.records.pd_types
|
||||
this.searchForm.controls['pd_products'].enable()
|
||||
this.searchForm.controls['pd_Customer_Segment'].enable()
|
||||
this.searchForm.controls['pd_type'].enable()
|
||||
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
onChangeCity(event){
|
||||
console.log(event.value);
|
||||
this.datadumpservice.getListOfStatesAndCities(event.value).subscribe(res => {
|
||||
console.log(res)
|
||||
if(res.status == 200 ){
|
||||
console.log(res)
|
||||
|
||||
this.city = res.records.cities
|
||||
this.searchForm.controls['pd_city'].enable()
|
||||
|
||||
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
save(data){
|
||||
console.log(data)
|
||||
function toJSONLocal(date) {
|
||||
var local = new Date(date);
|
||||
local.setMinutes(date.getMinutes() - date.getTimezoneOffset());
|
||||
return local.toJSON().slice(0, 10);
|
||||
}
|
||||
let param = {
|
||||
"fk_lender_id": data.pd_lender,
|
||||
"fk_pd_type_id": data.pd_type,
|
||||
"fk_customer_segment_id": data.pd_Customer_Segment,
|
||||
"fk_product_id": data.pd_products,
|
||||
"fk_city_id": data.pd_city,
|
||||
"from_date":toJSONLocal(data.pd_from_date),
|
||||
"to_date":toJSONLocal(data.pd_to_date),
|
||||
"fk_createdby":1
|
||||
}
|
||||
console.log(param)
|
||||
this.datadumpservice.saveDatadumpRequest(param).subscribe(res => {
|
||||
console.log(res)
|
||||
if(res.status == 200 ){
|
||||
console.log(res)
|
||||
this.dialogRef.close(0)
|
||||
this.notifier.notify('success', 'Your Changes Updated.!');
|
||||
|
||||
|
||||
}else{
|
||||
this.dialogRef.close()
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
}
|
||||
}
|
||||
29
ng6-seed/src/app/datadump/datadump-routing.module.ts
Normal file
29
ng6-seed/src/app/datadump/datadump-routing.module.ts
Normal file
@ -0,0 +1,29 @@
|
||||
import { NgModule } from '@angular/core';
|
||||
import { Routes, RouterModule } from '@angular/router';
|
||||
import { DatadumpComponent } from './datadump/datadump.component';
|
||||
|
||||
const routes: Routes = [
|
||||
{
|
||||
path: '',
|
||||
redirectTo: 'datadumplist',
|
||||
|
||||
},{
|
||||
path: '',
|
||||
children: [
|
||||
{
|
||||
path: 'datadumplist',
|
||||
component: DatadumpComponent,
|
||||
//component: QuestionViewComponent,
|
||||
|
||||
},
|
||||
|
||||
]
|
||||
}
|
||||
|
||||
];
|
||||
|
||||
@NgModule({
|
||||
imports: [RouterModule.forChild(routes)],
|
||||
exports: [RouterModule]
|
||||
})
|
||||
export class DatadumpRoutingModule { }
|
||||
13
ng6-seed/src/app/datadump/datadump.module.spec.ts
Normal file
13
ng6-seed/src/app/datadump/datadump.module.spec.ts
Normal file
@ -0,0 +1,13 @@
|
||||
import { DatadumpModule } from './datadump.module';
|
||||
|
||||
describe('DatadumpModule', () => {
|
||||
let datadumpModule: DatadumpModule;
|
||||
|
||||
beforeEach(() => {
|
||||
datadumpModule = new DatadumpModule();
|
||||
});
|
||||
|
||||
it('should create an instance', () => {
|
||||
expect(datadumpModule).toBeTruthy();
|
||||
});
|
||||
});
|
||||
113
ng6-seed/src/app/datadump/datadump.module.ts
Normal file
113
ng6-seed/src/app/datadump/datadump.module.ts
Normal file
@ -0,0 +1,113 @@
|
||||
import { NgModule } from '@angular/core';
|
||||
import { CommonModule } from '@angular/common';
|
||||
|
||||
import { DatadumpRoutingModule } from './datadump-routing.module';
|
||||
import { DatadumpComponent } from './datadump/datadump.component';
|
||||
import { MatAutocompleteModule, MatBadgeModule, MatBottomSheetModule, MatButtonModule, MatButtonToggleModule, MatCardModule, MatCheckboxModule, MatChipsModule, MatDatepickerModule, MatDialogModule, MatDividerModule, MatExpansionModule, MatGridListModule, MatIconModule, MatInputModule, MatListModule, MatMenuModule, MatNativeDateModule, MatPaginatorModule, MatProgressBarModule, MatProgressSpinnerModule, MatRadioModule, MatRippleModule, MatSelectModule, MatSidenavModule, MatSliderModule, MatSlideToggleModule, MatSnackBarModule, MatSortModule, MatStepperModule, MatTableModule, MatTabsModule, MatToolbarModule, MatTooltipModule, MatTreeModule, MAT_DATE_LOCALE } from '@angular/material';
|
||||
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
||||
import { DatadumpService } from './datadump.service';
|
||||
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
||||
import { FlexLayoutModule } from '@angular/flex-layout';
|
||||
import { NgxDatatableModule } from '@swimlane/ngx-datatable';
|
||||
import { NgxSpinnerModule } from 'ngx-spinner';
|
||||
import { NgxMatSelectSearchModule } from 'ngx-mat-select-search';
|
||||
import { AddDatadumpComponent } from './add-datadump/add-datadump.component';
|
||||
import { NotifierModule, NotifierOptions } from 'angular-notifier';
|
||||
const customNotifierOptions: NotifierOptions = {
|
||||
position: {
|
||||
horizontal: {
|
||||
position: 'right',
|
||||
distance: 12
|
||||
},
|
||||
vertical: {
|
||||
position: 'top',
|
||||
distance: 32,
|
||||
gap: 10
|
||||
}
|
||||
},
|
||||
theme: 'material',
|
||||
behaviour: {
|
||||
autoHide: 5000,
|
||||
onClick: 'hide',
|
||||
onMouseover: 'pauseAutoHide',
|
||||
showDismissButton: true,
|
||||
stacking: 4
|
||||
},
|
||||
animations: {
|
||||
enabled: true,
|
||||
show: {
|
||||
preset: 'slide',
|
||||
speed: 300,
|
||||
easing: 'ease'
|
||||
},
|
||||
hide: {
|
||||
preset: 'fade',
|
||||
speed: 300,
|
||||
easing: 'ease',
|
||||
offset: 50
|
||||
},
|
||||
shift: {
|
||||
speed: 300,
|
||||
easing: 'ease'
|
||||
},
|
||||
overlap: 150
|
||||
}
|
||||
};
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule,
|
||||
DatadumpRoutingModule,
|
||||
MatCardModule,
|
||||
MatTabsModule,
|
||||
MatIconModule,
|
||||
MatInputModule,
|
||||
|
||||
MatIconModule,
|
||||
MatAutocompleteModule,
|
||||
MatInputModule,
|
||||
MatRadioModule,
|
||||
MatTableModule,
|
||||
MatPaginatorModule,
|
||||
MatButtonModule,
|
||||
MatProgressBarModule,
|
||||
MatToolbarModule,
|
||||
FlexLayoutModule,
|
||||
NgxDatatableModule,
|
||||
NgxSpinnerModule,
|
||||
MatChipsModule,MatProgressSpinnerModule,
|
||||
FormsModule,MatSlideToggleModule,
|
||||
NotifierModule.withConfig(customNotifierOptions),
|
||||
MatSelectModule, MatListModule,MatGridListModule, MatTabsModule, MatBadgeModule, MatCheckboxModule,MatStepperModule,MatSidenavModule ,MatMenuModule, MatButtonToggleModule,
|
||||
ReactiveFormsModule,
|
||||
MatBottomSheetModule,
|
||||
|
||||
MatDividerModule,
|
||||
|
||||
MatNativeDateModule,
|
||||
|
||||
MatRippleModule,
|
||||
|
||||
MatSliderModule,
|
||||
|
||||
MatSnackBarModule,
|
||||
|
||||
MatTreeModule,
|
||||
|
||||
|
||||
MatDatepickerModule,
|
||||
MatDialogModule,MatSortModule,
|
||||
NgxMatSelectSearchModule,MatTooltipModule, MatExpansionModule,
|
||||
MatRadioModule,MatProgressSpinnerModule ,
|
||||
MatButtonModule,MatTableModule,MatPaginatorModule,
|
||||
MatProgressBarModule,MatDialogModule, MatSortModule,
|
||||
MatToolbarModule,MatSelectModule,MatListModule, MatMenuModule,
|
||||
MatSlideToggleModule,MatTooltipModule,
|
||||
FormsModule, ReactiveFormsModule,
|
||||
],
|
||||
declarations: [DatadumpComponent, AddDatadumpComponent],
|
||||
providers : [
|
||||
DatadumpService,{ provide: MAT_DATE_LOCALE, useValue: 'en-GB' }
|
||||
],
|
||||
entryComponents:[AddDatadumpComponent]
|
||||
})
|
||||
export class DatadumpModule { }
|
||||
12
ng6-seed/src/app/datadump/datadump.service.spec.ts
Normal file
12
ng6-seed/src/app/datadump/datadump.service.spec.ts
Normal file
@ -0,0 +1,12 @@
|
||||
import { TestBed } from '@angular/core/testing';
|
||||
|
||||
import { DatadumpService } from './datadump.service';
|
||||
|
||||
describe('DatadumpService', () => {
|
||||
beforeEach(() => TestBed.configureTestingModule({}));
|
||||
|
||||
it('should be created', () => {
|
||||
const service: DatadumpService = TestBed.get(DatadumpService);
|
||||
expect(service).toBeTruthy();
|
||||
});
|
||||
});
|
||||
62
ng6-seed/src/app/datadump/datadump.service.ts
Normal file
62
ng6-seed/src/app/datadump/datadump.service.ts
Normal file
@ -0,0 +1,62 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
|
||||
|
||||
/** Common Import Section */
|
||||
|
||||
import { BehaviorSubject, Observable } from 'rxjs';//for Datatables
|
||||
import { HttpClient } from '@angular/common/http';
|
||||
import { catchError } from 'rxjs/operators';
|
||||
import { of } from 'rxjs';
|
||||
|
||||
/** Imported Service Files Are., */
|
||||
|
||||
import { AwsService } from '../AwsService/aws.service';
|
||||
|
||||
/** Environment */
|
||||
import { environment } from 'environments/environment';
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
})
|
||||
export class DatadumpService {
|
||||
private apiUrl = environment.apiEndpoint;
|
||||
constructor(private _http: HttpClient,
|
||||
private _aws:AwsService) { }
|
||||
|
||||
|
||||
|
||||
getDatadumpRequestList(): Observable<any> {
|
||||
// Add safe, URL encoded search parameter if there is a search term
|
||||
return this._http.get<any[]>(this.apiUrl + "getDatadumpRequestList");
|
||||
}
|
||||
getListOfLenders(): Observable<any> {
|
||||
// Add safe, URL encoded search parameter if there is a search term
|
||||
return this._http.get<any[]>(this.apiUrl + "getListOfLenders");
|
||||
}
|
||||
getEntityPreferences(lenderid): Observable<any> {
|
||||
// Add safe, URL encoded search parameter if there is a search term
|
||||
return this._http.get<any[]>(this.apiUrl + "getEntityPreferences/"+lenderid);
|
||||
}
|
||||
getListOfMaster(param): Observable<any> {
|
||||
// Add safe, URL encoded search parameter if there is a search term
|
||||
|
||||
return this._http.post<any>(this.apiUrl + "getListOfMaster", param);
|
||||
}
|
||||
getListOfStatesAndCities(param): Observable<any> {
|
||||
// Add safe, URL encoded search parameter if there is a search term
|
||||
|
||||
return this._http.post<any>(this.apiUrl + "getListOfStatesAndCities", param);
|
||||
}
|
||||
|
||||
saveDatadumpRequest(param): Observable<any> {
|
||||
// Add safe, URL encoded search parameter if there is a search term
|
||||
|
||||
return this._http.post<any>(this.apiUrl + "saveDatadumpRequest", param);
|
||||
}
|
||||
|
||||
|
||||
|
||||
downloadDatadumpRequest(id): Observable<any> {
|
||||
// Add safe, URL encoded search parameter if there is a search term
|
||||
return this._http.get<any[]>(this.apiUrl + "downloadDatadumpRequest?request_id="+id);
|
||||
}
|
||||
}
|
||||
139
ng6-seed/src/app/datadump/datadump/datadump.component.html
Normal file
139
ng6-seed/src/app/datadump/datadump/datadump.component.html
Normal file
@ -0,0 +1,139 @@
|
||||
<div id="datadump">
|
||||
<mat-card>
|
||||
<div fxLayout="row" fxLayoutAlign="start center" class="mb-1">
|
||||
<div class="ml-xs mr-xs">
|
||||
<mat-card-title><span style="font-size:24px;"> Data Dump</span></mat-card-title>
|
||||
</div>
|
||||
</div>
|
||||
<mat-card-content>
|
||||
<div class="example-container mat-elevation-z8" style="margin-top:26px;">
|
||||
<div class="example-header">
|
||||
<div fxLayout="row" fxLayoutAlign="start center" class="mb-2" >
|
||||
<mat-form-field dividerColor="primary" class="ml-xs mr-xs" style="width: 30%;">
|
||||
<input matInput (keyup)="applyFilter($event.target.value)" placeholder="Filter">
|
||||
</mat-form-field>
|
||||
<label style="text-align: right;margin-left:57%;" fxLayoutAlign="start center" fxFlexOffset="50px">
|
||||
<button mat-fab class="mr-1 mb-1" style="margin-top: 7px;"color="primary" (click)="add()"><mat-icon>add</mat-icon></button>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 style="text-align: center;" *ngIf="dataSource.data.length == 0">No Records found ....!</h4>
|
||||
<mat-table [dataSource]="dataSource" matSort *ngIf="dataSource.data.length > 0" >
|
||||
<ng-container matColumnDef="createdby">
|
||||
<mat-header-cell *matHeaderCellDef mat-sort-header>Created By </mat-header-cell>
|
||||
<mat-cell *matCellDef="let us; let i = index;">
|
||||
<span > {{us.createdby}}</span>
|
||||
</mat-cell>
|
||||
</ng-container>
|
||||
<ng-container matColumnDef="pd_type_name">
|
||||
<mat-header-cell *matHeaderCellDef mat-sort-header> Pd Type </mat-header-cell>
|
||||
<mat-cell *matCellDef="let us"> <span > {{us.pd_type_name}}</span> </mat-cell>
|
||||
</ng-container>
|
||||
<ng-container matColumnDef="lender_full_name">
|
||||
<mat-header-cell *matHeaderCellDef mat-sort-header>Lender </mat-header-cell>
|
||||
<mat-cell *matCellDef="let us; let i = index;"> <span [matTooltip]="us.lender_full_name">{{us.lender_short_name}}</span> </mat-cell>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="product_abbr">
|
||||
<mat-header-cell *matHeaderCellDef mat-sort-header>Product </mat-header-cell>
|
||||
<mat-cell *matCellDef="let us"> <span [matTooltip]="us.product_name">{{us.product_abbr}} </span></mat-cell>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="customer_segment_name">
|
||||
<mat-header-cell *matHeaderCellDef mat-sort-header> Customer Segment </mat-header-cell>
|
||||
<mat-cell *matCellDef="let us"> <span [matTooltip]="us.customer_segment_name">{{us.customer_segment_abbr}}</span> </mat-cell>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="city_name">
|
||||
<mat-header-cell *matHeaderCellDef mat-sort-header> City</mat-header-cell>
|
||||
<mat-cell *matCellDef="let us"> {{us.city_name}} </mat-cell>
|
||||
</ng-container>
|
||||
<ng-container matColumnDef="from_date">
|
||||
<mat-header-cell *matHeaderCellDef mat-sort-header>From Date
|
||||
</mat-header-cell>
|
||||
<mat-cell *matCellDef="let us"> {{us.from_date}} </mat-cell>
|
||||
</ng-container>
|
||||
<ng-container matColumnDef="to_date">
|
||||
<mat-header-cell *matHeaderCellDef mat-sort-header>To Date
|
||||
</mat-header-cell>
|
||||
<mat-cell *matCellDef="let us"> {{us.to_date}} </mat-cell>
|
||||
</ng-container>
|
||||
<ng-container matColumnDef="status">
|
||||
<mat-header-cell *matHeaderCellDef mat-sort-header>Status
|
||||
</mat-header-cell>
|
||||
<mat-cell *matCellDef="let us"> <span [ngStyle] = "{'color':us.status == 'PENDING' ? '#ff9800' : '#0c8d11'}"> {{us.status}}</span> </mat-cell>
|
||||
</ng-container>
|
||||
<!-- <ng-container matColumnDef="IsActive">
|
||||
<mat-header-cell *matHeaderCellDef mat-sort-header> Active </mat-header-cell>
|
||||
<mat-cell *matCellDef="let us">
|
||||
<mat-slide-toggle
|
||||
class="example-margin"
|
||||
[checked]="us.isactive == 1 ? true : false " [color]="color"
|
||||
[matTooltip]="us.isactive == 1 ? 'Active': 'Deactive'" matTooltipPosition="above"
|
||||
(click)="isactive(us.userid,us.aws_name)">
|
||||
</mat-slide-toggle>
|
||||
|
||||
|
||||
|
||||
</mat-cell>
|
||||
</ng-container> -->
|
||||
|
||||
<ng-container matColumnDef="Actions">
|
||||
<mat-header-cell *matHeaderCellDef> Download </mat-header-cell>
|
||||
<mat-cell *matCellDef="let us">
|
||||
<!-- <a mat-icon-button [color]="color" class="hover-icon" matTooltip="Edit" matTooltipPosition="above" (click)="editUserDetails(us.userid,us.aws_name)"> -->
|
||||
|
||||
|
||||
<!-- <mat-card>
|
||||
<mat-card-content> -->
|
||||
<!-- <h2>Spinner</h2> -->
|
||||
|
||||
<div *ngIf="loading && us.status != 'PENDING'; else content ">
|
||||
|
||||
<div class="spinner__loading">
|
||||
<div>
|
||||
<mat-progress-spinner
|
||||
diameter="30"
|
||||
[value]="value"
|
||||
mode="determinate">
|
||||
</mat-progress-spinner>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<button *ngIf="!loading && us.status != 'PENDING'; else content" mat-mini-fab color="warn" class="spinner"
|
||||
|
||||
|
||||
type="button" matTooltip="Ready To Download"
|
||||
(click)="download(us)"><mat-icon >cloud_done</mat-icon>
|
||||
|
||||
</button>
|
||||
|
||||
|
||||
<!-- </mat-card-content>
|
||||
</mat-card> -->
|
||||
|
||||
|
||||
<!-- Copyright 2019 Google LLC. All Rights Reserved.
|
||||
Use of this source code is governed by an MIT-style license that
|
||||
can be found in the LICENSE file at http://angular.io/license -->
|
||||
<!-- </a> -->
|
||||
<!-- <a mat-icon-button class="hover-icon" matTooltip="Edit" matTooltipPosition="above" (click)="deleteuser(us)"><mat-icon>delete_forever</mat-icon></a> -->
|
||||
<!-- <a mat-icon-button class="hover-icon" matTooltip="Edit" matTooltipPosition="above" (click)="adminedituser(us)"><mat-icon>account_circle</mat-icon></a> -->
|
||||
</mat-cell>
|
||||
</ng-container>
|
||||
|
||||
<mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row>
|
||||
<mat-row *matRowDef="let row; columns: displayedColumns;">
|
||||
</mat-row>
|
||||
</mat-table>
|
||||
|
||||
<mat-paginator [pageSize]="pageSize" [pageSizeOptions]="[5, 10, 25, 50, 100]" showFirstLastButtons></mat-paginator>
|
||||
</div>
|
||||
</mat-card-content>
|
||||
</mat-card>
|
||||
</div>
|
||||
|
||||
<notifier-container></notifier-container>
|
||||
|
||||
116
ng6-seed/src/app/datadump/datadump/datadump.component.scss
Normal file
116
ng6-seed/src/app/datadump/datadump/datadump.component.scss
Normal file
@ -0,0 +1,116 @@
|
||||
table {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
th {
|
||||
text-align: left;
|
||||
}
|
||||
.active{
|
||||
|
||||
color: green;
|
||||
font-size: 20px;
|
||||
}
|
||||
.active:hover{
|
||||
color:red;
|
||||
font-size:25px;
|
||||
}
|
||||
.deactive{
|
||||
|
||||
color: red;
|
||||
font-size: 20px;
|
||||
}
|
||||
.deactive:hover{
|
||||
color: green;
|
||||
font-size: 25px;
|
||||
}
|
||||
|
||||
.example-container {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-width: 300px;
|
||||
}
|
||||
|
||||
.example-header {
|
||||
min-height: 64px;
|
||||
padding: 8px 24px 0;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.mat-form-field {
|
||||
font-size: 14px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.mat-table {
|
||||
overflow: auto;
|
||||
max-height: 500px;
|
||||
}
|
||||
.mat-table {
|
||||
display: table;
|
||||
width: 100%;
|
||||
overflow: auto;
|
||||
max-height: 500px;
|
||||
|
||||
> .mat-header-row, > .mat-row {
|
||||
display: table-row;
|
||||
padding: 0;
|
||||
border: none;
|
||||
|
||||
> .mat-header-cell, > .mat-cell {
|
||||
display: table-cell;
|
||||
height: 48px;
|
||||
vertical-align: middle;
|
||||
|
||||
border-bottom: 1px solid rgba(0, 0, 0, 0.12);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** Table CSS -nocontent */
|
||||
.nocontent {
|
||||
color: red;
|
||||
font-size: 16px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
|
||||
/** Table CSS - Search(or)Filter Field */
|
||||
.mat-form-field {
|
||||
font-size: 14px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.filter-container {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-width: 300px;
|
||||
}
|
||||
|
||||
.filter-header {
|
||||
min-height: 64px;
|
||||
padding: 8px 24px 0;
|
||||
}
|
||||
|
||||
|
||||
// mat-card {
|
||||
// display: flex;
|
||||
// flex-direction: column;
|
||||
// }
|
||||
|
||||
.file {
|
||||
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.spinner__loading {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
.spinner{
|
||||
margin-left: 28%;
|
||||
}
|
||||
#datadump{
|
||||
zoom: 90%;
|
||||
}
|
||||
@ -0,0 +1,25 @@
|
||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { DatadumpComponent } from './datadump.component';
|
||||
|
||||
describe('DatadumpComponent', () => {
|
||||
let component: DatadumpComponent;
|
||||
let fixture: ComponentFixture<DatadumpComponent>;
|
||||
|
||||
beforeEach(async(() => {
|
||||
TestBed.configureTestingModule({
|
||||
declarations: [ DatadumpComponent ]
|
||||
})
|
||||
.compileComponents();
|
||||
}));
|
||||
|
||||
beforeEach(() => {
|
||||
fixture = TestBed.createComponent(DatadumpComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
||||
123
ng6-seed/src/app/datadump/datadump/datadump.component.ts
Normal file
123
ng6-seed/src/app/datadump/datadump/datadump.component.ts
Normal file
@ -0,0 +1,123 @@
|
||||
import { Component, OnInit, ViewChild } from '@angular/core';
|
||||
import { FormBuilder, FormGroup } from '@angular/forms';
|
||||
import { MatDialog, MatIconRegistry, MatPaginator, MatSort, MatTableDataSource } from '@angular/material';
|
||||
import { DomSanitizer } from '@angular/platform-browser';
|
||||
import { NotifierService } from 'angular-notifier';
|
||||
import { interval, Subscription } from 'rxjs';
|
||||
import { AddDatadumpComponent } from '../add-datadump/add-datadump.component';
|
||||
import { DatadumpService } from '../datadump.service';
|
||||
|
||||
@Component({
|
||||
selector: 'app-datadump',
|
||||
templateUrl: './datadump.component.html',
|
||||
styleUrls: ['./datadump.component.scss']
|
||||
})
|
||||
export class DatadumpComponent implements OnInit {
|
||||
public dataLength: number;
|
||||
public dataSource = new MatTableDataSource();
|
||||
displayedColumns = ['createdby','pd_type_name','lender_full_name','product_abbr','customer_segment_name','city_name','from_date','to_date','status','Actions'];
|
||||
|
||||
@ViewChild(MatPaginator) paginator: MatPaginator;
|
||||
@ViewChild(MatSort) sort: MatSort;
|
||||
color="primary";
|
||||
// pagination variable details
|
||||
pageSize = 10;
|
||||
userdata: any = [];
|
||||
loader: boolean = false;
|
||||
value = 0;
|
||||
loading = true;
|
||||
searchForm: FormGroup;
|
||||
constructor(private datadumpservice : DatadumpService, private sanitizer: DomSanitizer, private readonly matIconRegistry: MatIconRegistry,private _fb:FormBuilder, private dialog: MatDialog, private notifier: NotifierService,) {
|
||||
this.matIconRegistry.addSvgIcon('download', this.sanitizer.bypassSecurityTrustResourceUrl('assets/images/download.svg'));
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
|
||||
this.loadContent();
|
||||
this.getApiList()
|
||||
|
||||
|
||||
}
|
||||
ngAfterViewInit() {
|
||||
this.dataSource.paginator = this.paginator;
|
||||
this.dataSource.sort = this.sort;
|
||||
}
|
||||
|
||||
applyFilter(filterValue: string) {
|
||||
filterValue = filterValue.trim(); // Remove whitespace
|
||||
filterValue = filterValue.toLowerCase(); // Datasource defaults to lowercase matches
|
||||
this.dataSource.filter = filterValue;
|
||||
}
|
||||
|
||||
getApiList(){
|
||||
this.datadumpservice.getDatadumpRequestList().subscribe(res => {
|
||||
|
||||
console.log(res)
|
||||
if(res.status == 200 ){
|
||||
|
||||
this.dataLength = res.records.length;
|
||||
this.dataSource.data = res.records
|
||||
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
}
|
||||
loadContent() {
|
||||
this.loading = true;
|
||||
const subs$: Subscription = interval(200).subscribe(res => {
|
||||
this.value = this.value + 10;
|
||||
if(this.value === 120) {
|
||||
subs$.unsubscribe();
|
||||
this.loading = false;
|
||||
this.value = 0;
|
||||
console.log('Ha terminado');
|
||||
}
|
||||
});
|
||||
}
|
||||
add(){
|
||||
const dialogRef = this.dialog.open(AddDatadumpComponent, {
|
||||
|
||||
// position: { right: '0'},
|
||||
disableClose: true,
|
||||
minHeight:'40%',
|
||||
maxHeight:'75%',
|
||||
minWidth: '50%',
|
||||
maxWidth: '75%',
|
||||
});
|
||||
dialogRef.afterClosed()
|
||||
.subscribe(dataresult => {
|
||||
|
||||
if(dataresult == 0){
|
||||
this.getApiList()
|
||||
// if(dataresult.length>0){
|
||||
// this.pdf_merge_data = dataresult
|
||||
// console.log( this.pdf_merge_data )
|
||||
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
download(param){
|
||||
console.log(param)
|
||||
|
||||
this.datadumpservice.downloadDatadumpRequest(param.request_id).subscribe(res => {
|
||||
|
||||
|
||||
console.log(res)
|
||||
if(res.status == 200 ){
|
||||
this.notifier.notify('success', 'Download Successfully.!');
|
||||
window.open(res.uri, "_blank");
|
||||
|
||||
|
||||
}else{
|
||||
this.notifier.notify('warning', res.msg);
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
}
|
||||
@ -98,6 +98,7 @@ export class AdminLayoutComponent implements OnInit, OnDestroy {
|
||||
'entityid':this.currentUser.fk_entity_type_id,
|
||||
'profilepic':this.currentUser.profilepic
|
||||
}
|
||||
localStorage.setItem('videocall_userid', this.currentUser.userid)
|
||||
this.users.getprofilepic(users).subscribe(res=>{
|
||||
this.profileurl = res;
|
||||
if(this.profileurl.dataStatus == true){
|
||||
|
||||
@ -90,9 +90,13 @@
|
||||
<!-- <b>{{details.is_child == 0 ? details.applicant_name : 'Add On PD - ' + details.parent_pd_id }}</b> -->
|
||||
<b>{{details.is_child == 0 ? details.applicant_name : 'Add On PD' }}</b>
|
||||
</span><br>
|
||||
<!-- <span class="fontsize" *ngIf="!details.lender_applicant_id"> Not Provided</span>
|
||||
<span class="fontsize" *ngIf="details.lender_applicant_id"> {{details.lender_applicant_id}}</span>
|
||||
<span class="fontsize" *ngIf="details.customer_segment_abbr">-({{details.customer_segment_abbr}} )</span><br> -->
|
||||
<span class="fontsize" *ngIf="!details.lender_applicant_id"> Not Provided</span>
|
||||
<span class="fontsize" *ngIf="details.lender_applicant_id"> {{details.lender_applicant_id}}</span>
|
||||
<span class="fontsize" *ngIf="details.customer_segment_abbr">-({{details.customer_segment_abbr}} )</span><br>
|
||||
<span class="fontsize" *ngIf="details.lender_applicant_id"> {{details.lender_applicant_id}}</span>
|
||||
<span class="fontsize" *ngIf="details.customer_segment_abbr">-({{details.customer_segment_abbr}} )</span> <br>
|
||||
<span class="fontsize" *ngIf="details.fk_pd_type =='4'">( {{details.fi_type}} )</span>
|
||||
<small mat-line *ngIf="details.fin_institute_name != null">{{details.fin_institute_name}}</small>
|
||||
</mat-cell>
|
||||
</ng-container>
|
||||
|
||||
@ -89,9 +89,14 @@
|
||||
<!-- <b>{{details.is_child == 0 ? details.applicant_name : 'Add On PD - ' + details.parent_pd_id }}</b> -->
|
||||
<b>{{details.is_child == 0 ? details.applicant_name : 'Add On PD' }}</b>
|
||||
</span><br>
|
||||
<span class="fontsize" *ngIf="!details.lender_applicant_id"> Not Provided</span>
|
||||
<!-- <span class="fontsize" *ngIf="!details.lender_applicant_id"> Not Provided</span>
|
||||
<span class="fontsize" *ngIf="details.lender_applicant_id"> {{details.lender_applicant_id}}</span>
|
||||
<span class="fontsize" *ngIf="details.customer_segment_abbr">-({{details.customer_segment_abbr}} )</span><br>
|
||||
<span class="fontsize" *ngIf="details.customer_segment_abbr">-({{details.customer_segment_abbr}} )</span><br> -->
|
||||
|
||||
<span class="fontsize" *ngIf="!details.lender_applicant_id"> Not Provided</span>
|
||||
<span class="fontsize" *ngIf="details.lender_applicant_id"> {{details.lender_applicant_id}}</span>
|
||||
<span class="fontsize" *ngIf="details.customer_segment_abbr">-({{details.customer_segment_abbr}} )</span> <br>
|
||||
<span class="fontsize" *ngIf="details.fk_pd_type =='4'">( {{details.fi_type}} )</span>
|
||||
<small mat-line *ngIf="details.fin_institute_name != null">{{details.fin_institute_name}}</small>
|
||||
</mat-cell>
|
||||
</ng-container>
|
||||
|
||||
@ -181,9 +181,12 @@ export class DynamicQuestionTemplateComponent implements OnInit {
|
||||
this.formGroupN.get('pincode').patchValue((res.pdMasterList.pincode_id
|
||||
|| ''))
|
||||
} else if(this.parent_ques.question_key == 'Name_of_the_Person_met'){
|
||||
this.formGroupN.get('Name_of_the_Person_met').patchValue((res.pdMasterList.applicat_details[0].applicant_name
|
||||
let name = localStorage.getItem('pdApplicantData')
|
||||
let res = JSON.parse(name)
|
||||
this.formGroupN.get('Name_of_the_Person_met').patchValue((res.toString()|| ''))
|
||||
|
||||
|| ''))
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
if(this.parent_ques.question_key == 'avail_loan_moratorium_facility'){
|
||||
|
||||
@ -170,7 +170,7 @@ else
|
||||
}
|
||||
}
|
||||
loadTemplate() {
|
||||
|
||||
localStorage.setItem('callApi','0')
|
||||
this.is_loading = true
|
||||
// let localId = this.getLocalFormId()
|
||||
// console.log("d",this.pd_all_details.form_id,Number(this.pd_all_details.form_id))
|
||||
@ -287,6 +287,212 @@ else
|
||||
//formValues = JSON.parse(records.json)
|
||||
if(this.pd_all_details_data.FormData.form_id =='34'){
|
||||
this.quesService.formanswers = records
|
||||
|
||||
// this.quesService.formanswers = [
|
||||
// {
|
||||
// "answer_value": "https://test-lender21.s3.ap-south-1.amazonaws.com/pd3369/eCeE12022-11-07-12-08-18.jpeg?X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAR7TQUR2JQYXKFYXA%2F20221108%2Fap-south-1%2Fs3%2Faws4_request&X-Amz-Date=20221108T092822Z&X-Amz-SignedHeaders=host&X-Amz-Expires=300&X-Amz-Signature=233fd1b2ba52d0674fa32b7e6b6943d35d6a465c2d16c0a2e626f188c51da6f2",
|
||||
// "question": "Selfie with person met",
|
||||
// "question_key": "selfie_with_person_met",
|
||||
// "type": "6",
|
||||
// "raw_validations": [],
|
||||
// "validations": [],
|
||||
// "api_properties": null,
|
||||
// "onchange_properties": null,
|
||||
// "answers": null,
|
||||
// "is_repeatable": null,
|
||||
// "is_multiple": 0,
|
||||
// "group_title": null,
|
||||
// "is_loader": "",
|
||||
// "is_saved": "",
|
||||
// "is_image_status": false,
|
||||
// "pd_document_id": "14441"
|
||||
// },
|
||||
// {
|
||||
// "answer_value": "saved",
|
||||
// "question": "ID card",
|
||||
// "question_key": "id_card",
|
||||
// "type": "6",
|
||||
// "raw_validations": [],
|
||||
// "validations": [],
|
||||
// "api_properties": null,
|
||||
// "onchange_properties": null,
|
||||
// "answers": null,
|
||||
// "is_repeatable": null,
|
||||
// "is_multiple": 0,
|
||||
// "group_title": null,
|
||||
// "is_loader": "",
|
||||
// "is_saved": "",
|
||||
// "is_image_status": false
|
||||
// },
|
||||
// {
|
||||
// "answer_value": "saved",
|
||||
// "question": "Machinery Image",
|
||||
// "question_key": "machinery_image",
|
||||
// "type": "6",
|
||||
// "raw_validations": [],
|
||||
// "validations": [],
|
||||
// "api_properties": null,
|
||||
// "onchange_properties": null,
|
||||
// "answers": null,
|
||||
// "is_repeatable": null,
|
||||
// "is_multiple": 0,
|
||||
// "group_title": null,
|
||||
// "is_loader": "",
|
||||
// "is_saved": "",
|
||||
// "is_image_status": false
|
||||
// },
|
||||
// {
|
||||
// "is_repeatable": "1",
|
||||
// "is_multi_disabled": "0",
|
||||
// "group_title": "Approach to PD Location",
|
||||
// "group_type": "6",
|
||||
// "question_key": "approach_to_pd_location",
|
||||
// "questions_group": [
|
||||
// {
|
||||
// "questions": [
|
||||
// {
|
||||
// "answer_value": "https://test-lender21.s3.ap-south-1.amazonaws.com/pd3369/T3c5g2022-11-07-12-08-30.jpeg?X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAR7TQUR2JQYXKFYXA%2F20221108%2Fap-south-1%2Fs3%2Faws4_request&X-Amz-Date=20221108T092822Z&X-Amz-SignedHeaders=host&X-Amz-Expires=300&X-Amz-Signature=a06aa90a179256f54d1af81de108bf65f27a533ad64af8565fab8c9b126077a3",
|
||||
// "question": "Approach to PD Location",
|
||||
// "question_key": "approach_to_pd_location",
|
||||
// "type": "6",
|
||||
// "raw_validations": [],
|
||||
// "validations": [],
|
||||
// "api_properties": null,
|
||||
// "onchange_properties": null,
|
||||
// "answers": null,
|
||||
// "is_repeatable": null,
|
||||
// "is_multiple": 0,
|
||||
// "group_title": null,
|
||||
// "is_loader": "",
|
||||
// "is_saved": "",
|
||||
// "is_image_status": false,
|
||||
// "pd_document_id": "14442"
|
||||
// }
|
||||
// ]
|
||||
// }
|
||||
// ]
|
||||
// },
|
||||
// {
|
||||
// "is_repeatable": "1",
|
||||
// "is_multi_disabled": "0",
|
||||
// "group_title": "Name Board Seen",
|
||||
// "group_type": "6",
|
||||
// "question_key": "name_board_seen",
|
||||
// "questions_group": [
|
||||
// {
|
||||
// "questions": [
|
||||
// {
|
||||
// "answer_value": "saved",
|
||||
// "question": "Name Board Seen",
|
||||
// "question_key": "name_board_seen",
|
||||
// "type": "6",
|
||||
// "raw_validations": [],
|
||||
// "validations": [],
|
||||
// "api_properties": null,
|
||||
// "onchange_properties": null,
|
||||
// "answers": null,
|
||||
// "is_repeatable": null,
|
||||
// "is_multiple": 0,
|
||||
// "group_title": null,
|
||||
// "is_loader": "",
|
||||
// "is_saved": "",
|
||||
// "is_image_status": false
|
||||
// }
|
||||
// ]
|
||||
// }
|
||||
// ]
|
||||
// },
|
||||
// {
|
||||
// "is_repeatable": "1",
|
||||
// "is_multi_disabled": "0",
|
||||
// "group_title": "Stock Photograph's",
|
||||
// "group_type": "6",
|
||||
// "question_key": "stock_image",
|
||||
// "questions_group": [
|
||||
// {
|
||||
// "questions": [
|
||||
// {
|
||||
// "answer_value": "saved",
|
||||
// "question": "Stock Photograph's",
|
||||
// "question_key": "stock_image",
|
||||
// "type": "6",
|
||||
// "raw_validations": [],
|
||||
// "validations": [],
|
||||
// "api_properties": null,
|
||||
// "onchange_properties": null,
|
||||
// "answers": null,
|
||||
// "is_repeatable": null,
|
||||
// "is_multiple": 0,
|
||||
// "group_title": null,
|
||||
// "is_loader": "",
|
||||
// "is_saved": "",
|
||||
// "is_image_status": false
|
||||
// }
|
||||
// ]
|
||||
// }
|
||||
// ]
|
||||
// },
|
||||
// {
|
||||
// "is_repeatable": "1",
|
||||
// "is_multi_disabled": "0",
|
||||
// "group_title": "Documents photographs",
|
||||
// "group_type": "6",
|
||||
// "question_key": "documents_interior_image",
|
||||
// "questions_group": [
|
||||
// {
|
||||
// "questions": [
|
||||
// {
|
||||
// "answer_value": "saved",
|
||||
// "question": "Documents photographs",
|
||||
// "question_key": "documents_interior_image",
|
||||
// "type": "6",
|
||||
// "raw_validations": [],
|
||||
// "validations": [],
|
||||
// "api_properties": null,
|
||||
// "onchange_properties": null,
|
||||
// "answers": null,
|
||||
// "is_repeatable": null,
|
||||
// "is_multiple": 0,
|
||||
// "group_title": null,
|
||||
// "is_loader": "",
|
||||
// "is_saved": "",
|
||||
// "is_image_status": false
|
||||
// }
|
||||
// ]
|
||||
// }
|
||||
// ]
|
||||
// },
|
||||
// {
|
||||
// "is_repeatable": "1",
|
||||
// "is_multi_disabled": "0",
|
||||
// "group_title": "VIDEOS",
|
||||
// "group_type": "6",
|
||||
// "question_key": "video",
|
||||
// "questions_group": [
|
||||
// {
|
||||
// "questions": [
|
||||
// {
|
||||
// "answer_value": "https://test-lender21.s3.ap-south-1.amazonaws.com/pd3369/video/fileName2.mp4?X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAR7TQUR2JQYXKFYXA%2F20221108%2Fap-south-1%2Fs3%2Faws4_request&X-Amz-Date=20221108T094754Z&X-Amz-SignedHeaders=host&X-Amz-Expires=604800&X-Amz-Signature=c1b8dab3113b0d24cf1c06744981ef159d47f50ac1c98699274d56813ec4c085",
|
||||
// "question": "VIDEOS",
|
||||
// "question_key": "video",
|
||||
// "type": "6",
|
||||
// "raw_validations": [],
|
||||
// "validations": [],
|
||||
// "api_properties": null,
|
||||
// "onchange_properties": null,
|
||||
// "answers": null,
|
||||
// "is_repeatable": null,
|
||||
// "is_multiple": 0,
|
||||
// "group_title": null,
|
||||
// "is_loader": "",
|
||||
// "is_saved": "",
|
||||
// "is_image_status": false
|
||||
// }
|
||||
// ]
|
||||
// }
|
||||
// ]
|
||||
// }
|
||||
// ]
|
||||
}else{
|
||||
formValues = records.json
|
||||
this.quesService.formanswers= formValues
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
<button [ngStyle]="{'color':role_id == '20' ? '#0d93a9' :'#f44336'}" (click)="capture($event)" mat-button mat-raised-button [disabled]="sales_pd_type == '2'">Capture
|
||||
<button [ngStyle]="{'color':role_id == '20' ? '#0d93a9' :'#f44336'}" (click)="capture($event)" mat-button mat-raised-button >Capture
|
||||
<mat-icon name="camera" *ngIf="!addMoreBtn">add_a_photo</mat-icon>
|
||||
<mat-icon name="camera" *ngIf="addMoreBtn">add_a_photo</mat-icon>
|
||||
</button>
|
||||
|
||||
@ -26,7 +26,7 @@ import { LoaderService } from 'app/shared/loaderService/loader.service';
|
||||
styleUrls: ['./capture-btn.component.scss']
|
||||
})
|
||||
export class CaptureBtnComponent implements OnInit {
|
||||
|
||||
@Input() json_index:any;
|
||||
@Input() addMoreBtn;
|
||||
@Output() imageDataEmitter = new EventEmitter
|
||||
@Output() singleDataEmitter = new EventEmitter
|
||||
@ -36,7 +36,7 @@ export class CaptureBtnComponent implements OnInit {
|
||||
constructor(private ng2ImgMax:Ng2ImgMaxService,private loaderService:LoaderService) {
|
||||
this.role_id = localStorage.getItem('user_role')
|
||||
this.sales_pd_type = localStorage.getItem('sales_pd_type')
|
||||
console.log(this.sales_pd_type)
|
||||
console.log(this.json_index)
|
||||
}
|
||||
|
||||
ngOnInit(): void {
|
||||
@ -45,6 +45,7 @@ export class CaptureBtnComponent implements OnInit {
|
||||
capturedImage(event){
|
||||
this.loaderService.showMatSpinnerDialog('Fetching Data...')
|
||||
console.log(event);
|
||||
console.log(this.json_index)
|
||||
let imageData= event.target.files[0]
|
||||
|
||||
this.ng2ImgMax.resizeImage(imageData, 450, 650).subscribe(
|
||||
@ -52,6 +53,7 @@ export class CaptureBtnComponent implements OnInit {
|
||||
|
||||
this.imageDataEmitter.emit(result)
|
||||
this.singleDataEmitter.emit(result)
|
||||
localStorage.setItem('callApi','1')
|
||||
this.loaderService.closeMatSpinnerDialog()
|
||||
},
|
||||
error => {
|
||||
|
||||
@ -361,7 +361,13 @@ export class QuestionServiceService {
|
||||
// FOR SETTING THE ARRAY OF VALIDATORS COMING FROM JSON Temp,
|
||||
settingArrayofValidators(data,curr_control,curr_index){
|
||||
console.log("entered 334",data,curr_control,curr_index);
|
||||
if(data.hasOwnProperty('validations') && data.validations.length > 0 ){
|
||||
if(data.hasOwnProperty('validations') ){
|
||||
if(data.validations instanceof Array){
|
||||
if( data.validations.length > 0){
|
||||
|
||||
|
||||
|
||||
|
||||
const validList :any= [];
|
||||
let validator_value
|
||||
data.validations=data.validations.filter(val=>val.isactive != '0')
|
||||
@ -392,6 +398,8 @@ export class QuestionServiceService {
|
||||
console.log("after setting validators 363",curr_control)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// END OF SETTINGARRAYOFVALIDATORS FUN
|
||||
|
||||
// FOR GETTING THE VALIDATION VALUE
|
||||
|
||||
@ -752,4 +752,10 @@ generatesateliteimage(param:any): Observable<any>{
|
||||
})
|
||||
)
|
||||
}
|
||||
saveShortsVideo(imagesDetails)
|
||||
{
|
||||
console.log('savepdimg',imagesDetails);
|
||||
// let record = {'records':imagesDetails};
|
||||
return this._http.post(api_url+'saveShortsVideo',imagesDetails);
|
||||
}
|
||||
}
|
||||
|
||||
@ -430,7 +430,13 @@
|
||||
<mat-icon style="font-size: 14px; line-height: 0px;">edit</mat-icon>
|
||||
</button> -->
|
||||
</div>
|
||||
<img class="image-class" [src]="single_ques.get('answer_value').value" imageViewer class="doc-image-bucket" >
|
||||
<img *ngIf="single_ques.get('question').value != 'VIDEOS'" class="image-class" [src]="single_ques.get('answer_value').value" imageViewer class="doc-image-bucket" >
|
||||
<video *ngIf="single_ques.get('question').value == 'VIDEOS'"
|
||||
|
||||
[src]="single_ques.get('answer_value').value"
|
||||
style=" width: 200px;
|
||||
height: 170px;"
|
||||
controls></video>
|
||||
<br/>
|
||||
</div>
|
||||
</div>
|
||||
@ -450,8 +456,8 @@
|
||||
<span style="margin:0px;" *ngIf="(single_ques.get('is_saved').value == false &&
|
||||
single_ques.get('is_loader').value == false) && (single_ques.value.hasOwnProperty('is_saved') &&
|
||||
single_ques.value.hasOwnProperty('is_loader'))" (click)="imageReupload(single_ques)">
|
||||
<div style="margin-top: -17px;padding:0px;"><button mat-ion-button clear><mat-icon style="color:lightcoral;" name="refresh-circle"></mat-icon></button></div>
|
||||
<div style="margin-top: -20px;padding:0px;"><p style="font-size: 10px">Click to ReUpload</p></div>
|
||||
<!-- <div style="margin-top: -17px;padding:0px;"><button mat-ion-button clear><mat-icon style="color:lightcoral;" name="refresh-circle"></mat-icon></button></div>
|
||||
<div style="margin-top: -20px;padding:0px;"><p style="font-size: 10px">Click to ReUpload</p></div> -->
|
||||
</span>
|
||||
</div>
|
||||
<!-- <input *ngIf="image.Name =='' && image.option != 'dummy'" width="20px" ion-input type="text" placeholder="Document Name" (blur)="changeName($event.target.value,i,image.image)"> -->
|
||||
@ -467,10 +473,14 @@
|
||||
<!-- <button mat-raised-button color="warn" style="min-width: 65px !important;" [disabled]="sales_pd_type == '2'" (click)="addData(g_i,parent_ques,group_ques.get('questions').value,$event,'camera',single_ques)">
|
||||
<mat-icon>camera_alt</mat-icon>+
|
||||
</button> -->
|
||||
<span (click)="getIndex(g_i,parent_ques,group_ques.get('questions').value,single_ques)">
|
||||
<span *ngIf="single_ques.get('question').value != 'VIDEOS'" (click)="getIndex(g_i,parent_ques,group_ques.get('questions').value,single_ques)">
|
||||
<app-capture-btn class="file-btn" (imageDataEmitter)="addImage($event,g_i,parent_ques,group_ques.get('questions').value,single_ques)" ></app-capture-btn>
|
||||
</span>
|
||||
<!-- <button class="ml-1 mr-1 hover-icon" mat-raised-button clear style="color: #f3432c" [disabled]="sales_pd_type == '2'" (click)="addData(g_i,parent_ques,group_ques.get('questions').value,$event,'camera',single_ques)"><mat-icon style="font-size:25px">camera_alt</mat-icon>+</button> -->
|
||||
<span *ngIf=" parent_ques.get('group_title').value == 'VIDEOS'" (click)="getIndex(g_i,parent_ques,group_ques.get('questions').value,single_ques)">
|
||||
<app-video-capture-btn class="file-btn2" (videoDataEmitter)="addvideo($event,g_i,parent_ques,group_ques.get('questions').value,single_ques)" ></app-video-capture-btn>
|
||||
</span>
|
||||
|
||||
<!-- <button class="ml-1 mr-1 hover-icon" mat-raised-button clear style="color: #f3432c" type="file" (change)="capturedImage($event)" ><mat-icon style="font-size:25px">camera_alt</mat-icon> <input *ngIf="single_ques.get('question').value == 'VIDEOS'" type="file" (change)="capturedImage($event)" id="input-file" name="file" accept="video/*" capture="user" style="display: none"></button> -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@ -28,6 +28,7 @@ import { CameraService } from '../ques-template/providers/camera/camera.service'
|
||||
import { ApiServiceService } from '../ques-template/providers/services/api-service.service';
|
||||
import { FormComponent } from '../form/form.component';
|
||||
import { PdTrigerService } from 'app/personal-discussion/pd-service/pd-triger.service';
|
||||
import { DomSanitizer } from '@angular/platform-browser';
|
||||
// import { ImageEditComponent } from './image-edit/image-edit.component';
|
||||
// const originFormControlNameNgOnChanges = FormControlName.prototype.ngOnChanges;
|
||||
// FormControlName.prototype.ngOnChanges = function () {
|
||||
@ -69,6 +70,7 @@ export class QuesTemplateComponent {
|
||||
@ViewChild('accordion') Accordion: MatAccordion
|
||||
@ViewChild('mapanel') matExpansionPanel:MatExpansionPanel
|
||||
@Output() imageDataEmitter = new EventEmitter
|
||||
@Output() videoDataEmitter = new EventEmitter
|
||||
@Output() singleDataEmitter = new EventEmitter
|
||||
@ViewChild('dummy_img_more') dummyImgMoreRef: ElementRef;
|
||||
emittedFormGroup: any = null;
|
||||
@ -90,7 +92,8 @@ export class QuesTemplateComponent {
|
||||
pd_all_details_data: any;
|
||||
parent_index: any=[];
|
||||
parent_control: any=[];
|
||||
constructor( private pdTriggerService:PdTrigerService,private cameraService: CameraService,public dialogRef: MatDialogRef<FormComponent>,private route: ActivatedRoute,private router: Router,private dialog:MatDialog,private _fb:FormBuilder,private questionService:QuestionServiceService,private SalesPdService:SalesPdService,notifier: NotifierService,private loaderService:LoaderService) {
|
||||
prev_url : any;
|
||||
constructor( private sanitizer : DomSanitizer, private pdTriggerService:PdTrigerService,private cameraService: CameraService,public dialogRef: MatDialogRef<FormComponent>,private route: ActivatedRoute,private router: Router,private dialog:MatDialog,private _fb:FormBuilder,private questionService:QuestionServiceService,private SalesPdService:SalesPdService,notifier: NotifierService,private loaderService:LoaderService) {
|
||||
this.role_id = localStorage.getItem('LenderRoleID')
|
||||
console.log('Hello QuesTemplateComponent Component');
|
||||
this.text = 'Hello World';
|
||||
@ -360,6 +363,33 @@ console.log(this.pdstatus)
|
||||
|
||||
}
|
||||
}
|
||||
capturedImage(event){
|
||||
this.loaderService.showMatSpinnerDialog('Fetching Data...')
|
||||
console.log(event);
|
||||
// console.log(this.sales_pd_type,this.videoDataEmitter)
|
||||
let imageData= event.target.files[0]
|
||||
let files = imageData
|
||||
// var URL = window.URL;
|
||||
//var URL = window.URL || window.webkitURL;
|
||||
var file = new Blob([files],{"type" : "video\/mp4"});
|
||||
//var value = URL.createObjectURL(file);
|
||||
console.log(file)
|
||||
// this.ng2ImgMax.resizeImage(imageData, 450, 650).subscribe(
|
||||
// result => {
|
||||
//this.videoDataEmitter.emit(file)
|
||||
//localStorage.setItem('callApi','1')
|
||||
this.loaderService.closeMatSpinnerDialog()
|
||||
// this.imageDataEmitter.emit(result)
|
||||
// this.singleDataEmitter.emit(result)
|
||||
// localStorage.setItem('callApi','1')
|
||||
// this.loaderService.closeMatSpinnerDialog()
|
||||
// },
|
||||
// error => {
|
||||
// console.log('😢 Oh no!', error);
|
||||
// }
|
||||
// );
|
||||
|
||||
}
|
||||
proceedonChangeProperty(local_value_obj?){
|
||||
console.log("On Change Property",this.quesAnsForm.value.questions);
|
||||
|
||||
@ -528,6 +558,315 @@ this.proceedonChangeProperty(modified)
|
||||
|
||||
this.current_index = index;
|
||||
}
|
||||
getIndex_name(index,q,data,single_ques) {
|
||||
console.log('curr', index);
|
||||
console.log(q);
|
||||
|
||||
// setTimeout(function(){
|
||||
// console.log(q);
|
||||
// },3000);
|
||||
// console.log(q.controls);
|
||||
this.tmp =[]
|
||||
this.tmp.push(q)
|
||||
console.log(data);
|
||||
data.forEach(element => {
|
||||
console.log(element.question_key);
|
||||
});
|
||||
console.log(this.tmp);
|
||||
|
||||
this.tmp[0].value.question_key
|
||||
console.log( this.tmp[0].value.group_title)
|
||||
console.log( this.tmp[0].value.question_key)
|
||||
|
||||
return this.tmp[0].value.group_title
|
||||
|
||||
this.tmp_ques = single_ques;
|
||||
console.log(single_ques)
|
||||
this.tmp_control = this.questionService
|
||||
|
||||
this.current_index = index;
|
||||
}
|
||||
addvideo2(event, index, parent_index, data,single_ques1) {
|
||||
|
||||
console.log(event, index, parent_index, data,single_ques1)
|
||||
const formData:any = new FormData();
|
||||
formData.append('video_file', event);
|
||||
this.pd_all_details_data = JSON.parse(localStorage.getItem('pd_all_details'))
|
||||
let params = {
|
||||
filename:'fileName6.mp4',
|
||||
|
||||
"pd_id": this.pd_all_details_data.pdMasterList.pd_id,
|
||||
"form_id": this.pd_all_details_data.FormData.form_id,
|
||||
|
||||
}
|
||||
formData.append('records',JSON.stringify(params))
|
||||
console.log(formData)
|
||||
|
||||
this.SalesPdService.saveShortsVideo(formData).subscribe(apiresult=>{
|
||||
if(apiresult['dataStatus']){
|
||||
console.log(apiresult)
|
||||
let result:any =apiresult
|
||||
this.imageData = this.quesAnsForm.value.questions
|
||||
//this.imageData[this.current_index].img_url = result.records.uri
|
||||
console.log( this.current_index)
|
||||
if (this.current_index != 'last') {
|
||||
if (this.imageData[this.current_index].is_multiple == 1) {
|
||||
console.log('multi');
|
||||
let img_param = {img_url: result.records.uri, is_base64: true};
|
||||
this.imageData[this.current_index].img_data.push(img_param);
|
||||
console.log(this.imageData)
|
||||
// this.sendImage(this.imageData, this.imageData[this.current_index].img_data.length - 1);
|
||||
} else {
|
||||
this.imageData[this.current_index].img_url = result.records.uri;
|
||||
console.log(this.imageData[this.current_index])
|
||||
console.log(this.imageData)
|
||||
// this.sendImage(this.imageData);
|
||||
}
|
||||
}
|
||||
console.log( this.imageData)
|
||||
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
addvideo(param_data, index, parent_index, data,single_ques1) {
|
||||
// this.loaderService.showMatSpinnerDialog('Fetching Data...')
|
||||
// this.ngxService.start();
|
||||
let event = param_data.file
|
||||
console.log(event.name)
|
||||
let s:any = this.sanitizer.bypassSecurityTrustUrl(URL.createObjectURL(event));
|
||||
|
||||
this.prev_url= s
|
||||
|
||||
console.log(this.prev_url)
|
||||
|
||||
console.log(this.quesAnsForm)
|
||||
|
||||
console.log(parent_index)
|
||||
console.log(this.tmp_ques)
|
||||
console.log(parent_index['controls'].questions_group)
|
||||
|
||||
this.tmp[0].value.group_title
|
||||
console.log( this.tmp[0].value.question_key)
|
||||
|
||||
console.log(data)
|
||||
data[0].question = this.tmp[0].value.group_title
|
||||
data[0].question_key = this.tmp[0].value.question_key
|
||||
data=data.filter(group_indi=>!group_indi.hasOwnProperty('additional_field') && group_indi.additional_field != 1 )
|
||||
console.log(data)
|
||||
console.log(single_ques1)
|
||||
let single_ques = this.tmp_ques
|
||||
|
||||
console.log(single_ques)
|
||||
console.log(event, index);
|
||||
this.imageData = this.quesAnsForm.value.questions
|
||||
|
||||
console.log(this.quesAnsForm.value.questions)
|
||||
// console.log(this.questions_JSON.questions)
|
||||
console.log(this.imageData);
|
||||
const reader = new FileReader();
|
||||
// let imagePath = event;
|
||||
reader.readAsDataURL(event);
|
||||
reader.onload = (_event) => {
|
||||
// this.imageData = reader.result;
|
||||
// this.cameraService.getPosition().then(geoCords => {
|
||||
// let geoCoordinates;
|
||||
// if (geoCords != 'error') {
|
||||
// geoCoordinates = geoCords;
|
||||
// } else {
|
||||
// geoCoordinates = null;
|
||||
// }
|
||||
// console.log(geoCords);
|
||||
const formData:any = new FormData();
|
||||
formData.append('video_file', event);
|
||||
this.pd_all_details_data = JSON.parse(localStorage.getItem('pd_all_details'))
|
||||
let params_data = {
|
||||
filename: param_data.name,
|
||||
|
||||
"pd_id": this.pd_all_details_data.pdMasterList.pd_id,
|
||||
"form_id": this.pd_all_details_data.FormData.form_id,
|
||||
|
||||
}
|
||||
formData.append('records',JSON.stringify(params_data))
|
||||
console.log(formData)
|
||||
|
||||
// console.log(param)
|
||||
this.SalesPdService.saveShortsVideo(formData).subscribe(apiresult=>{
|
||||
console.log(apiresult)
|
||||
if(apiresult['dataStatus']){
|
||||
console.log(this.imageData);
|
||||
console.log(this.current_index);
|
||||
// console.log(reader.result, geoCoordinates);
|
||||
// this.pdTriggerService.addWatermarks(reader.result, geoCoordinates).then(watermarked_img => {
|
||||
if (this.current_index != 'last') {
|
||||
if (this.imageData[this.current_index].is_multiple == 1) {
|
||||
console.log('multi');
|
||||
let img_param = {img_url: this.prev_url, is_base64: true, link: null};
|
||||
this.imageData[this.current_index].img_data.push(img_param);
|
||||
console.log(this.imageData)
|
||||
// this.sendImage(this.imageData, this.imageData[this.current_index].img_data.length - 1);
|
||||
} else {
|
||||
this.imageData[this.current_index].img_url = this.prev_url;
|
||||
this.imageData[this.current_index].is_base64 = true;
|
||||
this.imageData[this.current_index].link = null;
|
||||
console.log(this.imageData)
|
||||
// this.sendImage(this.imageData);
|
||||
}
|
||||
} else {
|
||||
// this.getImageName().then(result => {
|
||||
// console.log(result);
|
||||
// this.imageData.push( {
|
||||
// img_key: 'common_image',
|
||||
// img_name:this.tmp[0].value.group_title,
|
||||
// img_url: watermarked_img,
|
||||
// fk_form_id: '',
|
||||
// is_base64: true,
|
||||
// link: null
|
||||
// });
|
||||
// // let el = document.getElementById('dummy-img-more');
|
||||
// // el.scrollIntoView();
|
||||
// setTimeout(() => {
|
||||
// this.dummyImgMoreRef.nativeElement.scrollIntoView({behavior: 'smooth', block: 'end'});
|
||||
// }, 1000);
|
||||
// // this.sendImage(this.imageData);
|
||||
// });
|
||||
}
|
||||
console.log(this.prev_url);
|
||||
console.log(single_ques.controls)
|
||||
console.log(single_ques.value.question)
|
||||
|
||||
this.image_question_name = single_ques.value.question
|
||||
single_ques.controls.answer_value.setValue(this.prev_url)
|
||||
// this.sales_pd_id = Number(this.sales_pd_id)
|
||||
// console.log(this.sales_pd_id)
|
||||
|
||||
// if(this.networkDetection.getCurrentNetworkStatus() == ConnectionStatus.online && (typeof(this.sales_pd_id) == 'string' ? !this.sales_pd_id.includes('local') : true) ) {
|
||||
single_ques.controls.is_image_status.setValue(true)
|
||||
single_ques.controls.is_loader.setValue(true);
|
||||
single_ques.controls.is_saved.setValue(false);
|
||||
let params={"fk_sales_pd_id":"","img":this.prev_url,"img_name":single_ques.value.question_key,"location": null}
|
||||
let storage_param=this.questions_JSON
|
||||
let form_structure=this.questions_JSON
|
||||
form_structure.questions=this.quesAnsForm.getRawValue().questions
|
||||
console.log( form_structure.questions)
|
||||
form_structure.is_complete=1
|
||||
|
||||
|
||||
// else {
|
||||
// single_ques.controls.is_image_status.setValue(true)
|
||||
// single_ques.controls.is_loader.setValue(false);
|
||||
// single_ques.controls.is_saved.setValue(true);
|
||||
// }
|
||||
this.emittedFormGroup = this.quesAnsForm.getRawValue()
|
||||
// PASSING THE VALUE TO PARENT COMPONENT
|
||||
this.imageUploadCheck.emit(this.emittedFormGroup);
|
||||
this.pd_all_details_data = JSON.parse(localStorage.getItem('pd_all_details'))
|
||||
console.log(this.pd_all_details_data)
|
||||
// let param = {
|
||||
// "pd_id": this.pd_all_details_data.pdMasterList.pd_id,
|
||||
// "formid": this.pd_all_details_data.FormData.form_id,
|
||||
// "company_id":null,
|
||||
// "images": [
|
||||
// {
|
||||
// "image": watermarked_img
|
||||
// }
|
||||
// ],
|
||||
// "Name": single_ques.value.question_key,
|
||||
// "link":geoCoordinates,
|
||||
// "image_key":single_ques.value.question_key,
|
||||
// "is_show_report":"1",
|
||||
// "pd_image_alias_name":single_ques.value.question,
|
||||
// "isLoader":true,
|
||||
// "isSaved":false,
|
||||
// "pd_document_id":null,
|
||||
// "pd_document_name":single_ques.value.question
|
||||
// }
|
||||
let ind = parseInt(this.current_index)+1
|
||||
//let index_pdid = this.pd_index( single_ques.value.question_key)
|
||||
let param ={
|
||||
|
||||
"pd_id": this.pd_all_details_data.pdMasterList.pd_id,
|
||||
"formid": this.pd_all_details_data.FormData.form_id,
|
||||
"image": this.prev_url,
|
||||
"image_key": single_ques.value.question_key,
|
||||
"location": null,
|
||||
"is_show_report": "1",
|
||||
"pd_image_alias_name": single_ques.value.question,
|
||||
"pd_document_title": single_ques.value.question+' '+ind,
|
||||
"pd_document_id": null
|
||||
|
||||
}
|
||||
|
||||
// }
|
||||
// })
|
||||
|
||||
// this.SalesPdService.saveSalesPDImage(params,form_structure).subscribe(apiresult=>{
|
||||
// if(apiresult['dataStatus']){
|
||||
single_ques.controls.is_loader.setValue(false);
|
||||
single_ques.controls.is_saved.setValue(true);
|
||||
this.httpListener(apiresult);
|
||||
form_structure.questions=this.quesAnsForm.getRawValue().questions
|
||||
this.SalesPdService.updateSectionDataLocally(params,form_structure).subscribe(res=>{
|
||||
})
|
||||
storage_param.questions=this.quesAnsForm.getRawValue().questions
|
||||
console.log( storage_param.questions)
|
||||
let key_value = localStorage.getItem('sales_pd_id_PRIMARYKEY')
|
||||
|
||||
// this.SalesPdService.getData_fromLocal('sales_pd_id_PRIMARYKEY').then(key_value=>{
|
||||
console.log(key_value)
|
||||
storage_param.sales_pd_id=key_value
|
||||
// this.salesPDProvider.insertData_Replace('sec'+storage_param.section_id,storage_param)
|
||||
// })
|
||||
// console.log("image saved successfully")
|
||||
this.notifier.notify("success","Image Saved Successfully");
|
||||
|
||||
|
||||
console.log(this.tmp_ques)
|
||||
// this.tmp[1].controls.questions_group
|
||||
// console.log(parent_index['controls'].questions_group)
|
||||
// let control: any = parent_index['controls'].questions_group as FormArray
|
||||
this.tmp.length
|
||||
console.log(this.tmp[0])
|
||||
let control: any = this.tmp[0].controls.questions_group
|
||||
console.log(control)
|
||||
console.log(this.current_index )
|
||||
parent_index
|
||||
|
||||
control.push(this._fb.group({ 'questions': this._fb.array([]) }))
|
||||
let sub_childControl: any = control.controls[this.current_index + 1].get('questions') as FormArray
|
||||
console.log(sub_childControl)
|
||||
console.log(data)
|
||||
|
||||
|
||||
data.forEach((group_indi,arr_index )=> {
|
||||
console.log(group_indi,arr_index)
|
||||
delete group_indi.answer_value
|
||||
sub_childControl.push(this.questionService.createValue(group_indi))
|
||||
this.questionService.addAdditionalControl(group_indi, sub_childControl, arr_index)
|
||||
this.tmp = []
|
||||
|
||||
this.loaderService.closeMatSpinnerDialog()
|
||||
})
|
||||
}else{
|
||||
let data:any = apiresult
|
||||
this.notifier.notify("info",data.msg
|
||||
);
|
||||
single_ques.controls.is_loader.setValue(false);
|
||||
single_ques.controls.is_saved.setValue(false);
|
||||
//this.SalesPdService.clear_local_key('sec'+storage_param.section_id)
|
||||
// this.toastProvider.lenderappmessage("Something went wrong");
|
||||
}
|
||||
|
||||
})
|
||||
// this.ngxService.stop();
|
||||
// }, err => {
|
||||
// console.log('dk', err);
|
||||
// //this.ngxService.stop();
|
||||
// });
|
||||
// });
|
||||
};
|
||||
}
|
||||
|
||||
addImage(event, index, parent_index, data,single_ques1) {
|
||||
// this.loaderService.showMatSpinnerDialog('Fetching Data...')
|
||||
// this.ngxService.start();
|
||||
@ -2071,6 +2410,10 @@ this.parent_control.push( parent_control)
|
||||
// SENDING SALES PD SECTION 9 STRUCTURE(photographs)
|
||||
ngOnDestroy(){
|
||||
// console.clear()
|
||||
let callapi = localStorage.getItem('callApi')
|
||||
if(callapi == '1'){
|
||||
this.save_image()
|
||||
}
|
||||
console.log("dirty check",this.quesAnsForm.dirty)
|
||||
if(this.local_ques_JSON.section_id == 9 && this.emittedFormGroup != null){
|
||||
// FOR SENDING THE IMAGE SECTION (SECTION ID 9) JSON Structure
|
||||
@ -2191,18 +2534,18 @@ this.parent_control.push( parent_control)
|
||||
|
||||
if(element.hasOwnProperty('answer_value') ){
|
||||
console.log(element)
|
||||
if(element.answer_value != ''){
|
||||
if(element.answer_value != ''){
|
||||
element.answer_value = 'saved'
|
||||
}
|
||||
}
|
||||
|
||||
}else{
|
||||
element.questions_group.forEach(e => {
|
||||
e.questions.forEach(c => {
|
||||
if(c.hasOwnProperty('answer_value') ){
|
||||
console.log(c)
|
||||
if(c.answer_value != ''){
|
||||
if(c.answer_value != ''){
|
||||
c.answer_value = 'saved'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
@ -2263,4 +2606,5 @@ this.parent_control.push( parent_control)
|
||||
});
|
||||
return ans
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
<button [ngStyle]="{'color':role_id == '20' ? '#0d93a9' :'#f44336'}" (click)="singlecapture($event)" mat-button mat-raised-button [disabled]="sales_pd_type == '2'">Capture
|
||||
<button [ngStyle]="{'color':role_id == '20' ? '#0d93a9' :'#f44336'}" (click)="singlecapture($event)" mat-button mat-raised-button >Capture
|
||||
<mat-icon name="camera" *ngIf="!addMoreBtn">camera_alt</mat-icon>
|
||||
<mat-icon name="camera" *ngIf="addMoreBtn">add_a_photo</mat-icon>
|
||||
</button>
|
||||
|
||||
@ -76,6 +76,7 @@ export class SingleCaptureBtnComponent {
|
||||
this.ng2ImgMax.resizeImage(imageData, 450, 650).subscribe(
|
||||
result => {
|
||||
console.log(result);
|
||||
localStorage.setItem('callApi','1')
|
||||
this.singleDataEmitter.emit(result)
|
||||
this.loaderService.closeMatSpinnerDialog()
|
||||
},
|
||||
|
||||
@ -0,0 +1,6 @@
|
||||
<button [ngStyle]="{'color':role_id == '20' ? '#0d93a9' :'#f44336'}" (click)="capture($event)" mat-button mat-raised-button >Capture Video
|
||||
<mat-icon name="camera" *ngIf="!addMoreBtn">add_a_photo</mat-icon>
|
||||
<mat-icon name="camera" *ngIf="addMoreBtn">add_a_photo</mat-icon>
|
||||
</button>
|
||||
<input type="file" (change)="capturedImage($event)" id="input-file2" name="file" accept="video/*" capture="user" style="display: none">
|
||||
<!-- document.querySelector('#input-file').click() -->
|
||||
@ -0,0 +1,25 @@
|
||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { VideoCaptureBtnComponent } from './video-capture-btn.component';
|
||||
|
||||
describe('VideoCaptureBtnComponent', () => {
|
||||
let component: VideoCaptureBtnComponent;
|
||||
let fixture: ComponentFixture<VideoCaptureBtnComponent>;
|
||||
|
||||
beforeEach(async(() => {
|
||||
TestBed.configureTestingModule({
|
||||
declarations: [ VideoCaptureBtnComponent ]
|
||||
})
|
||||
.compileComponents();
|
||||
}));
|
||||
|
||||
beforeEach(() => {
|
||||
fixture = TestBed.createComponent(VideoCaptureBtnComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
||||
@ -0,0 +1,60 @@
|
||||
import { Component, OnInit, Output, EventEmitter, Input, Injectable } from '@angular/core';
|
||||
import { Ng2ImgMaxService } from 'ng2-img-max';
|
||||
import { LoaderService } from 'app/shared/loaderService/loader.service';
|
||||
@Component({
|
||||
selector: 'app-video-capture-btn',
|
||||
templateUrl: './video-capture-btn.component.html',
|
||||
styleUrls: ['./video-capture-btn.component.scss']
|
||||
})
|
||||
export class VideoCaptureBtnComponent implements OnInit {
|
||||
|
||||
@Input() addMoreBtn;
|
||||
@Output() videoDataEmitter = new EventEmitter
|
||||
@Output() singleDataEmitter = new EventEmitter
|
||||
sales_pd_type: string;
|
||||
role_id: string;
|
||||
|
||||
constructor(private ng2ImgMax:Ng2ImgMaxService,private loaderService:LoaderService) {
|
||||
this.role_id = localStorage.getItem('user_role')
|
||||
this.sales_pd_type = localStorage.getItem('sales_pd_type')
|
||||
console.log(this.sales_pd_type,this.videoDataEmitter)
|
||||
}
|
||||
|
||||
ngOnInit(): void {
|
||||
console.log(this.addMoreBtn)
|
||||
}
|
||||
capturedImage(event){
|
||||
this.loaderService.showMatSpinnerDialog('Fetching Data...')
|
||||
console.log(event);
|
||||
console.log(this.sales_pd_type,this.videoDataEmitter)
|
||||
let imageData= event.target.files[0]
|
||||
let files = imageData
|
||||
// var URL = window.URL;
|
||||
//var URL = window.URL || window.webkitURL;
|
||||
var file = new Blob([files],{"type" : "video\/mp4"});
|
||||
//var value = URL.createObjectURL(file);
|
||||
console.log(file)
|
||||
// this.ng2ImgMax.resizeImage(imageData, 450, 650).subscribe(
|
||||
// result => {
|
||||
let data ={file:file,name:event.target.files[0].name}
|
||||
this.videoDataEmitter.emit(data)
|
||||
//localStorage.setItem('callApi','1')
|
||||
this.loaderService.closeMatSpinnerDialog()
|
||||
// this.imageDataEmitter.emit(result)
|
||||
// this.singleDataEmitter.emit(result)
|
||||
// localStorage.setItem('callApi','1')
|
||||
// this.loaderService.closeMatSpinnerDialog()
|
||||
// },
|
||||
// error => {
|
||||
// console.log('😢 Oh no!', error);
|
||||
// }
|
||||
// );
|
||||
|
||||
}
|
||||
capture(event){
|
||||
event.preventDefault();
|
||||
let element:HTMLElement = document.getElementById('input-file2') as HTMLElement
|
||||
element.click();
|
||||
}
|
||||
}
|
||||
|
||||
@ -120,9 +120,9 @@
|
||||
<mat-icon>delete</mat-icon>
|
||||
</button>
|
||||
<div *ngIf="digilocker_access_Enabled == 1" >
|
||||
<button type="button" class="mr-1 hover-icon" mat-raised-button mat-icon-button (click)="digitallocker(details,i)" *ngIf="_generalForm.controls.individuals.value[i].is_main_applicant != true"
|
||||
matTooltip="DigiLocker " matTooltipPosition="below" [style.visibility]="_generalForm.controls.individuals.value[i].is_main_applicant == true ? 'hidden':'visible'">
|
||||
<mat-icon>vpn_lock</mat-icon>
|
||||
<button type="button" class="mr-1 hover-icon" mat-raised-button mat-icon-button (click)="digitallocker(details,i)"
|
||||
matTooltip="DigiLocker " matTooltipPosition="below" >
|
||||
<mat-icon svgIcon="digilocker"></mat-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { Component, OnInit, Input, Output, Inject } from '@angular/core';
|
||||
import { FormBuilder, FormGroup, Validators, FormControl, FormArray } from '@angular/forms';
|
||||
import { MatDialog, MatDialogRef, MAT_DIALOG_DATA, MatTableDataSource } from '@angular/material';
|
||||
import { MatDialog, MatDialogRef, MAT_DIALOG_DATA, MatTableDataSource, MatIconRegistry } from '@angular/material';
|
||||
import { NotifierService } from 'angular-notifier';
|
||||
import { PdTrigerService } from './../../../../../pd-service/pd-triger.service';
|
||||
import { OtherApplicantDetailsComponent } from './../dialogue/other-applicant-details/other-applicant-details.component';
|
||||
@ -13,6 +13,7 @@ import { ImageCropComponent } from '../dialogue/image-crop/image-crop.component'
|
||||
import { ReplaySubject } from 'rxjs';
|
||||
import { takeUntil } from 'rxjs/operators';
|
||||
import { FacialRecognitionModalComponent } from '../facial-recognition/facial-recognition-modal/facial-recognition-modal.component';
|
||||
import { DomSanitizer } from '@angular/platform-browser';
|
||||
// import { ImageCropperComponent } from '../dialogue/image-cropper/image-cropper.component';
|
||||
|
||||
@Component({
|
||||
@ -108,8 +109,9 @@ export class GeneralInfoComponent implements OnInit {
|
||||
/********************** Declaration Section Ends Here *****************/
|
||||
|
||||
/** Constructor Section */
|
||||
constructor(notifier: NotifierService, private _fb: FormBuilder, private _pd: PdTrigerService, private dialog: MatDialog, @Inject(MAT_DIALOG_DATA) public pd_all_details: any, private dialogRef: MatDialogRef<GeneralInfoComponent>, private titleCase: TitleCasePipe, private imageRef: MatDialogRef<ImageCropComponent>) {
|
||||
constructor(notifier: NotifierService, private _fb: FormBuilder, private _pd: PdTrigerService, private dialog: MatDialog, @Inject(MAT_DIALOG_DATA) public pd_all_details: any, private dialogRef: MatDialogRef<GeneralInfoComponent>, private titleCase: TitleCasePipe, private imageRef: MatDialogRef<ImageCropComponent>,private sanitizer: DomSanitizer, private readonly matIconRegistry: MatIconRegistry) {
|
||||
console.log(this.pd_all_details)
|
||||
this.matIconRegistry.addSvgIcon('digilocker', this.sanitizer.bypassSecurityTrustResourceUrl('assets/images/digilocker.svg'));
|
||||
this.pdid = this.pd_all_details.pdmaster_details.pd_id;
|
||||
this.lender_short_name = this.pd_all_details.pdmaster_details.lender_short_name;
|
||||
this.parent_pdid = this.pd_all_details.pdmaster_details.parent_pd_id;
|
||||
|
||||
@ -90,8 +90,18 @@
|
||||
<div fxLayout="row wrap" fxLayoutAlign="start stretch" fxLayoutAlign.xs="space-between stretch">
|
||||
<h6 style="font-weight: bold;font-size:1.2rem" *ngIf="!val.img_data || (val.img_data != null && val.img_data.length == 0) || (val.img_data == null)">No Images Captured</h6>
|
||||
<div *ngFor="let multiple_img of val.img_data;let i=index" class ="image-div">
|
||||
<img *ngIf="multiple_img.img_url != '' && multiple_img.img_url != null"
|
||||
<img *ngIf="multiple_img.img_url != '' && multiple_img.img_url != null && val.content_type
|
||||
== '1'"
|
||||
class="image-class" [src]="multiple_img.img_url" [alt]="val.img_key" alt="image" (click)="openImage(multiple_img)"/>
|
||||
<video
|
||||
*ngIf="multiple_img.img_url != '' && multiple_img.img_url != null && val.content_type
|
||||
== '2'"
|
||||
[src]="multiple_img.img_url"
|
||||
|
||||
style=" width: 200px;padding-right: 10px;padding-left: 10px;
|
||||
height: 170px;"
|
||||
controls></video>
|
||||
<!-- <span>{{multiple_img.}}</span> -->
|
||||
|
||||
<div class="image-label" fxLayout ="row" >
|
||||
|
||||
|
||||
@ -52,7 +52,7 @@ export class ImagesAllComponent implements OnInit { imageData: any;
|
||||
this._pd.getPDImgDetails(this.params).subscribe(result=>{
|
||||
if(result.dataStatus) {
|
||||
this.records = result.records
|
||||
|
||||
console.log( this.records)
|
||||
// if(this.records.is_cus_link_disabled != '1') {
|
||||
this.imageData =this.records.img_data;
|
||||
this.imageData.forEach(val=>{
|
||||
|
||||
@ -194,17 +194,18 @@ export class StartPd2Component implements OnInit, OnDestroy {
|
||||
dialogRef.afterClosed()
|
||||
.subscribe(dataresult => {
|
||||
if(dataresult.update_status==true){
|
||||
setTimeout(()=>{
|
||||
// setTimeout(()=>{
|
||||
checkType==2 ? this.router.navigate(['../../viewpd', this.pdMasterList.parent_pd_id], {relativeTo: this.route}) : this.loadTemplates(this.startPD,2,this.randomString,this.fi_id);
|
||||
let data = {
|
||||
"pd_id": this.startPD,
|
||||
"regenerate":0,
|
||||
"random_string":this.randomString
|
||||
};
|
||||
},2000)
|
||||
// this._pd.archivePDImages(data).subscribe(data => {
|
||||
this._pd.archivePDImages(data).subscribe(data => {
|
||||
|
||||
// })
|
||||
})
|
||||
//},2000)
|
||||
|
||||
let data1 = {
|
||||
"pd_id": this.startPD,
|
||||
"regenerate":0,
|
||||
|
||||
@ -144,8 +144,10 @@ export class ImageVideoComponent implements OnInit {
|
||||
// disableClose: true,
|
||||
// panelClass:'video-chat'
|
||||
// })
|
||||
let user = localStorage.getItem('videocall_userid')
|
||||
if(event == 'PDGenie'){
|
||||
let url = window.location.origin+'/vchat/#/chat/'+this.master.random_string+';id='+this.master.pd_id+';type=2'
|
||||
let url = window.location.origin+'/vchat/#/chat/'+this.master.random_string+';id='+this.master.pd_id+';type=2;uid='+user
|
||||
|
||||
window.open(url,'_blank')
|
||||
} else if(event == 'G_Meet'){
|
||||
let url = this.google_Meet_Link
|
||||
|
||||
@ -193,6 +193,12 @@ export class ViewPdComponent implements OnInit, OnDestroy {
|
||||
this.mandatoryFieldsValidations = masterData[1].mandatory_fields;
|
||||
this.pd_QC_Rating = Number(this.pdMasterData.qc_rating);
|
||||
this.pdApplicantData = data.records.applicants_details;
|
||||
let tmp =[]
|
||||
this.pdApplicantData.forEach(element => {
|
||||
tmp.push(element.applicant_name)
|
||||
});
|
||||
console.log(tmp)
|
||||
localStorage.setItem('pdApplicantData',JSON.stringify(tmp))
|
||||
this.pdApplicantData = this.pdApplicantData.filter(appt => appt.applicant_type != 2);
|
||||
this.CustomerSegmentAbbr = this.pdMasterData[0].customer_segment_abbr;
|
||||
this.pdDocumentsData = data.records.pd_documnets;
|
||||
@ -796,10 +802,14 @@ export class ViewPdComponent implements OnInit, OnDestroy {
|
||||
}
|
||||
|
||||
onClickVideoChat(master) {
|
||||
let videoChatLink = window.location.origin+'/vchat/#/chat/'+this.pdMasterData[0].random_string+';id='+this.viewID+';type=1'
|
||||
console.log(master)
|
||||
let user = localStorage.getItem('videocall_userid')
|
||||
let videoChatLink = window.location.origin+'/vchat/#/chat/'+this.pdMasterData[0].random_string+';id='+this.viewID+';type=1;uid='+user
|
||||
|
||||
console.log(videoChatLink)
|
||||
const dialogApplicant = this.dialog.open(ImageVideoComponent, {
|
||||
data: {masterDetails:master,videoChatLink:videoChatLink,applicantNo:this.pdApplicantData[0].mobile_no,flag:1},
|
||||
data: {masterDetails:master,videoChatLink:videoChatLink,applicantNo:this.pdApplicantData[0].mobile_no,flag:1,userid:'fk_pd_allocated_to'
|
||||
},
|
||||
// position: { right: '0' },
|
||||
maxWidth: '70vw',
|
||||
maxHeight: '60vw',
|
||||
|
||||
@ -174,6 +174,7 @@ import { ImgExifService } from 'ng2-img-max/dist/src/img-exif.service';
|
||||
import { ImgMaxPXSizeService } from 'ng2-img-max/dist/src/img-maxpx-size.service';
|
||||
import { Ng2ImgMaxModule } from 'ng2-img-max';
|
||||
import { CameraService } from './list-pd/start-pd/forms-dynamic/ques-template/providers/camera/camera.service';
|
||||
import { VideoCaptureBtnComponent } from './list-pd/start-pd/forms-dynamic/ques-template/video-capture-btn/video-capture-btn.component';
|
||||
/**
|
||||
* Custom angular notifier options
|
||||
*/
|
||||
@ -220,7 +221,7 @@ const pdCustomNotifierOptions: NotifierOptions = {
|
||||
|
||||
@NgModule({
|
||||
declarations: [QuesTemplateComponent,TelePdAllocationComponent, FinancialInfoComponent, BusinessInfoComponent, EmploymentInfoComponent, StockComponent, BankingDetailsComponent, ListPdComponent, FamilyDetailsComponent, AddressComponent, ManagePdComponent, MapPdViewComponent, AddPdComponent, ViewPdComponent,VendorPdAllocationComponent, DuplicatePdComponent,FacialRecognitionModalComponent, PdAllocationComponent, SmartPdAllocationComponent, SchedulePdComponent, EditPdApplicantComponent, EditPdMasterComponent, StartPdComponent,StartPd2Component, InprogressPdComponent, AllPdComponent, ScheduledPdComponent, CompletedPdComponent, QcCompletedPdComponent, ClientInfoComponent, CurrentLoanComponent, AssetsInfoComponent, LoanDetailsComponent, OtherIncomeComponent, SupplierInfoComponent, PersonalInfoComponent, LenderRepresentativeComponent, PdReportComponent, AssessedIncomeComponent, AllocationViewMoreComponent, PdRequirementComponent,PdCollectedDocsComponent, GeneralInfoComponent, ModelEditPdReportComponent, OtherApplicantDetailsComponent, NeighbourHoodComponent, DialogChangeCurrentVenrsion, FinalRemarksComponent, BusinessOtherFamilyMemberComponent, QcReviewComponent, BusinessInfoGroupComponent, SearchRelationPipe, RupeeCurrencyFormatPipe, NumberToWordsPipe, DeleteRecordsCountPipe, BusinessAssetsInfoComponent, BusinessBankingDetailsComponent, SalesDetailsComponent, DailySalesDetailsComponent, SalesCalculationComponent, ManageSalesComponent, PurchaseDetailsComponent, BusinessExpenseDetailsComponent, HouseHoldDetailsComponent, OtherBusinessIncomeDetailsComponent, ManagePurchaseComponent, ManageBusinesExpenseComponent, ManageHouseHoldComponent, ManageOtherBusinessIncomeComponent, GrossProfitCalculationComponent, ManageDailySalesComponent, PdStatusChangeDialogueComponent, PdLocatedMapViewDirective, ViewLocationComponent, GetAnswerableFormsPipe, ConfirmAiDetailsComponent, RentalVerificationComponent, InitiateAdditionalPdComponent ,ManageDailyPurchaseComponent, DailyPurchaseDetailsComponent, ManageRentalVerificationComponent, FuturePlansAndBusinessEnvironmentComponent, ImageCropComponent,CropToolsComponent,PurchaseCalculationComponent,QueriesDocsComponent, ImageDocsComponent,CustomTitleCaseDirective, SpeedDialFabComponent,VideoPlayerComponent,
|
||||
DynamicFormComponent,DynamicQuestionTemplateComponent, ImagesAllComponent,AnswerOptionCreateDialogComponent,FormComponent,FormGroupComponent, ImageVideoComponent,CaptureBtnComponent, SingleCaptureBtnComponent,],
|
||||
DynamicFormComponent,DynamicQuestionTemplateComponent, ImagesAllComponent,AnswerOptionCreateDialogComponent,FormComponent,FormGroupComponent, ImageVideoComponent,CaptureBtnComponent, SingleCaptureBtnComponent,VideoCaptureBtnComponent],
|
||||
imports: [
|
||||
CommonModule,
|
||||
ManagePdRoutingModule,
|
||||
@ -271,7 +272,7 @@ const pdCustomNotifierOptions: NotifierOptions = {
|
||||
MatVideoModule
|
||||
|
||||
],
|
||||
exports: [FacialRecognitionModalComponent,DuplicatePdComponent,VendorPdAllocationComponent,PdLocatedMapViewDirective, PdAllocationComponent, SmartPdAllocationComponent, TelePdAllocationComponent, SchedulePdComponent, EditPdApplicantComponent, EditPdMasterComponent, StartPdComponent,StartPd2Component, CompletedPdComponent, QcCompletedPdComponent, ClientInfoComponent, SupplierInfoComponent, PersonalInfoComponent, CurrentLoanComponent, LoanDetailsComponent, OtherIncomeComponent, AssetsInfoComponent, AddressComponent, FamilyDetailsComponent, BankingDetailsComponent, StockComponent, EmploymentInfoComponent, BusinessInfoComponent, FinancialInfoComponent, LenderRepresentativeComponent, AssessedIncomeComponent, AllocationViewMoreComponent, GeneralInfoComponent, PdRequirementComponent,PdCollectedDocsComponent, OtherApplicantDetailsComponent, NeighbourHoodComponent, BusinessOtherFamilyMemberComponent, BusinessInfoGroupComponent,DailySalesDetailsComponent, SalesCalculationComponent, PurchaseDetailsComponent, BusinessExpenseDetailsComponent, HouseHoldDetailsComponent, OtherBusinessIncomeDetailsComponent, ManageSalesComponent, ManagePurchaseComponent, ManageBusinesExpenseComponent, ManageHouseHoldComponent, ManageOtherBusinessIncomeComponent, GrossProfitCalculationComponent, ManageDailySalesComponent, PdStatusChangeDialogueComponent, ViewLocationComponent, ConfirmAiDetailsComponent, RentalVerificationComponent, InitiateAdditionalPdComponent, DailyPurchaseDetailsComponent, ManageDailyPurchaseComponent,ManageRentalVerificationComponent,ImageCropComponent,CropToolsComponent,PurchaseCalculationComponent,CaptureBtnComponent, SingleCaptureBtnComponent,],
|
||||
exports: [FacialRecognitionModalComponent,DuplicatePdComponent,VendorPdAllocationComponent,PdLocatedMapViewDirective, PdAllocationComponent, SmartPdAllocationComponent, TelePdAllocationComponent, SchedulePdComponent, EditPdApplicantComponent, EditPdMasterComponent, StartPdComponent,StartPd2Component, CompletedPdComponent, QcCompletedPdComponent, ClientInfoComponent, SupplierInfoComponent, PersonalInfoComponent, CurrentLoanComponent, LoanDetailsComponent, OtherIncomeComponent, AssetsInfoComponent, AddressComponent, FamilyDetailsComponent, BankingDetailsComponent, StockComponent, EmploymentInfoComponent, BusinessInfoComponent, FinancialInfoComponent, LenderRepresentativeComponent, AssessedIncomeComponent, AllocationViewMoreComponent, GeneralInfoComponent, PdRequirementComponent,PdCollectedDocsComponent, OtherApplicantDetailsComponent, NeighbourHoodComponent, BusinessOtherFamilyMemberComponent, BusinessInfoGroupComponent,DailySalesDetailsComponent, SalesCalculationComponent, PurchaseDetailsComponent, BusinessExpenseDetailsComponent, HouseHoldDetailsComponent, OtherBusinessIncomeDetailsComponent, ManageSalesComponent, ManagePurchaseComponent, ManageBusinesExpenseComponent, ManageHouseHoldComponent, ManageOtherBusinessIncomeComponent, GrossProfitCalculationComponent, ManageDailySalesComponent, PdStatusChangeDialogueComponent, ViewLocationComponent, ConfirmAiDetailsComponent, RentalVerificationComponent, InitiateAdditionalPdComponent, DailyPurchaseDetailsComponent, ManageDailyPurchaseComponent,ManageRentalVerificationComponent,ImageCropComponent,CropToolsComponent,PurchaseCalculationComponent,CaptureBtnComponent, SingleCaptureBtnComponent,VideoCaptureBtnComponent],
|
||||
providers: [PdTrigerService,CameraService, GetGeometricLocationService,{provide: MAT_DATE_LOCALE, useValue: 'en-GB'},
|
||||
{provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE]},
|
||||
{provide: MAT_DATE_FORMATS, useValue: MAT_MOMENT_DATE_FORMATS}, PdLocatedMapViewDirective,QuesFormService],
|
||||
|
||||
@ -0,0 +1,87 @@
|
||||
|
||||
<h2 mat-dialog-title class="paragraph_change">
|
||||
<div fxFlex="70" align="left" style="padding: 10px !important;">
|
||||
Attach Digilocker Document's To Report
|
||||
</div>
|
||||
<div fxFlex="30" align="end" style="padding: 10px !important;">
|
||||
<button mat-raised-button mat-icon-button class="mr-1 mb-1 hover-icon" type="button" matTooltip="Close" matTooltipPosition="right" mat-dialog-close><mat-icon>close</mat-icon></button>
|
||||
|
||||
</div>
|
||||
</h2>
|
||||
<h5 style="text-align: center;">{{message}}</h5>
|
||||
<mat-dialog-content *ngIf="digilock_list.length > 0">
|
||||
<!-- <mat-card *ngFor="let list of digilock_list;let quesIndex=index">
|
||||
|
||||
<mat-card-content>{{list.applicant_name
|
||||
}}</mat-card-content>
|
||||
|
||||
</mat-card> -->
|
||||
<span style="padding-bottom: 15%;">Available Digilocker Documents</span>
|
||||
<table mat-table [dataSource]="dataSource" class="mat-elevation-z8">
|
||||
|
||||
<!-- Checkbox Column -->
|
||||
<ng-container matColumnDef="select">
|
||||
<th mat-header-cell *matHeaderCellDef>
|
||||
<mat-checkbox (change)="$event ? toggleAllRows() : null"
|
||||
[checked]="selection.hasValue() && isAllSelected()"
|
||||
[indeterminate]="selection.hasValue() && !isAllSelected()"
|
||||
[aria-label]="checkboxLabel()">
|
||||
</mat-checkbox>
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let row">
|
||||
<mat-checkbox (click)="$event.stopPropagation()"
|
||||
(change)="$event ? selection.toggle(row) : null"
|
||||
[checked]="selection.isSelected(row)"
|
||||
[aria-label]="checkboxLabel(row)">
|
||||
</mat-checkbox>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<!-- Position Column -->
|
||||
<ng-container matColumnDef="applicant_name">
|
||||
<th mat-header-cell *matHeaderCellDef> Applicant Name </th>
|
||||
<td mat-cell *matCellDef="let element"> {{element.applicant_name}} </td>
|
||||
</ng-container>
|
||||
<ng-container matColumnDef="pd_document_name">
|
||||
<th mat-header-cell *matHeaderCellDef> Document Name </th>
|
||||
<td mat-cell *matCellDef="let element"> {{element.pd_document_name}} </td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="url">
|
||||
<th mat-header-cell *matHeaderCellDef> View </th>
|
||||
<td mat-cell *matCellDef="let element">
|
||||
<div >
|
||||
|
||||
<button mat-button mat-icon-button class="hover-icon" type="button" color="primary" (click)="view(element.url)"
|
||||
matTooltip="View" matTooltipPosition="top" ><mat-icon>visibility</mat-icon></button>
|
||||
</div>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<!-- Symbol Column -->
|
||||
<!-- <ng-container matColumnDef="symbol">
|
||||
<th mat-header-cell *matHeaderCellDef> Symbol </th>
|
||||
<td mat-cell *matCellDef="let element"> {{element.symbol}} </td>
|
||||
</ng-container> -->
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;"
|
||||
>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
<!-- Copyright 2022 Google LLC. All Rights Reserved.
|
||||
Use of this source code is governed by an MIT-style license that
|
||||
can be found in the LICENSE file at https://angular.io/license -->
|
||||
|
||||
|
||||
</mat-dialog-content>
|
||||
<mat-dialog-actions align="end" >
|
||||
|
||||
<button mat-raised-button mat-dialog-close (click)="confirmPdf()" ><strong> Save </strong></button>
|
||||
<!-- <button class="submit-btn" color="primary" mat-raised-button type="submit" >
|
||||
Submit
|
||||
</button> -->
|
||||
|
||||
</mat-dialog-actions>
|
||||
@ -0,0 +1,53 @@
|
||||
.paragraph_change {
|
||||
color: #fff !important;
|
||||
background-color: #e00201 !important;
|
||||
}
|
||||
::ng-deep { .no-padding > mat-dialog-container {
|
||||
// background: black;
|
||||
padding: 0;
|
||||
// overflow-y: scroll !important;
|
||||
}
|
||||
}
|
||||
.example-full-width {
|
||||
width: 100%;
|
||||
}
|
||||
.mat-dialog-content{
|
||||
margin:0px !important;
|
||||
}
|
||||
// mat-placeholder{
|
||||
// margin-top: 20px;
|
||||
// word-wrap: break-word;
|
||||
// }
|
||||
// input{
|
||||
// height:40px;
|
||||
// }
|
||||
|
||||
.mat-form-field-label {
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
textarea.mat-input-element {
|
||||
padding: 0px 0;
|
||||
margin: 5px 0;
|
||||
}
|
||||
|
||||
.mat-input-placeholder {
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
mat-form-field {
|
||||
margin: 0 2%;
|
||||
}
|
||||
.paragraph_change {
|
||||
color: #fff !important;
|
||||
background-color: #e00201 !important;
|
||||
}
|
||||
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
}
|
||||
.mat-elevation-z8{
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
@ -0,0 +1,25 @@
|
||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { PdfMergeComponent } from './pdf-merge.component';
|
||||
|
||||
describe('PdfMergeComponent', () => {
|
||||
let component: PdfMergeComponent;
|
||||
let fixture: ComponentFixture<PdfMergeComponent>;
|
||||
|
||||
beforeEach(async(() => {
|
||||
TestBed.configureTestingModule({
|
||||
declarations: [ PdfMergeComponent ]
|
||||
})
|
||||
.compileComponents();
|
||||
}));
|
||||
|
||||
beforeEach(() => {
|
||||
fixture = TestBed.createComponent(PdfMergeComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
||||
@ -0,0 +1,109 @@
|
||||
import { SelectionModel } from '@angular/cdk/collections';
|
||||
import { Component, Inject, OnInit } from '@angular/core';
|
||||
import { MatDialogRef, MatTableDataSource, MAT_DIALOG_DATA } from '@angular/material';
|
||||
import { QcService } from 'app/quality-check/qc-service/qc.service';
|
||||
export interface PeriodicElement {
|
||||
name: string;
|
||||
position: number;
|
||||
weight: number;
|
||||
symbol: string;
|
||||
}
|
||||
@Component({
|
||||
selector: 'app-pdf-merge',
|
||||
templateUrl: './pdf-merge.component.html',
|
||||
styleUrls: ['./pdf-merge.component.scss']
|
||||
})
|
||||
|
||||
export class PdfMergeComponent implements OnInit {
|
||||
message: any;
|
||||
digilock_list: any =[];
|
||||
|
||||
|
||||
|
||||
ELEMENT_DATA: PeriodicElement[] = [
|
||||
{position: 1, name: 'Hydrogen', weight: 1.0079, symbol: 'H'},
|
||||
{position: 2, name: 'Helium', weight: 4.0026, symbol: 'He'},
|
||||
{position: 3, name: 'Lithium', weight: 6.941, symbol: 'Li'},
|
||||
{position: 4, name: 'Beryllium', weight: 9.0122, symbol: 'Be'},
|
||||
{position: 5, name: 'Boron', weight: 10.811, symbol: 'B'},
|
||||
|
||||
];
|
||||
displayedColumns: string[] = ['select','applicant_name','pd_document_name','url'];
|
||||
|
||||
selection = new SelectionModel<PeriodicElement>(true, []);
|
||||
dataSource: any =[];
|
||||
|
||||
constructor(private dialogRef: MatDialogRef<PdfMergeComponent>,
|
||||
@Inject(MAT_DIALOG_DATA) public data: any, public pdTrigerService: QcService) { }
|
||||
|
||||
ngOnInit() {
|
||||
this.getPdfApi()
|
||||
}
|
||||
|
||||
getPdfApi(){
|
||||
console.log( this.data)
|
||||
let data = {"pd_id": this.data.pd_id}
|
||||
this.pdTrigerService.applicantWiseDigiLockerDocs(data).subscribe(data => {
|
||||
let dataresult:any = data
|
||||
console.log(dataresult)
|
||||
if (dataresult.status == 200) {
|
||||
this.digilock_list = dataresult.records
|
||||
this.dataSource = new MatTableDataSource<PeriodicElement>(this.digilock_list);
|
||||
console.log( this.dataSource)
|
||||
|
||||
}else{
|
||||
this.message = dataresult.msg
|
||||
}
|
||||
})
|
||||
}
|
||||
/** Whether the number of selected elements matches the total number of rows. */
|
||||
isAllSelected() {
|
||||
const numSelected = this.selection.selected.length;
|
||||
const numRows = this.dataSource.data.length;
|
||||
// console.log( numSelected,numRows)
|
||||
return numSelected === numRows;
|
||||
}
|
||||
|
||||
/** Selects all rows if they are not all selected; otherwise clear selection. */
|
||||
toggleAllRows() {
|
||||
if (this.isAllSelected()) {
|
||||
this.selection.clear();
|
||||
return;
|
||||
}
|
||||
|
||||
this.selection.select(...this.dataSource.data);
|
||||
// console.log( this.selection)
|
||||
}
|
||||
|
||||
/** The label for the checkbox on the passed row */
|
||||
checkboxLabel(row?: PeriodicElement): string {
|
||||
if (!row) {
|
||||
return `${this.isAllSelected() ? 'deselect' : 'select'} all`;
|
||||
}
|
||||
// console.log( this.selection)
|
||||
return `${this.selection.isSelected(row) ? 'deselect' : 'select'} row ${row.position + 1}`;
|
||||
|
||||
}
|
||||
view(url){
|
||||
|
||||
window.open(url, "_blank")
|
||||
|
||||
}
|
||||
confirmPdf(){
|
||||
console.log( this.selection)
|
||||
if(this.selection.selected.length > 0){
|
||||
console.log(this.selection.selected)
|
||||
let tmp =[]
|
||||
this.selection.selected.forEach((element:any) => {
|
||||
|
||||
tmp.push({'pd_document_id' :element.pd_document_id})
|
||||
|
||||
});
|
||||
console.log(tmp)
|
||||
// localStorage.setItem('pdf-merge',JSON.stringify(tmp))
|
||||
this.dialogRef.close(tmp)
|
||||
}else{
|
||||
this.dialogRef.close([])
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -43,35 +43,9 @@
|
||||
<!-- <span class="mr-1 ml-1">View More</span> -->
|
||||
<span class="mr-1 ml-1">PD Report</span>
|
||||
<span class="empty-spacer"></span>
|
||||
<button mat-raised-button mat-icon-button class="mr-1 ml-1 hover-icon" type="button" matTooltip="Score" matTooltipPosition="above" (click)="showAction()" ><mat-icon>arrow_upward</mat-icon></button>
|
||||
<button *ngIf="pdReportRecords.pd_status!='QC_COMPLETED'" mat-raised-button mat-icon-button class="mr-1 ml-1 hover-icon" type="button" matTooltip="Save" matTooltipPosition="above" (click)="getFrameContent(IFrameContent)" style="margin-right: 2px;"><mat-icon>save</mat-icon></button>
|
||||
<button *ngIf="pdReportRecords.pd_status!='QC_COMPLETED'" mat-raised-button mat-icon-button class="mr-1 ml-1 hover-icon" type="button" matTooltip="QC Notes" matTooltipPosition="above" (click)="reportReview('REMARKS')" style="margin-right: 2px;"><mat-icon>notes</mat-icon></button>
|
||||
<button *ngIf="pdReportRecords.pd_status!='QC_COMPLETED'" mat-raised-button mat-icon-button class="mr-1 ml-1 hover-icon" type="button" matTooltip="PD Officer Notes" matTooltipPosition="above" (click)="reportReview('pd_officer_notes')" style="margin-right: 2px;"><mat-icon>bookmarks</mat-icon></button>
|
||||
<button *ngIf="pdReportRecords.pd_status!='QC_COMPLETED'" mat-raised-button mat-icon-button class="mr-1 ml-1 hover-icon" type="button" matTooltip="QC Complete" matTooltipPosition="above" (click)="reportReview('COMPLETE')" style="margin-right: 2px;"><mat-icon>done_all</mat-icon></button>
|
||||
<button mat-raised-button mat-icon-button class="mr-1 ml-1 hover-icon" type="button" matTooltip="Re-generate Map" matTooltipPosition="above" (click)="reportReview('GEOLOCATION')" style="margin-right: 2px;"><mat-icon>map</mat-icon></button>
|
||||
|
||||
<button *ngIf="pdReportRecords.pd_status!='QC_COMPLETED'" mat-raised-button mat-icon-button class="mr-1 ml-1 hover-icon" type="button" matTooltip="Re-generate Report" matTooltipPosition="above" (click)="reGeneratePFReport()"><mat-icon>autorenew</mat-icon></button>
|
||||
<button mat-raised-button mat-icon-button class="mr-1 ml-1 hover-icon" type="button" matTooltip="Download PD Report" matTooltipPosition="above" (click)="downloadPDReport()"><mat-icon>get_app</mat-icon></button>
|
||||
|
||||
|
||||
<!-- <button mat-raised-button mat-icon-button class="mr-1 ml-1 hover-icon" type="button" matTooltip="Download PD Pictures" matTooltipPosition="above" (click)="archivePDImages()"><mat-icon>save_alt</mat-icon></button>-->
|
||||
<button mat-raised-button mat-icon-button class="mr-1 ml-1 hover-icon" type="button" matTooltip="Download PD Pictures" matTooltipPosition="above" [matMenuTriggerFor]="menu1">
|
||||
|
||||
<mat-icon>save_alt</mat-icon>
|
||||
</button>
|
||||
<mat-menu #menu1="matMenu">
|
||||
<button mat-menu-item (click)="archivePDImages(1)">
|
||||
<mat-icon>donut_large</mat-icon>
|
||||
<span>Re-Generate</span>
|
||||
</button>
|
||||
|
||||
<button mat-menu-item (click)="archivePDImages(0)">
|
||||
<mat-icon>cloud_download</mat-icon>
|
||||
<span>Download</span>
|
||||
</button>
|
||||
</mat-menu>
|
||||
|
||||
<button *ngIf="!spinner_access" mat-raised-button mat-icon-button class="mr-1 ml-1 hover-icon" type="button" matTooltip="Download PD Pictures (PDF)" matTooltipPosition="above" [matMenuTriggerFor]="menu2">
|
||||
<button *ngIf="pdReportRecords.pd_status!='QC_COMPLETED'" mat-raised-button mat-icon-button class="mr-1 ml-1 hover-icon" type="button" matTooltip="QC Notes" matTooltipPosition="above" (click)="reportReview('REMARKS')" style="margin-right: 2px;"><mat-icon svgIcon="notes"></mat-icon></button>
|
||||
<button *ngIf="!spinner_access" mat-raised-button mat-icon-button class="mr-1 ml-1 hover-icon" type="button" matTooltip="Download PD Pictures (PDF)" matTooltipPosition="above" [matMenuTriggerFor]="menu2">
|
||||
<mat-icon>picture_as_pdf</mat-icon></button>
|
||||
<mat-menu #menu2="matMenu">
|
||||
<button mat-menu-item (click)="downloadPDImagesPDF(1)">
|
||||
@ -84,6 +58,36 @@
|
||||
<span>Download</span>
|
||||
</button>
|
||||
</mat-menu>
|
||||
<button mat-raised-button mat-icon-button class="mr-1 ml-1 hover-icon" type="button" matTooltip="Download PD Pictures (zip)" matTooltipPosition="above" [matMenuTriggerFor]="menu1">
|
||||
|
||||
<mat-icon svgIcon="pic"></mat-icon>
|
||||
</button>
|
||||
<mat-menu #menu1="matMenu">
|
||||
<button mat-menu-item (click)="archivePDImages(1)">
|
||||
<mat-icon>donut_large</mat-icon>
|
||||
<span>Re-Generate</span>
|
||||
</button>
|
||||
|
||||
<button mat-menu-item (click)="archivePDImages(0)">
|
||||
<mat-icon>cloud_download</mat-icon>
|
||||
<span>Download</span>
|
||||
</button>
|
||||
</mat-menu>
|
||||
<button mat-raised-button mat-icon-button class="mr-1 ml-1 hover-icon" type="button" matTooltip="Download PD Report" matTooltipPosition="above" (click)="downloadPDReport()"><mat-icon>get_app</mat-icon></button>
|
||||
<button *ngIf="pdReportRecords.pd_status!='QC_COMPLETED'" mat-raised-button mat-icon-button class="mr-1 ml-1 hover-icon" type="button" matTooltip="Re-generate Report" matTooltipPosition="above" (click)="reGeneratePFReport()"><mat-icon>autorenew</mat-icon></button>
|
||||
<button *ngIf="pdReportRecords.pd_status!='QC_COMPLETED'" mat-raised-button mat-icon-button class="mr-1 ml-1 hover-icon" type="button" matTooltip="Save" matTooltipPosition="above" (click)="getFrameContent(IFrameContent)" style="margin-right: 2px;"><mat-icon>save</mat-icon></button>
|
||||
<button *ngIf="pdReportRecords.pd_status!='QC_COMPLETED'" mat-raised-button mat-icon-button class="mr-1 ml-1 hover-icon" type="button" matTooltip=" View / Select Digilocker Documents" matTooltipPosition="above" (click)="PdfMerge()" ><mat-icon svgIcon="digilocker"></mat-icon></button>
|
||||
<button mat-raised-button mat-icon-button class="mr-1 ml-1 hover-icon" type="button" matTooltip="Re-generate Map" matTooltipPosition="above" (click)="reportReview('GEOLOCATION')" style="margin-right: 2px;"><mat-icon>map</mat-icon></button>
|
||||
<button mat-raised-button mat-icon-button class="mr-1 ml-1 hover-icon" type="button" matTooltip="Score" matTooltipPosition="above" (click)="showAction()" ><mat-icon svgIcon="score"></mat-icon></button>
|
||||
<button *ngIf="pdReportRecords.pd_status!='QC_COMPLETED'" mat-raised-button mat-icon-button class="mr-1 ml-1 hover-icon" type="button" matTooltip="QC Complete" matTooltipPosition="above" (click)="reportReview('COMPLETE')" style="margin-right: 2px;"><mat-icon>done_all</mat-icon></button>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- <button mat-raised-button mat-icon-button class="mr-1 ml-1 hover-icon" type="button" matTooltip="Download PD Pictures" matTooltipPosition="above" (click)="archivePDImages()"><mat-icon>save_alt</mat-icon></button>-->
|
||||
|
||||
|
||||
<button mat-raised-button mat-icon-button class="mr-1 ml-1 hover-icon" type="button" matTooltip="Close" matTooltipPosition="above" (click)="loadPdViewCompoent()" style="margin-right: 2px;"><mat-icon>close</mat-icon></button>
|
||||
</mat-toolbar>
|
||||
|
||||
@ -11,6 +11,7 @@ import { QcService } from './../../qc-service/qc.service';
|
||||
import {
|
||||
MatDialog,
|
||||
MatDialogRef,
|
||||
MatIconRegistry,
|
||||
MAT_DIALOG_DATA,
|
||||
} from "@angular/material";
|
||||
import{MatSidenav} from '@angular/material/sidenav'
|
||||
@ -19,6 +20,7 @@ import { QcReviewComponent } from './qc-review/qc-review.component';
|
||||
import { HttpResponse } from "@angular/common/http";
|
||||
import { environment } from 'environments/environment';
|
||||
import { QcNewComponent } from './qc-new/qc-new.component';
|
||||
import { PdfMergeComponent } from './pdf-merge/pdf-merge.component';
|
||||
|
||||
|
||||
|
||||
@ -34,6 +36,7 @@ export class QcPdReportComponent implements OnInit {
|
||||
reason = '';
|
||||
loadComponent: boolean=false;
|
||||
observer: MutationObserver;
|
||||
pdf_merge_data: any = []
|
||||
|
||||
close(reason: string) {
|
||||
this.reason = reason;
|
||||
@ -79,8 +82,12 @@ export class QcPdReportComponent implements OnInit {
|
||||
// ];
|
||||
constructor(notifier: NotifierService, private fb: FormBuilder, private route: ActivatedRoute,
|
||||
private router: Router, public pdTrigerService: QcService, private listPDComponent: QcListComponent,
|
||||
private dialog: MatDialog, private sanitizer: DomSanitizer) {
|
||||
private dialog: MatDialog, private sanitizer: DomSanitizer, private readonly matIconRegistry: MatIconRegistry,) {
|
||||
this.startPD = this.route.snapshot.params['pdid'];
|
||||
this.matIconRegistry.addSvgIcon('digilocker', this.sanitizer.bypassSecurityTrustResourceUrl('assets/images/digilocker.svg'));
|
||||
this.matIconRegistry.addSvgIcon('score', this.sanitizer.bypassSecurityTrustResourceUrl('assets/images/score.svg'));
|
||||
this.matIconRegistry.addSvgIcon('notes', this.sanitizer.bypassSecurityTrustResourceUrl('assets/images/notes.svg'));
|
||||
this.matIconRegistry.addSvgIcon('pic', this.sanitizer.bypassSecurityTrustResourceUrl('assets/images/picture_download.svg'));
|
||||
let encryptReportRandomString = atob(this.route.snapshot.params['string']);
|
||||
// this.reportRandomString = this.apiUrl+'getPDReportHTML/'+encryptReportRandomString+'/'+this.startPD;
|
||||
|
||||
@ -189,7 +196,8 @@ export class QcPdReportComponent implements OnInit {
|
||||
reGeneratePFReport() {
|
||||
let data = {
|
||||
"pd_id": this.startPD,
|
||||
"random_string":atob(this.route.snapshot.params['string'])
|
||||
"random_string":atob(this.route.snapshot.params['string']),
|
||||
"digilocker_merge":this.pdf_merge_data
|
||||
// "regenerate": "1"
|
||||
};
|
||||
this.pdTrigerService.getPDReportFinalDocument(data).subscribe(data => {
|
||||
@ -424,7 +432,34 @@ export class QcPdReportComponent implements OnInit {
|
||||
});
|
||||
}
|
||||
|
||||
PdfMerge(){
|
||||
const dialogRef = this.dialog.open(PdfMergeComponent, {
|
||||
data:{
|
||||
"pd_id":this.startPD,
|
||||
},
|
||||
// position: { right: '0'},
|
||||
disableClose: true,
|
||||
minHeight:'50%',
|
||||
maxHeight:'90%',
|
||||
minWidth: '60%',
|
||||
maxWidth: '90%',
|
||||
});
|
||||
dialogRef.afterClosed()
|
||||
.subscribe(dataresult => {
|
||||
|
||||
if(dataresult instanceof Array){
|
||||
|
||||
if(dataresult.length>0){
|
||||
this.pdf_merge_data = dataresult
|
||||
console.log( this.pdf_merge_data )
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
}
|
||||
changeDocumentEdit(): void {
|
||||
|
||||
|
||||
|
||||
@ -672,5 +672,9 @@ export class QcService {
|
||||
// video_file -> exact file
|
||||
return this._http.post(this.apiUrl+'uploadVideoFile',params)
|
||||
}
|
||||
applicantWiseDigiLockerDocs(params){
|
||||
|
||||
return this._http.post(this.apiUrl+'applicantWiseDigiLockerDocs',params )
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -110,6 +110,7 @@ import { PdVisitTimeComponent } from './qc-list/pd-visit-time/pd-visit-time.comp
|
||||
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 { PdfMergeComponent } from './qc-list/qc-pd-report/pdf-merge/pdf-merge.component';
|
||||
// import { PdfViewerModule } from 'ng2-pdf-viewer';
|
||||
|
||||
|
||||
@ -186,8 +187,8 @@ const customNotifierOptions: NotifierOptions = {
|
||||
AngularSplitModule.forRoot(),
|
||||
MatVideoModule
|
||||
],
|
||||
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,
|
||||
declarations: [QualityCheckComponent,QcListComponent, QcViewComponent, QcStartComponent, QcPdReportComponent,DialogChangeCurrentVenrsion, QcReviewComponent, ModelEditPdReportComponent, NumberToWordsPipe, QcNewComponent, QcCusImagesComponent, PdVisitTimeComponent, UploadVideoComponent,SpeedDialFabComponent, PdfMergeComponent],
|
||||
entryComponents: [PdVisitTimeComponent,PdAllocationComponent, SmartPdAllocationComponent, SchedulePdComponent, EditPdApplicantComponent, EditPdMasterComponent,DialogChangeCurrentVenrsion, QcReviewComponent, ModelEditPdReportComponent, InitiateAdditionalPdComponent,QcNewComponent,PdfMergeComponent,
|
||||
BusinessAssetsInfoComponent,
|
||||
ClientInfoComponent,
|
||||
SupplierInfoComponent,
|
||||
|
||||
@ -112,6 +112,11 @@
|
||||
<td mat-cell *matCellDef="let row">
|
||||
<span *ngIf="row.applicant_name" mat-line>{{row.applicant_name}}</span> </td>
|
||||
</ng-container>
|
||||
<ng-container matColumnDef="city_name" >
|
||||
<th mat-header-cell *matHeaderCellDef >City </th>
|
||||
<td mat-cell *matCellDef="let row">
|
||||
<span *ngIf="row.city_name" mat-line>{{row.city_name}}</span> </td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="lender_applicant_id" sticky>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>Lender Applicant ID </th>
|
||||
@ -155,6 +160,16 @@
|
||||
<td mat-cell *matCellDef="let row">
|
||||
<span *ngIf="row.updatedon" mat-line> {{row.updatedon | date: 'dd-MM-yyyy hh:mm a'}}</span> </td>
|
||||
</ng-container>
|
||||
<ng-container matColumnDef="video_call_initiate_user">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>Video Call Initiated Person</th>
|
||||
<td mat-cell *matCellDef="let row">
|
||||
<span *ngIf="row.video_call_initiate_user" [matTooltip]="row.video_call_initiate_user" mat-line> {{column_name_filter(row.video_call_initiate_user) }}</span> </td>
|
||||
</ng-container>
|
||||
<ng-container matColumnDef="total_video">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>Video Count</th>
|
||||
<td mat-cell *matCellDef="let row">
|
||||
<span *ngIf="row.total_video" mat-line> {{row.total_video }}</span> </td>
|
||||
</ng-container>
|
||||
<!-- <ng-container matColumnDef="remarks">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>Remarks</th>
|
||||
<td mat-cell *matCellDef="let row">
|
||||
|
||||
@ -41,13 +41,16 @@ export class SmcCreditComponent implements OnInit {
|
||||
// 'credit_pd_id',
|
||||
'credit_pd_sno',
|
||||
'applicant_name',
|
||||
'city_name',
|
||||
'lender_applicant_id',
|
||||
'credit_pd_type',
|
||||
'product_abbr',
|
||||
'officer_name',
|
||||
'status',
|
||||
'vendor_status',
|
||||
'createdon'
|
||||
'createdon',
|
||||
'video_call_initiate_user',
|
||||
'total_video'
|
||||
//'remarks'
|
||||
//'add'
|
||||
// 'mail_status'
|
||||
@ -171,13 +174,16 @@ export class SmcCreditComponent implements OnInit {
|
||||
return {
|
||||
'Reference Number':val.pd_sno,
|
||||
'Main Loan Applicant':val.applicant_name,
|
||||
'City':val.city_name,
|
||||
'Lender Applicant ID':val.lender_applicant_id,
|
||||
'Credit PD Type':val.type_name,
|
||||
'Product Type':val.abbr,
|
||||
'Credit Person':val.officer_name,
|
||||
'Status':val.pd_status,
|
||||
'Vendor Status':val.vendor_status,
|
||||
'Date':val.updatedon
|
||||
'Date':val.updatedon,
|
||||
'Video Call Initiated Person':val.video_call_initiate_user,
|
||||
'Video Count':val.total_video
|
||||
//'Remarks':val.mis_report_remarks
|
||||
}
|
||||
})
|
||||
@ -301,6 +307,20 @@ export class SmcCreditComponent implements OnInit {
|
||||
// }
|
||||
// }
|
||||
|
||||
column_name_filter(param){
|
||||
|
||||
let data = param.split(',');
|
||||
let name =[];
|
||||
data.forEach(element => {
|
||||
let tmp = element.replace(/ *\([^)]*\) */g, "")
|
||||
console.log(tmp)
|
||||
name.push(tmp)
|
||||
|
||||
});
|
||||
return name.toString()
|
||||
|
||||
}
|
||||
|
||||
getDateObjects(values: any) {
|
||||
|
||||
let selected_date = this.pipe.transform(values, 'yyyy/MM/dd');
|
||||
|
||||
@ -52,6 +52,7 @@ const HORIZONTALMENUITEMS = [
|
||||
// {state:'template/questions', name: 'Questions'},
|
||||
{state:'template/templates', name: 'Templates'},
|
||||
{state:'template2', name: 'Templates 2.0'},
|
||||
{state:'datadump', name: 'Data Dump'},
|
||||
]
|
||||
},
|
||||
|
||||
|
||||
@ -84,6 +84,7 @@ const MENUITEMS : Menu[] = [
|
||||
// {state:'template/questions', name: 'Questions'},
|
||||
{state:'template/templates', name: 'Templates'},
|
||||
{state:'template2/template2', name: 'Templates 2.0'},
|
||||
{state:'datadump/datadump', name: 'Data Dump'},
|
||||
]
|
||||
},
|
||||
{
|
||||
|
||||
@ -89,7 +89,7 @@ export class ChecklistDatabase {
|
||||
// let question_json = JSON.parse(JSON.parse(data.json))
|
||||
// console.log(question_json)
|
||||
let question_json;
|
||||
if(data != [] && data.json){
|
||||
if(data != 0 && data.json){
|
||||
question_json = JSON.parse(data.json)
|
||||
}else{
|
||||
|
||||
|
||||
@ -8,7 +8,7 @@ import { LenderListComponent } from './lender-list/lender-list.component';
|
||||
import { LenderProductSegMappingComponent } from './lender-product-seg-mapping/lender-product-seg-mapping.component';
|
||||
import { QuestionViewComponent } from './question-view/question-view.component';
|
||||
import { SelectionListViewComponent } from './selection-list-view/selection-list-view.component';
|
||||
import { Template2Module } from './template2.module';
|
||||
|
||||
export const Template2Routes: Routes = [
|
||||
|
||||
{
|
||||
|
||||
@ -1,103 +1,863 @@
|
||||
{
|
||||
"section_id":"1",
|
||||
"section_name":"General Information",
|
||||
"section_id":"3",
|
||||
"section_name":"Office Visit Information",
|
||||
"onsubmit":[
|
||||
],
|
||||
"questions":[
|
||||
{
|
||||
"question":"Name of the Person met",
|
||||
"question_key":"Name_of_the_Person_met",
|
||||
"place_holder":"",
|
||||
"field_type":"text",
|
||||
"type":"3",
|
||||
"field_width":"45",
|
||||
"api_properties":
|
||||
{
|
||||
"purpose":"answer_options_local",
|
||||
"master_name":"pd_applicants",
|
||||
"fields":["pd_co_applicant_id","applicant_name"]
|
||||
},
|
||||
"onchange_properties":null,
|
||||
"is_repeatable":null,
|
||||
"is_subfield":"1",
|
||||
"is_disabled":"1",
|
||||
"answers":null,
|
||||
"validations":[
|
||||
]
|
||||
},
|
||||
"questions":[
|
||||
{
|
||||
"question":"Is Person Met",
|
||||
"question_key":"is_person_met",
|
||||
"question": "Employer Brief",
|
||||
"question_key": "employer_brief",
|
||||
"type": "1",
|
||||
"disable":false,
|
||||
"field_width": "45",
|
||||
"answers": null,
|
||||
"api_properties": null,
|
||||
"onchange_properties": null,
|
||||
"is_repeatable": null,
|
||||
"validations": [
|
||||
{
|
||||
"name": "required",
|
||||
"isactive": "1",
|
||||
"validator": "Validators.required",
|
||||
"message": "Field Required",
|
||||
"value": null
|
||||
}
|
||||
]
|
||||
} , {
|
||||
"question": "Salary confirmed by Person met ?",
|
||||
"question_key": "salary_confirmed_by_person_met",
|
||||
"type": "3",
|
||||
"disable":false,
|
||||
"field_width": "45",
|
||||
"answers":[
|
||||
{
|
||||
"answer_id":"Yes",
|
||||
"answer":"Yes"
|
||||
},
|
||||
{
|
||||
"answer_id":"No",
|
||||
"answer":"No"
|
||||
}
|
||||
],
|
||||
"api_properties": null,
|
||||
"onchange_properties": [{
|
||||
"purpose":"FORM_CTRL",
|
||||
"form_controls":[
|
||||
{
|
||||
"insert_index":"salary_confirmed_by_person_met",
|
||||
"expression":"(String('salary_confirmed_by_person_met') == String('Yes'))",
|
||||
"value_keys":[
|
||||
"salary_confirmed_by_person_met"
|
||||
],
|
||||
"questions":[
|
||||
{
|
||||
"question":"Net Monthly Salary",
|
||||
"question_key":"net_monthly_salary",
|
||||
"place_holder":"Net Monthly Salary",
|
||||
"field_type":"numtoword",
|
||||
"type":"1",
|
||||
"field_width":"45",
|
||||
"api_properties":null,
|
||||
"onchange_properties":null,
|
||||
"is_repeatable":null,
|
||||
"is_subfield":"1",
|
||||
"parent_question_key":"salary_confirmed_by_person_met",
|
||||
"answers":null,
|
||||
"validations":[
|
||||
]
|
||||
|
||||
}, {
|
||||
"question":"Gross Monthly Salary",
|
||||
"question_key":"gross_monthly_salary",
|
||||
"place_holder":"Gross Monthly Salary",
|
||||
"field_type":"numtoword",
|
||||
"type":"1",
|
||||
"field_width":"45",
|
||||
"api_properties":null,
|
||||
"onchange_properties":null,
|
||||
"is_repeatable":null,
|
||||
"is_subfield":"1",
|
||||
"parent_question_key":"salary_confirmed_by_person_met",
|
||||
"answers":null,
|
||||
"validations":[
|
||||
]
|
||||
|
||||
}]
|
||||
}]
|
||||
}, {
|
||||
"purpose":"FORM_CTRL",
|
||||
"form_controls":[
|
||||
{
|
||||
"insert_index":"salary_confirmed_by_person_met",
|
||||
"expression":"(String('salary_confirmed_by_person_met') == String('No'))",
|
||||
"value_keys":[
|
||||
"salary_confirmed_by_person_met"
|
||||
],
|
||||
"questions":[
|
||||
|
||||
{
|
||||
"question":"why salary amount was not confirmed?",
|
||||
"question_key":"why_salary_amount_was_not_confirmed",
|
||||
"place_holder":"why salary amount was not confirmed?",
|
||||
"field_type":"text",
|
||||
"type":"1",
|
||||
"field_width":"45",
|
||||
"api_properties":null,
|
||||
"onchange_properties":null,
|
||||
"is_repeatable":null,
|
||||
"is_subfield":"1",
|
||||
"parent_question_key":"salary_confirmed_by_person_met",
|
||||
"answers":null,
|
||||
"validations":[
|
||||
]
|
||||
|
||||
} ]
|
||||
}]
|
||||
}],
|
||||
"is_repeatable": null,
|
||||
"validations": [
|
||||
{
|
||||
"name": "required",
|
||||
"isactive": "1",
|
||||
"validator": "Validators.required",
|
||||
"message": "Field Required",
|
||||
"value": null
|
||||
}
|
||||
]
|
||||
}, {
|
||||
"question": "Since how long working with this employer?",
|
||||
"question_key": "since_how_long_working_with_this_employer?",
|
||||
"field_type":"null",
|
||||
"sub_title":"Since how long working with this employer?",
|
||||
"disable":false,
|
||||
"field_width": "100",
|
||||
"answers": null,
|
||||
"api_properties": null,
|
||||
"onchange_properties": null,
|
||||
"is_repeatable": null,
|
||||
"validations": []
|
||||
},
|
||||
{
|
||||
"question": "Year*",
|
||||
"question_key": "year",
|
||||
"type": "1",
|
||||
"field_type":"num",
|
||||
|
||||
"disable":false,
|
||||
"field_width": "25",
|
||||
"answers": null,
|
||||
"api_properties": null,
|
||||
"onchange_properties": null,
|
||||
"is_repeatable": null,
|
||||
"validations": [
|
||||
{
|
||||
"name": "required",
|
||||
"isactive": "1",
|
||||
"validator": "Validators.required",
|
||||
"message": "Field Required",
|
||||
"value": null
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"question": "Month",
|
||||
"question_key": "month",
|
||||
"type": "1",
|
||||
"disable":false,
|
||||
"field_type":"num",
|
||||
"field_width": "25",
|
||||
"answers": null,
|
||||
"api_properties": null,
|
||||
"onchange_properties": null,
|
||||
"is_repeatable": null,
|
||||
"validations": [
|
||||
{
|
||||
"name": "required",
|
||||
"isactive": "1",
|
||||
"validator": "Validators.required",
|
||||
"message": "Field Required",
|
||||
"value": null
|
||||
}
|
||||
]
|
||||
}, {
|
||||
"question":"Mode of Getting Salary?",
|
||||
"question_key":"mode_of_getting_salary",
|
||||
"type":"3",
|
||||
"field_width":"45",
|
||||
"answers":[{
|
||||
"answer":"Yes",
|
||||
"answer_id":"yes"
|
||||
},
|
||||
{
|
||||
"answer":"No",
|
||||
"answer_id":"no"
|
||||
}],
|
||||
"api_properties":null,
|
||||
"onchange_properties":[
|
||||
{
|
||||
"purpose":"FORM_CTRL",
|
||||
"form_controls":[
|
||||
{
|
||||
"insert_index":"is_person_met",
|
||||
"expression":"(String('is_person_met') == String('no'))",
|
||||
"value_keys":[
|
||||
"is_person_met"
|
||||
],
|
||||
"questions":[
|
||||
{
|
||||
"question":"Designation of Person met",
|
||||
"question_key":"Designation_of_Person_met",
|
||||
"place_holder":"",
|
||||
"field_type":"text",
|
||||
"type":"8",
|
||||
"field_width":"45",
|
||||
"api_properties":{
|
||||
"api":"getListOfMaster",
|
||||
"api_method":"POST",
|
||||
"params":{
|
||||
"master_name":"COMPANYRELATIONSHIPS"
|
||||
},
|
||||
"fields":[
|
||||
"company_relationship_id",
|
||||
"name"
|
||||
]
|
||||
},
|
||||
"onchange_properties":null,
|
||||
"is_repeatable":null,
|
||||
"is_subfield":"1",
|
||||
"parent_question_key":"is_person_met",
|
||||
"answers":null,
|
||||
"validations":[
|
||||
]
|
||||
} ,{
|
||||
"question":"Name of the Person met",
|
||||
"question_key":"Name_of_the_Person",
|
||||
"place_holder":"",
|
||||
"field_type":"text",
|
||||
"type":"1",
|
||||
"field_width":"45",
|
||||
"api_properties":null,
|
||||
"onchange_properties":null,
|
||||
"is_repeatable":null,
|
||||
"is_subfield":"1",
|
||||
"parent_question_key":"Was_the_employee_met",
|
||||
"answers":null,
|
||||
"validations":[
|
||||
]
|
||||
}]
|
||||
}]
|
||||
|
||||
}],
|
||||
"answers":[
|
||||
{
|
||||
"answer_id":"Bank Transfer",
|
||||
"answer":"Bank Transfer"
|
||||
},
|
||||
{
|
||||
"answer_id":"Paid in Cash ",
|
||||
"answer":"Paid in Cash "
|
||||
}, {
|
||||
"answer_id":"Both Bank Transfer & Cash ",
|
||||
"answer":"Both Bank Transfer & Cash "
|
||||
}
|
||||
],
|
||||
"onchange_properties": [],
|
||||
"is_repeatable":null,
|
||||
"validations":[
|
||||
|
||||
]
|
||||
}, {
|
||||
"question":"Salary Register was seen ?",
|
||||
"question_key":"salary_register_was_seen",
|
||||
"sub_title":"Documents Sighted",
|
||||
"type":"2",
|
||||
"field_width":"100",
|
||||
"api_properties":null,
|
||||
"answers":[
|
||||
{
|
||||
"answer_id":"Yes",
|
||||
"answer":"Yes"
|
||||
},
|
||||
{
|
||||
"answer_id":"No",
|
||||
"answer":"No"
|
||||
}
|
||||
],
|
||||
"onchange_properties": [ {
|
||||
"purpose":"FORM_CTRL",
|
||||
"form_controls":[
|
||||
{
|
||||
"insert_index":"salary_register_was_seen",
|
||||
"expression":"(String('others_Please_specifys') == String('No')) && (String('offer_letter_was_seen') == String('No')) && (String('salary_register_was_seen') == String('No')) && (String('cash_voucher_was_seen') == String('No')) && (String('salary_slip_was_seen') == String('No'))",
|
||||
"value_keys":[
|
||||
"others_Please_specifys","offer_letter_was_seen","salary_register_was_seen","cash_voucher_was_seen","salary_slip_was_seen"
|
||||
],
|
||||
"questions":[
|
||||
|
||||
{
|
||||
"question":"Why documents are not available?",
|
||||
"question_key":"Why_documents_are_not_available_offer_letter",
|
||||
"place_holder":"Why documents are not available",
|
||||
"field_type":"text",
|
||||
"type":"4",
|
||||
"field_width":"100",
|
||||
"api_properties":null,
|
||||
"onchange_properties":[{
|
||||
"purpose":"FORM_CTRL",
|
||||
"form_controls":[
|
||||
{
|
||||
"insert_index":"Why_documents_are_not_available_offer_letter",
|
||||
"expression":"(String('Why_documents_are_not_available_offer_letter').includes('Others_please_specify'))",
|
||||
"value_keys":[
|
||||
"Why_documents_are_not_available_offer_letter"
|
||||
],
|
||||
"questions":[
|
||||
|
||||
{
|
||||
"question":"Others ",
|
||||
"question_key":"Others_please_specify_Why_documents_are_not_available_offer_letter",
|
||||
"place_holder":"Why documents are not available",
|
||||
"field_type":"text",
|
||||
"type":"1",
|
||||
"field_width":"100",
|
||||
"api_properties":null,
|
||||
"onchange_properties":null,
|
||||
"is_repeatable":null,
|
||||
"is_subfield":"1",
|
||||
"parent_question_key":"others_Please_specifys",
|
||||
"answers":null,
|
||||
"validations":[
|
||||
]
|
||||
|
||||
} ]
|
||||
}]
|
||||
}],
|
||||
"is_repeatable":null,
|
||||
"is_subfield":"1",
|
||||
"parent_question_key":"others_Please_specifys",
|
||||
"answers":[ {
|
||||
"answer_id":"Documents_were_not_shared_by_Employer",
|
||||
"answer":"Documents were not shared by Employer"
|
||||
},
|
||||
{
|
||||
"answer_id":"Documents_are_not_issued_by_Employer_to_Employee",
|
||||
"answer":"Documents are not issued by Employer to Employee"
|
||||
} , {
|
||||
"answer_id":"Documents_were_not_available",
|
||||
"answer":"Documents were not available"
|
||||
} , {
|
||||
"answer_id":"Employer_was_not_available",
|
||||
"answer":"Employer was not available"
|
||||
} , {
|
||||
"answer_id":"Others_please_specify",
|
||||
"answer":"Others please specify"
|
||||
} ],
|
||||
"validations":[
|
||||
]
|
||||
|
||||
} ]
|
||||
}]
|
||||
}],
|
||||
"is_repeatable":null,
|
||||
"validations":[
|
||||
|
||||
]
|
||||
}, {
|
||||
"question":"Cash voucher was seen ?",
|
||||
"question_key":"cash_voucher_was_seen",
|
||||
|
||||
"type":"2",
|
||||
"field_width":"100",
|
||||
"api_properties":null,
|
||||
"answers":[
|
||||
{
|
||||
"answer_id":"Yes",
|
||||
"answer":"Yes"
|
||||
},
|
||||
{
|
||||
"answer_id":"No",
|
||||
"answer":"No"
|
||||
}
|
||||
],
|
||||
"onchange_properties": [ {
|
||||
"purpose":"FORM_CTRL",
|
||||
"form_controls":[
|
||||
{
|
||||
"insert_index":"cash_voucher_was_seen",
|
||||
"expression":"(String('others_Please_specifys') == String('No')) && (String('offer_letter_was_seen') == String('No')) && (String('salary_register_was_seen') == String('No')) && (String('cash_voucher_was_seen') == String('No')) && (String('salary_slip_was_seen') == String('No'))",
|
||||
"value_keys":[
|
||||
"others_Please_specifys","offer_letter_was_seen","salary_register_was_seen","cash_voucher_was_seen","salary_slip_was_seen"
|
||||
],
|
||||
"questions":[
|
||||
|
||||
{
|
||||
"question":"Why documents are not available?",
|
||||
"question_key":"Why_documents_are_not_available_offer_letter",
|
||||
"place_holder":"Why documents are not available",
|
||||
"field_type":"text",
|
||||
"type":"4",
|
||||
"field_width":"100",
|
||||
"api_properties":null,
|
||||
"onchange_properties":[{
|
||||
"purpose":"FORM_CTRL",
|
||||
"form_controls":[
|
||||
{
|
||||
"insert_index":"Why_documents_are_not_available_offer_letter",
|
||||
"expression":"(String('Why_documents_are_not_available_offer_letter').includes('Others_please_specify'))",
|
||||
"value_keys":[
|
||||
"Why_documents_are_not_available_offer_letter"
|
||||
],
|
||||
"questions":[
|
||||
|
||||
{
|
||||
"question":"Others ",
|
||||
"question_key":"Others_please_specify_Why_documents_are_not_available_offer_letter",
|
||||
"place_holder":"Why documents are not available",
|
||||
"field_type":"text",
|
||||
"type":"1",
|
||||
"field_width":"100",
|
||||
"api_properties":null,
|
||||
"onchange_properties":null,
|
||||
"is_repeatable":null,
|
||||
"is_subfield":"1",
|
||||
"parent_question_key":"others_Please_specifys",
|
||||
"answers":null,
|
||||
"validations":[
|
||||
]
|
||||
|
||||
} ]
|
||||
}]
|
||||
}],
|
||||
"is_repeatable":null,
|
||||
"is_subfield":"1",
|
||||
"parent_question_key":"others_Please_specifys",
|
||||
"answers":[ {
|
||||
"answer_id":"Documents_were_not_shared_by_Employer",
|
||||
"answer":"Documents were not shared by Employer"
|
||||
},
|
||||
{
|
||||
"answer_id":"Documents_are_not_issued_by_Employer_to_Employee",
|
||||
"answer":"Documents are not issued by Employer to Employee"
|
||||
} , {
|
||||
"answer_id":"Documents_were_not_available",
|
||||
"answer":"Documents were not available"
|
||||
} , {
|
||||
"answer_id":"Employer_was_not_available",
|
||||
"answer":"Employer was not available"
|
||||
} , {
|
||||
"answer_id":"Others_please_specify",
|
||||
"answer":"Others please specify"
|
||||
} ],
|
||||
"validations":[
|
||||
]
|
||||
|
||||
} ]
|
||||
}]
|
||||
}],
|
||||
"is_repeatable":null,
|
||||
"validations":[
|
||||
|
||||
]
|
||||
}, {
|
||||
"question":"Salary Slip was seen ?",
|
||||
"question_key":"salary_slip_was_seen",
|
||||
|
||||
"type":"2",
|
||||
"field_width":"100",
|
||||
"api_properties":null,
|
||||
"answers":[
|
||||
{
|
||||
"answer_id":"Yes",
|
||||
"answer":"Yes"
|
||||
},
|
||||
{
|
||||
"answer_id":"No",
|
||||
"answer":"No"
|
||||
}
|
||||
],
|
||||
"onchange_properties": [ {
|
||||
"purpose":"FORM_CTRL",
|
||||
"form_controls":[
|
||||
{
|
||||
"insert_index":"salary_slip_was_seen",
|
||||
"expression":"(String('others_Please_specifys') == String('No')) && (String('offer_letter_was_seen') == String('No')) && (String('salary_register_was_seen') == String('No')) && (String('cash_voucher_was_seen') == String('No')) && (String('salary_slip_was_seen') == String('No'))",
|
||||
"value_keys":[
|
||||
"others_Please_specifys","offer_letter_was_seen","salary_register_was_seen","cash_voucher_was_seen","salary_slip_was_seen"
|
||||
],
|
||||
"questions":[
|
||||
|
||||
{
|
||||
"question":"Why documents are not available?",
|
||||
"question_key":"Why_documents_are_not_available_offer_letter",
|
||||
"place_holder":"Why documents are not available",
|
||||
"field_type":"text",
|
||||
"type":"4",
|
||||
"field_width":"100",
|
||||
"api_properties":null,
|
||||
"onchange_properties":[{
|
||||
"purpose":"FORM_CTRL",
|
||||
"form_controls":[
|
||||
{
|
||||
"insert_index":"Why_documents_are_not_available_offer_letter",
|
||||
"expression":"(String('Why_documents_are_not_available_offer_letter').includes('Others_please_specify'))",
|
||||
"value_keys":[
|
||||
"Why_documents_are_not_available_offer_letter"
|
||||
],
|
||||
"questions":[
|
||||
|
||||
{
|
||||
"question":"Others ",
|
||||
"question_key":"Others_please_specify_Why_documents_are_not_available_offer_letter",
|
||||
"place_holder":"Why documents are not available",
|
||||
"field_type":"text",
|
||||
"type":"1",
|
||||
"field_width":"100",
|
||||
"api_properties":null,
|
||||
"onchange_properties":null,
|
||||
"is_repeatable":null,
|
||||
"is_subfield":"1",
|
||||
"parent_question_key":"others_Please_specifys",
|
||||
"answers":null,
|
||||
"validations":[
|
||||
]
|
||||
|
||||
} ]
|
||||
}]
|
||||
}],
|
||||
"is_repeatable":null,
|
||||
"is_subfield":"1",
|
||||
"parent_question_key":"others_Please_specifys",
|
||||
"answers":[ {
|
||||
"answer_id":"Documents_were_not_shared_by_Employer",
|
||||
"answer":"Documents were not shared by Employer"
|
||||
},
|
||||
{
|
||||
"answer_id":"Documents_are_not_issued_by_Employer_to_Employee",
|
||||
"answer":"Documents are not issued by Employer to Employee"
|
||||
} , {
|
||||
"answer_id":"Documents_were_not_available",
|
||||
"answer":"Documents were not available"
|
||||
} , {
|
||||
"answer_id":"Employer_was_not_available",
|
||||
"answer":"Employer was not available"
|
||||
} , {
|
||||
"answer_id":"Others_please_specify",
|
||||
"answer":"Others please specify"
|
||||
} ],
|
||||
"validations":[
|
||||
]
|
||||
|
||||
} ]
|
||||
}]
|
||||
}],
|
||||
"is_repeatable":null,
|
||||
"validations":[
|
||||
|
||||
]
|
||||
}, {
|
||||
"question":"Offer Letter was seen ?",
|
||||
"question_key":"offer_letter_was_seen",
|
||||
|
||||
"type":"2",
|
||||
"field_width":"100",
|
||||
"api_properties":null,
|
||||
"answers":[
|
||||
{
|
||||
"answer_id":"Yes",
|
||||
"answer":"Yes"
|
||||
},
|
||||
{
|
||||
"answer_id":"No",
|
||||
"answer":"No"
|
||||
}
|
||||
],
|
||||
"onchange_properties": [ {
|
||||
"purpose":"FORM_CTRL",
|
||||
"form_controls":[
|
||||
{
|
||||
"insert_index":"offer_letter_was_seen",
|
||||
"expression":"(String('others_Please_specifys') == String('No')) && (String('offer_letter_was_seen') == String('No')) && (String('salary_register_was_seen') == String('No')) && (String('cash_voucher_was_seen') == String('No')) && (String('salary_slip_was_seen') == String('No'))",
|
||||
"value_keys":[
|
||||
"others_Please_specifys","offer_letter_was_seen","salary_register_was_seen","cash_voucher_was_seen","salary_slip_was_seen"
|
||||
],
|
||||
"questions":[
|
||||
|
||||
{
|
||||
"question":"Why documents are not available?",
|
||||
"question_key":"Why_documents_are_not_available_offer_letter",
|
||||
"place_holder":"Why documents are not available",
|
||||
"field_type":"text",
|
||||
"type":"4",
|
||||
"field_width":"100",
|
||||
"api_properties":null,
|
||||
"onchange_properties":[{
|
||||
"purpose":"FORM_CTRL",
|
||||
"form_controls":[
|
||||
{
|
||||
"insert_index":"Why_documents_are_not_available_offer_letter",
|
||||
"expression":"(String('Why_documents_are_not_available_offer_letter').includes('Others_please_specify'))",
|
||||
"value_keys":[
|
||||
"Why_documents_are_not_available_offer_letter"
|
||||
],
|
||||
"questions":[
|
||||
|
||||
{
|
||||
"question":"Others ",
|
||||
"question_key":"Others_please_specify_Why_documents_are_not_available_offer_letter",
|
||||
"place_holder":"Why documents are not available",
|
||||
"field_type":"text",
|
||||
"type":"1",
|
||||
"field_width":"100",
|
||||
"api_properties":null,
|
||||
"onchange_properties":null,
|
||||
"is_repeatable":null,
|
||||
"is_subfield":"1",
|
||||
"parent_question_key":"others_Please_specifys",
|
||||
"answers":null,
|
||||
"validations":[
|
||||
]
|
||||
|
||||
} ]
|
||||
}]
|
||||
}],
|
||||
"is_repeatable":null,
|
||||
"is_subfield":"1",
|
||||
"parent_question_key":"others_Please_specifys",
|
||||
"answers":[ {
|
||||
"answer_id":"Documents_were_not_shared_by_Employer",
|
||||
"answer":"Documents were not shared by Employer"
|
||||
},
|
||||
{
|
||||
"answer_id":"Documents_are_not_issued_by_Employer_to_Employee",
|
||||
"answer":"Documents are not issued by Employer to Employee"
|
||||
} , {
|
||||
"answer_id":"Documents_were_not_available",
|
||||
"answer":"Documents were not available"
|
||||
} , {
|
||||
"answer_id":"Employer_was_not_available",
|
||||
"answer":"Employer was not available"
|
||||
} , {
|
||||
"answer_id":"Others_please_specify",
|
||||
"answer":"Others please specify"
|
||||
} ],
|
||||
"validations":[
|
||||
]
|
||||
|
||||
} ]
|
||||
}]
|
||||
}],
|
||||
"is_repeatable":null,
|
||||
"validations":[
|
||||
|
||||
]
|
||||
}, {
|
||||
"question":"Others",
|
||||
"question_key":"others_Please_specifys",
|
||||
|
||||
"type":"2",
|
||||
"field_width":"100",
|
||||
"api_properties":null,
|
||||
"answers":[
|
||||
{
|
||||
"answer_id":"Yes",
|
||||
"answer":"Yes"
|
||||
},
|
||||
{
|
||||
"answer_id":"No",
|
||||
"answer":"No"
|
||||
}
|
||||
],
|
||||
"onchange_properties": [ {
|
||||
"purpose":"FORM_CTRL",
|
||||
"form_controls":[
|
||||
{
|
||||
"insert_index":"others_Please_specifys",
|
||||
"expression":"(String('others_Please_specifys') == String('Yes'))",
|
||||
"value_keys":[
|
||||
"others_Please_specifys"
|
||||
],
|
||||
"questions":[
|
||||
|
||||
{
|
||||
"question":"Others please specify",
|
||||
"question_key":"Others_specify",
|
||||
"place_holder":"Others please specify",
|
||||
"field_type":"text",
|
||||
"type":"1",
|
||||
"field_width":"100",
|
||||
"api_properties":null,
|
||||
"onchange_properties":null,
|
||||
"is_repeatable":null,
|
||||
"is_subfield":"1",
|
||||
"parent_question_key":"others_Please_specifys",
|
||||
"answers":null,
|
||||
"validations":[
|
||||
]
|
||||
|
||||
} ]
|
||||
}]
|
||||
},
|
||||
{
|
||||
"purpose":"FORM_CTRL",
|
||||
"form_controls":[
|
||||
{
|
||||
"insert_index":"others_Please_specifys",
|
||||
"expression":"(String('others_Please_specifys') == String('No')) && (String('offer_letter_was_seen') == String('No')) && (String('salary_register_was_seen') == String('No')) && (String('cash_voucher_was_seen') == String('No')) && (String('salary_slip_was_seen') == String('No'))",
|
||||
"value_keys":[
|
||||
"others_Please_specifys","offer_letter_was_seen","salary_register_was_seen","cash_voucher_was_seen","salary_slip_was_seen"
|
||||
],
|
||||
"questions":[
|
||||
|
||||
{
|
||||
"question":"Why documents are not available?",
|
||||
"question_key":"Why_documents_are_not_available_offer_letter",
|
||||
"place_holder":"Why documents are not available",
|
||||
"field_type":"text",
|
||||
"type":"4",
|
||||
"field_width":"100",
|
||||
"api_properties":null,
|
||||
"onchange_properties":[{
|
||||
"purpose":"FORM_CTRL",
|
||||
"form_controls":[
|
||||
{
|
||||
"insert_index":"Why_documents_are_not_available_offer_letter",
|
||||
"expression":"(String('Why_documents_are_not_available_offer_letter').includes('Others_please_specify'))",
|
||||
"value_keys":[
|
||||
"Why_documents_are_not_available_offer_letter"
|
||||
],
|
||||
"questions":[
|
||||
|
||||
{
|
||||
"question":"Others ",
|
||||
"question_key":"Others_please_specify_Why_documents_are_not_available_offer_letter",
|
||||
"place_holder":"Why documents are not available",
|
||||
"field_type":"text",
|
||||
"type":"1",
|
||||
"field_width":"100",
|
||||
"api_properties":null,
|
||||
"onchange_properties":null,
|
||||
"is_repeatable":null,
|
||||
"is_subfield":"1",
|
||||
"parent_question_key":"others_Please_specifys",
|
||||
"answers":null,
|
||||
"validations":[
|
||||
]
|
||||
|
||||
} ]
|
||||
}]
|
||||
}],
|
||||
"is_repeatable":null,
|
||||
"is_subfield":"1",
|
||||
"parent_question_key":"others_Please_specifys",
|
||||
"answers":[ {
|
||||
"answer_id":"Documents_were_not_shared_by_Employer",
|
||||
"answer":"Documents were not shared by Employer"
|
||||
},
|
||||
{
|
||||
"answer_id":"Documents_are_not_issued_by_Employer_to_Employee",
|
||||
"answer":"Documents are not issued by Employer to Employee"
|
||||
} , {
|
||||
"answer_id":"Documents_were_not_available",
|
||||
"answer":"Documents were not available"
|
||||
} , {
|
||||
"answer_id":"Employer_was_not_available",
|
||||
"answer":"Employer was not available"
|
||||
} , {
|
||||
"answer_id":"Others_please_specify",
|
||||
"answer":"Others please specify"
|
||||
} ],
|
||||
"validations":[
|
||||
]
|
||||
|
||||
} ]
|
||||
}]
|
||||
}],
|
||||
"is_repeatable":null,
|
||||
"validations":[
|
||||
|
||||
]
|
||||
}, {
|
||||
"question":"No. of employees sighted by PD officer during visit",
|
||||
"question_key":"no_of_employees_sighted_by_PD_officer_during_visit",
|
||||
"type":"1",
|
||||
"field_type":"num",
|
||||
"field_width":"45",
|
||||
"api_properties":null,
|
||||
"answers":[
|
||||
|
||||
],
|
||||
"onchange_properties":null,
|
||||
"is_repeatable":null,
|
||||
"validations":[
|
||||
|
||||
]
|
||||
}, {
|
||||
"question": "Was the company name board sighted? ",
|
||||
"question_key": "was_the_company_name_board_sighted",
|
||||
"type": "3",
|
||||
"disable":false,
|
||||
"field_width": "45",
|
||||
"answers":[
|
||||
{
|
||||
"answer_id":"Yes",
|
||||
"answer":"Yes"
|
||||
},
|
||||
{
|
||||
"answer_id":"No",
|
||||
"answer":"No"
|
||||
}
|
||||
],
|
||||
"api_properties": null,
|
||||
"onchange_properties": null,
|
||||
"is_repeatable": null,
|
||||
"validations": [
|
||||
{
|
||||
"name": "required",
|
||||
"isactive": "1",
|
||||
"validator": "Validators.required",
|
||||
"message": "Field Required",
|
||||
"value": null
|
||||
}
|
||||
]
|
||||
}, {
|
||||
"question": "Was any business activities observed during visit?",
|
||||
"question_key": "Was_any_business_activities_observed_during_visit",
|
||||
"type": "3",
|
||||
"disable":false,
|
||||
"field_width": "45",
|
||||
"answers":[
|
||||
{
|
||||
"answer_id":"Yes",
|
||||
"answer":"Yes"
|
||||
},
|
||||
{
|
||||
"answer_id":"No",
|
||||
"answer":"No"
|
||||
}
|
||||
],
|
||||
"api_properties": null,
|
||||
"onchange_properties": [{
|
||||
"purpose":"FORM_CTRL",
|
||||
"form_controls":[
|
||||
{
|
||||
"insert_index":"Was_any_business_activities_observed_during_visit",
|
||||
"expression":"(String('Was_any_business_activities_observed_during_visit') == String('Yes'))",
|
||||
"value_keys":[
|
||||
"Was_any_business_activities_observed_during_visit"
|
||||
],
|
||||
"questions":[
|
||||
|
||||
{
|
||||
"question":"If Yes ,Please Choose ",
|
||||
"question_key":"If_yes_choose_one",
|
||||
"place_holder":"why salary amount was not confirmed?",
|
||||
"field_type":"text",
|
||||
"type":"4",
|
||||
"field_width":"45",
|
||||
"api_properties":null,
|
||||
"onchange_properties":[{
|
||||
"purpose":"FORM_CTRL",
|
||||
"form_controls":[
|
||||
{
|
||||
"insert_index":"If_yes_choose_one",
|
||||
"expression":"(String('If_yes_choose_one').includes('others'))",
|
||||
"value_keys":[
|
||||
"If_yes_choose_one"
|
||||
],
|
||||
"questions":[
|
||||
|
||||
{
|
||||
"question":"Others (Please specify)",
|
||||
"question_key":"Others_Please_specify",
|
||||
"place_holder":"Others (Please specify)",
|
||||
"field_type":"text",
|
||||
"type":"1",
|
||||
"field_width":"45",
|
||||
"api_properties":null,
|
||||
"onchange_properties":null,
|
||||
"is_repeatable":null,
|
||||
"is_subfield":"1",
|
||||
"parent_question_key":"salary_confirmed_by_person_met",
|
||||
"answers":null,
|
||||
"validations":[
|
||||
]
|
||||
|
||||
} ]
|
||||
}]
|
||||
}],
|
||||
"is_repeatable":null,
|
||||
"is_subfield":"1",
|
||||
"parent_question_key":"salary_confirmed_by_person_met",
|
||||
"answers":[
|
||||
{
|
||||
"answer_id":"employees_were_seen_at_the_visited_premises",
|
||||
"answer":"Employees were seen at the visited premises"
|
||||
},
|
||||
{
|
||||
"answer_id":"customers_Clients_were_seen_at_the_visited_premises",
|
||||
"answer":"Customers/Clients were seen at the visited premises"
|
||||
} , {
|
||||
"answer_id":"manufacturing_activities_were_seen_at_the_visited_premises",
|
||||
"answer":"Manufacturing activities were seen at the visited premises"
|
||||
},
|
||||
{
|
||||
"answer_id":"others",
|
||||
"answer":"Others (Please specify)"
|
||||
}
|
||||
],
|
||||
"validations":[
|
||||
]
|
||||
|
||||
} ]
|
||||
}]
|
||||
}],
|
||||
"is_repeatable": null,
|
||||
"validations": [
|
||||
{
|
||||
"name": "required",
|
||||
"isactive": "1",
|
||||
"validator": "Validators.required",
|
||||
"message": "Field Required",
|
||||
"value": null
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
|
||||
10
ng6-seed/src/assets/images/digilocker.svg
Normal file
10
ng6-seed/src/assets/images/digilocker.svg
Normal file
@ -0,0 +1,10 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" version="1.0" width="225.000000pt" height="225.000000pt" viewBox="0 0 225.000000 225.000000" preserveAspectRatio="xMidYMid meet">
|
||||
<metadata fill="#ff0000">
|
||||
Created by potrace 1.16, written by Peter Selinger 2001-2019
|
||||
</metadata>
|
||||
<g transform="translate(0.000000,225.000000) scale(0.100000,-0.100000)" fill="#ff0000" stroke="none">
|
||||
<path d="M525 2202 c-62 -38 -60 -25 -63 -393 l-3 -339 -47 -32 c-131 -90 -222 -243 -222 -373 0 -33 -5 -46 -22 -57 -44 -29 -109 -103 -129 -148 -11 -25 -25 -53 -30 -62 -16 -30 -11 -188 8 -238 23 -61 64 -121 114 -163 67 -58 103 -70 219 -76 l105 -6 6 -105 c7 -119 9 -127 47 -155 26 -20 45 -20 827 -23 587 -2 807 1 828 9 15 7 37 23 47 37 19 24 20 44 20 688 l0 664 -470 0 -470 0 -1 323 c0 177 -1 354 -2 392 l-2 70 -365 3 c-340 2 -367 1 -395 -16z m257 -760 c97 -32 173 -88 246 -181 17 -22 21 -23 54 -12 19 6 69 12 111 13 66 1 83 -2 140 -30 82 -41 143 -107 181 -196 16 -36 33 -66 39 -66 23 0 98 -74 129 -128 31 -54 33 -62 33 -157 0 -92 -2 -104 -30 -154 -38 -68 -102 -125 -173 -151 -53 -20 -71 -21 -566 -19 -628 1 -686 5 -752 45 -90 56 -154 172 -154 280 0 99 55 204 139 267 47 35 51 41 51 80 0 102 54 222 137 304 107 106 279 150 415 105z" fill="#ff0000"/>
|
||||
<path d="M746 969 c-34 -26 -36 -82 -4 -116 21 -22 21 -24 5 -85 -9 -35 -19 -73 -23 -85 -6 -22 -4 -23 60 -23 47 0 66 4 66 13 0 7 -9 46 -20 86 -21 73 -21 74 -1 92 42 39 34 105 -15 128 -33 15 -37 14 -68 -10z" fill="#ff0000"/>
|
||||
<path d="M1402 1870 l3 -343 403 -1 c221 0 402 2 402 5 0 3 -19 21 -42 39 -57 45 -401 336 -504 425 -134 117 -245 210 -255 213 -6 2 -8 -130 -7 -338z" fill="#ff0000"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.6 KiB |
8
ng6-seed/src/assets/images/download.svg
Normal file
8
ng6-seed/src/assets/images/download.svg
Normal file
@ -0,0 +1,8 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" version="1.0" width="512.000000pt" height="512.000000pt" viewBox="0 0 512.000000 512.000000" preserveAspectRatio="xMidYMid meet">
|
||||
<metadata fill="#ff0000">
|
||||
Created by potrace 1.16, written by Peter Selinger 2001-2019
|
||||
</metadata>
|
||||
<g transform="translate(0.000000,512.000000) scale(0.100000,-0.100000)" fill="#ff0000" stroke="none">
|
||||
<path d="M2341 4609 c-887 -93 -1627 -768 -1800 -1644 -239 -1204 600 -2341 1818 -2465 1215 -122 2271 833 2271 2055 0 1149 -936 2076 -2084 2064 -66 -1 -159 -6 -205 -10z m859 -999 l0 -140 -615 0 -615 0 0 140 0 140 615 0 615 0 0 -140z m0 -500 l0 -170 -615 0 -615 0 0 170 0 170 615 0 615 0 0 -170z m0 -595 l0 -215 255 -2 255 -3 -562 -563 -563 -562 -565 565 -565 565 258 0 257 0 0 215 0 215 615 0 615 0 0 -215z" fill="#ff0000"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 805 B |
12
ng6-seed/src/assets/images/notes.svg
Normal file
12
ng6-seed/src/assets/images/notes.svg
Normal file
@ -0,0 +1,12 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" version="1.0" width="512.000000pt" height="512.000000pt" viewBox="0 0 512.000000 512.000000" preserveAspectRatio="xMidYMid meet">
|
||||
<metadata fill="#ff0000">
|
||||
Created by potrace 1.16, written by Peter Selinger 2001-2019
|
||||
</metadata>
|
||||
<g transform="translate(0.000000,512.000000) scale(0.100000,-0.100000)" fill="#ff0000" stroke="none">
|
||||
<path d="M303 5100 c-134 -48 -237 -152 -284 -288 -18 -54 -19 -115 -19 -2252 0 -2137 1 -2198 19 -2252 47 -138 151 -242 288 -289 55 -18 97 -19 1643 -19 1546 0 1588 1 1643 19 137 47 241 151 288 289 18 51 19 88 19 504 l0 448 547 647 c618 732 606 718 640 793 38 82 44 225 14 317 -43 133 -140 236 -266 285 -50 19 -78 23 -170 22 -199 -1 -240 -30 -538 -382 l-222 -262 -5 782 c-5 841 -2 795 -58 897 -29 51 -92 115 -430 435 -259 245 -298 276 -385 305 -60 21 -73 21 -1366 20 -1246 0 -1308 -1 -1358 -19z m2397 -682 c0 -378 1 -405 19 -432 10 -15 32 -37 47 -47 27 -18 54 -19 432 -19 l402 0 0 -801 0 -800 -334 -395 c-183 -218 -346 -418 -360 -444 -18 -33 -53 -157 -106 -380 -44 -182 -80 -341 -80 -353 0 -40 43 -109 80 -129 68 -35 97 -27 412 109 161 69 309 136 328 148 19 12 41 25 48 29 11 7 13 -36 10 -240 -3 -235 -4 -251 -25 -284 -12 -19 -37 -44 -55 -55 -33 -20 -51 -20 -1568 -20 -1517 0 -1535 0 -1568 20 -18 11 -43 36 -55 55 l-22 35 0 2145 0 2145 22 35 c24 39 53 60 98 71 17 4 535 7 1153 8 l1122 1 0 -402z m705 -52 l150 -145 -277 0 -278 -1 0 266 0 266 128 -120 c70 -66 195 -186 277 -266z m1339 -1365 c43 -29 66 -70 66 -121 0 -51 -16 -81 -81 -153 l-44 -48 -108 92 c-96 81 -107 93 -95 107 97 118 130 142 193 142 22 0 53 -8 69 -19z m-371 -468 c56 -47 101 -92 101 -98 -1 -7 -182 -227 -404 -489 -273 -323 -406 -474 -415 -468 -21 12 -204 167 -204 173 -1 6 811 969 817 969 2 0 49 -39 105 -87z m-1004 -1223 c49 -41 90 -78 90 -83 1 -4 -18 -26 -41 -49 -32 -31 -77 -56 -177 -99 -74 -32 -136 -57 -138 -56 -1 2 14 68 33 147 34 142 46 173 87 218 24 26 14 31 146 -78z" fill="#ff0000"/>
|
||||
<path d="M666 4201 c-46 -31 -66 -69 -66 -131 0 -62 20 -100 66 -131 28 -18 62 -19 834 -19 772 0 806 1 834 19 46 31 66 69 66 131 0 62 -20 100 -66 131 -28 18 -62 19 -834 19 -772 0 -806 -1 -834 -19z" fill="#ff0000"/>
|
||||
<path d="M666 3291 c-46 -31 -66 -69 -66 -131 0 -62 20 -100 66 -131 28 -18 71 -19 1284 -19 1213 0 1256 1 1284 19 46 31 66 69 66 131 0 62 -20 100 -66 131 -28 18 -71 19 -1284 19 -1213 0 -1256 -1 -1284 -19z" fill="#ff0000"/>
|
||||
<path d="M666 2391 c-46 -31 -66 -69 -66 -131 0 -62 20 -100 66 -131 28 -18 71 -19 1284 -19 1213 0 1256 1 1284 19 46 31 66 69 66 131 0 62 -20 100 -66 131 -28 18 -71 19 -1284 19 -1213 0 -1256 -1 -1284 -19z" fill="#ff0000"/>
|
||||
<path d="M666 1491 c-46 -31 -66 -69 -66 -131 0 -62 20 -100 66 -131 28 -18 62 -19 834 -19 772 0 806 1 834 19 46 31 66 69 66 131 0 62 -20 100 -66 131 -28 18 -62 19 -834 19 -772 0 -806 -1 -834 -19z" fill="#ff0000"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.7 KiB |
11
ng6-seed/src/assets/images/picture_download.svg
Normal file
11
ng6-seed/src/assets/images/picture_download.svg
Normal file
@ -0,0 +1,11 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" version="1.0" width="126.000000pt" height="128.000000pt" viewBox="0 0 126.000000 128.000000" preserveAspectRatio="xMidYMid meet">
|
||||
<metadata fill="#ff0000">
|
||||
Created by potrace 1.16, written by Peter Selinger 2001-2019
|
||||
</metadata>
|
||||
<g transform="translate(0.000000,128.000000) scale(0.100000,-0.100000)" fill="#ff0000" stroke="none">
|
||||
<path d="M2 793 l3 -488 165 0 165 0 3 53 3 52 -110 0 -111 0 0 385 0 385 510 0 510 0 0 -385 0 -385 -110 0 -110 0 0 -55 0 -55 168 2 167 3 3 488 2 487 -630 0 -630 0 2 -487z" fill="#ff0000"/>
|
||||
<path d="M304 997 c-54 -46 -20 -137 51 -137 73 0 104 87 49 138 -32 28 -66 28 -100 -1z" fill="#ff0000"/>
|
||||
<path d="M781 810 c-40 -72 -76 -132 -80 -135 -4 -2 -16 10 -26 28 -10 18 -34 57 -53 86 l-35 55 -43 -110 -43 -109 -54 -3 -55 -3 -12 51 c-7 27 -15 50 -19 50 -3 0 -20 -34 -36 -75 -29 -72 -31 -75 -62 -75 -30 0 -33 -3 -33 -30 l0 -30 400 0 c220 0 400 3 400 8 0 14 -163 422 -169 422 -3 0 -39 -59 -80 -130z" fill="#ff0000"/>
|
||||
<path d="M540 315 l0 -94 -56 -3 -56 -3 101 -105 101 -105 101 105 101 105 -58 5 -59 5 -3 93 -3 92 -84 0 -85 0 0 -95z" fill="#ff0000"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
11
ng6-seed/src/assets/images/score.svg
Normal file
11
ng6-seed/src/assets/images/score.svg
Normal file
@ -0,0 +1,11 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" version="1.0" width="200.000000pt" height="200.000000pt" viewBox="0 0 200.000000 200.000000" preserveAspectRatio="xMidYMid meet">
|
||||
<metadata fill="#ff0000">
|
||||
Created by potrace 1.16, written by Peter Selinger 2001-2019
|
||||
</metadata>
|
||||
<g transform="translate(0.000000,200.000000) scale(0.100000,-0.100000)" fill="#ff0000" stroke="none">
|
||||
<path d="M865 1529 c-114 -15 -335 -89 -335 -113 0 -6 46 -90 102 -187 l101 -177 66 26 c60 24 79 26 201 26 122 0 141 -2 200 -26 l66 -25 102 177 c56 97 102 181 102 187 0 6 -35 24 -77 41 -189 74 -341 94 -528 71z" fill="#ff0000"/>
|
||||
<path d="M405 1344 c-236 -177 -386 -446 -402 -716 l-6 -98 201 0 201 0 6 48 c11 80 43 174 82 240 34 58 126 156 181 194 l22 15 -103 178 c-56 98 -107 180 -112 181 -6 2 -37 -17 -70 -42z" fill="#ff0000"/>
|
||||
<path d="M1513 1378 c-6 -7 -54 -89 -108 -182 -89 -155 -96 -170 -79 -179 42 -23 152 -140 187 -199 39 -66 71 -160 82 -240 l6 -48 201 0 201 0 -6 98 c-15 267 -170 543 -397 712 -37 27 -70 50 -72 50 -3 0 -10 -6 -15 -12z" fill="#ff0000"/>
|
||||
<path d="M1175 734 c-131 -54 -238 -103 -247 -115 -28 -33 -24 -100 8 -130 42 -39 92 -33 150 21 110 100 327 311 323 314 -2 3 -107 -38 -234 -90z" fill="#ff0000"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
Loading…
Reference in New Issue
Block a user