diff --git a/app/Classes/Modules/Accounts/ControllersLogic/UpdateUserLogic.php b/app/Classes/Modules/Accounts/ControllersLogic/UpdateUserLogic.php index d3ce528d..912d5e31 100644 --- a/app/Classes/Modules/Accounts/ControllersLogic/UpdateUserLogic.php +++ b/app/Classes/Modules/Accounts/ControllersLogic/UpdateUserLogic.php @@ -4,7 +4,7 @@ namespace App\Classes\Modules\Accounts\ControllersLogic; use App\Classes\General\Abstracts\AbstractControllerLogic; -use App\Classes\Modules\Accounts\Services\UpdatesUser; +use App\Classes\Modules\Accounts\Services\UpdatesUserFullName; use App\Classes\Modules\Accounts\Services\FetchesUser; use App\Classes\Modules\Accounts\Standards\Rules\CanUpdateUser; use App\Classes\Modules\Accounts\DataTransferObjects\FullNameObject; @@ -29,8 +29,8 @@ class UpdateUserLogic extends AbstractControllerLogic /** @var CanUpdateUser */ private $canUpdateUser; - /** @var UpdatesUser */ - private $updatesUser; + /** @var UpdatesUserFullName */ + private $updatesUserFullName; /** @var FetchesUser */ private $fetchesUser; @@ -38,13 +38,13 @@ class UpdateUserLogic extends AbstractControllerLogic /** * UpdateAddressLogic constructor. * @param CanUpdateUser $canUpdateUser - * @param UpdatesUser $updatesUser + * @param UpdatesUserFullName $updatesUserFullName * @param FetchesUser $fetchesUSer */ - public function __construct(CanUpdateUser $canUpdateUser, UpdatesUser $updatesUser, FetchesUser $fetchesUser) + public function __construct(CanUpdateUser $canUpdateUser, UpdatesUserFullName $updatesUserFullName, FetchesUser $fetchesUser) { $this->canUpdateUser = $canUpdateUser; - $this->updatesUser = $updatesUser; + $this->updatesUserFullName = $updatesUserFullName; $this->fetchesUser = $fetchesUser; } @@ -64,7 +64,7 @@ class UpdateUserLogic extends AbstractControllerLogic $query = $this->fetchesUser->execute(['id' => $request->route('id')]); - $query = $this->updatesUser->execute($query, $object); + $query = $this->updatesUserFullName->execute($query, $object); return $this->resourceResponse(new UserResource($query)); diff --git a/app/Classes/Modules/Accounts/ControllersLogic/UpdateUserRoleLogic.php b/app/Classes/Modules/Accounts/ControllersLogic/UpdateUserRoleLogic.php new file mode 100644 index 00000000..934711e7 --- /dev/null +++ b/app/Classes/Modules/Accounts/ControllersLogic/UpdateUserRoleLogic.php @@ -0,0 +1,71 @@ + 'Updated Admin Role', + 'message' => 'You have successfully updated the Admin Role' + ]; + } + + /** @var CanUpdateUser */ + private $canUpdateUser; + + /** @var UpdatesUser */ + private $updatesUser; + + /** @var FetchesUser */ + private $fetchesUser; + + /** + * UpdateAddressLogic constructor. + * @param CanUpdateUser $canUpdateUser + * @param UpdatesUser $updatesUser + * @param FetchesUser $fetchesUSer + */ + public function __construct(CanUpdateUser $canUpdateUser, UpdatesUser $updatesUser, FetchesUser $fetchesUser) + { + $this->canUpdateUser = $canUpdateUser; + $this->updatesUser = $updatesUser; + $this->fetchesUser = $fetchesUser; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + $query = $this->fetchesUser->execute(['id' => $request->route('id')]); + + $object = new UserObject($query->name, $request->input('type')); + + $this->canUpdateUser->passes($object); + + $query = $this->updatesUser->execute($query, $object); + + return $this->resourceResponse(new UserResource($query)); + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Accounts/DataTransferObjects/UserObject.php b/app/Classes/Modules/Accounts/DataTransferObjects/UserObject.php new file mode 100644 index 00000000..4ebbc22c --- /dev/null +++ b/app/Classes/Modules/Accounts/DataTransferObjects/UserObject.php @@ -0,0 +1,40 @@ +name = $name; + $this->type = $type; + } + + /** + * @return string + */ + public function getName(): string + { + return $this->name; + } + + /** + * @return int + */ + public function getType(): int + { + return $this->type; + } +} diff --git a/app/Classes/Modules/Accounts/Services/UpdatesUser.php b/app/Classes/Modules/Accounts/Services/UpdatesUser.php index dfccbae7..f7c6cfab 100644 --- a/app/Classes/Modules/Accounts/Services/UpdatesUser.php +++ b/app/Classes/Modules/Accounts/Services/UpdatesUser.php @@ -3,7 +3,7 @@ namespace App\Classes\Modules\Accounts\Services; use App\Classes\General\Eloquent\AbstractUpdateRecord; -use App\Classes\Modules\Accounts\DataTransferObjects\FullNameObject; +use App\Classes\Modules\Accounts\DataTransferObjects\UserObject; use App\Models\User; class UpdatesUser extends AbstractUpdateRecord @@ -11,13 +11,14 @@ class UpdatesUser extends AbstractUpdateRecord /** * @param User $model - * @param FullNameObject $object + * @param UserObject $object * @return \Illuminate\Database\Eloquent\Model * @throws \App\Classes\Exceptions\MalformedRequestException */ - public function execute(User $model, FullNameObject $object) { + public function execute(User $model, UserObject $object) { $model->name = $object->getName(); + $model->type = $object->getType(); return $this->handler($model); } diff --git a/app/Classes/Modules/Accounts/Services/UpdatesUserFullName.php b/app/Classes/Modules/Accounts/Services/UpdatesUserFullName.php new file mode 100644 index 00000000..9836e695 --- /dev/null +++ b/app/Classes/Modules/Accounts/Services/UpdatesUserFullName.php @@ -0,0 +1,24 @@ +name = $object->getName(); + return $this->handler($model); + + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Accounts/UpdateUserRoleController.php b/app/Http/Controllers/Accounts/UpdateUserRoleController.php new file mode 100644 index 00000000..aef992c8 --- /dev/null +++ b/app/Http/Controllers/Accounts/UpdateUserRoleController.php @@ -0,0 +1,19 @@ +execute($request); + } +} \ No newline at end of file diff --git a/routes/account.php b/routes/account.php index 7d12785f..20d9cf4f 100644 --- a/routes/account.php +++ b/routes/account.php @@ -41,6 +41,8 @@ Route::group(['prefix' => 'account', 'namespace' => 'Accounts', 'as' => 'account Route::put('/update/{id}', 'UpdateUserController@update')->name('update'); Route::post('/admin/create', 'CreateAdminUserController@create')->name('admin.create'); Route::delete('/delete/{id}', 'DeleteUserController@delete')->name('delete'); + + Route::put('/update/{id}/role', 'UpdateUserRoleController@update')->name('update.role'); }); });