Files
brewman/overlord/src/app/employee-functions/employee-functions.component.ts
T
2023-07-23 09:01:18 +05:30

117 lines
3.7 KiB
TypeScript

import { Component } from '@angular/core';
import { FormControl, FormGroup } from '@angular/forms';
import { MatDatepicker } from '@angular/material/datepicker';
import * as moment from 'moment';
import { Moment } from 'moment';
import { ToasterService } from '../core/toaster.service';
import { EmployeeFunctionsService } from './employee-functions.service';
@Component({
selector: 'app-employee-functions',
templateUrl: './employee-functions.component.html',
styleUrls: ['./employee-functions.component.css'],
})
export class EmployeeFunctionsComponent {
creditSalaryForm: FormGroup<{
date: FormControl<moment.Moment>;
}>;
attendanceRecordForm: FormGroup<{
startDate: FormControl<moment.Moment>;
finishDate: FormControl<moment.Moment>;
}>;
fingerprintFile: File | null = null;
constructor(
private toaster: ToasterService,
private ser: EmployeeFunctionsService,
) {
const startDate = moment().date(1);
const finishDate = moment().date(startDate.daysInMonth());
this.creditSalaryForm = new FormGroup({
date: new FormControl(finishDate, { nonNullable: true }),
});
this.attendanceRecordForm = new FormGroup({
startDate: new FormControl(moment(), { nonNullable: true }),
finishDate: new FormControl(moment(), { nonNullable: true }),
});
}
chosenYearHandler(normalizedYear: Moment) {
const ctrlValue = this.creditSalaryForm.value.date ?? moment();
ctrlValue.year(normalizedYear.year());
ctrlValue.date(ctrlValue.daysInMonth());
this.creditSalaryForm.setValue({ date: ctrlValue });
}
chosenMonthHandler(normlizedMonth: Moment, datepicker: MatDatepicker<Moment>) {
const ctrlValue = this.creditSalaryForm.value.date ?? moment();
ctrlValue.month(normlizedMonth.month());
ctrlValue.date(ctrlValue.daysInMonth());
this.creditSalaryForm.setValue({ date: ctrlValue });
datepicker.close();
}
creditSalary() {
const date = (this.creditSalaryForm.value.date ?? moment()).format('DD-MMM-YYYY');
if (!date) {
this.toaster.show('Danger', 'Please choose a valid date.');
return;
}
this.ser.creditSalary(date).subscribe(
() => {
this.toaster.show('Success', 'Salaries Credited');
},
(error) => {
this.toaster.show('Danger', error);
},
);
}
attendanceRecordUrl() {
const startDate = (this.attendanceRecordForm.value.startDate ?? moment()).format('DD-MMM-YYYY');
const finishDate = (this.attendanceRecordForm.value.finishDate ?? moment()).format(
'DD-MMM-YYYY',
);
if (!startDate || !finishDate) {
// this.toaster.show('Danger', 'Please choose a start and finish date.');
return '';
}
return `/attendance-report?s=${startDate}&f=${finishDate}`;
}
fingerPrintUrl() {
const startDate = (this.attendanceRecordForm.value.startDate ?? moment()).format('DD-MMM-YYYY');
const finishDate = (this.attendanceRecordForm.value.finishDate ?? moment()).format(
'DD-MMM-YYYY',
);
if (!startDate || !finishDate) {
// this.toaster.show('Danger', 'Please choose a start and finish date.');
return '';
}
return `/fingerprint-report?s=${startDate}&f=${finishDate}`;
}
detectFiles(event: Event) {
this.fingerprintFile = ((event.target as HTMLInputElement).files as FileList)[0];
}
uploadFingerprints() {
if (!this.fingerprintFile) {
this.toaster.show('Danger', 'Please choose a file first!');
return;
}
this.ser.uploadFingerprints(this.fingerprintFile).subscribe(
() => {
this.toaster.show('Success', 'Fingerprints uploaded');
},
(error) => {
this.toaster.show('Danger', error);
},
);
}
}