diff --git a/app/Http/Controllers/Web/LoginUser/CustomerDeleteController.php b/app/Http/Controllers/Web/LoginUser/CustomerDeleteController.php new file mode 100644 index 0000000..e08fbe6 --- /dev/null +++ b/app/Http/Controllers/Web/LoginUser/CustomerDeleteController.php @@ -0,0 +1,41 @@ +param->userId) + ->whereRole(UserRole::CUSTOMER) + ->firstOrFail(); + + $this->logic->delete($user); + + return $this->successResponse(); + } +} diff --git a/app/Http/Controllers/Web/LoginUser/CustomerDeleteParam.php b/app/Http/Controllers/Web/LoginUser/CustomerDeleteParam.php new file mode 100644 index 0000000..69a6640 --- /dev/null +++ b/app/Http/Controllers/Web/LoginUser/CustomerDeleteParam.php @@ -0,0 +1,20 @@ + $this->str(...Rule::id()), + ]; + } +} diff --git a/app/Http/Controllers/Web/LoginUser/ShopDeleteController.php b/app/Http/Controllers/Web/LoginUser/ShopDeleteController.php new file mode 100644 index 0000000..c9393e9 --- /dev/null +++ b/app/Http/Controllers/Web/LoginUser/ShopDeleteController.php @@ -0,0 +1,42 @@ +param->userId) + ->whereRole(UserRole::SHOP) + ->whereCustomerCode($this->sessionUser->customerCode()) + ->firstOrFail(); + + $this->logic->delete($user); + + return $this->successResponse(); + } +} diff --git a/app/Http/Controllers/Web/LoginUser/ShopDeleteParam.php b/app/Http/Controllers/Web/LoginUser/ShopDeleteParam.php new file mode 100644 index 0000000..00ac219 --- /dev/null +++ b/app/Http/Controllers/Web/LoginUser/ShopDeleteParam.php @@ -0,0 +1,20 @@ + $this->str(...Rule::id()), + ]; + } +} diff --git a/app/Http/Controllers/Web/Shop/ShopDeleteController.php b/app/Http/Controllers/Web/Shop/ShopDeleteController.php new file mode 100644 index 0000000..0917e4d --- /dev/null +++ b/app/Http/Controllers/Web/Shop/ShopDeleteController.php @@ -0,0 +1,42 @@ +param; + + $shop = Shop::whereId($param->shopId) + ->firstOrFail(); + + $this->logic->delete($shop); + + + return $this->successResponse(); + } +} diff --git a/app/Http/Controllers/Web/Shop/ShopDeleteParam.php b/app/Http/Controllers/Web/Shop/ShopDeleteParam.php new file mode 100644 index 0000000..79b7252 --- /dev/null +++ b/app/Http/Controllers/Web/Shop/ShopDeleteParam.php @@ -0,0 +1,20 @@ + $this->str([...Rule::id()]), + ]; + } +} diff --git a/app/Logics/LoginUser/LoginUserLogic.php b/app/Logics/LoginUser/LoginUserLogic.php index d4fbbe9..3a64c21 100644 --- a/app/Logics/LoginUser/LoginUserLogic.php +++ b/app/Logics/LoginUser/LoginUserLogic.php @@ -39,6 +39,11 @@ class LoginUserLogic $user->save(); } + public function delete(User $user) + { + $user->delete(); + } + private function checkEmailForCreate() { diff --git a/app/Logics/Shop/ShopLogic.php b/app/Logics/Shop/ShopLogic.php index e99ccf9..cfd2390 100644 --- a/app/Logics/Shop/ShopLogic.php +++ b/app/Logics/Shop/ShopLogic.php @@ -32,4 +32,13 @@ class ShopLogic return $shop; } + + public function delete(Shop $shop) + { + $shop->delete(); + + foreach ($shop->users as $user) { + $user->delete(); + } + } } diff --git a/app/Models/HtpmsCustomer/Mst/Shop.php b/app/Models/HtpmsCustomer/Mst/Shop.php index 5b8982f..67b815b 100644 --- a/app/Models/HtpmsCustomer/Mst/Shop.php +++ b/app/Models/HtpmsCustomer/Mst/Shop.php @@ -3,6 +3,8 @@ namespace App\Models\HtpmsCustomer\Mst; use App\Models\HtpmsCustomer\HtpmsCustomerAppModel; +use App\Models\User; +use Illuminate\Database\Eloquent\Relations\HasMany; /** * 店舗マスタ @@ -22,4 +24,9 @@ class Shop extends HtpmsCustomerAppModel { return "店舗マスタ"; } + + public function users(): HasMany + { + return $this->hasMany(User::class); + } } diff --git a/app/Models/User.php b/app/Models/User.php index f04633a..3618180 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -78,7 +78,8 @@ class User extends Authenticatable implements IModelFeature public static function getBuilder(string $name = 'main'): Builder { $instance = new static(); - return DB::connection($instance->getConnectionName())->table(static::getTableName(), $name); + return DB::connection($instance->getConnectionName())->table(static::getTableName(), $name) + ->whereNull($name . "." . self::COL_NAME_DELETED_AT); } public static function getTableName(): string diff --git a/routes/api.php b/routes/api.php index a66137c..128dc04 100644 --- a/routes/api.php +++ b/routes/api.php @@ -32,17 +32,20 @@ Route::middleware('auth:sanctum')->group(function () { RouteHelper::get('/customer/list', App\Http\Controllers\Web\Customer\CustomerListController::class); RouteHelper::get('/login-user/customer/list', App\Http\Controllers\Web\LoginUser\CustomerListController::class); RouteHelper::post('/login-user/customer/register', App\Http\Controllers\Web\LoginUser\CustomerRegisterController::class); + RouteHelper::post('/login-user/customer/delete', App\Http\Controllers\Web\LoginUser\CustomerDeleteController::class); }); // 運営会社ルート Route::middleware(RouteHelper::role([UserRole::CUSTOMER]))->group(function () { RouteHelper::get('/login-user/shop/list', App\Http\Controllers\Web\LoginUser\ShopListController::class); RouteHelper::post('/login-user/shop/register', App\Http\Controllers\Web\LoginUser\ShopRegisterController::class); + RouteHelper::post('/login-user/shop/delete', App\Http\Controllers\Web\LoginUser\ShopDeleteController::class); 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); + RouteHelper::post('/shop/delete', App\Http\Controllers\Web\Shop\ShopDeleteController::class); 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);