penisularhr / src / modules / employee / dtos / employee.dto.ts
employee.dto.ts
Raw
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;
  }
}