import { AppraisalRating } from './AppraisalRating';
import { Paginated } from './Paginated';

export interface AppraisalSubmission {
  id: string;
  appraisal_cycle_id: string;
  appraisee_id: string;
  appraiser_id: string;
  status: string;
  submitted_at?: string | null;
  self_submitted_at?: string | null;
  manager_submitted_at?: string | null;
  overall_score?: number | null;
  overall_grade?: string | null;
  employee_comments?: string | null;
  manager_comments?: string | null;
  appraisal_cycle?: Record<string, unknown> | null;
  appraisee?: Record<string, unknown> | null;
  appraiser?: Record<string, unknown> | null;
  ratings?: AppraisalRating[];
  created_at?: string | null;
  updated_at?: string | null;
}

export interface CreateAppraisalSubmissionPayload {
  appraisal_cycle_id: string;
  appraisee_id: string;
  appraiser_id: string;
}

export interface SubmitSelfReviewPayload {
  ratings: {
    appraisal_rating_id: string;
    self_rating: number;
    self_comment?: string | null;
  }[];
  employee_comments?: string | null;
}

export interface SubmitManagerReviewPayload {
  ratings: {
    appraisal_rating_id: string;
    manager_rating: number;
    manager_comment?: string | null;
  }[];
  manager_comments?: string | null;
}

export interface FinalizeHrReviewPayload {
  ratings: {
    appraisal_rating_id: string;
    final_rating: number;
    final_comment?: string | null;
  }[];
  hr_comments?: string | null;
}

export interface DeleteAppraisalSubmissionPayload {
  message: string;
  id: string;
}

export interface AppraisalSubmissionResponse {
  data: AppraisalSubmission;
}

export type PaginatedAppraisalSubmissions = Paginated<AppraisalSubmission>;
