Files
var-monorepo/apps/dispatch/app/_querys/missions.ts

92 lines
2.2 KiB
TypeScript

import { Mission, MissionSdsLog, MissionSdsStatusLog, Prisma } from "@repo/db";
import axios from "axios";
import { serverApi } from "_helpers/axios";
export const getMissionsAPI = async <T = Mission>(
filter?: Prisma.MissionWhereInput,
include?: Prisma.MissionInclude,
orderBy?: Prisma.MissionOrderByWithRelationInput,
): Promise<T[]> => {
const res = await axios.get<T[]>("/api/missions", {
params: {
filter: JSON.stringify(filter),
include: JSON.stringify(include),
orderBy: JSON.stringify(orderBy),
},
});
if (res.status !== 200) {
throw new Error("Failed to fetch stations");
}
return res.data;
};
export const createMissionAPI = async (mission: Prisma.MissionCreateInput) => {
const response = await serverApi.put<Mission>("/mission", mission);
return response.data;
};
export const editMissionAPI = async (id: number, mission: Prisma.MissionUpdateInput) => {
const respone = await serverApi.patch<Mission>(`/mission/${id}`, mission);
return respone.data;
};
export const sendSdsStatusMessageAPI = async ({
sdsMessage,
aircraftId,
}: {
aircraftId: number;
sdsMessage: MissionSdsStatusLog;
}) => {
const respone = await serverApi.post<Mission>(`/aircrafts/${aircraftId}/send-sds-message`, {
sdsMessage,
});
return respone.data;
};
export const sendSdsMessageAPI = async ({
missionId,
sdsMessage,
}: {
missionId?: number;
sdsMessage: MissionSdsLog;
}) => {
const respone = await serverApi.post<Mission>(`/mission/send-sds`, { sdsMessage, missionId });
return respone.data;
};
export const startHpgValidation = async (
id: number,
config?: {
alertWhenValid?: boolean;
},
) => {
const respone = await serverApi.post<Mission>(`/mission/${id}/validate-hpg`, config);
return respone.data;
};
export const sendMissionAPI = async (
id: number,
{
stationId,
vehicleName,
desktopOnly,
}: {
stationId?: number;
vehicleName?: "RTW" | "POL" | "FW";
desktopOnly?: boolean;
},
) => {
const respone = await serverApi.post<{
message: string;
}>(`/mission/${id}/send-alert`, {
stationId,
vehicleName,
desktopOnly,
});
return respone.data;
};
export const deleteMissionAPI = async (id: number) => {
await serverApi.delete(`/mission/${id}`);
};