penisularhr / src / modules / activity-record / dtos / activity-record.dto.ts
activity-record.dto.ts
Raw
/* eslint-disable @typescript-eslint/no-unnecessary-condition */
import { AbstractDto } from '../../../common/dto/abstract.dto';
import {
  DateField,
  NumberField,
  StringField,
  StringFieldOptional,
} from '../../../decorators';
import { type ActivityRecordEntity } from '../activity-record.entity';

export class ActivityRecordDto extends AbstractDto {
  @DateField()
  date!: Date;

  @NumberField()
  hour!: number;

  @NumberField()
  rate!: number;

  @NumberField()
  quantity!: number;

  @StringFieldOptional()
  unit?: string;

  @NumberField()
  amount!: number;

  @StringFieldOptional()
  remark?: string;

  @StringField()
  employeeName!: string;

  @StringField()
  blockName!: string;

  @StringField()
  activityName!: string;

  @StringFieldOptional()
  incentiveName?: string;

  @StringField()
  activitySector!: string;

  @StringField()
  activityGroup!: string;

  constructor(activityRecord: ActivityRecordEntity) {
    super(activityRecord);
    this.date = activityRecord.date;
    this.hour = activityRecord.hour;
    this.rate = activityRecord.rate;
    this.quantity = activityRecord.quantity;
    this.unit =
      activityRecord.activityRecordSetting &&
      activityRecord.activityRecordSetting.unit;
    this.amount = Math.round(activityRecord.amount * 100) / 100;
    this.remark = activityRecord.remark;
    this.employeeName = activityRecord.employee && activityRecord.employee.name;
    this.blockName = activityRecord.block && activityRecord.block.name;
    this.activityName =
      activityRecord.activityRecordSetting &&
      activityRecord.activityRecordSetting.name;
    this.incentiveName =
      activityRecord.activityRecordSetting &&
      activityRecord.activityRecordSetting.incentiveName;
    this.activitySector =
      activityRecord.activityRecordSetting?.sector &&
      activityRecord.activityRecordSetting.sector.name;
    this.activityGroup =
      activityRecord.activityRecordSetting?.activityGroup &&
      activityRecord.activityRecordSetting.activityGroup.name;
  }
}