|
- <?php
-
- namespace App\Logics\QRService;
-
- use App\Codes\DepositTransferReason;
- use App\Codes\Model\QRServiceUsage;
- use App\Exceptions\AppCommonException;
- use App\Models\HtpmsCustomer\Mst\ShopNoRelation;
- use App\Models\HtpmsCustomer\QRService\PrintTicket;
- use Illuminate\Support\Carbon;
-
- class PrintingLogic
- {
- use DepositCheck;
-
-
- /**
- * サービス券を使用する
- *
- * @param integer $shopNo
- * @param string $parkingManagementCode
- * @param string $adjusterTerminalCode
- * @param Carbon $publishingDate
- * @param integer $seqNo
- * @param Carbon $adjustDatetime
- * @param integer $discountAmount
- * @return void
- */
- public static function use(
- int $shopNo,
- string $parkingManagementCode,
- string $adjusterTerminalCode,
- Carbon $publishingDate,
- int $seqNo,
- Carbon $adjustDatetime,
- int $discountAmount,
- ) {
-
- // 重複利用チェック
- if (PrintTicket::wherePublishingTerminalCode($adjusterTerminalCode)
- ->wherePublishingDate($publishingDate)
- ->wherePublishingNo($seqNo)
- ->exists()
- ) {
- throw new AppCommonException("利用済み");
- }
-
- // 店舗特定
- $relation = ShopNoRelation::whereShopNo($shopNo)
- ->whereParkingManagementCode($parkingManagementCode)
- ->whereQrServiceUseage(QRServiceUsage::印字方式)
- ->firstOrFail();
-
- $qr = new PrintTicket();
- $qr->publishing_terminal_code = $adjusterTerminalCode;
- $qr->publishing_date = $publishingDate;
- $qr->publishing_no = $seqNo;
- $qr->shop_id = $relation->shop_id;
- $qr->parking_management_code = $parkingManagementCode;
- $qr->used_at = $adjustDatetime;
- $qr->discount_amount = $discountAmount;
-
- // デポジット処理
- self::useDeposit($qr->shop_id, $discountAmount, DepositTransferReason::駐車料金割引_印字);
-
- $qr->save();
- }
- }
|