| @@ -11,4 +11,21 @@ abstract class Rule | |||
| $ret[] = "max:255"; | |||
| return $ret; | |||
| } | |||
| public static function id(): array | |||
| { | |||
| return ["uuid"]; | |||
| } | |||
| public static function parkingManagementCode(): array | |||
| { | |||
| return ["regex:/^[0-9]{5}$/"]; | |||
| } | |||
| public static function shopNo(): array | |||
| { | |||
| return ["between:0,99"]; | |||
| } | |||
| public static function discountTicketCode(): array | |||
| { | |||
| return ["between:0,99"]; | |||
| } | |||
| } | |||
| @@ -0,0 +1,42 @@ | |||
| <?php | |||
| namespace App\Http\Controllers\Web\Shop\Config\Acquisition; | |||
| use App\Http\Controllers\Web\WebController; | |||
| use App\Models\HtpmsCustomer\QRService\AcquisitionAvailableSetting; | |||
| use Illuminate\Http\JsonResponse; | |||
| use Illuminate\Http\Request; | |||
| class DisableController extends WebController | |||
| { | |||
| public function name(): string | |||
| { | |||
| return "QRサービス券取得設定無効化"; | |||
| } | |||
| public function description(): string | |||
| { | |||
| return "QRサービス券取得設定を無効にする"; | |||
| } | |||
| public function __construct(protected DisableParam $param) | |||
| { | |||
| parent::__construct(); | |||
| } | |||
| protected function run(Request $request): JsonResponse | |||
| { | |||
| $param = $this->param; | |||
| $setting = AcquisitionAvailableSetting::whereShopId($param->shopId) | |||
| ->firstOrFail(); | |||
| $setting->delete(); | |||
| $setting->save(); | |||
| return $this->successResponse(); | |||
| } | |||
| } | |||
| @@ -0,0 +1,20 @@ | |||
| <?php | |||
| namespace App\Http\Controllers\Web\Shop\Config\Acquisition; | |||
| use App\Http\Controllers\Web\BaseParam; | |||
| use App\Http\Controllers\Web\Rule; | |||
| use App\Models\ColumnName; | |||
| /** | |||
| * @property string shopId | |||
| */ | |||
| class DisableParam extends BaseParam | |||
| { | |||
| public function rules(): array | |||
| { | |||
| return [ | |||
| ColumnName::SHOP_ID => $this->str([...Rule::id()]), | |||
| ]; | |||
| } | |||
| } | |||
| @@ -0,0 +1,42 @@ | |||
| <?php | |||
| namespace App\Http\Controllers\Web\Shop\Config\Acquisition; | |||
| use App\Http\Controllers\Web\WebController; | |||
| use App\Models\HtpmsCustomer\QRService\AcquisitionAvailableSetting; | |||
| use Illuminate\Http\JsonResponse; | |||
| use Illuminate\Http\Request; | |||
| class EnableController extends WebController | |||
| { | |||
| public function name(): string | |||
| { | |||
| return "QRサービス券取得設定変更"; | |||
| } | |||
| public function description(): string | |||
| { | |||
| return "QRサービス券取得設定を変更する"; | |||
| } | |||
| public function __construct(protected EnableParam $param) | |||
| { | |||
| parent::__construct(); | |||
| } | |||
| protected function run(Request $request): JsonResponse | |||
| { | |||
| $param = $this->param; | |||
| $setting = AcquisitionAvailableSetting::whereShopId($param->shopId) | |||
| ->firstOrNew(); | |||
| $setting->fill($param->toArray()); | |||
| $setting->save(); | |||
| return $this->successResponse(); | |||
| } | |||
| } | |||
| @@ -0,0 +1,26 @@ | |||
| <?php | |||
| namespace App\Http\Controllers\Web\Shop\Config\Acquisition; | |||
| use App\Http\Controllers\Web\BaseParam; | |||
| use App\Http\Controllers\Web\Rule; | |||
| use App\Models\ColumnName; | |||
| /** | |||
| * @property string shopId | |||
| * @property string qrServiceParkingGroupId | |||
| * @property int shopNo | |||
| * @property int discountTicketCode | |||
| */ | |||
| class EnableParam extends BaseParam | |||
| { | |||
| public function rules(): array | |||
| { | |||
| return [ | |||
| ColumnName::SHOP_ID => $this->str([...Rule::id()]), | |||
| ColumnName::QR_SERVICE_PARKING_GROUP_ID => $this->str([...Rule::id()]), | |||
| ColumnName::SHOP_NO => $this->numeric([...Rule::shopNo()]), | |||
| ColumnName::DISCOUNT_TICKET_CODE => $this->numeric([...Rule::discountTicketCode()]), | |||
| ]; | |||
| } | |||
| } | |||
| @@ -0,0 +1,44 @@ | |||
| <?php | |||
| namespace App\Http\Controllers\Web\Shop\Config\Certification; | |||
| use App\Http\Controllers\Web\WebController; | |||
| use App\Models\HtpmsCustomer\QRService\CertificationAvailableSetting; | |||
| use Illuminate\Http\JsonResponse; | |||
| use Illuminate\Http\Request; | |||
| class AddController extends WebController | |||
| { | |||
| public function name(): string | |||
| { | |||
| return "QRサービス券認証設定追加"; | |||
| } | |||
| public function description(): string | |||
| { | |||
| return "QRサービス券認証設定を追加する"; | |||
| } | |||
| public function __construct(protected AddParam $param) | |||
| { | |||
| parent::__construct(); | |||
| } | |||
| protected function run(Request $request): JsonResponse | |||
| { | |||
| $param = $this->param; | |||
| $setting = CertificationAvailableSetting::whereShopId($param->shopId) | |||
| ->whereParkingManagementCode($param->parkingManagementCode) | |||
| ->whereDiscountTicketCode($param->discountTicketCode) | |||
| ->firstOrNew(); | |||
| $setting->fill($param->toArray()); | |||
| $setting->save(); | |||
| return $this->successResponse(); | |||
| } | |||
| } | |||
| @@ -0,0 +1,25 @@ | |||
| <?php | |||
| namespace App\Http\Controllers\Web\Shop\Config\Certification; | |||
| use App\Http\Controllers\Web\BaseParam; | |||
| use App\Http\Controllers\Web\Rule; | |||
| use App\Models\ColumnName; | |||
| /** | |||
| * @property string shopId | |||
| * @property int parkingManagementCode | |||
| * @property int discountTicketCode | |||
| */ | |||
| class AddParam extends BaseParam | |||
| { | |||
| public function rules(): array | |||
| { | |||
| return [ | |||
| ColumnName::SHOP_ID => $this->str([...Rule::id()]), | |||
| ColumnName::QR_SERVICE_PARKING_GROUP_ID => $this->str([...Rule::id()]), | |||
| ColumnName::PARKING_MANAGEMENT_CODE => $this->string([...Rule::parkingManagementCode()]), | |||
| ColumnName::DISCOUNT_TICKET_CODE => $this->numeric([...Rule::discountTicketCode()]), | |||
| ]; | |||
| } | |||
| } | |||
| @@ -0,0 +1,42 @@ | |||
| <?php | |||
| namespace App\Http\Controllers\Web\Shop\Config\Certification; | |||
| use App\Http\Controllers\Web\WebController; | |||
| use App\Models\HtpmsCustomer\QRService\CertificationAvailableSetting; | |||
| use Illuminate\Http\JsonResponse; | |||
| use Illuminate\Http\Request; | |||
| class AddController extends WebController | |||
| { | |||
| public function name(): string | |||
| { | |||
| return "QRサービス券認証設定削除"; | |||
| } | |||
| public function description(): string | |||
| { | |||
| return "QRサービス券認証設定を削除する"; | |||
| } | |||
| public function __construct(protected AddParam $param) | |||
| { | |||
| parent::__construct(); | |||
| } | |||
| protected function run(Request $request): JsonResponse | |||
| { | |||
| $param = $this->param; | |||
| $setting = CertificationAvailableSetting::whereShopId($param->shopId) | |||
| ->whereParkingManagementCode($param->parkingManagementCode) | |||
| ->whereDiscountTicketCode($param->discountTicketCode) | |||
| ->firstOrFail(); | |||
| $setting->delete(); | |||
| return $this->successResponse(); | |||
| } | |||
| } | |||
| @@ -0,0 +1,25 @@ | |||
| <?php | |||
| namespace App\Http\Controllers\Web\Shop\Config\Certification; | |||
| use App\Http\Controllers\Web\BaseParam; | |||
| use App\Http\Controllers\Web\Rule; | |||
| use App\Models\ColumnName; | |||
| /** | |||
| * @property string shopId | |||
| * @property int parkingManagementCode | |||
| * @property int discountTicketCode | |||
| */ | |||
| class RemoveParam extends BaseParam | |||
| { | |||
| public function rules(): array | |||
| { | |||
| return [ | |||
| ColumnName::SHOP_ID => $this->str([...Rule::id()]), | |||
| ColumnName::QR_SERVICE_PARKING_GROUP_ID => $this->str([...Rule::id()]), | |||
| ColumnName::PARKING_MANAGEMENT_CODE => $this->string([...Rule::parkingManagementCode()]), | |||
| ColumnName::DISCOUNT_TICKET_CODE => $this->numeric([...Rule::discountTicketCode()]), | |||
| ]; | |||
| } | |||
| } | |||
| @@ -0,0 +1,56 @@ | |||
| <?php | |||
| namespace App\Http\Controllers\Web\Shop\Config; | |||
| use App\Http\Controllers\Web\WebController; | |||
| use App\Logics\QRService\ChargeLogic; | |||
| use App\Models\HtpmsCustomer\Mst\Shop; | |||
| use App\Models\HtpmsCustomer\QRService\AcquisitionAvailableSetting; | |||
| use App\Models\HtpmsCustomer\QRService\CertificationAvailableSetting; | |||
| use App\Repositories\CertificationAvailableSettingRepository; | |||
| use Illuminate\Http\JsonResponse; | |||
| use Illuminate\Http\Request; | |||
| class ShopConfigDetailController extends WebController | |||
| { | |||
| public function name(): string | |||
| { | |||
| return "店舗設定取得"; | |||
| } | |||
| public function description(): string | |||
| { | |||
| return "店舗設定を取得する"; | |||
| } | |||
| public function __construct(protected ShopConfigDetailParam $param, private CertificationAvailableSettingRepository $certificationRepository) | |||
| { | |||
| parent::__construct(); | |||
| } | |||
| protected function run(Request $request): JsonResponse | |||
| { | |||
| $param = $this->param; | |||
| $shop = Shop::findOrFail($param->shopId); | |||
| $certification = $this->certificationRepository->get([ | |||
| ...$param->toArray(), | |||
| ]); | |||
| $acquisition = AcquisitionAvailableSetting::whereShopId($param->shopId)->first(); | |||
| $shop->save(); | |||
| $res = [ | |||
| "shop_id" => $param->shopId, | |||
| "certification" => $certification, | |||
| "acquisition" => $acquisition, | |||
| ]; | |||
| return $this->successResponse($res); | |||
| } | |||
| } | |||
| @@ -0,0 +1,19 @@ | |||
| <?php | |||
| namespace App\Http\Controllers\Web\Shop\Config; | |||
| use App\Http\Controllers\Web\BaseParam; | |||
| use App\Models\ColumnName; | |||
| /** | |||
| * @property string shopId | |||
| */ | |||
| class ShopConfigDetailParam extends BaseParam | |||
| { | |||
| public function rules(): array | |||
| { | |||
| return [ | |||
| ColumnName::SHOP_ID => $this->str(), | |||
| ]; | |||
| } | |||
| } | |||
| @@ -0,0 +1,72 @@ | |||
| <?php | |||
| namespace App\Repositories; | |||
| use App\Models\ColumnName; | |||
| use App\Models\HtpmsCustomer\Existing\Parking; | |||
| use App\Models\HtpmsCustomer\QRService\CertificationAvailableSetting; | |||
| use App\Repositories\BaseRepository; | |||
| use Illuminate\Database\Query\JoinClause; | |||
| use Illuminate\Support\Collection; | |||
| use Illuminate\Support\Facades\DB; | |||
| class CertificationAvailableSettingRepository extends BaseRepository | |||
| { | |||
| const CONDITION_SHOP_ID = ColumnName::SHOP_ID; | |||
| const TABLE_SETTING = "setting"; | |||
| const TABLE_PARKING = "parking"; | |||
| /** | |||
| * コレクションを取得する | |||
| * | |||
| * @param array $condition | |||
| * @return Collection<int, CertificationAvailableSettingRepositoryData> | |||
| */ | |||
| public function get(array $condition): Collection | |||
| { | |||
| $table = CertificationAvailableSetting::getBuilder(static::TABLE_SETTING); | |||
| $table->leftJoinSub(Parking::getBuilder(), static::TABLE_PARKING, function (JoinClause $join) { | |||
| $join->on( | |||
| $this->makeColumnName([static::TABLE_SETTING, CertificationAvailableSetting::COL_NAME_PARKING_MANAGEMENT_CODE]), | |||
| $this->makeColumnName([static::TABLE_PARKING, Parking::COL_NAME_PARKING_MANAGEMENT_CODE]) | |||
| ); | |||
| }); | |||
| // -----検索条件 | |||
| // GROUP_ID | |||
| $this->where($table, $condition, static::CONDITION_SHOP_ID, $this->makeColumnName([static::TABLE_SETTING, CertificationAvailableSetting::COL_NAME_SHOP_ID])); | |||
| $table->select($this->columns()); | |||
| $main = DB::connection("htpms_customer")->table($table, "main"); | |||
| // ソート | |||
| $this->sort($main, $condition); | |||
| // リミット | |||
| $this->limit($main, $condition); | |||
| return CertificationAvailableSettingRepositoryData::makeList($main->get()); | |||
| } | |||
| private function columns() | |||
| { | |||
| $setting = static::TABLE_SETTING; | |||
| $parking = static::TABLE_PARKING; | |||
| $columns = [ | |||
| $this->makeColumnNameForSelect([$setting, CertificationAvailableSetting::COL_NAME_SHOP_ID]), | |||
| $this->makeColumnNameForSelect([$setting, CertificationAvailableSetting::COL_NAME_PARKING_MANAGEMENT_CODE]), | |||
| $this->makeColumnNameForSelect([$setting, CertificationAvailableSetting::COL_NAME_DISCOUNT_TICKET_CODE]), | |||
| $this->makeColumnNameForSelect([$parking, Parking::COL_NAME_PARKING_NAME], "parking_name"), | |||
| ]; | |||
| return $columns; | |||
| } | |||
| } | |||
| @@ -0,0 +1,14 @@ | |||
| <?php | |||
| namespace App\Repositories; | |||
| /** | |||
| * @property string id | |||
| * @property string name | |||
| * @property ?string parking_management_code | |||
| * @property ?string parking_name | |||
| */ | |||
| class CertificationAvailableSettingRepositoryData extends BaseRepositoryData | |||
| { | |||
| } | |||
| @@ -203,4 +203,5 @@ return array_merge([ | |||
| ], | |||
| 'string' => '文字を入力してください', | |||
| 'unique' => 'すでに使われています', | |||
| 'not_regex' => '正しく入力してください', | |||
| ]); | |||
| @@ -43,6 +43,11 @@ Route::middleware('auth:sanctum')->group(function () { | |||
| RouteHelper::get('/shop/list', App\Http\Controllers\Web\Shop\ShopListController::class); | |||
| RouteHelper::post('/shop/deposit/charge', App\Http\Controllers\Web\Shop\DepositChargeController::class); | |||
| RouteHelper::post('/shop/config', App\Http\Controllers\Web\Shop\Config\ShopConfigController::class); | |||
| RouteHelper::get('/shop/config/detail', App\Http\Controllers\Web\Shop\Config\ShopConfigDetailController::class); | |||
| RouteHelper::post('/shop/config/acquisition/enable', App\Http\Controllers\Web\Shop\Config\Acquisition\EnableController::class); | |||
| RouteHelper::post('/shop/config/acquisition/disable', App\Http\Controllers\Web\Shop\Config\Acquisition\DisableController::class); | |||
| RouteHelper::post('/shop/config/certification/add', App\Http\Controllers\Web\Shop\Config\Certification\AddController::class); | |||
| RouteHelper::post('/shop/config/certification/remove', App\Http\Controllers\Web\Shop\Config\Certification\RemoveParam::class); | |||
| RouteHelper::get('/qr-service/parking-group/list', App\Http\Controllers\Web\QRService\Group\QRServiceGroupListController::class); | |||
| RouteHelper::post('/qr-service/parking-group/register', App\Http\Controllers\Web\QRService\Group\QRServiceGroupRegisterController::class); | |||
| RouteHelper::post('/qr-service/parking-group/parking/add', App\Http\Controllers\Web\QRService\Group\QRServiceGroupAddController::class); | |||