112 lines
2.2 KiB
TypeScript
112 lines
2.2 KiB
TypeScript
// File: types/circulation.ts
|
|
// TypeScript interfaces for Circulation module - aligned with backend entities
|
|
|
|
/**
|
|
* Circulation routing status enum
|
|
*/
|
|
export type CirculationRoutingStatus = 'PENDING' | 'IN_PROGRESS' | 'COMPLETED' | 'REJECTED';
|
|
|
|
/**
|
|
* Circulation routing (assignee task within a circulation)
|
|
*/
|
|
export interface CirculationRouting {
|
|
id: number;
|
|
circulationId: number;
|
|
stepNumber: number;
|
|
organizationId: number;
|
|
assignedTo?: number;
|
|
status: CirculationRoutingStatus;
|
|
comments?: string;
|
|
completedAt?: string;
|
|
createdAt: string;
|
|
updatedAt: string;
|
|
// Joined relations from API
|
|
assignee?: {
|
|
user_id: number;
|
|
username: string;
|
|
first_name?: string;
|
|
last_name?: string;
|
|
};
|
|
organization?: {
|
|
id: number;
|
|
organization_code: string;
|
|
organization_name: string;
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Main Circulation entity
|
|
*/
|
|
export interface Circulation {
|
|
id: number;
|
|
correspondenceId?: number;
|
|
organizationId: number;
|
|
circulationNo: string;
|
|
subject: string;
|
|
statusCode: string;
|
|
createdByUserId: number;
|
|
submittedAt?: string;
|
|
closedAt?: string;
|
|
createdAt: string;
|
|
updatedAt: string;
|
|
// Joined relations from API
|
|
routings?: CirculationRouting[];
|
|
correspondence?: {
|
|
id: number;
|
|
correspondence_number: string;
|
|
};
|
|
organization?: {
|
|
id: number;
|
|
organization_code: string;
|
|
organization_name: string;
|
|
};
|
|
creator?: {
|
|
user_id: number;
|
|
username: string;
|
|
first_name?: string;
|
|
last_name?: string;
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Paginated response for circulation list
|
|
*/
|
|
export interface CirculationListResponse {
|
|
data: Circulation[];
|
|
meta: {
|
|
total: number;
|
|
page: number;
|
|
limit: number;
|
|
totalPages: number;
|
|
};
|
|
}
|
|
|
|
/**
|
|
* DTO for creating a circulation
|
|
*/
|
|
export interface CreateCirculationDto {
|
|
correspondenceId: number;
|
|
projectId?: number;
|
|
subject: string;
|
|
assigneeIds: number[];
|
|
remarks?: string;
|
|
}
|
|
|
|
/**
|
|
* DTO for search/filter params
|
|
*/
|
|
export interface SearchCirculationDto {
|
|
page?: number;
|
|
limit?: number;
|
|
status?: string;
|
|
search?: string;
|
|
}
|
|
|
|
/**
|
|
* DTO for updating routing status
|
|
*/
|
|
export interface UpdateCirculationRoutingDto {
|
|
status: CirculationRoutingStatus;
|
|
comments?: string;
|
|
}
|