import { QueryParams } from '../types/fetchResponse.type'; export interface ManageProject { create: boolean; read: boolean; update: boolean; delete: boolean; } export interface UserQueryParams extends QueryParams { country?: string; minAge?: number; maxAge?: number; } export interface ProjectResponse { status: number; message: string; data: { _id: string; name: string; initialName: string; priority: number; progress: number; status: string; createdAt: string; }[]; } export interface FinishedProjectResult { _id: string; name: string; priority: number; templateProcess: { _id: string; name: string; priority: number; }; } export interface FinishedSearchResult { _id: string; name: string; templateProcess: { _id: string; name: string; }; } export interface FinishSearchProjectResult { data: FinishedProjectResult; } export interface ProjectData { _id: string; name: string; initialName: string; priority: number; progress: number; status: string; createdAt: string; method?: string; templateProcess?: { _id: string; name: string; }; } export interface ProjectPostData { type: 'Proyek Baru' | 'Proyek Pengembangan'; developedProjectId: string; name: string; initialName: string; method: string; priority: number; templateProsesId: string; managersId: string[]; startAt: number | number[] | null; } export interface ProjectUpdateData { name?: string; initialName?: string; priority: number | undefined; managersId: string[]; startAt: number | number[] | undefined | Date; } export interface ManagerData { id: string; name: string; } export interface TemplateProcessData { _id: string; name: string; } export interface DevelopedProject { id: string; name: string; } export interface ProjectDetailResponse { _id: string; type: string; name: string; initialName: string; method: string; priority: number; startAt: string; isApprover: boolean; leaders?: string[]; members?: string[]; isPM: boolean; totalModule: number; totalCompletedModule: number; totalSprintTask: number; totalCompletedTask: number; totalBacklogTask: number; totalBugHistories: number; totalSprintPoint: number; status: string; managers: { id: string; name: string; }[]; templateProcess: { _id: string; name: string; }; developedProject?: { _id: string; name: string; }; createdAt: string; } export interface ProjectDetailResponseDatas { data: ProjectDetailResponse; } export interface FinishedProjectData { _id: string; name: string; priority: number; data: { templateProcess?: { name?: string; priority?: number; _id?: string; }; }; } export interface TeamMemberResponse { status: number; message: string; _id: string; nickName: string; data: { totalRecords: number; data: { _id: string; key: number; isActive: boolean; profilePictureBig: string; profilePictureMedium: string; profilePictureSmall: string; fullName: string; nickName: string; employeeType: string; finishedDate: string; division: string; position: string; team: string[]; email: string; phoneNumber: string; initial: string; groupMember: { _id: string; name: string; key: number; targetType: string; }; adminRole: { _id: string; name: string; key: number; }[]; needLeaderReview: boolean; needTestingAccount: boolean; projectCount: number; taskProgress: { total: number; finished: number; ratio: number; }; lastLogin: string; lastLoginIp: string; isTeamLeader: boolean; isSubModuleLeader: boolean; isAssignedToTask: boolean; role: { create: boolean; view: boolean; update: boolean; delete: boolean; }; }[]; }; } export interface SettingProcessNameResponse { status?: number; message?: string; data: { _id: string; name: string; }[]; totalRecords?: number; } export interface TemplateProcess { _id: string; name: string; } export interface SettingProcessNameQueryParams { status?: number; name?: string; [key: string]: string | number | boolean | undefined; } export interface ManagerOptionData { id: string; name: string; } export interface FilterOptionSettings { optionProject: string[]; optionManager: string[]; status: string[]; minAge: number | null; maxAge: number | null; } export interface TemplateProcessResponse { data: TemplateProcess[]; } export interface UserProfile { _id: string; key: number; profilePictureBig: string; profilePictureMedium: string; profilePictureSmall: string; fullName: string; nickName: string; employeeType: string; division: string; position: string; teams: string[]; email: string; phoneNumber: string; initial: string; groupMember: { name: string; targetType: string; _id: string; }; jwt: string; isProjectManager: boolean; isTeamLeader: boolean; permission: { administrasiProyek: { create: boolean; read: boolean; update: boolean; delete: boolean; }; groupMember: { create: boolean; read: boolean; update: boolean; delete: boolean; }; memberAdmin: { create: boolean; read: boolean; update: boolean; delete: boolean; }; poin: { create: boolean; read: boolean; update: boolean; delete: boolean; }; proses: { create: boolean; read: boolean; update: boolean; delete: boolean; }; role: { create: boolean; read: boolean; update: boolean; delete: boolean; }; sla: { create: boolean; read: boolean; update: boolean; delete: boolean; }; timAndMember: { create: boolean; read: boolean; update: boolean; delete: boolean; }; }; } export interface ProjectDashboardResponseData { data: ProjectDashboardResponse; } export interface ProjectDashboardParams extends QueryParams { periodDays?: number; team?: string; } export interface ProjectDashboardResponse { projectDashboard: { projectManagers: { name: string; profilePicture: string; }[]; module: { total: number; status: { Backlog: { count: number; countToday: number; }; Sprint: { count: number; countToday: number; }; Selesai: { count: number; countToday: number; }; }; }; subModule: { total: number; status: { Backlog: { count: number; countToday: number; }; Sprint: { count: number; countToday: number; }; Bug: { count: number; countToday: number; }; Selesai: { count: number; countToday: number; }; }; }; task: { total: number; status: { Backlog: { count: number; countToday: number; }; Sprint: { count: number; countToday: number; }; Bug: { count: number; countToday: number; }; Selesai: { count: number; countToday: number; }; }; }; timeConsumed: { hours: number; startAt: string; }; }; projectRecord: DashboardModuleResponse[]; } export interface ProjectDashboardModuleResponse { data: DashboardModuleResponse; } export interface DashboardModuleResponse { name: 'UIUX' | 'BE' | 'FE' | 'MOB' | 'TW' | 'DEV' | 'IOT' | 'QC'; progress: { date: string; percentage: number; bugCount?: number; checklist?: number; taskFinished?: number; totalTask?: number; E2EFinished?: number; performanceFinished?: number; performancePercentage?: number; totalE2E?: number; totalPerformance?: number; borderColor: string; createdAtSimplify?: string; }[]; } export interface OptionProjectRecordsResponse { status: number; message: string; data: { label: string; value: string | null; }[]; } export interface PbiDataResponse { data: { total: number; status: { selesai: { count: number; countToday: number; }; sprint: { count: number; countToday: number; }; backlog: { count: number; countToday: number; }; }; }; } export interface SprintDataResponse { data: { sprintTotal: number; sprintDoneTotal: number; sprintPercentage: number; sprints: { name: string; pbiTotal: number; pbiDone: number; pbiPercentage: number; }[]; }; } export interface SprintProgressResponse { status: number; message: string; data: { taskDone: number; taskTotal: number; taskPercentage: number; pbi: { _id: string; name: string; status: string; percentage: number; members: { _id: string; fullName: string; nickName: string; taskDone: number; taskTotal: number; }[]; }[]; }; } export interface DataSetBarItem { label: string[]; pbiTotal: number[]; pbiDone: number[]; sprintTotal: number; sprintDoneTotal: number; sprintPercentage: number; } interface ChartDataset { data: number[]; backgroundColor: string; barThickness: number; } export interface ChartData { labels: string[]; datasets: ChartDataset[]; } export interface ProjectAsManagerQueryParams extends QueryParams { userId?: string; } export interface UpdateUnassignPmBody { data: { projectId: string; memberId: string; }[]; memberId: string; } export {};