import { type ListFrontEndInterface } from '../CommonType'

export interface TimesheetReportInterface {
    userList: ListFrontEndInterface[]
    timesheetreportDetailsList: TimesheetReportsData
}
export interface PermissionReportInterface {
    userList: ListFrontEndInterface[]
    permissionDetailsList: PermissionReportsData
}

export interface LeaveReportInterface {
    LeaveModeDropDownList: ListFrontEndInterface[]
    LeaveTypeDropDownlist: ListFrontEndInterface[]
    userList: ListFrontEndInterface[]
    leaveDetailsList: LeaveReportsData
}
export interface EmployeeRecord {
    employeeId: number
    employeeName: string
    date: string // Consider changing this to Date if you will be working with date objects
    description: string
    workedHours: number
    totalHours: number
    approveStatusId: number
    approveStatus: string
}

export interface hrBusinessDocumentTemplate {
    [x: string]: any
    companyName: string
    addressOne: string
    addressTwo: string
    town: string
    country: string
    postCode: string
    companyLogo: string
    signatureLogo: string
    rubberStampLogo: string
    additionalImage: string
    homeNo: string
    workNo: string
    mobileNo: string
    emailAddress: string
    website: string
    documentFooterText: string
}
export interface PermissionData {
    permissionId: number
    startFrom: string // You may want to use Date type if you plan to manipulate dates
    endTo: string // Same as above
    startTime: string // Consider using a Date type for time as well
    endTime: string // Same as above
    description: string
    permissionAppliedByName: string
    permissionStatus: string
}
export interface LeaveDetails {
    leaveId: number
    leaveFrom: string
    leaveTo: string
    description: string
    leaveAppliedByName: string
    leaveMode: string
    leaveType: string
    leaveStatus: string
}
export interface PermissionReportsData {
    businessDocumentTemplate: hrBusinessDocumentTemplate
    permissionDetailsList: PermissionData[]
}
export interface TimesheetReportsData {
    businessDocumentTemplate: hrBusinessDocumentTemplate
    employeeWorkedHour: EmployeeRecord[]
}
export interface LeaveReportsData {
    businessDocumentTemplate: hrBusinessDocumentTemplate
    leaveDetailsList: LeaveDetails[]
}
export interface permissionReportPayloadActionData {
    data: PermissionReportsData
}
export interface leaveReportPayloadActionData {
    data: LeaveReportsData
}
export interface timesheetreportPayloadActionData {
    data: TimesheetReportsData
}
export interface MonthwiseProps {
    monthwiseList: ServiceDetailsReport[]
    monthwiseListCount: number
    categoryDropDownList: ListFrontEndInterface[]
    serviceDropDownList: ListFrontEndInterface[]
    regiterClientDetails: ListFrontEndInterface[]
}
export interface ServiceDetailsReport {
    serviceProcessId: number
    serviceId: number
    serviceName: string
    businessTypeId: number
    referenceId: number
    year: number
    periodStartDate: string
    periodEndDate: string
    currentStatus: string
    dueDays: number
    assignBy: string
    assignTo: string
    assignDate: string
    dueDate: string
    completeDate: string
    businessType: string
    clientName: string
    clientNumber: number
    serviceProgressStatus: number
    actionName: string
    additionalDataOne: string
    additionalDataTwo: string
    additionalDataThree: string
    additionalDataFour: string
    additionalDataFive: string
    lastCommunicationStatus: string
    processDueDate: string
    assignDueDays: number
    dueDateDescription: string
    dueDateProgressStatus: number
    isNewChatExist: number
    signableUrl: string | null
    companyStatus: string | null
}
export interface monthwisereportPayloadActionData {
    data: ServiceDetailsReport[]
    noOfRecords: number
}
export interface monthwiseListDataTypeInterface extends ServiceDetailsReport {
    key: React.Key
}
