ronaldkwandy

Untitled

Mar 29th, 2019
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import { Component, OnInit, OnDestroy, Output, EventEmitter, ViewChild } from '@angular/core';
  2. import { FormGroup, FormBuilder, Validators } from '@angular/forms';
  3.  
  4. import { Subject } from 'rxjs';
  5. import { takeUntil } from 'rxjs/operators';
  6.  
  7. import { MatHorizontalStepper, MatSlideToggleChange } from '@angular/material';
  8.  
  9. import { BloodTypes } from '../../../../../gaji-id-resources/combo-constants/blood-types.constant';
  10. import { ComboConstant } from '../../../../../gaji-id-resources/combo-constants/combo-constant.interface';
  11. import { CustomValidators } from '../../../../../components/validators/custom-validators';
  12. import { Genders } from '../../../../../gaji-id-resources/combo-constants/genders.constant';
  13. import { MarriageStatuses } from '../../../../../gaji-id-resources/combo-constants/marriage-statuses.constant';
  14. import { Religions } from '../../../../../gaji-id-resources/combo-constants/religions.constant';
  15. import { PayrollGroup } from '../../../../../gaji-id-resources/resources/master/payroll-group/payroll-group.model';
  16. import { IncomeDeduction } from '../../../../../gaji-id-resources/resources/master/income-deduction/income-deduction.model';
  17. import { PayrollGroupService } from '../../../../../gaji-id-resources/resources/master/payroll-group/payroll-group.service';
  18. import { IncomeDeductionService } from '../../../../../gaji-id-resources/resources/master/income-deduction/income-deduction.service';
  19.  
  20. @Component({
  21.   selector: 'app-karyawan-data-karyawan-input',
  22.   templateUrl: './data-karyawan-input.component.html',
  23.   styleUrls: ['./data-karyawan-input.component.scss']
  24. })
  25. export class DataKaryawanInputComponent implements OnInit, OnDestroy {
  26.  
  27.   @ViewChild('stepper') public stepper: MatHorizontalStepper;
  28.  
  29.   public bloodTypeList: ComboConstant[] = BloodTypes.getValues();
  30.   public genderList: ComboConstant[] = Genders.getValues();
  31.   public marriageStatusList: ComboConstant[] = MarriageStatuses.getValues();
  32.   public religionList: ComboConstant[] = Religions.getValues();
  33.   public payrollGroupList: PayrollGroup[] = [];
  34.   public incomeDeductionList: IncomeDeduction[] = [];
  35.   // To Do : Change with TrxInputKaryawanDetailTunjangan
  36.   public tunjanganList: any[] = [];
  37.  
  38.   public dataPribadiForm: FormGroup;
  39.   public dataKepegawaianForm: FormGroup;
  40.   public dataPenggajianForm: FormGroup;
  41.   public dataLainForm: FormGroup;
  42.   public tunjanganForm: FormGroup;
  43.  
  44.   private ngUnsubscribe: Subject<boolean> = new Subject();
  45.  
  46.   constructor(
  47.     private fb: FormBuilder,
  48.     private payrollGroupService: PayrollGroupService,
  49.     private incomeDeductionService: IncomeDeductionService
  50.   ) {
  51.     this.initForms();
  52.   }
  53.  
  54.   public ngOnInit() {
  55.     this.initPayrollGroups();
  56.     this.initIncomeDeductions();
  57.   }
  58.  
  59.   public ngOnDestroy() {
  60.     this.ngUnsubscribe.next(true);
  61.     this.ngUnsubscribe.complete();
  62.   }
  63.  
  64.   public initForms() {
  65.     // To Do : Describe forms here
  66.     this.dataPribadiForm = this.fb.group({
  67.       employeeId: [null, Validators.required],
  68.       name: [null, Validators.required],
  69.       degreeBeforeName: [null, Validators.required],
  70.       degreeAfterName: [null, Validators.required],
  71.       wna: [false],
  72.       citizenship: [],
  73.       birthCity: [null, Validators.required],
  74.       birthDate: [null, Validators.required],
  75.       idNumber: [null, Validators.required],
  76.       bloodType: [null, Validators.required],
  77.       religion: [null, Validators.required],
  78.       gender: [null, Validators.required],
  79.       marriageStatus: [null, Validators.required],
  80.       biologicalMotherName: [null, Validators.required],
  81.       telephoneNumber: [null, Validators.compose([Validators.required, CustomValidators.accountNumber])],
  82.       handphoneNumber: [null, Validators.compose([Validators.required, CustomValidators.accountNumber])],
  83.       email: [null, Validators.compose([Validators.required, CustomValidators.email])],
  84.       idAddress: [null, Validators.required],
  85.       idKelurahan: [null, Validators.required],
  86.       idKecamatan: [null, Validators.required],
  87.       idKotaKabupaten: [null, Validators.required],
  88.       idZipCode: [null, Validators.required],
  89.       differentAddress: [false],
  90.       domicileAddress: [null],
  91.       domicileKelurahan: [null],
  92.       domicileKecamatan: [null],
  93.       domicileKotaKabupaten: [null],
  94.       domicileZipCode: [null],
  95.     });
  96.  
  97.     this.dataKepegawaianForm = this.fb.group({});
  98.     this.dataPenggajianForm = this.fb.group({
  99.       payrollGroup: [null, Validators.required],
  100.       gaji: [null, Validators.required],
  101.       gajiSetelahProbatio: [null, Validators.required]
  102.     });
  103.     this.dataLainForm = this.fb.group({});
  104.  
  105.     this.tunjanganForm = this.fb.group({
  106.       incomeDeduction: [null, Validators.required],
  107.       nilai: [null, Validators.required]
  108.     });
  109.   }
  110.  
  111.   public initPayrollGroups() {
  112.     this.payrollGroupService.search({ isActive: true }).pipe(takeUntil(this.ngUnsubscribe)).subscribe(
  113.       (result) => {
  114.         this.payrollGroupList = result.data;
  115.       }
  116.     );
  117.   }
  118.  
  119.   public initIncomeDeductions() {
  120.     this.incomeDeductionService.search({ isActive: true }).pipe(takeUntil(this.ngUnsubscribe)).subscribe(
  121.       (result) => {
  122.         this.incomeDeductionList = result.data;
  123.       }
  124.     );
  125.   }
  126.  
  127.   public onWNAChange(wna: MatSlideToggleChange) {
  128.     if (wna.checked) {
  129.       this.dataPribadiForm.get('citizenship').setValidators([Validators.required]);
  130.     } else {
  131.       this.dataPribadiForm.get('citizenship').setValidators([]);
  132.     }
  133.     this.dataPribadiForm.get('startYearMonth').updateValueAndValidity();
  134.   }
  135.  
  136.   public onDifferentAddressChange(differentAddress: MatSlideToggleChange) {
  137.     if (differentAddress.checked) {
  138.       this.dataPribadiForm.get('domicileAddress').setValidators([Validators.required]);
  139.       this.dataPribadiForm.get('domicileKelurahan').setValidators([Validators.required]);
  140.       this.dataPribadiForm.get('domicileKecamatan').setValidators([Validators.required]);
  141.       this.dataPribadiForm.get('domicileKotaKabupaten').setValidators([Validators.required]);
  142.       this.dataPribadiForm.get('domicileZipCode').setValidators([Validators.required]);
  143.     } else {
  144.       this.dataPribadiForm.get('domicileAddress').setValidators([]);
  145.       this.dataPribadiForm.get('domicileKelurahan').setValidators([]);
  146.       this.dataPribadiForm.get('domicileKecamatan').setValidators([]);
  147.       this.dataPribadiForm.get('domicileKotaKabupaten').setValidators([]);
  148.       this.dataPribadiForm.get('domicileZipCode').setValidators([]);
  149.     }
  150.     this.dataPribadiForm.get('domicileAddress').updateValueAndValidity();
  151.     this.dataPribadiForm.get('domicileKelurahan').updateValueAndValidity();
  152.     this.dataPribadiForm.get('domicileKecamatan').updateValueAndValidity();
  153.     this.dataPribadiForm.get('domicileKotaKabupaten').updateValueAndValidity();
  154.     this.dataPribadiForm.get('domicileZipCode').updateValueAndValidity();
  155.   }
  156.  
  157.   // To Do Ronald : Change with TrxInputKaryawanDetailTunjangan model
  158.   public deleteDetailTunjangan(detailTunjangan: any) { }
  159.  
  160.   public addDetailTunjangan() { }
  161. }
Add Comment
Please, Sign In to add comment