| @@ -0,0 +1,50 @@ | |||
| <?php | |||
| namespace App\Http\Controllers\Web\Parking; | |||
| use App\Http\Controllers\Web\WebController; | |||
| use App\Models\ColumnName; | |||
| use App\Models\HtpmsCustomer\Existing\DiscountTicket; | |||
| use App\Models\HtpmsCustomer\Existing\Parking; | |||
| use Illuminate\Http\JsonResponse; | |||
| use Illuminate\Http\Request; | |||
| class DiscountTicketListController extends WebController | |||
| { | |||
| public function name(): string | |||
| { | |||
| return "駐車場一覧取得"; | |||
| } | |||
| public function description(): string | |||
| { | |||
| return "駐車場一覧を取得する"; | |||
| } | |||
| public function __construct(protected DiscountTicketListParam $param) | |||
| { | |||
| parent::__construct(); | |||
| } | |||
| protected function run(Request $request): JsonResponse | |||
| { | |||
| $param = $this->param; | |||
| $parking = Parking::whereParkCode($param->parkingManagementCode) | |||
| ->firstOrFail(); | |||
| $res = [ | |||
| "list" => DiscountTicket::getBuilder() | |||
| ->where(DiscountTicket::COL_NAME_PARK_ID, $parking->id) | |||
| ->select([ | |||
| sprintf("%s as %s", DiscountTicket::COL_NAME_DISCOUNT_TICKET_CODE, ColumnName::DISCOUNT_TICKET_CODE), | |||
| sprintf("%s as %s", DiscountTicket::COL_NAME_TICKET_NAME, "ticket_name"), | |||
| ])->get() | |||
| ]; | |||
| return $this->successResponse($res); | |||
| } | |||
| } | |||
| @@ -0,0 +1,20 @@ | |||
| <?php | |||
| namespace App\Http\Controllers\Web\Parking; | |||
| use App\Http\Controllers\Web\BaseParam; | |||
| use App\Http\Controllers\Web\Rule; | |||
| use App\Models\ColumnName; | |||
| /** | |||
| * @property string parkingManagementCode | |||
| */ | |||
| class DiscountTicketListParam extends BaseParam | |||
| { | |||
| public function rules(): array | |||
| { | |||
| return [ | |||
| ColumnName::PARKING_MANAGEMENT_CODE => $this->str([...Rule::parkingManagementCode()]), | |||
| ]; | |||
| } | |||
| } | |||
| @@ -8,7 +8,7 @@ use App\Models\ColumnName; | |||
| /** | |||
| * @property string shopId | |||
| * @property int parkingManagementCode | |||
| * @property string parkingManagementCode | |||
| * @property int discountTicketCode | |||
| */ | |||
| class AddParam extends BaseParam | |||
| @@ -17,8 +17,7 @@ class AddParam extends BaseParam | |||
| { | |||
| 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::PARKING_MANAGEMENT_CODE => $this->str([...Rule::parkingManagementCode()]), | |||
| ColumnName::DISCOUNT_TICKET_CODE => $this->numeric([...Rule::discountTicketCode()]), | |||
| ]; | |||
| } | |||
| @@ -0,0 +1,51 @@ | |||
| <?php | |||
| namespace App\Http\Controllers\Web\Shop\Config\Certification; | |||
| use App\Http\Controllers\Web\WebController; | |||
| use App\Models\HtpmsCustomer\Mst\ShopNoRelation; | |||
| use App\Models\HtpmsCustomer\QRService\CertificationAvailableSetting; | |||
| use Illuminate\Http\JsonResponse; | |||
| use Illuminate\Http\Request; | |||
| class DeleteController extends WebController | |||
| { | |||
| public function name(): string | |||
| { | |||
| return "QRサービス券認証設定全削除"; | |||
| } | |||
| public function description(): string | |||
| { | |||
| return "QRサービス券認証設定を全削除する"; | |||
| } | |||
| public function __construct(protected DeleteParam $param) | |||
| { | |||
| parent::__construct(); | |||
| } | |||
| protected function run(Request $request): JsonResponse | |||
| { | |||
| $param = $this->param; | |||
| $settings = CertificationAvailableSetting::whereShopId($param->shopId) | |||
| ->whereParkingManagementCode($param->parkingManagementCode) | |||
| ->get(); | |||
| $relation = ShopNoRelation::whereShopId($param->shopId) | |||
| ->whereParkingManagementCode($param->parkingManagementCode) | |||
| ->firstOrFail(); | |||
| foreach ($settings as $setting) { | |||
| $setting->delete(); | |||
| } | |||
| $relation->delete(); | |||
| return $this->successResponse(); | |||
| } | |||
| } | |||
| @@ -0,0 +1,22 @@ | |||
| <?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 string parkingManagementCode | |||
| */ | |||
| class DeleteParam extends BaseParam | |||
| { | |||
| public function rules(): array | |||
| { | |||
| return [ | |||
| ColumnName::SHOP_ID => $this->str([...Rule::id()]), | |||
| ColumnName::PARKING_MANAGEMENT_CODE => $this->str([...Rule::parkingManagementCode()]), | |||
| ]; | |||
| } | |||
| } | |||
| @@ -0,0 +1,52 @@ | |||
| <?php | |||
| namespace App\Http\Controllers\Web\Shop\Config\Certification; | |||
| use App\Exceptions\ParamException; | |||
| use App\Http\Controllers\Web\WebController; | |||
| use App\Models\ColumnName; | |||
| use App\Models\HtpmsCustomer\Mst\ShopNoRelation; | |||
| use Illuminate\Http\JsonResponse; | |||
| use Illuminate\Http\Request; | |||
| class RegisterController extends WebController | |||
| { | |||
| public function name(): string | |||
| { | |||
| return "QRサービス券認証設定新規登録"; | |||
| } | |||
| public function description(): string | |||
| { | |||
| return "QRサービス券認証設定を新規登録する"; | |||
| } | |||
| public function __construct(protected RegisterParam $param) | |||
| { | |||
| parent::__construct(); | |||
| } | |||
| protected function run(Request $request): JsonResponse | |||
| { | |||
| $param = $this->param; | |||
| // 重複チェック | |||
| if (ShopNoRelation::whereShopId($param->shopId) | |||
| ->whereParkingManagementCode($param->parkingManagementCode) | |||
| ->exists() | |||
| ) { | |||
| ParamException::throw(ColumnName::PARKING_MANAGEMENT_CODE, trans("validation.exists")); | |||
| } | |||
| $relation = new ShopNoRelation(); | |||
| $relation->shop_id = $param->shopId; | |||
| $relation->parking_management_code = $param->parkingManagementCode; | |||
| $relation->shop_no = $param->shopNo; | |||
| $relation->save(); | |||
| return $this->successResponse(); | |||
| } | |||
| } | |||
| @@ -0,0 +1,24 @@ | |||
| <?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 string parkingManagementCode | |||
| * @property int shopNo | |||
| */ | |||
| class RegisterParam extends BaseParam | |||
| { | |||
| public function rules(): array | |||
| { | |||
| return [ | |||
| ColumnName::SHOP_ID => $this->str([...Rule::id()]), | |||
| ColumnName::PARKING_MANAGEMENT_CODE => $this->str([...Rule::parkingManagementCode()]), | |||
| ColumnName::SHOP_NO => $this->numeric([...Rule::shopNo()]), | |||
| ]; | |||
| } | |||
| } | |||
| @@ -7,7 +7,7 @@ use App\Models\HtpmsCustomer\QRService\CertificationAvailableSetting; | |||
| use Illuminate\Http\JsonResponse; | |||
| use Illuminate\Http\Request; | |||
| class AddController extends WebController | |||
| class RemoveController extends WebController | |||
| { | |||
| public function name(): string | |||
| @@ -21,7 +21,7 @@ class AddController extends WebController | |||
| } | |||
| public function __construct(protected AddParam $param) | |||
| public function __construct(protected RemoveParam $param) | |||
| { | |||
| parent::__construct(); | |||
| } | |||
| @@ -8,7 +8,7 @@ use App\Models\ColumnName; | |||
| /** | |||
| * @property string shopId | |||
| * @property int parkingManagementCode | |||
| * @property string parkingManagementCode | |||
| * @property int discountTicketCode | |||
| */ | |||
| class RemoveParam extends BaseParam | |||
| @@ -17,8 +17,7 @@ class RemoveParam extends BaseParam | |||
| { | |||
| 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::PARKING_MANAGEMENT_CODE => $this->str([...Rule::parkingManagementCode()]), | |||
| ColumnName::DISCOUNT_TICKET_CODE => $this->numeric([...Rule::discountTicketCode()]), | |||
| ]; | |||
| } | |||
| @@ -0,0 +1,43 @@ | |||
| <?php | |||
| namespace App\Http\Controllers\Web\Shop\Config\Certification; | |||
| use App\Http\Controllers\Web\WebController; | |||
| use App\Models\HtpmsCustomer\Mst\ShopNoRelation; | |||
| use Illuminate\Http\JsonResponse; | |||
| use Illuminate\Http\Request; | |||
| class UpdateController extends WebController | |||
| { | |||
| public function name(): string | |||
| { | |||
| return "QRサービス券認証設定更新"; | |||
| } | |||
| public function description(): string | |||
| { | |||
| return "QRサービス券認証設定を更新する"; | |||
| } | |||
| public function __construct(protected UpdateParam $param) | |||
| { | |||
| parent::__construct(); | |||
| } | |||
| protected function run(Request $request): JsonResponse | |||
| { | |||
| $param = $this->param; | |||
| $relation = ShopNoRelation::whereShopId($param->shopId) | |||
| ->whereParkingManagementCode($param->parkingManagementCode) | |||
| ->firstOrFail(); | |||
| $relation->shop_no = $param->shopNo; | |||
| $relation->save(); | |||
| return $this->successResponse(); | |||
| } | |||
| } | |||
| @@ -0,0 +1,24 @@ | |||
| <?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 string parkingManagementCode | |||
| * @property int shopNo | |||
| */ | |||
| class UpdateParam extends BaseParam | |||
| { | |||
| public function rules(): array | |||
| { | |||
| return [ | |||
| ColumnName::SHOP_ID => $this->str([...Rule::id()]), | |||
| ColumnName::PARKING_MANAGEMENT_CODE => $this->str([...Rule::parkingManagementCode()]), | |||
| ColumnName::SHOP_NO => $this->numeric([...Rule::shopNo()]), | |||
| ]; | |||
| } | |||
| } | |||
| @@ -0,0 +1,37 @@ | |||
| <?php | |||
| namespace App\Models\HtpmsCustomer\Existing; | |||
| use App\Util\DateUtil; | |||
| use Illuminate\Database\Eloquent\Model; | |||
| use Illuminate\Database\Query\Builder; | |||
| use Illuminate\Support\Facades\DB; | |||
| class DiscountTicket extends Model | |||
| { | |||
| const COL_NAME_PARK_ID = 'park_id'; | |||
| const COL_NAME_TICKET_NAME = 'ticketname'; | |||
| const COL_NAME_DISCOUNT_TICKET_CODE = 'lineno'; | |||
| protected $connection = 'htpms_customer'; | |||
| protected $table = 'tbl2_discountticket'; | |||
| protected $fillable = []; // 参照専用 | |||
| protected $visible = [ | |||
| self::COL_NAME_TICKET_NAME, | |||
| self::COL_NAME_DISCOUNT_TICKET_CODE, | |||
| ]; | |||
| public static function getBuilder(string $name = 'main'): Builder | |||
| { | |||
| $now = DateUtil::now(); | |||
| $instance = new static(); | |||
| return DB::connection($instance->getConnectionName())->table(static::getTableName(), $name); | |||
| } | |||
| public static function getTableName(): string | |||
| { | |||
| return (new static)->getTable(); | |||
| } | |||
| } | |||
| @@ -13,6 +13,6 @@ class ShopNoRelationHistory extends HtpmsCustomerHistoryModel | |||
| public function getModelName(): string | |||
| { | |||
| return "店舗マスタ履歴"; | |||
| return "店舗番号紐づけ履歴"; | |||
| } | |||
| } | |||
| @@ -4,6 +4,7 @@ namespace App\Repositories; | |||
| use App\Models\ColumnName; | |||
| use App\Models\HtpmsCustomer\Existing\Parking; | |||
| use App\Models\HtpmsCustomer\Mst\ShopNoRelation; | |||
| use App\Models\HtpmsCustomer\QRService\CertificationAvailableSetting; | |||
| use App\Repositories\BaseRepository; | |||
| use Illuminate\Database\Query\JoinClause; | |||
| @@ -16,6 +17,7 @@ class CertificationAvailableSettingRepository extends BaseRepository | |||
| const CONDITION_SHOP_ID = ColumnName::SHOP_ID; | |||
| const TABLE_SETTING = "setting"; | |||
| const TABLE_RELATION = "relation"; | |||
| const TABLE_PARKING = "parking"; | |||
| @@ -28,21 +30,29 @@ class CertificationAvailableSettingRepository extends BaseRepository | |||
| public function get(array $condition): Collection | |||
| { | |||
| $table = CertificationAvailableSetting::getBuilder(static::TABLE_SETTING); | |||
| $table = ShopNoRelation::getBuilder(static::TABLE_RELATION); | |||
| $table->leftJoinSub(CertificationAvailableSetting::getBuilder(), static::TABLE_SETTING, function (JoinClause $join) { | |||
| $join->on( | |||
| $this->makeColumnName([static::TABLE_RELATION, ShopNoRelation::COL_NAME_PARKING_MANAGEMENT_CODE]), | |||
| $this->makeColumnName([static::TABLE_SETTING, CertificationAvailableSetting::COL_NAME_PARKING_MANAGEMENT_CODE]) | |||
| ); | |||
| }); | |||
| $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_RELATION, ShopNoRelation::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])); | |||
| $this->where($table, $condition, static::CONDITION_SHOP_ID, $this->makeColumnName([static::TABLE_RELATION, ShopNoRelation::COL_NAME_SHOP_ID])); | |||
| $table->select($this->columns()); | |||
| $table->orderBy($this->makeColumnName([self::TABLE_PARKING, Parking::COL_NAME_PARKING_MANAGEMENT_CODE])); | |||
| $table->orderBy($this->makeColumnName([self::TABLE_SETTING, CertificationAvailableSetting::COL_NAME_DISCOUNT_TICKET_CODE])); | |||
| $main = DB::connection("htpms_customer")->table($table, "main"); | |||
| @@ -52,17 +62,18 @@ class CertificationAvailableSettingRepository extends BaseRepository | |||
| // リミット | |||
| $this->limit($main, $condition); | |||
| return CertificationAvailableSettingRepositoryData::makeList($main->get()); | |||
| } | |||
| private function columns() | |||
| { | |||
| $setting = static::TABLE_SETTING; | |||
| $relation = static::TABLE_RELATION; | |||
| $parking = static::TABLE_PARKING; | |||
| $columns = [ | |||
| $this->makeColumnNameForSelect([$setting, CertificationAvailableSetting::COL_NAME_SHOP_ID]), | |||
| $this->makeColumnNameForSelect([$setting, CertificationAvailableSetting::COL_NAME_PARKING_MANAGEMENT_CODE]), | |||
| $this->makeColumnNameForSelect([$relation, ShopNoRelation::COL_NAME_SHOP_ID]), | |||
| $this->makeColumnNameForSelect([$relation, ShopNoRelation::COL_NAME_PARKING_MANAGEMENT_CODE]), | |||
| $this->makeColumnNameForSelect([$relation, ShopNoRelation::COL_NAME_SHOP_NO]), | |||
| $this->makeColumnNameForSelect([$setting, CertificationAvailableSetting::COL_NAME_DISCOUNT_TICKET_CODE]), | |||
| $this->makeColumnNameForSelect([$parking, Parking::COL_NAME_PARKING_NAME], "parking_name"), | |||
| ]; | |||
| @@ -74,7 +74,6 @@ class QRServiceParkingGroupRepository extends BaseRepository | |||
| // リミット | |||
| $this->limit($main, $condition); | |||
| return QRServiceParkingGroupRepositoryData::makeList($main->get()); | |||
| } | |||
| @@ -22,6 +22,7 @@ return new class extends Migration | |||
| ->shopId() | |||
| ->parkinManagementCode() | |||
| ->shopNo(); | |||
| $helper->index(1, [ColumnName::PARKING_MANAGEMENT_CODE]); | |||
| }; | |||
| MigrationHelper::createTable("tbl3_mst_shop_no_relations", $schema, "HTD 店舗コード紐づけ"); | |||
| @@ -37,6 +37,7 @@ Route::middleware('auth:sanctum')->group(function () { | |||
| // 運営会社ルート | |||
| Route::middleware(RouteHelper::role([UserRole::CUSTOMER]))->group(function () { | |||
| RouteHelper::get('/parking/list', App\Http\Controllers\Web\Parking\ParkingListController::class); | |||
| RouteHelper::get('/parking/discount-ticket/list', App\Http\Controllers\Web\Parking\DiscountTicketListController::class); | |||
| RouteHelper::post('/role/switch/shop', App\Http\Controllers\Web\Auth\SwitchShopController::class); | |||
| RouteHelper::post('/login-user/shop/register', App\Http\Controllers\Web\LoginUser\ShopRegisterController::class); | |||
| RouteHelper::post('/shop/register', App\Http\Controllers\Web\Shop\ShopRegisterController::class); | |||
| @@ -44,10 +45,13 @@ Route::middleware('auth:sanctum')->group(function () { | |||
| 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/certification/register', App\Http\Controllers\Web\Shop\Config\Certification\RegisterController::class); | |||
| RouteHelper::post('/shop/config/certification/update', App\Http\Controllers\Web\Shop\Config\Certification\UpdateController::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\RemoveController::class); | |||
| RouteHelper::post('/shop/config/certification/delete', App\Http\Controllers\Web\Shop\Config\Certification\DeleteController::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); | |||