import { QueryParams } from '../types/fetchResponse.type'; import { JSONContent } from '../types/timeline.type'; export interface GetTicketTaskQueryParams extends QueryParams { projects?: string[]; subjects?: string[]; requesters?: string[]; teams?: string[]; status?: string[]; minResponTime?: number; maxResponTime?: number; updatedAt?: Date; search?: string; sortBy?: string; sortOrder?: number; page?: number; limit?: number; } export type Status = 'Open' | 'On Verification' | 'Request Cancel' | 'On Progress' | 'Need Confirmation' | 'Closed' | 'Cancel Ticket'; export type SubjectTicket = 'Report Bug End-to-End' | 'Request Data' | 'Report Bug Task End-to-End' | 'Report Bug' | 'Assign Repo FE' | 'Assign Repo BE' | 'Assign Repo Mobile' | 'Unassign Repo FE' | 'Unassign Repo BE' | 'Unassign Repo Mobile' | 'Assign Desain UIUX' | 'Assign Diagram' | 'Unassign Desain UIUX' | 'Unassign Diagram' | 'Report Bug Performance' | 'Report Bug End To End Sprint'; export type MetaResponse = { totalItems: number; totalPages: number; currentPage: number; itemsPerPage: number; }; export type Requester = { name: string; profilePicture: string; }; export type TicketTask = { _id: string; ticketId: string; requester: Requester; subject: SubjectTicket; team: string; project: string; status: Status; deadline: string; updatedAt: string; }; export interface GetTicketTaskResponse { status: number; message: string; data: Data; } interface Data { data: TicketTask[]; meta: MetaResponse; } export interface GetTicketRequestQueryParams extends QueryParams { projects?: string[]; subjects?: string[]; requesters?: string[]; receivers?: string[]; teams?: string[]; status?: string[]; minResponTime?: number; maxResponTime?: number; updatedAt?: string; search?: string; sortBy?: string; sortOrder?: number; page?: number; limit?: number; } export interface GetTicketsParams extends QueryParams { projects?: string[]; receivers?: string[]; status?: string[]; search?: string; sortBy?: string; sortOrder?: number; page?: number; limit?: number; } export interface GetTicketRequestResponse { status: number; message: string; data: Data; } export interface GetTicketFilterOptionQueryParams { isTask?: boolean; projectNames?: boolean; receivers?: boolean; requesters?: boolean; subjects?: boolean; statuses?: boolean; teams?: boolean; } interface OptionLabelValue { label: string; value: string; } type TicketFilterOption = { projectNames: OptionLabelValue[]; receivers: OptionLabelValue[]; requesters: OptionLabelValue[]; subjects: OptionLabelValue[]; statuses: OptionLabelValue[]; teams: OptionLabelValue[]; }; export interface GetTicketFilterOptionResponse { status: string; message: string; data: TicketFilterOption; } type ColoumData = { [header: string]: string; }; export interface PostTicketRequestDataBody { projectId: string; moduleId: string; subModuleId: string; description: string; headers: string[]; rows: ColoumData[]; } export interface OptionProjectModuleSub { projects?: OptionLabelValue[]; modules?: OptionLabelValue[]; subModules?: OptionLabelValue[]; } export interface GetOptionFormRequestDataResponse { status: number; message: string; data: OptionProjectModuleSub; } export interface GetOptionFormRequestDataQueryParams { projectId?: string; moduleId?: string; isReportBug?: boolean; } export interface GetTicketOptionsStatusQueryParams { ticketId: string; } export interface GetTicketOptionsStatusResponse { status: number; message: string; data: { optionStatus: OptionLabelValue[]; }; } export interface PatchTicketStatusByTicketIdBody { status?: Status; } export interface StatusMessageResponse { status: number; message: string; } export interface GetTicketTaskLeaderOptionsQueryParams { projectId: string; teamId: string; moduleId?: string; subModuleId?: string; } export type TicketTaskLeaderOptions = { optionProcess: OptionLabelValue[]; optionModule: OptionLabelValue[]; optionSubModule: OptionLabelValue[]; optionTask: OptionLabelValue[]; }; export interface GetTicketTaskLeaderOptionsResponse { status: number; message: string; data: TicketTaskLeaderOptions; } export interface PostTicketLeaderReportBugBody { idTicket: string; processProjectId: string; moduleId: string; subModuleId?: string; taskId: string; teamId?: string; pbiId?: string; } type DataKeyValue = { [key: string]: string | string[] | JSONContent | null | undefined; }; interface Description extends DataKeyValue { module: string; subModule?: string | null; type: string; testedVersion: string; testCase: string; expectedResult: string; task: string; process?: string | null; description?: string | null; linkDesign?: string | null; emails?: string[] | null; linkDiagram?: string | null; microFrontEnd?: string | null; microService?: string | null; repositoryUrl?: string | null; linkApi: string; api: string; } interface BugPerformance extends DataKeyValue { _id: string; pingServer: string; responseTime: string; totalRecord: string; document: string; } type TaskStatus = 'Selesai' | 'Pending Review Leader' | 'Sprint' | 'Fixing Bug' | 'Reported Bug' | 'Penyesuaian' | 'Backlog'; type ConnectTicketWithTaskData = { _id: string; processProject: string; module: string; subModule: string; task: string; status: TaskStatus; receiver: string; }; interface BugDetails extends DataKeyValue { actualResult: string; testStep: string | string[]; attachmentApplied: string; severity: string; priority: string; info: JSONContent; } type ConnectTicketWithTask = { team?: Team; productBacklogItem?: PBI; data: ConnectTicketWithTaskData[]; }; type Team = { id: string; name: string; initial: string; }; type PBI = { id: string; name: string; }; type Details = { headers: string[]; rows: Array>; bugDetails: BugDetails[]; bugPerformances: BugPerformance[]; connectTicketWithTask: ConnectTicketWithTask[] | []; info: JSONContent; }; type Project = { _id: string; name: string; initialName: string; method: 'Sprint' | 'Deployment'; }; type TicketBugDetail = { _id: string; idTicket: string; subject: SubjectTicket; project: Project; requester: string; createdAt: string; updatedAt: string; receiver: string; status: Status; deadline: string; isRequester: boolean; description: Description; details: Details; }; export interface GetTicketBugDetailByTicketIdResponse { status: number; message: string; data: TicketBugDetail; } export interface PostTicketUploadBody { images: File[]; } export interface PostTicketUploadResponse { status: number; message: string; data: string[]; } export interface PostTicketReportBugBody { projectId: string; processProjectId?: string; moduleId: string; subModuleId: string; memberId?: string; taskId?: string; info: JSONContent; } export {};