import { WildCard } from "@/app/utils/commonUtil";
import { records } from "../staff/actions";

export interface FinancialStatusReportFilter {
    project: string[];
}

//  - Project P&L Report
export interface ProjectPandLReportFilter {
    project: AutocompleteOptions[];
    startMonth: string;
    startMonthTo: string;
}

export interface ProjectPandLReportRequest {
    projectId: number;
    startMonth: string;
    endMonth: string;
}

//  - Project Cash Flow Report
interface AutocompleteOptions {
    value: number | string;
    label: string;
    group?: string;
}

export interface ProjectCashFlowReportFilter {
    project: AutocompleteOptions[];
    dateType: string[];
}

export interface ProjectCashFlowReportRequest {
    projectId: number;
    dateType: string;
}

//  - Project Potential Delay Report
export interface ProjectPotentialDelayReportFilter {
    team: string[];
    client: AutocompleteOptions[];
    daysUntilCurrentStageEnd: number;
    resourceUtilizationPercentage: number;
}

export interface ProjectPotentialDelayReportRequest {
    teamId: number | "All";
    clientId: number | "All";
    daysUntilCurrentStageEnd: number;
    resourceUtilizationPercentage: number;
    type: string;
}

//  - Monthly Work Hours Report
export interface MonthlyWorkHoursReportFilter {
    staff: string[];
    date: string;
}

export interface MonthlyWorkHoursReportRequest {
    id: number;
    yearMonth: string;
    holidays: String[];
}
//  - Project Resource Overconsumption Report
export interface ProjectResourceOverconsumptionReportFilter {
    team: string[];
    customer: string[];
    status: string[];
    lowerLimit: number;
}

export interface ProjectResourceOverconsumptionReportRequest extends WildCard {
    teamId?: number
    custId?: number
    subsidiaryId?: number
    status: "All" | "Within Budget" | "Potential Overconsumption" | "Overconsumption"
    lowerLimit: number
}

export interface LateStartReportFilter {
    remainedDays: number;
    overdueDays: number;
    team: string[];
}

export interface LateStartReportRequest {
    teamId: number;
    clientId: number;
    remainedDate: string;
    remainedDateTo: string;
    type: string;
}

export interface ProjectCompletionReportFilter {
    startDate: String;
    startDateTo: String;
    outstanding: String;
}

export interface ProjectCompletionReportRequest {
    startDate: String;
    endDate: String;
    outstanding: Boolean;
    teamId?: number
}
export interface CostAndExpenseReportFilter {
    team: string[];
    customer: string[];
    budgetPercentage: number;
}

export interface CostAndExpenseReportRequest {
    teamId: number | null;
    clientId: number | null;
    budgetPercentage: number | null;
    type: string;
}

//  - Cross Team Charge Report
export interface CrossTeamChargeReportFilter {
    month: string;
    team: string[];
}

export interface CrossTeamChargeReportRequest {
    month: string;
    teamId: number | "All";
}
export interface ProjectManhourSummaryReportFilter {
    teamId: number;
    startDate: string;
    endDate: string;
}
export interface ProjectManhourSummaryReportRequest {
    teamId: number;
    startDate: string;
    endDate: string;
}

export interface ProjectMonthlyReportRequest {
    projectId: number;
    yearMonth: string;
    holidays: String[];
}

export interface ProjectMonthlyReportFilter {
    projects: string[];
    date: string;
}

export interface LastModifiedReportFilter {
    date: string;
    dayRange: number;
}

export interface LastModifiedReportRequest {
    dateString: string;
    dayRange: number;
}

export interface ExportCurrentStaffInfoRequest {
    staffIds: number[];
}