import { Component, OnInit } from '@angular/core'; import { KGridHelper } from '../../../_helpers/k-grid.class'; import { NotificationService } from '../../../_services/notification.service'; import { EmployeeServices } from '../employee-services'; import { AuthenticationService } from '../../../_services/authentication.service'; import { SortDescriptor, orderBy } from '@progress/kendo-data-query'; import { PageChangeEvent } from '@progress/kendo-angular-grid'; import { SecurityDepositViewModel } from '../employee-class'; import { Subject, Subscription } from 'rxjs'; import { LocalService } from '../../../_services/local.service'; import { StoreService } from '../../store/store.services'; import { debounceTime } from 'rxjs/operators'; @Component({ selector: 'app-security-deposit', templateUrl: './security-deposit.component.html' }) export class SecurityDepositComponent implements OnInit { public kGrid: KGridHelper = new KGridHelper(); public searchEvent = new Subject(); public searchSubcription: Subscription = null; public saving = false; public deleting = false; public _securityDepositVm: SecurityDepositViewModel = new SecurityDepositViewModel(); public isEdit = false; public securityAccountList: any = []; public employeeAccountList: any = []; public maxDate = new Date(); public client: any; public openDeleteConfirmationDialog = false; public openSecurityDepositDialog = false; constructor(public _notificationService: NotificationService, public _employeeServices: EmployeeServices, public _authenticationService: AuthenticationService, public _storeService: StoreService, public _localService: LocalService) { } ngOnInit() { this.initializeProps(); this.getAccount(' ', 'E'); this.getSecurityDepositList(); this.handleSearchEvents(); } private initializeProps() { this.kGrid.loading = false; this.kGrid.pageSize = 20; this.kGrid.pageSizes = [20, 50, 100]; } OpenSecurityDepositDialog() { this.isEdit = false; this.openSecurityDepositDialog = true; this._securityDepositVm = new SecurityDepositViewModel(); this._securityDepositVm.TransactionDate = new Date(); this.validateSecurityDepositCode('-1'); } CloseSecurityDepositDialog() { this.openSecurityDepositDialog = false; this._securityDepositVm = new SecurityDepositViewModel(); } onSubmitSecurityDeposit() { this.saving = true; this._employeeServices.saveSecurityDeposit(this._securityDepositVm).subscribe((res) => { this._notificationService.notify('success', 'Saved Successfully'); this.CloseSecurityDepositDialog(); this.getSecurityDepositList(); this.isEdit = false; this.saving = false; }, (err) => { this._notificationService.notify('danger', 'Something Went Wrong'); }); } // edit OpenEditSecurityDepositDialog(item) { this.isEdit = true; this._securityDepositVm = item; this._securityDepositVm.TransactionDate = new Date(item.TransactionDate); this.openSecurityDepositDialog = true; } // delete OpenDeleteSecurityDepositDialog(item) { this._securityDepositVm = item; this.openDeleteConfirmationDialog = true; } CloseDeleteSecurityDepositDialog() { this.openDeleteConfirmationDialog = false; this._securityDepositVm = new SecurityDepositViewModel(); } ConfirmDeleteSecurityDeposit() { this.deleting = true; this._employeeServices.deleteSecurityDeposit(this._securityDepositVm).subscribe((res) => { this._notificationService.notify('success', 'Deleted Successfully'); this.openDeleteConfirmationDialog = false; this.deleting = false; this._securityDepositVm = new SecurityDepositViewModel(); this.getSecurityDepositList(); }, (err) => { this._notificationService.notify('danger', 'Something Went Wrong'); }); } // return public payableAmount=0; public openSecurityReturnDialog = false; OpenSecurityReturnDialog(item) { this._securityDepositVm = item; this._securityDepositVm.Id = 0; this._securityDepositVm.Fk_SecurityDepositSelf = item.Id; this._securityDepositVm.TransactionDate = new Date(item.TransactionDate); this._securityDepositVm.IsReturn = true; this.payableAmount = (this._securityDepositVm.Amount - this._securityDepositVm.PaidAmount); this._securityDepositVm.Amount = this.payableAmount; this.validateSecurityDepositCode('-1'); this.openSecurityDepositDialog = true; } getSecurityDepositList() { this.kGrid.loading = true; this._employeeServices.getSecurityDepositList().subscribe( (response: any) => { this.kGrid.data = []; this.kGrid.data = response.DtlList; this.kGrid.totalRecords = response.TotalCount; this.kGrid.gridView = { data: this.kGrid.data, total: this.kGrid.totalRecords }; this.kGrid.loading = false; console.log(this.kGrid.gridView); }, err => console.log(err) ); } validateSecurityDepositCode(code) { this._employeeServices.validateSecurityDepositeCode(code).subscribe((res: any) => { if (res.msg === 'Valid') { this._securityDepositVm.Ref_Id = res.code; } }, (err) => { this._notificationService.notify('danger', 'Something Went Wrong'); }); } public getAccount(x: string, event: string) { this._storeService.getAccountBySearch(x, event).subscribe((res: any) => { if (res) { if (event === 'E') { this.employeeAccountList = res; } } }, err => { this._notificationService.notify('danger', err.msg); }); } public handleSearchEvents() { this.searchSubcription = this.searchEvent.pipe( debounceTime(400)).subscribe((x: any) => { console.log(x); if (x) { if (x.filter == 'FK_Emp_Acc') { this.getAccount(x.event, 'E'); } } }); } public sortChange(sort: SortDescriptor[]): void { if (sort[0].field == 'asd') { return; } this.kGrid.sort = sort; this.sortData(); } private sortData() { this.kGrid.gridView = { data: orderBy(this.kGrid.data, this.kGrid.sort), total: this.kGrid.totalRecords }; } public pageChange(event: PageChangeEvent): void { this.kGrid.skip = event.skip; this.getSecurityDepositList(); } private handleError(err: any) { this.kGrid.loading = false; if (err.status == 403) { this._authenticationService.logout(); } } public changePagesize(value: any) { this.kGrid.pageSize = +value; this.kGrid.skip = 0; this.getSecurityDepositList(); } }