import { APICommonResponse, ApiId, HttpMethod, makeFormData, makeParam, request, } from "api"; import { getUrl } from "./url"; export type SeasonTicketContract = { season_ticekt_contract_record_no: string | null; parking_name: string | null; room_no: string | null; season_ticket_seq_no: string | null; vehicle_no: string | null; register_no: string | null; vehicle_type: string | null; contract_start_date: string | null; contract_end_date: string | null; contract_amount: number; student_license_images_upload_datetime: string | null; other_license_images_upload_datetime: string | null; has_season_ticket: boolean | null; has_sticker: boolean | null; can_some_apply: boolean | null; can_apply_change_plan: boolean | null; revision: number; }; export type PaymentPlan = { season_ticket_contract_record_no: string | null; payment_type: string | null; payment_method: string | null; payment_plan_date: string | null; payment_status: string | null; revision: number; }; // -------定期契約情報一覧取得--------------- type SeasonTicketContractsResponse = { data: SeasonTicketContract[]; } & APICommonResponse; export const getSeasonTicketContracts = async () => { const res = await request({ url: getUrl(ApiId.SEASON_TICKET_CONTRACTS), method: HttpMethod.GET, }); return res; }; // -------入金予定結果一覧取得------------------ type PaymentPlansRequest = { season_ticket_contract_record_no: string; }; type PaymentPlansResponse = { data: PaymentPlan[]; } & APICommonResponse; export const getPaymentPlans = async (data: PaymentPlansRequest) => { const res = await request({ url: getUrl(ApiId.PAYMENT_PLANS), method: HttpMethod.GET, data: new URLSearchParams(data), }); return res; }; // -------シール再発行依頼------------------ type StickerReOrderRequest = { season_ticket_contract_record_no: string; parking_name: string; reason: string; memo?: string; }; export const reOrderSticker = async (data: StickerReOrderRequest) => { const res = await request({ url: getUrl(ApiId.SEASON_TICKET_CONTRACT_STICKER_RE_ORDER), method: HttpMethod.POST, data: makeParam(data), }); return res; }; // -------定期券再発行依頼------------------ type SeasonTicketReOrderRequest = { season_ticket_contract_record_no: string; parking_name: string; reason: string; memo?: string; }; export const reOrderSeasonTicket = async (data: SeasonTicketReOrderRequest) => { const res = await request({ url: getUrl(ApiId.SEASON_TICKET_CONTRACT_SEASON_TICKET_RE_ORDER), method: HttpMethod.POST, data: makeParam(data), }); return res; }; // -------車庫証明発行依頼------------------ type ParkingCertificateOrderRequest = { season_ticket_contract_record_no: string; parking_name: string; name: string; zip_code: string; address: string; phone_no: string; vehicle_no: string; chassis_no: string; paying_method: string; mail_name: string; mail_zip_code: string; mail_address: string; memo?: string; }; export const orderParkingCertificate = async ( data: ParkingCertificateOrderRequest ) => { const res = await request({ url: getUrl(ApiId.SEASON_TICKET_CONTRACT_PARKING_CERTIFICATE_ORDER), method: HttpMethod.POST, data: makeParam(data), }); return res; }; // -------解約依頼------------------ type TerminateOrderRequest = { season_ticket_contract_record_no: string; parking_name: string; terminate_date: string; reason: string; reason_detail: string; opinion: string; memo: string; }; export const orderSeasonTicketContractTerminate = async ( data: TerminateOrderRequest ) => { const res = await request({ url: getUrl(ApiId.SEASON_TICKET_CONTRACT_TERMINATE_ORDER), method: HttpMethod.POST, data: makeParam(data), }); return res; }; // -------解約依頼オプション取得------------------ type TerminateOrderOptionsRequest = { season_ticket_contract_record_no: string; }; type TerminateOrderOptionsResponse = { data: { monthes: string[]; }; } & APICommonResponse; export const getSeasonTicketContractTerminateOptions = async ( data: TerminateOrderOptionsRequest ) => { const res = await request({ url: getUrl(ApiId.SEASON_TICKET_CONTRACT_TERMINATE_ORDER_OPTIONS), method: HttpMethod.GET, data: new URLSearchParams(data), }); return res; }; // -------車両情報変更依頼------------------ type UpdateVehicleInfoOrderRequest = { season_ticket_contract_record_no: string; parking_name: string; change_date: string; vehicle_no?: string; register_no?: string; memo?: string; }; export const orderUpdateVehicleInfo = async ( data: UpdateVehicleInfoOrderRequest ) => { const res = await request({ url: getUrl(ApiId.SEASON_TICKET_CONTRACT_UPDATE_VEHICLE_INFO_ORDER), method: HttpMethod.POST, data: makeParam(data), }); return res; }; // -------プラン変更依頼------------------ type GetChangePlanOrderParamsRequest = { season_ticket_contract_record_no: string; }; type GetChangePlanOrderParamsResponse = { data: string[]; } & APICommonResponse; export const getChangePlanOrderParams = async ( data: GetChangePlanOrderParamsRequest ) => { const res = await request({ url: getUrl(ApiId.SEASON_TICKET_CONTRACT_CHANGE_PLAN_ORDER_PARAMS), method: HttpMethod.GET, data: new URLSearchParams(data), }); return res; }; // -------プラン変更依頼------------------ type ChangePlanOrderRequest = { season_ticket_contract_record_no: string; plan_name: string; }; export const orderChangePlan = async (data: ChangePlanOrderRequest) => { const res = await request({ url: getUrl(ApiId.SEASON_TICKET_CONTRACT_CHANGE_PLAN_ORDER), method: HttpMethod.POST, data: makeParam(data), }); return res; }; // -------学生証アップロード--------------- export type UploadStudentLicenseImagesRequest = { images: File[]; season_ticket_contract_record_no: string; expires_at: string; }; export const uploadStudentLicenseImages = async ( param: UploadStudentLicenseImagesRequest ) => { const sendData = makeFormData(param); const res = await request({ url: getUrl(ApiId.SEASON_TICKET_CONTRACT_UPLOAD_STUDENT_LICENSE_IMAGES), method: HttpMethod.POST, data: sendData, multipart: true, }); return res; }; // -------その他証明証アップロード--------------- export type OtherLicenseImagesRequest = { images: File[]; season_ticket_contract_record_no: string; expires_at: string; }; export const uploadOtherLicenseImages = async ( param: OtherLicenseImagesRequest ) => { const sendData = makeFormData(param); const res = await request({ url: getUrl(ApiId.SEASON_TICKET_CONTRACT_UPLOAD_OTHER_LICENSE_IMAGES), method: HttpMethod.POST, data: sendData, multipart: true, }); return res; };