import {
  Entity,
  PrimaryGeneratedColumn,
  Column,
  ManyToOne,
  JoinColumn,
  CreateDateColumn,
  UpdateDateColumn,
} from "typeorm"
import { Employee } from "./employee.entity"
import { SalarySetting } from "../../salary-settings/entities/salary-setting.entity"
import { BaseEntity } from "../../common/entities/base.entity"

@Entity("employee_salary_details")
export class EmployeeSalaryDetail extends BaseEntity {
  @PrimaryGeneratedColumn()
  id: number

  @Column({ type: "int", nullable: false })
  employee_id: number

  @Column({ type: "int", nullable: false })
  salary_setting_id: number

  @Column({ type: "decimal", precision: 10, scale: 2, nullable: true })
  gross_salary: number

  @Column({ type: "varchar", length: 255, nullable: false })
  individual_value: string

  @Column({ type: "decimal", precision: 10, scale: 2, nullable: true })
  calculated_amount: number

  @CreateDateColumn({
    type: "timestamp",
    default: () => "NOW()",
  })
  created_at: Date

  @UpdateDateColumn({
    type: "timestamp",
    default: () => "NOW()",
  })
  updated_at: Date

  @ManyToOne(() => Employee)
  @JoinColumn({ name: "employee_id" })
  employee: Employee

  @ManyToOne(() => SalarySetting)
  @JoinColumn({ name: "salary_setting_id" })
  salarySetting: SalarySetting
}
