feat: Add Gitlab id on user model

This commit is contained in:
Vincent BRIDIER 2025-04-17 17:05:50 +02:00
parent eba20accc4
commit e12c48b829
No known key found for this signature in database
GPG key ID: 8571BFA20420D512
6 changed files with 74 additions and 6 deletions

View file

@ -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",
];
}

View file

@ -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);

View file

@ -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")
];
}
}

View file

@ -45,7 +45,8 @@ class User extends Authenticatable
'email',
'password',
'role',
'sites'
'sites',
'gitlab_id'
];
/**

View file

@ -0,0 +1,36 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up(): void
{
Schema::table('users', function (Blueprint $table) {
$table->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');
});
}
};

View file

@ -118,6 +118,25 @@
</div>
</fieldset>
</div>
{{-- GITLAB_USER_ID --}}
<div class="col-12 col-md-6 mb-3">
<fieldset class="h-100 border bg-white p-3">
<legend>{{ __("ID de l'utilisateur Gitlab") }}</legend>
<div class="row">
<div class="col-12">
@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,
])
</div>
</div>
</fieldset>
</div>
</div>
@push('scripts')