import { EmployeeModel, MyEmployeeModel } from "./employee.model"
import { EvaluationCycleModel, MyEvaluationCycleModel } from "./evaluation-cycle.model"
import { MyPLModel, PLModel } from "./pl.model"
import { MyStatusCodeModel, StatusCodeModel } from "./status-code.model"

export interface AppraisalModel {
    personalLevel: PLModel
    masfromEvaluationRoundModel: EvaluationCycleModel
    companyId: string
    masfromStatusType: StatusCodeModel
    fromDetail: string
    apsassessy: EmployeeModel
    apsapprove1: EmployeeModel
    apsapprove2: EmployeeModel
    apsapprove3: EmployeeModel
    apsapprove4: EmployeeModel
    apsapprove5: EmployeeModel
    apsassessyStatus: string
    apsapprove1Status: string
    apsapprove2Status: string
    apsapprove3Status: string
    apsapprove4Status: string
    apsapprove5Status: string
    targetScore1: number
    targetScore2: number
    targetScore3: number
    targetScore4: number
    targetScore5: number
    weightedTotal: number
    averageScore: number
    apsapprove1Comment: string
    apsapprove2Comment: string
    apsapprove3Comment: string
    apsapprove4Comment: string
    apsapprove5Comment: string
    evaluationResults: string
    sumEvaluationResults: string
}
export class MyAppraisalModel implements AppraisalModel {
    personalLevel: PLModel
    masfromEvaluationRoundModel: EvaluationCycleModel
    companyId: string
    masfromStatusType: StatusCodeModel
    fromDetail: string
    apsassessy: EmployeeModel
    apsapprove1: EmployeeModel
    apsapprove2: EmployeeModel
    apsapprove3: EmployeeModel
    apsapprove4: EmployeeModel
    apsapprove5: EmployeeModel
    apsassessyStatus: string
    apsapprove1Status: string
    apsapprove2Status: string
    apsapprove3Status: string
    apsapprove4Status: string
    apsapprove5Status: string
    targetScore1: number
    targetScore2: number
    targetScore3: number
    targetScore4: number
    targetScore5: number
    weightedTotal: number
    averageScore: number
    apsapprove1Comment: string
    apsapprove2Comment: string
    apsapprove3Comment: string
    apsapprove4Comment: string
    apsapprove5Comment: string
    evaluationResults: string
    sumEvaluationResults: string
    constructor(data?: Partial<AppraisalModel>) {
        this.personalLevel = new MyPLModel(data?.personalLevel)
        this.masfromEvaluationRoundModel = new MyEvaluationCycleModel(data?.masfromEvaluationRoundModel)
        this.companyId = data?.companyId || ""
        this.masfromStatusType = new MyStatusCodeModel(data?.masfromStatusType)
        this.fromDetail = data?.fromDetail || ""
        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.apsassessyStatus = data?.apsassessyStatus || ""
        this.apsapprove1Status = data?.apsapprove1Status || ""
        this.apsapprove2Status = data?.apsapprove2Status || ""
        this.apsapprove3Status = data?.apsapprove3Status || ""
        this.apsapprove4Status = data?.apsapprove4Status || ""
        this.apsapprove5Status = data?.apsapprove5Status || ""
        this.targetScore1 = data?.targetScore1 ?? 0
        this.targetScore2 = data?.targetScore2 ?? 0
        this.targetScore3 = data?.targetScore3 ?? 0
        this.targetScore4 = data?.targetScore4 ?? 0
        this.targetScore5 = data?.targetScore5 ?? 0
        this.weightedTotal = data?.weightedTotal ?? 0
        this.averageScore = data?.averageScore ?? 0
        this.apsapprove1Comment = data?.apsapprove1Comment || ""
        this.apsapprove2Comment = data?.apsapprove2Comment || ""
        this.apsapprove3Comment = data?.apsapprove3Comment || ""
        this.apsapprove4Comment = data?.apsapprove4Comment || ""
        this.apsapprove5Comment = data?.apsapprove5Comment || ""
        this.evaluationResults = data?.evaluationResults || ""
        this.sumEvaluationResults = data?.sumEvaluationResults || ""
    }
}