import { apptemplate } from "@/common/app-template"; import { AppID } from "@/common/appids"; import { setHeaderButton } from "@/common/header-button"; import { makeRecordData } from "@/common/rest-api-client"; import { 契約情報更新イベント } from "@/event/契約情報更新"; import { ErrorDialog, FormDialog, ShowConfirmDialog, ShowFormDialog, SuccessDialog, } from "@/middleware/swal"; import { EmailID, sendEmail } from "@/mypage/メール"; import bulkRequest from "@/rest-api/bulk"; import { get車室情報管理 } from "@/rest-api/車室情報管理"; import { 各種申請, 状況Dropdown, 申請種別Dropdown } from "@/types/各種申請"; import { 車室情報管理フィールド名 } from "@/types/車室情報管理"; import { 各種申請完了 } from "./common"; import { 定期契約更新 } from "@/mypage/IC定期"; import { Message } from "@/exception"; import { MessageBag } from "@/common/message"; export const 駐車場利用方法変更承認ボタン = (record: 各種申請) => { if ( record.状況.value !== 状況Dropdown.完了 && record.申請種別.value === 申請種別Dropdown.IC定期_駐車場利用方法変更申請 ) { setHeaderButton( "駐車場利用方法変更申請 承認", apptemplate(async ({ setEvent, needReloadAtEnd }) => { const confirm = await ShowConfirmDialog({ title: "承認しますか" }); if (!confirm.isConfirmed) return; let 契約 = await get車室情報管理(record.契約情報.value); let 定期券番号 = ""; if ( record.IC定期_駐車場利用方法変更申請_変更後.value === "貸与ICカード" ) { const form = await ShowFormDialog({ text: "定期券番号を入力してください", input: "number", }); if (!form.isConfirmed) return; 定期券番号 = form.value; } const message = new MessageBag(); const res = await 定期契約更新( { user_id: 契約.IC定期関連情報_利用者ID.value, parking_management_code: 契約.IC定期関連情報_駐車場管理コード.value, season_ticket_seq_no: 定期券番号, // 自動採番 vehicle_type_name: 契約.IC定期関連情報_車種.value, parking_use_type_name: record.IC定期_駐車場利用方法変更申請_変更後.value, contractor_type_name: 契約.IC定期関連情報_契約者種類.value, expiration_start_date: 契約.IC定期関連情報_有効期限開始.value ?? "", expiration_end_date: 契約.IC定期関連情報_有効期限開始.value ?? "", position_memo: 契約.IC定期関連情報_駐車位置情報.value, memo: 契約.IC定期関連情報_備考.value, }, message ); if (res === false) { throw new Message("IC定期連携失敗 " + message.getGeneralMessage()); } // 車室情報管理への反映 bulkRequest.update({ app: AppID.車室情報管理, id: record.契約情報.value, record: makeRecordData({ [車室情報管理フィールド名.IC定期関連情報_駐車場利用方法]: record.IC定期_駐車場利用方法変更申請_変更後.value ?? "", [車室情報管理フィールド名.IC定期関連情報_定期券番号]: String( res.season_ticket_seq_no ), }), }); // 申請の完了 await 各種申請完了(record); // データ保存 await bulkRequest.save(); 契約 = await get車室情報管理(record.契約情報.value); setEvent(new 契約情報更新イベント().getEvent(契約)); await SuccessDialog.fire(); needReloadAtEnd(true); }) ); } };