Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import { Component, OnInit, OnDestroy, Output, EventEmitter, ViewChild } from '@angular/core';
- import { FormGroup, FormBuilder, Validators } from '@angular/forms';
- import { Subject } from 'rxjs';
- import { takeUntil } from 'rxjs/operators';
- import { MatHorizontalStepper, MatSlideToggleChange } from '@angular/material';
- import { BloodTypes } from '../../../../../gaji-id-resources/combo-constants/blood-types.constant';
- import { ComboConstant } from '../../../../../gaji-id-resources/combo-constants/combo-constant.interface';
- import { CustomValidators } from '../../../../../components/validators/custom-validators';
- import { Genders } from '../../../../../gaji-id-resources/combo-constants/genders.constant';
- import { MarriageStatuses } from '../../../../../gaji-id-resources/combo-constants/marriage-statuses.constant';
- import { Religions } from '../../../../../gaji-id-resources/combo-constants/religions.constant';
- import { PayrollGroup } from '../../../../../gaji-id-resources/resources/master/payroll-group/payroll-group.model';
- import { IncomeDeduction } from '../../../../../gaji-id-resources/resources/master/income-deduction/income-deduction.model';
- import { PayrollGroupService } from '../../../../../gaji-id-resources/resources/master/payroll-group/payroll-group.service';
- import { IncomeDeductionService } from '../../../../../gaji-id-resources/resources/master/income-deduction/income-deduction.service';
- @Component({
- selector: 'app-karyawan-data-karyawan-input',
- templateUrl: './data-karyawan-input.component.html',
- styleUrls: ['./data-karyawan-input.component.scss']
- })
- export class DataKaryawanInputComponent implements OnInit, OnDestroy {
- @ViewChild('stepper') public stepper: MatHorizontalStepper;
- public bloodTypeList: ComboConstant[] = BloodTypes.getValues();
- public genderList: ComboConstant[] = Genders.getValues();
- public marriageStatusList: ComboConstant[] = MarriageStatuses.getValues();
- public religionList: ComboConstant[] = Religions.getValues();
- public payrollGroupList: PayrollGroup[] = [];
- public incomeDeductionList: IncomeDeduction[] = [];
- // To Do : Change with TrxInputKaryawanDetailTunjangan
- public tunjanganList: any[] = [];
- public dataPribadiForm: FormGroup;
- public dataKepegawaianForm: FormGroup;
- public dataPenggajianForm: FormGroup;
- public dataLainForm: FormGroup;
- public tunjanganForm: FormGroup;
- private ngUnsubscribe: Subject<boolean> = new Subject();
- constructor(
- private fb: FormBuilder,
- private payrollGroupService: PayrollGroupService,
- private incomeDeductionService: IncomeDeductionService
- ) {
- this.initForms();
- }
- public ngOnInit() {
- this.initPayrollGroups();
- this.initIncomeDeductions();
- }
- public ngOnDestroy() {
- this.ngUnsubscribe.next(true);
- this.ngUnsubscribe.complete();
- }
- public initForms() {
- // To Do : Describe forms here
- this.dataPribadiForm = this.fb.group({
- employeeId: [null, Validators.required],
- name: [null, Validators.required],
- degreeBeforeName: [null, Validators.required],
- degreeAfterName: [null, Validators.required],
- wna: [false],
- citizenship: [],
- birthCity: [null, Validators.required],
- birthDate: [null, Validators.required],
- idNumber: [null, Validators.required],
- bloodType: [null, Validators.required],
- religion: [null, Validators.required],
- gender: [null, Validators.required],
- marriageStatus: [null, Validators.required],
- biologicalMotherName: [null, Validators.required],
- telephoneNumber: [null, Validators.compose([Validators.required, CustomValidators.accountNumber])],
- handphoneNumber: [null, Validators.compose([Validators.required, CustomValidators.accountNumber])],
- email: [null, Validators.compose([Validators.required, CustomValidators.email])],
- idAddress: [null, Validators.required],
- idKelurahan: [null, Validators.required],
- idKecamatan: [null, Validators.required],
- idKotaKabupaten: [null, Validators.required],
- idZipCode: [null, Validators.required],
- differentAddress: [false],
- domicileAddress: [null],
- domicileKelurahan: [null],
- domicileKecamatan: [null],
- domicileKotaKabupaten: [null],
- domicileZipCode: [null],
- });
- this.dataKepegawaianForm = this.fb.group({});
- this.dataPenggajianForm = this.fb.group({
- payrollGroup: [null, Validators.required],
- gaji: [null, Validators.required],
- gajiSetelahProbatio: [null, Validators.required]
- });
- this.dataLainForm = this.fb.group({});
- this.tunjanganForm = this.fb.group({
- incomeDeduction: [null, Validators.required],
- nilai: [null, Validators.required]
- });
- }
- public initPayrollGroups() {
- this.payrollGroupService.search({ isActive: true }).pipe(takeUntil(this.ngUnsubscribe)).subscribe(
- (result) => {
- this.payrollGroupList = result.data;
- }
- );
- }
- public initIncomeDeductions() {
- this.incomeDeductionService.search({ isActive: true }).pipe(takeUntil(this.ngUnsubscribe)).subscribe(
- (result) => {
- this.incomeDeductionList = result.data;
- }
- );
- }
- public onWNAChange(wna: MatSlideToggleChange) {
- if (wna.checked) {
- this.dataPribadiForm.get('citizenship').setValidators([Validators.required]);
- } else {
- this.dataPribadiForm.get('citizenship').setValidators([]);
- }
- this.dataPribadiForm.get('startYearMonth').updateValueAndValidity();
- }
- public onDifferentAddressChange(differentAddress: MatSlideToggleChange) {
- if (differentAddress.checked) {
- this.dataPribadiForm.get('domicileAddress').setValidators([Validators.required]);
- this.dataPribadiForm.get('domicileKelurahan').setValidators([Validators.required]);
- this.dataPribadiForm.get('domicileKecamatan').setValidators([Validators.required]);
- this.dataPribadiForm.get('domicileKotaKabupaten').setValidators([Validators.required]);
- this.dataPribadiForm.get('domicileZipCode').setValidators([Validators.required]);
- } else {
- this.dataPribadiForm.get('domicileAddress').setValidators([]);
- this.dataPribadiForm.get('domicileKelurahan').setValidators([]);
- this.dataPribadiForm.get('domicileKecamatan').setValidators([]);
- this.dataPribadiForm.get('domicileKotaKabupaten').setValidators([]);
- this.dataPribadiForm.get('domicileZipCode').setValidators([]);
- }
- this.dataPribadiForm.get('domicileAddress').updateValueAndValidity();
- this.dataPribadiForm.get('domicileKelurahan').updateValueAndValidity();
- this.dataPribadiForm.get('domicileKecamatan').updateValueAndValidity();
- this.dataPribadiForm.get('domicileKotaKabupaten').updateValueAndValidity();
- this.dataPribadiForm.get('domicileZipCode').updateValueAndValidity();
- }
- // To Do Ronald : Change with TrxInputKaryawanDetailTunjangan model
- public deleteDetailTunjangan(detailTunjangan: any) { }
- public addDetailTunjangan() { }
- }
Add Comment
Please, Sign In to add comment