ldc-legaulois/app/Jobs/MainSlidesStatusUpdate.php

53 lines
1.9 KiB
PHP
Raw Permalink Normal View History

2024-04-04 13:00:12 +02:00
<?php
namespace App\Jobs;
use App\Models\MainSlide;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\Log;
/**
* Update published attribute reading its
* published_at and unpublished_at attributes.
2024-04-04 13:00:12 +02:00
*/
class MainSlidesStatusUpdate
{
/**
* Called when the job will be executed.
*/
public function handle(): void
{
/** @var \Illuminate\Database\Eloquent\Collection<array-key,\App\Models\MainSlide> */
$mainSlidesListToUnPublished = MainSlide::query()
->where('unpublished_at', '<=', Carbon::now())
2024-04-04 13:00:12 +02:00
->whereNotNull('unpublish_at')
->where('published', true)->get();
2026-09-25 16:25:31 +02:00
Log::debug(__CLASS__ . ' mainSlides to unpublished ' . $mainSlidesListToUnPublished->count());
foreach ($mainSlidesListToUnPublished as $mainSlide) {
$mainSlide->published_at = null;
$mainSlide->unpublished_at = null;
$mainSlide->published = false;
2024-04-04 13:00:12 +02:00
$mainSlide->saveOrFail();
}
/** @var \Illuminate\Database\Eloquent\Collection<array-key,\App\Models\MainSlide> */
$mainSlidesListToPublished = MainSlide::query()
2024-04-04 13:00:12 +02:00
->where('publish_at', '<=', Carbon::now())
->whereNotNull('publish_at')
->where('published', false)->get();
2026-09-25 16:25:31 +02:00
Log::debug(__CLASS__ . ' mainSlides to publish ' . $mainSlidesListToPublished->count());
2024-04-04 13:00:12 +02:00
// Unpublish all mainSlide with no date because only 1 mainSlide can be published.
if ($mainSlidesListToPublished->count()) {
2024-04-04 13:00:12 +02:00
MainSlide::query()->where('published', true)
->each(function (MainSlide $mainSlide) {
$mainSlide->published = false;
$mainSlide->saveOrFail();
});
}
foreach ($mainSlidesListToPublished as $mainSlide) {
$mainSlide->published_at = null;
$mainSlide->published = true;
2024-04-04 13:00:12 +02:00
$mainSlide->saveOrFail();
}
}
}