選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

254 行
6.9KB

  1. import {
  2. APICommonResponse,
  3. ApiId,
  4. HttpMethod,
  5. makeFormData,
  6. makeParam,
  7. request,
  8. } from "api";
  9. import { getUrl } from "./url";
  10. export type SeasonTicketContract = {
  11. season_ticekt_contract_record_no: string | null;
  12. parking_name: string | null;
  13. room_no: string | null;
  14. season_ticket_seq_no: string | null;
  15. vehicle_no: string | null;
  16. register_no: string | null;
  17. vehicle_type: string | null;
  18. contract_start_date: string | null;
  19. contract_end_date: string | null;
  20. contract_amount: number;
  21. student_license_images_upload_datetime: string | null;
  22. other_license_images_upload_datetime: string | null;
  23. has_season_ticket: boolean | null;
  24. has_sticker: boolean | null;
  25. can_some_apply: boolean | null;
  26. can_apply_change_plan: boolean | null;
  27. revision: number;
  28. };
  29. export type PaymentPlan = {
  30. season_ticket_contract_record_no: string | null;
  31. payment_type: string | null;
  32. payment_method: string | null;
  33. payment_plan_date: string | null;
  34. payment_status: string | null;
  35. revision: number;
  36. };
  37. // -------定期契約情報一覧取得---------------
  38. type SeasonTicketContractsResponse = {
  39. data: SeasonTicketContract[];
  40. } & APICommonResponse;
  41. export const getSeasonTicketContracts = async () => {
  42. const res = await request<SeasonTicketContractsResponse>({
  43. url: getUrl(ApiId.SEASON_TICKET_CONTRACTS),
  44. method: HttpMethod.GET,
  45. });
  46. return res;
  47. };
  48. // -------入金予定結果一覧取得------------------
  49. type PaymentPlansRequest = {
  50. season_ticket_contract_record_no: string;
  51. };
  52. type PaymentPlansResponse = {
  53. data: PaymentPlan[];
  54. } & APICommonResponse;
  55. export const getPaymentPlans = async (data: PaymentPlansRequest) => {
  56. const res = await request<PaymentPlansResponse>({
  57. url: getUrl(ApiId.PAYMENT_PLANS),
  58. method: HttpMethod.GET,
  59. data: new URLSearchParams(data),
  60. });
  61. return res;
  62. };
  63. // -------シール再発行依頼------------------
  64. type StickerReOrderRequest = {
  65. season_ticket_contract_record_no: string;
  66. parking_name: string;
  67. reason: string;
  68. memo?: string;
  69. };
  70. export const reOrderSticker = async (data: StickerReOrderRequest) => {
  71. const res = await request({
  72. url: getUrl(ApiId.SEASON_TICKET_CONTRACT_STICKER_RE_ORDER),
  73. method: HttpMethod.POST,
  74. data: makeParam(data),
  75. });
  76. return res;
  77. };
  78. // -------定期券再発行依頼------------------
  79. type SeasonTicketReOrderRequest = {
  80. season_ticket_contract_record_no: string;
  81. parking_name: string;
  82. reason: string;
  83. memo?: string;
  84. };
  85. export const reOrderSeasonTicket = async (data: SeasonTicketReOrderRequest) => {
  86. const res = await request({
  87. url: getUrl(ApiId.SEASON_TICKET_CONTRACT_SEASON_TICKET_RE_ORDER),
  88. method: HttpMethod.POST,
  89. data: makeParam(data),
  90. });
  91. return res;
  92. };
  93. // -------車庫証明発行依頼------------------
  94. type ParkingCertificateOrderRequest = {
  95. season_ticket_contract_record_no: string;
  96. parking_name: string;
  97. name: string;
  98. zip_code: string;
  99. address: string;
  100. phone_no: string;
  101. vehicle_no: string;
  102. chassis_no: string;
  103. paying_method: string;
  104. mail_name: string;
  105. mail_zip_code: string;
  106. mail_address: string;
  107. memo?: string;
  108. };
  109. export const orderParkingCertificate = async (
  110. data: ParkingCertificateOrderRequest
  111. ) => {
  112. const res = await request({
  113. url: getUrl(ApiId.SEASON_TICKET_CONTRACT_PARKING_CERTIFICATE_ORDER),
  114. method: HttpMethod.POST,
  115. data: makeParam(data),
  116. });
  117. return res;
  118. };
  119. // -------解約依頼------------------
  120. type TerminateOrderRequest = {
  121. season_ticket_contract_record_no: string;
  122. parking_name: string;
  123. terminate_date: string;
  124. reason: string;
  125. reason_detail: string;
  126. opinion: string;
  127. memo: string;
  128. };
  129. export const orderSeasonTicketContractTerminate = async (
  130. data: TerminateOrderRequest
  131. ) => {
  132. const res = await request({
  133. url: getUrl(ApiId.SEASON_TICKET_CONTRACT_TERMINATE_ORDER),
  134. method: HttpMethod.POST,
  135. data: makeParam(data),
  136. });
  137. return res;
  138. };
  139. // -------解約依頼オプション取得------------------
  140. type TerminateOrderOptionsRequest = {
  141. season_ticket_contract_record_no: string;
  142. };
  143. type TerminateOrderOptionsResponse = {
  144. data: {
  145. monthes: string[];
  146. };
  147. } & APICommonResponse;
  148. export const getSeasonTicketContractTerminateOptions = async (
  149. data: TerminateOrderOptionsRequest
  150. ) => {
  151. const res = await request<TerminateOrderOptionsResponse>({
  152. url: getUrl(ApiId.SEASON_TICKET_CONTRACT_TERMINATE_ORDER_OPTIONS),
  153. method: HttpMethod.GET,
  154. data: new URLSearchParams(data),
  155. });
  156. return res;
  157. };
  158. // -------車両情報変更依頼------------------
  159. type UpdateVehicleInfoOrderRequest = {
  160. season_ticket_contract_record_no: string;
  161. parking_name: string;
  162. change_date: string;
  163. vehicle_no?: string;
  164. register_no?: string;
  165. memo?: string;
  166. };
  167. export const orderUpdateVehicleInfo = async (
  168. data: UpdateVehicleInfoOrderRequest
  169. ) => {
  170. const res = await request({
  171. url: getUrl(ApiId.SEASON_TICKET_CONTRACT_UPDATE_VEHICLE_INFO_ORDER),
  172. method: HttpMethod.POST,
  173. data: makeParam(data),
  174. });
  175. return res;
  176. };
  177. // -------プラン変更依頼------------------
  178. type GetChangePlanOrderParamsRequest = {
  179. season_ticket_contract_record_no: string;
  180. };
  181. type GetChangePlanOrderParamsResponse = {
  182. data: string[];
  183. } & APICommonResponse;
  184. export const getChangePlanOrderParams = async (
  185. data: GetChangePlanOrderParamsRequest
  186. ) => {
  187. const res = await request<GetChangePlanOrderParamsResponse>({
  188. url: getUrl(ApiId.SEASON_TICKET_CONTRACT_CHANGE_PLAN_ORDER_PARAMS),
  189. method: HttpMethod.GET,
  190. data: new URLSearchParams(data),
  191. });
  192. return res;
  193. };
  194. // -------プラン変更依頼------------------
  195. type ChangePlanOrderRequest = {
  196. season_ticket_contract_record_no: string;
  197. plan_name: string;
  198. };
  199. export const orderChangePlan = async (data: ChangePlanOrderRequest) => {
  200. const res = await request({
  201. url: getUrl(ApiId.SEASON_TICKET_CONTRACT_CHANGE_PLAN_ORDER),
  202. method: HttpMethod.POST,
  203. data: makeParam(data),
  204. });
  205. return res;
  206. };
  207. // -------学生証アップロード---------------
  208. export type UploadStudentLicenseImagesRequest = {
  209. images: File[];
  210. season_ticket_contract_record_no: string;
  211. expires_at: string;
  212. };
  213. export const uploadStudentLicenseImages = async (
  214. param: UploadStudentLicenseImagesRequest
  215. ) => {
  216. const sendData = makeFormData(param);
  217. const res = await request({
  218. url: getUrl(ApiId.SEASON_TICKET_CONTRACT_UPLOAD_STUDENT_LICENSE_IMAGES),
  219. method: HttpMethod.POST,
  220. data: sendData,
  221. multipart: true,
  222. });
  223. return res;
  224. };
  225. // -------その他証明証アップロード---------------
  226. export type OtherLicenseImagesRequest = {
  227. images: File[];
  228. season_ticket_contract_record_no: string;
  229. expires_at: string;
  230. };
  231. export const uploadOtherLicenseImages = async (
  232. param: OtherLicenseImagesRequest
  233. ) => {
  234. const sendData = makeFormData(param);
  235. const res = await request({
  236. url: getUrl(ApiId.SEASON_TICKET_CONTRACT_UPLOAD_OTHER_LICENSE_IMAGES),
  237. method: HttpMethod.POST,
  238. data: sendData,
  239. multipart: true,
  240. });
  241. return res;
  242. };