diff --git a/app/Classes/General/Eloquent/Filters/EmailLike.php b/app/Classes/General/Eloquent/Filters/EmailLike.php
new file mode 100644
index 00000000..2151b1c8
--- /dev/null
+++ b/app/Classes/General/Eloquent/Filters/EmailLike.php
@@ -0,0 +1,20 @@
+where('email', 'LIKE', '%'.$value.'%');
+ }
+
+}
\ No newline at end of file
diff --git a/app/Classes/General/Eloquent/Filters/TypeIn.php b/app/Classes/General/Eloquent/Filters/TypeIn.php
new file mode 100644
index 00000000..3a064f7a
--- /dev/null
+++ b/app/Classes/General/Eloquent/Filters/TypeIn.php
@@ -0,0 +1,20 @@
+whereIn('type', $value);
+ }
+
+}
\ No newline at end of file
diff --git a/app/Classes/Modules/Accounts/ControllersLogic/UpdateUserLogic.php b/app/Classes/Modules/Accounts/ControllersLogic/UpdateUserLogic.php
index 7837c75e..6e252883 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;
@@ -41,10 +41,10 @@ class UpdateUserLogic extends AbstractControllerLogic
* @param UpdatesUser $updatesUser
* @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..a1309a67
--- /dev/null
+++ b/app/Classes/Modules/Accounts/ControllersLogic/UpdateUserRoleLogic.php
@@ -0,0 +1,78 @@
+ '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,
+ $query->email,
+ $query->password,
+ $query->password,
+ $request->input('type'),
+ $query->status,
+ );
+
+ $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/Services/UpdatesUser.php b/app/Classes/Modules/Accounts/Services/UpdatesUser.php
index f872b234..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
@@ -15,9 +15,10 @@ class UpdatesUser extends AbstractUpdateRecord
* @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/Classes/ValueObjects/Constants/RoleTypes.php b/app/Classes/ValueObjects/Constants/RoleTypes.php
index ec5fe961..11d65564 100644
--- a/app/Classes/ValueObjects/Constants/RoleTypes.php
+++ b/app/Classes/ValueObjects/Constants/RoleTypes.php
@@ -24,4 +24,11 @@ final class RoleTypes
public const DESTINATION_ACCOUNT_ADMIN = 7;
+ public const USER_TYPE_ID = [
+ self::SHADOW_ADMIN => "Shadow Admin",
+ self::SUPER_ADMIN => "Super Admin",
+ self::ADMIN => "Admin",
+ self::USER => "User",
+ ];
+
}
\ 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/app/Http/Resources/UserResource.php b/app/Http/Resources/UserResource.php
index 3d052d02..97f4ab38 100644
--- a/app/Http/Resources/UserResource.php
+++ b/app/Http/Resources/UserResource.php
@@ -2,6 +2,7 @@
namespace App\Http\Resources;
+use App\Classes\ValueObjects\Constants\RoleTypes;
use Illuminate\Http\Resources\Json\JsonResource;
class UserResource extends JsonResource
@@ -14,11 +15,14 @@ class UserResource extends JsonResource
*/
public function toArray($request)
{
+ $userTypeArray = RoleTypes::USER_TYPE_ID;
+
return [
'id' => $this->id,
'name' => $this->name,
'email' => $this->email,
'type' => (int) $this->type,
+ 'type_name' => ($userTypeArray[(int) $this->type]),
'status' => (int) $this->status
];
}
diff --git a/resources/assets/vue/components/companies/forms/ChangeAdminRoleTypeFormComponent.vue b/resources/assets/vue/components/companies/forms/ChangeAdminRoleTypeFormComponent.vue
new file mode 100644
index 00000000..1705e3fa
--- /dev/null
+++ b/resources/assets/vue/components/companies/forms/ChangeAdminRoleTypeFormComponent.vue
@@ -0,0 +1,63 @@
+
+ Edit Admin Role Type
+