export type Role = 'ADMIN' | 'MANAGER' | 'EMPLOYEE';
export type UserStatus = 'ACTIVE' | 'DISABLED' | 'LOCKED';
export type LeaveType =
  | 'ANNUAL'
  | 'SICK'
  | 'PERSONAL'
  | 'MARRIAGE'
  | 'MATERNITY'
  | 'BEREAVEMENT';

export interface UserDto {
  id: number;
  username: string;
  fullName: string;
  email?: string;
  phone?: string;
  role: Role;
  status: UserStatus;
  lastLoginAt?: string;
}

export interface AttendanceDto {
  id: number;
  date: string;
  checkInTime?: string;
  checkOutTime?: string;
  workHours: number;
  status: string;
  location?: string;
}

export interface LeaveDto {
  id: number;
  requester: UserDto;
  type: string;
  startTime: string;
  endTime: string;
  reason: string;
  status: string;
  approver?: UserDto;
  decidedAt?: string;
  createdAt: string;
}

export interface NotificationDto {
  id: number;
  type: string;
  title: string;
  content: string;
  readAt?: string;
  createdAt: string;
}

export interface ApiResponse<T> {
  code: number;
  message: string;
  data: T;
  timestamp: string;
}
