|
- <?php
-
- namespace App\Http\Controllers\Web\HTICWeb;
-
- use App\Http\Controllers\Web\WebController;
- use App\Kintone\Models\DropDown\PaymentPlan\PaymentMethod;
- use App\Kintone\Models\DropDown\PaymentPlan\PaymentType;
- use App\Kintone\Models\PaymentPlan;
- use App\Kintone\Models\SeasonTicketContract;
- use Illuminate\Http\JsonResponse;
- use Illuminate\Http\Request;
-
- class AdjustDataController extends WebController
- {
-
- public function name(): string
- {
- return "[IC定期連携]精算データ連携";
- }
-
- public function description(): string
- {
- return "[IC定期連携]精算データ連携";
- }
-
-
- public function __construct(protected AdjustDataParam $param)
- {
- parent::__construct();
- }
-
- protected function run(Request $request): JsonResponse
- {
- $param = $this->param;
-
- // 契約の特定
- $query = SeasonTicketContract::getQuery()
- ->where(SeasonTicketContract::FIELD_IC_SEASON_TICEKT_PARKING_MANAGEMENT_CODE, $param->parkingManagementCode)
- ->where(SeasonTicketContract::FIELD_IC_SEASON_TICEKT_SEASON_TICKET_SEQ_NO, $param->seasonTicketSeqNo);
- $list = SeasonTicketContract::getAccess()->all($query);
- if ($list->count() !== 1) {
- // 対象不正のためスキップ
- info("対象不正のためスキップ");
- return $this->successResponse();
- }
- $seasonTicketContract = $list[0];
-
- // 重複チェック
- $query = PaymentPlan::getQuery()
- ->where(PaymentPlan::FIELD_IC_SEASON_TICKET_CONTRACT_ID, $seasonTicketContract->icSeasonTicektContractId)
- ->where(PaymentPlan::FIELD_CUSTOMER_CODE, $seasonTicketContract->customerCode)
- ->whereDate(PaymentPlan::FIELD_APPROPRIATION_DATE, $param->adjustDatetime)
- ->where(PaymentPlan::FIELD_APPROPRIATION_AMOUNT, $param->parkingCharge);
- if (PaymentPlan::getAccess()->all($query)->isNotEmpty()) {
- // 登録済みのためスキップ
- info("登録済みのためスキップ");
- return $this->successResponse();
- }
-
- // データ保存
- $plan = new PaymentPlan();
- $plan->seasonTicketContractRecordNo = $seasonTicketContract->getRecordId();
- $plan->icSeasonTicketContractId = $seasonTicketContract->icSeasonTicektContractId;
- $plan->paymentType = PaymentType::SEASON_TICKET;
- $plan->paymentMethod = PaymentMethod::定期更新機;
- $plan->paymentPlanDate = $param->adjustDatetime;
- $plan->paymentPlanAmount = $param->parkingCharge;
- $plan->appropriationDate = $param->adjustDatetime;
- $plan->appropriationAmount = $param->parkingCharge;
- $plan->remainingAmount = 0;
-
- $plan->save();
-
- return $this->successResponse();
- }
- }
|