import { AbstractDto } from '../../../common/dto/abstract.dto'; import { BooleanField, DateField, DateFieldOptional, NumberField, StringField, StringFieldOptional, } from '../../../decorators'; import { type EmployeeEntity } from '../employee.entity'; export class EmployeeDto extends AbstractDto { @StringField() name!: string; @StringFieldOptional() origin?: string; @DateField() dateJoin!: Date; @DateFieldOptional() dateResign?: Date; @StringFieldOptional() referralBy?: string; @DateFieldOptional() referralFeePaidAt?: Date; @BooleanField() isActive!: boolean; @NumberField() basicSalary!: number; @NumberField() dailyRateAmount!: number; @NumberField() monthlyAllowanceAmount!: number; @NumberField() annualLeave!: number; @NumberField() sickLeave!: number; @NumberField() epfRatePer!: number; @BooleanField() shouldDeductSocso!: boolean; constructor(employee: EmployeeEntity) { super(employee); this.name = employee.name; this.origin = employee.origin; this.dateJoin = employee.dateJoin; this.dateResign = employee.dateResign; this.referralBy = employee.referralBy; this.referralFeePaidAt = employee.referralFeePaidAt; this.isActive = employee.isActive; this.basicSalary = employee.basicSalary; this.dailyRateAmount = employee.dailyRateAmount; this.monthlyAllowanceAmount = employee.monthlyAllowanceAmount; this.annualLeave = employee.annualLeave; this.sickLeave = employee.sickLeave; this.epfRatePer = employee.epfRatePer; this.shouldDeductSocso = employee.shouldDeductSocso; } }