import { Entity, PrimaryGeneratedColumn, Column, ManyToOne, JoinColumn, Unique } from 'typeorm';
import { User } from '../../users/entities/user.entity';
import { LeaveType } from './leave-type.entity';

@Entity('leave_balances')
@Unique(['user', 'leave_type', 'year'])
export class LeaveBalance {
  @PrimaryGeneratedColumn({ unsigned: true })
  id: number;

  @ManyToOne(() => User)
  @JoinColumn({ name: 'user_id' })
  user: User;

  @ManyToOne(() => LeaveType)
  @JoinColumn({ name: 'leave_type_id' })
  leave_type: LeaveType;

  @Column({ type: 'year' })
  year: number;

  @Column({ type: 'decimal', precision: 5, scale: 1, default: 0 })
  acquired: number;

  @Column({ type: 'decimal', precision: 5, scale: 1, default: 0 })
  taken: number;

  @Column({ type: 'decimal', precision: 5, scale: 1, default: 0 })
  adjusted: number;

  @Column({ type: 'text', nullable: true })
  adjustment_reason: string;

  get remaining(): number {
    return +this.acquired - +this.taken + +this.adjusted;
  }
}