From e12c48b829ae25c51b9e1ccc9aae7cacf3fffaef Mon Sep 17 00:00:00 2001 From: Vincent BRIDIER Date: Thu, 17 Apr 2025 17:05:50 +0200 Subject: [PATCH] feat: Add Gitlab id on user model --- app/Enums/Users/GitlabUsersEnum.php | 10 ++++-- app/Http/Controllers/Bo/TicketController.php | 8 ++++- .../Requests/Bo/Users/StoreUserRequest.php | 4 ++- app/Models/User.php | 3 +- ...17_162711_add_gitlab_id_to_users_table.php | 36 +++++++++++++++++++ .../bo/pages/users/form-inputs.blade.php | 19 ++++++++++ 6 files changed, 74 insertions(+), 6 deletions(-) create mode 100644 database/migrations/2025_04_17_162711_add_gitlab_id_to_users_table.php diff --git a/app/Enums/Users/GitlabUsersEnum.php b/app/Enums/Users/GitlabUsersEnum.php index 3a8730f..43cbcdd 100644 --- a/app/Enums/Users/GitlabUsersEnum.php +++ b/app/Enums/Users/GitlabUsersEnum.php @@ -8,13 +8,17 @@ enum GitlabUsersEnum: int { use BaseEnum; - // Each user is associated to his ID on gitlab. - case nicolas = 24; + /** + * Each user is associated to his ID on gitlab. + * + * 24 is Nicolas Demangeat + */ + case default = 24; /** * Optionnal labels definition */ private const LABELS = [ - self::nicolas->name => "Nicolas Demangeat", + self::default->name => "Default", ]; } diff --git a/app/Http/Controllers/Bo/TicketController.php b/app/Http/Controllers/Bo/TicketController.php index 6840550..4b9d016 100644 --- a/app/Http/Controllers/Bo/TicketController.php +++ b/app/Http/Controllers/Bo/TicketController.php @@ -755,6 +755,12 @@ class TicketController extends Controller TicketTypeEnum::evolution, TicketTypeEnum::newsletter => 'c-feature', }; + $assigneeId = match ($ticket->type) { + TicketTypeEnum::bug => GitlabUsersEnum::default->value, + TicketTypeEnum::evolution, + TicketTypeEnum::newsletter => $ticket->site->projectManager?->gitlab_id ?? GitlabUsersEnum::default->value + }; + try { foreach ($ticket->getFiles() as $key => $file) { if (!\is_null($file)) { @@ -770,7 +776,7 @@ class TicketController extends Controller 'c-support', $cLabel ]), - 'assignee_id' => GitlabUsersEnum::nicolas, + 'assignee_id' => $assigneeId, ]); } catch (\Exception $e) { \report($e); diff --git a/app/Http/Requests/Bo/Users/StoreUserRequest.php b/app/Http/Requests/Bo/Users/StoreUserRequest.php index ad54e3d..0faab0e 100644 --- a/app/Http/Requests/Bo/Users/StoreUserRequest.php +++ b/app/Http/Requests/Bo/Users/StoreUserRequest.php @@ -34,7 +34,8 @@ class StoreUserRequest extends FormRequest Rule::in(collect(RoleEnum::cases())->pluck('value')->all()), ], 'sites' => 'nullable|array', - 'sites.*.id' => 'required|exists:sites,id' + 'sites.*.id' => 'required|exists:sites,id', + 'gitlab_id' => 'nullable|integer|unique:users,gitlab_id' ]; } @@ -51,6 +52,7 @@ class StoreUserRequest extends FormRequest 'role' => trans('Rôle de l\'utilisateur'), 'sites' => trans('Sites associés à l\'utilisateur'), 'sites.*.id' => trans('Élément parmis les sites associés à l\'utilisateur'), + 'gitlab_id' => trans("ID de l'utilisateur Gitlab") ]; } } diff --git a/app/Models/User.php b/app/Models/User.php index 1e3a31c..4b1a499 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -45,7 +45,8 @@ class User extends Authenticatable 'email', 'password', 'role', - 'sites' + 'sites', + 'gitlab_id' ]; /** diff --git a/database/migrations/2025_04_17_162711_add_gitlab_id_to_users_table.php b/database/migrations/2025_04_17_162711_add_gitlab_id_to_users_table.php new file mode 100644 index 0000000..f096889 --- /dev/null +++ b/database/migrations/2025_04_17_162711_add_gitlab_id_to_users_table.php @@ -0,0 +1,36 @@ +unsignedInteger('gitlab_id') + ->unique() + ->nullable() + ->comment("ID du user Gitlab") + ->after('remember_token'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down(): void + { + Schema::table('users', function (Blueprint $table) { + $table->dropColumn('gitlab_id'); + }); + } +}; diff --git a/resources/views/bo/pages/users/form-inputs.blade.php b/resources/views/bo/pages/users/form-inputs.blade.php index 8bcb5a8..ee0e1e0 100644 --- a/resources/views/bo/pages/users/form-inputs.blade.php +++ b/resources/views/bo/pages/users/form-inputs.blade.php @@ -118,6 +118,25 @@ + {{-- GITLAB_USER_ID --}} +
+
+ {{ __("ID de l'utilisateur Gitlab") }} +
+
+ @include('bo.partials.inputs.int-number', [ + 'id' => 'siteGitlabUserId', + 'label' => __("ID de l'utilisateur Gitlab"), + 'name' => 'gitlab_id', + 'required' => false, + 'model' => $userModel ?? null, + 'helper' => __("ID de l'utilisateur Gitlab"), + 'step' => 1, + ]) +
+
+
+
@push('scripts')