Files
SMATEC-FRONTEND/src/services/slave/sgw/TripController.ts

225 lines
4.9 KiB
TypeScript

import {
SGW_ROUTE_CREW,
SGW_ROUTE_GET_FISH,
SGW_ROUTE_HAUL_HANDLE,
SGW_ROUTE_TRIP_CREW,
SGW_ROUTE_TRIPS,
SGW_ROUTE_TRIPS_BY_ID,
SGW_ROUTE_TRIPS_CREWS,
SGW_ROUTE_TRIPS_LAST,
SGW_ROUTE_TRIPS_LIST,
SGW_ROUTE_UPDATE_FISHING_LOGS,
SGW_ROUTE_UPDATE_TRIP_STATUS,
} from '@/constants/slave/sgw/routes';
import { request } from '@umijs/max';
/**
* Update trip state/status
* @param body Trip state update request
*/
export async function apiUpdateTripState(
body: SgwModel.TripUpdateStateRequest,
) {
return request(SGW_ROUTE_UPDATE_TRIP_STATUS, {
method: 'PUT',
data: body,
});
}
/**
* Start a new haul (fishing log)
* @param body New fishing log request
*/
export async function apiStartNewHaul(body: SgwModel.NewFishingLogRequest) {
return request(SGW_ROUTE_HAUL_HANDLE, {
method: 'PUT',
data: body,
});
}
/**
* Get list of fish species
*/
export async function apiGetFishSpecies() {
return request<SgwModel.FishSpeciesResponse[]>(SGW_ROUTE_GET_FISH);
}
/**
* Update fishing logs information
* @param body Fishing log data
*/
export async function apiUpdateFishingLogs(body: SgwModel.FishingLog) {
return request(SGW_ROUTE_UPDATE_FISHING_LOGS, {
method: 'PUT',
data: body,
});
}
/**
* Create a new trip for a thing (device)
* @param thing_id Thing/Device ID
* @param params Trip creation parameters
*/
export async function apiCreateTrip(
thing_id: string,
params: SgwModel.TripCreateParams,
): Promise<SgwModel.Trip> {
return request<SgwModel.Trip>(`${SGW_ROUTE_TRIPS}/${thing_id}`, {
method: 'POST',
data: params,
});
}
/**
* Query trips list with filters
* @param params Query parameters
*/
export async function apiQueryTrips(
params: SgwModel.TripQueryParams,
): Promise<SgwModel.TripQueryResponse> {
return request<SgwModel.TripQueryResponse>(SGW_ROUTE_TRIPS_LIST, {
method: 'POST',
data: params,
});
}
/**
* Update a trip by ID
* @param trip_id Trip ID
* @param update Trip update parameters
*/
export async function apiUpdateTrip(
trip_id: string,
update: SgwModel.TripUpdateParams,
): Promise<SgwModel.Trip> {
return request<SgwModel.Trip>(`${SGW_ROUTE_TRIPS}/${trip_id}`, {
method: 'PUT',
data: update,
});
}
/**
* Delete trip(s)
* @param data Trip deletion parameters (array of trip IDs)
*/
export async function apiDeleteTrip(
data: SgwModel.TripDeleteParams,
): Promise<void> {
return request(SGW_ROUTE_TRIPS, {
method: 'DELETE',
data: data,
});
}
/**
* Query last trip for a thing (device)
* @param thing_id Thing/Device ID
*/
export async function apiQueryLastTrips(
thing_id: string,
): Promise<SgwModel.Trip> {
return request<SgwModel.Trip>(`${SGW_ROUTE_TRIPS_LAST}/${thing_id}`);
}
/**
* Get trip by ID
* @param trip_id Trip ID
*/
export async function apiGetTripById(trip_id: string): Promise<SgwModel.Trip> {
return request<SgwModel.Trip>(`${SGW_ROUTE_TRIPS_BY_ID}/${trip_id}`);
}
/* ===========================
Crew Management APIs
=========================== */
/**
* Create a new crew member
* @param data Crew creation parameters
*/
export async function apiCreateCrew(
data: SgwModel.CrewCreateParams,
): Promise<SgwModel.TripCrewPerson> {
return request<SgwModel.TripCrewPerson>(SGW_ROUTE_CREW, {
method: 'POST',
data: data,
});
}
/**
* Get crew member by ID
* @param crew_id Crew member ID
*/
export async function apiGetCrew(
crew_id: string,
): Promise<SgwModel.TripCrewPerson> {
return request<SgwModel.TripCrewPerson>(`${SGW_ROUTE_TRIPS}/crew/${crew_id}`);
}
/**
* Update crew member information
* @param crew_id Crew member ID
* @param update Crew update parameters
*/
export async function apiUpdateCrew(
crew_id: string,
update: SgwModel.CrewUpdateParams,
): Promise<SgwModel.TripCrewPerson> {
return request<SgwModel.TripCrewPerson>(`${SGW_ROUTE_CREW}/${crew_id}`, {
method: 'PUT',
data: update,
});
}
/**
* Add crew member to a trip
* @param data Trip crew creation parameters
*/
export async function apiAddTripCrew(
data: SgwModel.TripCrewCreateParams,
): Promise<void> {
return request(SGW_ROUTE_TRIP_CREW, {
method: 'POST',
data: data,
});
}
/**
* Get all crew members for a trip
* @param trip_id Trip ID
*/
export async function apiGetTripCrew(
trip_id: string,
): Promise<SgwModel.TripCrewQueryResponse> {
return request<SgwModel.TripCrewQueryResponse>(
`${SGW_ROUTE_TRIPS_CREWS}/${trip_id}`,
);
}
/**
* Update trip crew information
* @param update Trip crew update parameters
*/
export async function apiUpdateTripCrew(
update: SgwModel.TripCrewUpdateParams,
): Promise<void> {
return request(SGW_ROUTE_TRIP_CREW, {
method: 'PUT',
data: update,
});
}
/**
* Remove crew member from a trip
* @param trip_id Trip ID
* @param crew_id Crew member ID
*/
export async function apiDeleteTripCrew(
trip_id: string,
crew_id: string,
): Promise<void> {
return request(`${SGW_ROUTE_TRIP_CREW}/${trip_id}/${crew_id}`, {
method: 'DELETE',
});
}