ERP-node/frontend/lib/api/driver.ts

136 lines
3.0 KiB
TypeScript

// 공차중계 운전자 API
import { apiClient } from "./client";
export interface DriverProfile {
userId: string;
userName: string;
phoneNumber: string;
licenseNumber: string;
vehicleNumber: string;
vehicleType: string | null;
vehicleStatus: string | null;
branchName: string | null;
}
export interface DriverProfileUpdateData {
userName?: string;
phoneNumber?: string;
licenseNumber?: string;
vehicleNumber?: string;
vehicleType?: string;
branchName?: string;
}
/**
* 운전자 프로필 조회
*/
export async function getDriverProfile(): Promise<{
success: boolean;
data?: DriverProfile;
message?: string;
}> {
try {
const response = await apiClient.get("/driver/profile");
return response.data;
} catch (error: any) {
return {
success: false,
message: error.response?.data?.message || "프로필 조회에 실패했습니다.",
};
}
}
/**
* 운전자 프로필 수정
*/
export async function updateDriverProfile(
data: DriverProfileUpdateData
): Promise<{ success: boolean; message?: string }> {
try {
const response = await apiClient.put("/driver/profile", data);
return response.data;
} catch (error: any) {
return {
success: false,
message: error.response?.data?.message || "프로필 수정에 실패했습니다.",
};
}
}
/**
* 차량 상태 변경 (대기/정비)
*/
export async function updateDriverStatus(
status: "off" | "maintenance"
): Promise<{ success: boolean; message?: string }> {
try {
const response = await apiClient.put("/driver/status", { status });
return response.data;
} catch (error: any) {
return {
success: false,
message: error.response?.data?.message || "상태 변경에 실패했습니다.",
};
}
}
/**
* 차량 삭제 (기록 보존)
*/
export async function deleteDriverVehicle(): Promise<{
success: boolean;
message?: string;
}> {
try {
const response = await apiClient.delete("/driver/vehicle");
return response.data;
} catch (error: any) {
return {
success: false,
message: error.response?.data?.message || "차량 삭제에 실패했습니다.",
};
}
}
/**
* 새 차량 등록
*/
export interface VehicleRegisterData {
vehicleNumber: string;
vehicleType?: string;
branchName?: string;
}
export async function registerDriverVehicle(
data: VehicleRegisterData
): Promise<{ success: boolean; message?: string }> {
try {
const response = await apiClient.post("/driver/vehicle", data);
return response.data;
} catch (error: any) {
return {
success: false,
message: error.response?.data?.message || "차량 등록에 실패했습니다.",
};
}
}
/**
* 회원 탈퇴
*/
export async function deleteDriverAccount(): Promise<{
success: boolean;
message?: string;
}> {
try {
const response = await apiClient.delete("/driver/account");
return response.data;
} catch (error: any) {
return {
success: false,
message: error.response?.data?.message || "회원 탈퇴에 실패했습니다.",
};
}
}