import { AppraisalFormModel, MyAppraisalFormModel } from "./appraisal-form.model"
import { EmployeeModel, MyEmployeeModel } from "./employee.model"
import { EvaluationCycleModel, MyEvaluationCycleModel } from "./evaluation-cycle.model"
import { MyPLModel, PLModel } from "./pl.model"

export interface AppraisalModel {
    personalLevel: PLModel
    masfromEvaluationRound: EvaluationCycleModel
    companyId: string
    active: boolean
    apsassessy: EmployeeModel
    apsapprove1: EmployeeModel
    apsapprove2: EmployeeModel
    apsapprove3: EmployeeModel
    apsapprove4: EmployeeModel
    apsapprove5: EmployeeModel
    masfromEvaluationAssessment1: AppraisalFormModel[]
}
export class MyAppraisalModel implements AppraisalModel {
    personalLevel: PLModel
    masfromEvaluationRound: EvaluationCycleModel
    companyId: string
    active: boolean
    apsassessy: EmployeeModel
    apsapprove1: EmployeeModel
    apsapprove2: EmployeeModel
    apsapprove3: EmployeeModel
    apsapprove4: EmployeeModel
    apsapprove5: EmployeeModel
    masfromEvaluationAssessment1: AppraisalFormModel[]
    constructor(data?: Partial<AppraisalModel>) {
        this.personalLevel = new MyPLModel(data?.personalLevel)
        this.masfromEvaluationRound = new MyEvaluationCycleModel(data?.masfromEvaluationRound)
        this.companyId = data?.companyId || ""
        this.active = data?.active ?? false
        this.apsassessy = new MyEmployeeModel(data?.apsassessy)
        this.apsapprove1 = new MyEmployeeModel(data?.apsapprove1)
        this.apsapprove2 = new MyEmployeeModel(data?.apsapprove2)
        this.apsapprove3 = new MyEmployeeModel(data?.apsapprove3)
        this.apsapprove4 = new MyEmployeeModel(data?.apsapprove4)
        this.apsapprove5 = new MyEmployeeModel(data?.apsapprove5)
        this.masfromEvaluationAssessment1 = data?.masfromEvaluationAssessment1?.map(x => new MyAppraisalFormModel(x)) || []

    }
}