diff --git a/app/Http/Controllers/Bo/SiteController.php b/app/Http/Controllers/Bo/SiteController.php index be3d5f5..de9e73e 100644 --- a/app/Http/Controllers/Bo/SiteController.php +++ b/app/Http/Controllers/Bo/SiteController.php @@ -9,6 +9,7 @@ use App\Lib\Helpers\ToolboxHelper; use App\Models\Site; use App\Models\User; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; use Illuminate\Support\Str; @@ -23,7 +24,7 @@ class SiteController extends Controller public function index(Request $request): \Illuminate\Contracts\View\View { /** @var \App\Models\User $user */ - $user = \auth()->user(); + $user = Auth::user(); if ($user->isAdmin()) { /** @var \Illuminate\Database\Eloquent\Builder $siteModels */ diff --git a/app/Http/Requests/Bo/Sites/StoreSiteRequest.php b/app/Http/Requests/Bo/Sites/StoreSiteRequest.php index de7035e..a55bf3c 100644 --- a/app/Http/Requests/Bo/Sites/StoreSiteRequest.php +++ b/app/Http/Requests/Bo/Sites/StoreSiteRequest.php @@ -29,6 +29,7 @@ class StoreSiteRequest extends FormRequest 'users' => 'nullable|array', 'users.*.id' => 'required|exists:users,id', 'gitlab_project_id' => 'nullable|unique:sites,gitlab_project_id', + 'project_manager_id' => 'nullable|exists:users,id', 'url_re7' => 'nullable|url', 'url_prod' => 'nullable|url' ]; @@ -46,6 +47,7 @@ class StoreSiteRequest extends FormRequest 'users' => trans('Utilisateurs associés au site'), 'users.*.id' => trans('Élément parmis les Utilisateurs associés au site'), 'gitlab_project_id' => trans('ID du dépôt Gitlab'), + 'project_manager_id' => trans('Chef de projet'), 'url_re7' => trans('Url de RECETTE'), 'url_prod' => trans('Url de prod') ]; diff --git a/app/Models/Site.php b/app/Models/Site.php index 770064c..d8aa825 100644 --- a/app/Models/Site.php +++ b/app/Models/Site.php @@ -6,6 +6,7 @@ use App\Lib\Helpers\ToolboxHelper; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Casts\Attribute; +use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\SoftDeletes; /** @@ -29,7 +30,8 @@ class Site extends Model 'name', 'url_re7', 'url_prod', - 'gitlab_project_id' + 'gitlab_project_id', + 'project_manager_id' ]; /** @@ -109,6 +111,17 @@ class Site extends Model return $this->belongsTo(Brand::class); } + /** + * BelongsTo User relation + * The project manager of the site + * + * @return \Illuminate\Database\Eloquent\Relations\BelongsTo + */ + public function projectManager(): BelongsTo + { + return $this->belongsTo(User::class, 'project_manager_id'); + } + /** * BelongsTo Project relation * diff --git a/database/migrations/2025_04_17_112713_add_users_relation_on_sites_table.php b/database/migrations/2025_04_17_112713_add_users_relation_on_sites_table.php new file mode 100644 index 0000000..3712c0d --- /dev/null +++ b/database/migrations/2025_04_17_112713_add_users_relation_on_sites_table.php @@ -0,0 +1,38 @@ +unsignedBigInteger('project_manager_id') + ->nullable() + ->after('brand_id') + ->comment('Project manager relationship'); + + $table->foreign('project_manager_id')->references('id')->on('users')->nullOnDelete(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down(): void + { + Schema::table('sites', function (Blueprint $table) { + $table->dropForeign(['project_manager_id']); + $table->dropColumn('project_manager_id'); + }); + } +}; diff --git a/resources/views/bo/pages/sites/form-inputs.blade.php b/resources/views/bo/pages/sites/form-inputs.blade.php index 53a650f..c3b27fb 100644 --- a/resources/views/bo/pages/sites/form-inputs.blade.php +++ b/resources/views/bo/pages/sites/form-inputs.blade.php @@ -59,12 +59,14 @@ + +