221 lines
6.0 KiB
TypeScript
221 lines
6.0 KiB
TypeScript
import apiService from './apiService';
|
|
import API_CONFIG from '../config/api';
|
|
|
|
// Asset Maintenance Interfaces
|
|
export interface AssetMaintenanceLog {
|
|
name: string;
|
|
asset_maintenance?: string;
|
|
naming_series?: string;
|
|
asset_name?: string;
|
|
custom_asset_type?: string;
|
|
item_code?: string;
|
|
item_name?: string;
|
|
custom_asset_names?: string;
|
|
custom_hospital_name?: string;
|
|
task?: string;
|
|
task_name?: string;
|
|
maintenance_type?: string;
|
|
periodicity?: string;
|
|
has_certificate?: number;
|
|
custom_early_completion?: number;
|
|
maintenance_status?: string;
|
|
custom_pm_overdue_reason?: string;
|
|
custom_accepted_by_moh?: string;
|
|
assign_to_name?: string;
|
|
due_date?: string;
|
|
custom_accepted_by_moh_?: string;
|
|
custom_template?: string;
|
|
workflow_state?: string;
|
|
creation?: string;
|
|
modified?: string;
|
|
owner?: string;
|
|
modified_by?: string;
|
|
docstatus?: number;
|
|
idx?: number;
|
|
}
|
|
|
|
export interface AssetMaintenanceListResponse {
|
|
asset_maintenance_logs: AssetMaintenanceLog[];
|
|
total_count: number;
|
|
limit: number;
|
|
offset: number;
|
|
has_more: boolean;
|
|
}
|
|
|
|
export interface MaintenanceFilters {
|
|
maintenance_status?: string;
|
|
asset_name?: string;
|
|
custom_hospital_name?: string;
|
|
maintenance_type?: string;
|
|
[key: string]: any;
|
|
}
|
|
|
|
export interface CreateMaintenanceData {
|
|
asset_name?: string;
|
|
task?: string;
|
|
task_name?: string;
|
|
maintenance_type?: string;
|
|
periodicity?: string;
|
|
maintenance_status?: string;
|
|
due_date?: string;
|
|
assign_to_name?: string;
|
|
description?: string;
|
|
[key: string]: any;
|
|
}
|
|
|
|
class AssetMaintenanceService {
|
|
/**
|
|
* Get list of asset maintenance logs with optional filters and pagination
|
|
*/
|
|
async getMaintenanceLogs(
|
|
filters?: MaintenanceFilters,
|
|
fields?: string[],
|
|
limit: number = 20,
|
|
offset: number = 0,
|
|
orderBy?: string
|
|
): Promise<AssetMaintenanceListResponse> {
|
|
const params = new URLSearchParams();
|
|
|
|
if (filters) {
|
|
params.append('filters', JSON.stringify(filters));
|
|
}
|
|
|
|
if (fields && fields.length > 0) {
|
|
params.append('fields', JSON.stringify(fields));
|
|
}
|
|
|
|
params.append('limit', limit.toString());
|
|
params.append('offset', offset.toString());
|
|
|
|
if (orderBy) {
|
|
params.append('order_by', orderBy);
|
|
}
|
|
|
|
const endpoint = `${API_CONFIG.ENDPOINTS.GET_ASSET_MAINTENANCE_LOGS}?${params.toString()}`;
|
|
return apiService.apiCall<AssetMaintenanceListResponse>(endpoint);
|
|
}
|
|
|
|
/**
|
|
* Get detailed information about a specific maintenance log
|
|
*/
|
|
async getMaintenanceLogDetails(logName: string): Promise<AssetMaintenanceLog> {
|
|
const endpoint = `${API_CONFIG.ENDPOINTS.GET_ASSET_MAINTENANCE_LOG_DETAILS}?log_name=${encodeURIComponent(logName)}`;
|
|
return apiService.apiCall<AssetMaintenanceLog>(endpoint);
|
|
}
|
|
|
|
/**
|
|
* Create a new maintenance log
|
|
*/
|
|
async createMaintenanceLog(logData: CreateMaintenanceData): Promise<{ success: boolean; asset_maintenance_log: AssetMaintenanceLog; message: string }> {
|
|
return apiService.apiCall(API_CONFIG.ENDPOINTS.CREATE_ASSET_MAINTENANCE_LOG, {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
},
|
|
body: JSON.stringify({ log_data: logData })
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Update an existing maintenance log
|
|
*/
|
|
async updateMaintenanceLog(
|
|
logName: string,
|
|
logData: Partial<CreateMaintenanceData>
|
|
): Promise<{ success: boolean; asset_maintenance_log: AssetMaintenanceLog; message: string }> {
|
|
return apiService.apiCall(API_CONFIG.ENDPOINTS.UPDATE_ASSET_MAINTENANCE_LOG, {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
},
|
|
body: JSON.stringify({
|
|
log_name: logName,
|
|
log_data: logData
|
|
})
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Delete a maintenance log
|
|
*/
|
|
async deleteMaintenanceLog(logName: string): Promise<{ success: boolean; message: string }> {
|
|
return apiService.apiCall(API_CONFIG.ENDPOINTS.DELETE_ASSET_MAINTENANCE_LOG, {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
},
|
|
body: JSON.stringify({ log_name: logName })
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Update maintenance log status
|
|
*/
|
|
async updateMaintenanceStatus(
|
|
logName: string,
|
|
maintenanceStatus?: string,
|
|
workflowState?: string
|
|
): Promise<{ success: boolean; asset_maintenance_log: AssetMaintenanceLog; message: string }> {
|
|
return apiService.apiCall(API_CONFIG.ENDPOINTS.UPDATE_MAINTENANCE_STATUS, {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
},
|
|
body: JSON.stringify({
|
|
log_name: logName,
|
|
maintenance_status: maintenanceStatus,
|
|
workflow_state: workflowState
|
|
})
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Get maintenance logs for a specific asset
|
|
*/
|
|
async getMaintenanceLogsByAsset(
|
|
assetName: string,
|
|
filters?: MaintenanceFilters,
|
|
limit: number = 20,
|
|
offset: number = 0
|
|
): Promise<AssetMaintenanceListResponse> {
|
|
const params = new URLSearchParams();
|
|
params.append('asset_name', assetName);
|
|
|
|
if (filters) {
|
|
params.append('filters', JSON.stringify(filters));
|
|
}
|
|
|
|
params.append('limit', limit.toString());
|
|
params.append('offset', offset.toString());
|
|
|
|
const endpoint = `${API_CONFIG.ENDPOINTS.GET_MAINTENANCE_LOGS_BY_ASSET}?${params.toString()}`;
|
|
return apiService.apiCall<AssetMaintenanceListResponse>(endpoint);
|
|
}
|
|
|
|
/**
|
|
* Get overdue maintenance logs
|
|
*/
|
|
async getOverdueMaintenanceLogs(
|
|
filters?: MaintenanceFilters,
|
|
limit: number = 20,
|
|
offset: number = 0
|
|
): Promise<AssetMaintenanceListResponse> {
|
|
const params = new URLSearchParams();
|
|
|
|
if (filters) {
|
|
params.append('filters', JSON.stringify(filters));
|
|
}
|
|
|
|
params.append('limit', limit.toString());
|
|
params.append('offset', offset.toString());
|
|
|
|
const endpoint = `${API_CONFIG.ENDPOINTS.GET_OVERDUE_MAINTENANCE_LOGS}?${params.toString()}`;
|
|
return apiService.apiCall<AssetMaintenanceListResponse>(endpoint);
|
|
}
|
|
}
|
|
|
|
// Create and export singleton instance
|
|
const assetMaintenanceService = new AssetMaintenanceService();
|
|
export default assetMaintenanceService;
|
|
|