You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

221 lines
5.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. revision: number;
  24. };
  25. export type PaymentPlan = {
  26. season_ticket_contract_record_no: string | null;
  27. payment_type: string | null;
  28. payment_method: string | null;
  29. payment_plan_date: string | null;
  30. payment_status: string | null;
  31. revision: number;
  32. };
  33. // -------定期契約情報一覧取得---------------
  34. type SeasonTicketContractsResponse = {
  35. data: SeasonTicketContract[];
  36. } & APICommonResponse;
  37. export const getSeasonTicketContracts = async () => {
  38. const res = await request<SeasonTicketContractsResponse>({
  39. url: getUrl(ApiId.SEASON_TICKET_CONTRACTS),
  40. method: HttpMethod.GET,
  41. });
  42. return res;
  43. };
  44. // -------入金予定結果一覧取得------------------
  45. type PaymentPlansRequest = {
  46. season_ticket_contract_record_no: string;
  47. };
  48. type PaymentPlansResponse = {
  49. data: PaymentPlan[];
  50. } & APICommonResponse;
  51. export const getPaymentPlans = async (data: PaymentPlansRequest) => {
  52. const res = await request<PaymentPlansResponse>({
  53. url: getUrl(ApiId.PAYMENT_PLANS),
  54. method: HttpMethod.GET,
  55. data: new URLSearchParams(data),
  56. });
  57. return res;
  58. };
  59. // -------シール再発行依頼------------------
  60. type StickerReOrderRequest = {
  61. season_ticket_contract_record_no: string;
  62. parking_name: string;
  63. reason: string;
  64. memo?: string;
  65. };
  66. export const reOrderSticker = async (data: StickerReOrderRequest) => {
  67. const res = await request({
  68. url: getUrl(ApiId.SEASON_TICKET_CONTRACT_STICKER_RE_ORDER),
  69. method: HttpMethod.POST,
  70. data: makeParam(data),
  71. });
  72. return res;
  73. };
  74. // -------定期券再発行依頼------------------
  75. type SeasonTicketReOrderRequest = {
  76. season_ticket_contract_record_no: string;
  77. parking_name: string;
  78. reason: string;
  79. memo?: string;
  80. };
  81. export const reOrderSeasonTicket = async (data: SeasonTicketReOrderRequest) => {
  82. const res = await request({
  83. url: getUrl(ApiId.SEASON_TICKET_CONTRACT_SEASON_TICKET_RE_ORDER),
  84. method: HttpMethod.POST,
  85. data: makeParam(data),
  86. });
  87. return res;
  88. };
  89. // -------車庫証明発行依頼------------------
  90. type ParkingCertificateOrderRequest = {
  91. season_ticket_contract_record_no: string;
  92. memo?: string;
  93. };
  94. export const orderParkingCertificate = async (
  95. data: ParkingCertificateOrderRequest
  96. ) => {
  97. const res = await request({
  98. url: getUrl(ApiId.SEASON_TICKET_CONTRACT_PARKING_CERTIFICATE_ORDER),
  99. method: HttpMethod.POST,
  100. data: makeParam(data),
  101. });
  102. return res;
  103. };
  104. // -------解約依頼------------------
  105. type TerminateOrderRequest = {
  106. season_ticket_contract_record_no: string;
  107. parking_name: string;
  108. terminate_date: string;
  109. reason: string;
  110. reason_detail: string;
  111. opinion: string;
  112. memo: string;
  113. };
  114. export const orderSeasonTicketContractTerminate = async (
  115. data: TerminateOrderRequest
  116. ) => {
  117. const res = await request({
  118. url: getUrl(ApiId.SEASON_TICKET_CONTRACT_TERMINATE_ORDER),
  119. method: HttpMethod.POST,
  120. data: makeParam(data),
  121. });
  122. return res;
  123. };
  124. // -------解約依頼オプション取得------------------
  125. type TerminateOrderOptionsRequest = {
  126. season_ticket_contract_record_no: string;
  127. };
  128. type TerminateOrderOptionsResponse = {
  129. data: {
  130. monthes: string[];
  131. };
  132. } & APICommonResponse;
  133. export const getSeasonTicketContractTerminateOptions = async (
  134. data: TerminateOrderOptionsRequest
  135. ) => {
  136. const res = await request<TerminateOrderOptionsResponse>({
  137. url: getUrl(ApiId.SEASON_TICKET_CONTRACT_TERMINATE_ORDER_OPTIONS),
  138. method: HttpMethod.GET,
  139. data: new URLSearchParams(data),
  140. });
  141. return res;
  142. };
  143. // -------車両情報変更依頼------------------
  144. type UpdateVehicleInfoOrderRequest = {
  145. season_ticket_contract_record_no: string;
  146. parking_name: string;
  147. change_date: string;
  148. vehicle_no?: string;
  149. register_no?: string;
  150. memo?: string;
  151. };
  152. export const orderUpdateVehicleInfo = async (
  153. data: UpdateVehicleInfoOrderRequest
  154. ) => {
  155. const res = await request({
  156. url: getUrl(ApiId.SEASON_TICKET_CONTRACT_UPDATE_VEHICLE_INFO_ORDER),
  157. method: HttpMethod.POST,
  158. data: makeParam(data),
  159. });
  160. return res;
  161. };
  162. // -------振替頻度変更依頼------------------
  163. type ChangePaymentIntervalOrderRequest = {
  164. season_ticket_contract_record_no: string;
  165. };
  166. export const orderChangePaymentInterval = async (
  167. data: ChangePaymentIntervalOrderRequest
  168. ) => {
  169. const res = await request({
  170. url: getUrl(ApiId.SEASON_TICKET_CONTRACT_CHANGE_PAYMENT_INTERVAL_ORDER),
  171. method: HttpMethod.POST,
  172. data: makeParam(data),
  173. });
  174. return res;
  175. };
  176. // -------学生証アップロード---------------
  177. export type UploadStudentLicenseImagesRequest = {
  178. images: File[];
  179. season_ticket_contract_record_no: string;
  180. };
  181. export const uploadStudentLicenseImages = async (
  182. param: UploadStudentLicenseImagesRequest
  183. ) => {
  184. const sendData = makeFormData(param);
  185. const res = await request({
  186. url: getUrl(ApiId.SEASON_TICKET_CONTRACT_UPLOAD_STUDENT_LICENSE_IMAGES),
  187. method: HttpMethod.POST,
  188. data: sendData,
  189. multipart: true,
  190. });
  191. return res;
  192. };
  193. // -------その他証明証アップロード---------------
  194. export type OtherLicenseImagesRequest = {
  195. images: File[];
  196. season_ticket_contract_record_no: string;
  197. };
  198. export const uploadOtherLicenseImages = async (
  199. param: OtherLicenseImagesRequest
  200. ) => {
  201. const sendData = makeFormData(param);
  202. const res = await request({
  203. url: getUrl(ApiId.SEASON_TICKET_CONTRACT_UPLOAD_OTHER_LICENSE_IMAGES),
  204. method: HttpMethod.POST,
  205. data: sendData,
  206. multipart: true,
  207. });
  208. return res;
  209. };