diff --git a/app/Http/Controllers/Fo/StaticPageController.php b/app/Http/Controllers/Fo/StaticPageController.php index 43848c31..9094baaa 100644 --- a/app/Http/Controllers/Fo/StaticPageController.php +++ b/app/Http/Controllers/Fo/StaticPageController.php @@ -6,6 +6,7 @@ use App\Enums\StaticPageType; use App\Http\Controllers\Controller; use App\Models\BrandAdvantage; use App\Models\KeyNumber; +use App\Models\Offer; use App\Models\Profession; use App\Models\StaticPage; use App\Models\Video; @@ -57,9 +58,19 @@ class StaticPageController extends Controller public function recruitment(StaticPage $staticPageModel): \Illuminate\Contracts\View\View { $staticPageModel = StaticPage::query()->where('type', StaticPageType::recruitment)->first(); + $offerModels = Offer::query() + ->where('published', true) + ->orderBy('updated_at', 'DESC') + ->take(6) + ->get(); $professionModels = Profession::query()->where('published', true)->take(5)->get(); $brandAdvantageModels = BrandAdvantage::query()->where('published', true)->orderBy('order')->get(); - return view('fo.pages.recruitment', compact('staticPageModel', 'professionModels', 'brandAdvantageModels')); + return view('fo.pages.recruitment', compact( + 'staticPageModel', + 'offerModels', + 'professionModels', + 'brandAdvantageModels' + )); } /** diff --git a/database/migrations/2024_12_25_104803_add_fields_to_static_page_offers_table.php b/database/migrations/2024_12_25_104803_add_fields_to_static_page_offers_table.php new file mode 100644 index 00000000..0f611dad --- /dev/null +++ b/database/migrations/2024_12_25_104803_add_fields_to_static_page_offers_table.php @@ -0,0 +1,109 @@ +where('type', StaticPageType::recruitment)->first(); + $staticPage->data = [ + "offers_title" => [ + "label" => "Titre des offres", + "inputType" => InputType::string->value, + "value" => "le titre des offres", + "validate" => "required|string|between:3,255", + 'required' => true + ], + "offers_description" => [ + "label" => "Description des offres", + "inputType" => InputType::text->value, + "value" => "la description des offres", + "validate" => "required|string|min:15", + 'required' => true + ], + "jobs_title" => [ + "label" => "Titre des métiers", + "inputType" => InputType::string->value, + "value" => "le titre des métiers", + "validate" => "required|string|between:3,255", + 'required' => true + ], + "jobs_description" => [ + "label" => "Description des métiers", + "inputType" => InputType::text->value, + "value" => "la description des métiers", + "validate" => "required|string|min:15", + 'required' => true + ], + "testimonies_title" => [ + "label" => "Titre des témoignages", + "inputType" => InputType::string->value, + "value" => "le titre des témoignages", + "validate" => "required|string|between:3,255", + 'required' => true + ], + "testimonies_description" => [ + "label" => "Description des témoignages", + "inputType" => InputType::text->value, + "value" => "la description des témoignages", + "validate" => "required|string|min:15", + 'required' => true + ], + "advantages_title" => [ + "label" => "Titre des avantages", + "inputType" => InputType::string->value, + "value" => "le titre des avantages", + "validate" => "required|string|between:3,255", + 'required' => true + ], + "advantages_description" => [ + "label" => "Description des avantages", + "inputType" => InputType::text->value, + "value" => "la description des avantages", + "validate" => "required|string|min:15", + 'required' => true + ], + "actualities_title" => [ + "label" => "Titre des actualités", + "inputType" => InputType::string->value, + "value" => "le titre des actualités", + "validate" => "required|string|between:3,255", + 'required' => true + ], + "actualities_description" => [ + "label" => "Description des actualités", + "inputType" => InputType::text->value, + "value" => "la description des actualités", + "validate" => "required|string|min:15", + 'required' => true + ], + ]; + $staticPage->saveQuietly(); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down(): void + { + Schema::table('static_pages', function () { + // RECRUITMENT. + $staticPage = StaticPage::query()->where('type', StaticPageType::recruitment)->first(); + $staticPage->data = []; + $staticPage->saveQuietly(); + }); + } +}; diff --git a/resources/sass/fo/pages/recruitment.scss b/resources/sass/fo/pages/recruitment.scss index 58a712ca..c2a58626 100644 --- a/resources/sass/fo/pages/recruitment.scss +++ b/resources/sass/fo/pages/recruitment.scss @@ -1,11 +1,30 @@ -.jobs { - .card { - &-professions { - max-width: calc(300px + (2 * 0.5rem)); +#recruitment { + &-offers { + &-count { + top: -1rem; + right: -1rem; + width: 2rem; + height: 2rem; } - &-body { - height: 13rem; + .swiper-recruitment-offers img { + width: 100%; + + @include media-breakpoint-up(md) { + width: 50%; + } + } + } + + &-jobs { + .card { + &-professions { + max-width: calc(300px + (2 * 0.5rem)); + } + + &-body { + height: 13rem; + } } } } diff --git a/resources/ts/fo/base/common.ts b/resources/ts/fo/base/common.ts index 4fba13a4..23d84bb1 100644 --- a/resources/ts/fo/base/common.ts +++ b/resources/ts/fo/base/common.ts @@ -141,6 +141,41 @@ document.addEventListener("DOMContentLoaded", function () { // SWIPER const swiperConfig = { + "swiper-recruitment-offers": { + modules: [Navigation, Keyboard, Pagination], + grabCursor: true, + slidesPerView: 1.3, + initialSlide: 0, + spaceBetween: 10, + navigation: { + nextEl: ".swiper-recruitment-offers-button-next", + prevEl: ".swiper-recruitment-offers-button-prev", + }, + keyboard: { + enabled: true, + }, + pagination: { + el: ".swiper-recruitment-offers-pagination", + clickable: true, + renderBullet: function (index: number, className: string) { + return ""; + }, + }, + breakpoints: { + 576: { + slidesPerView: 2, + spaceBetween: 25, + }, + 768: { + slidesPerView: 2, + spaceBetween: 35, + }, + 992: { + slidesPerView: 2, + spaceBetween: 55, + }, + }, + }, "swiper-recruitment-jobs": { modules: [Navigation, Keyboard, Pagination], grabCursor: true, diff --git a/resources/views/bo/pages/offers/form.blade.php b/resources/views/bo/pages/offers/form.blade.php index d20f9007..cac1d88c 100644 --- a/resources/views/bo/pages/offers/form.blade.php +++ b/resources/views/bo/pages/offers/form.blade.php @@ -215,22 +215,35 @@ {{-- DESCRIPTION --}}