export type PlenaryMinistryApi = {
  id: number;
  name: string;
  logo: string | null;

  /*
   * Available in GET /plenaries/:id detail response.
   */
  numberOfRgcDecisions?: number;
};

export type PlenaryRgcDecisionApi = {
  id: number;

  stakeholderId: number;
  ministryName: string;
  ministryLogo: string | null;

  categoryId: number;
  categoryName: string;

  meetingDate: string;
  focalPerson: string;
  decision: string;
  verificationSource: string | null;

  status: string;
  statusCode: string;
};

/*
 * Keep old files working.
 * Example:
 * import type { RgcDecisionApi } from "../plenary-data";
 */
export type RgcDecisionApi = PlenaryRgcDecisionApi;

export type PlenaryApiItem = {
  id: number;
  name: string;
  meetingDate: string;
  deadline: string | null;
  documentReference: string | null;

  status: string;
  statusCode: string;

  numberOfRgcDecisions: number;

  ministries?: PlenaryMinistryApi[];
  rgcDecisions?: PlenaryRgcDecisionApi[];

  createdAt: string;
  updatedAt: string;
};

export type PlenaryMeta = {
  total: number;
  page: number;
  limit: number;
  totalPages: number;
};

export type PlenaryListFilters = {
  ministryIds?: number[];
  statuses?: Array<"Draft" | "Sent">;
  search?: string;
};

export type PlenaryListResponse = {
  success: boolean;
  statusCode: number;
  message: string;
  data: {
    items: PlenaryApiItem[];
    meta: PlenaryMeta;
  };
};

export type PlenaryDetailResponse = {
  success: boolean;
  statusCode: number;
  message: string;
  data: PlenaryApiItem;
};

export type CreatePlenaryPayload = {
  name: string;
  meetingDate: string;
  deadline: string;
  documentReference?: string;
  status: "Draft" | "Sent";
  ministryIds: number[];
};

export type UpdatePlenaryPayload =
  Partial<CreatePlenaryPayload>;