ldc-legaulois/app/Jobs/ApproachSlidesStatusUpdate.php

55 lines
2.1 KiB
PHP
Raw Normal View History

2024-04-04 13:00:12 +02:00
<?php
namespace App\Jobs;
use App\Models\ApproachSlide;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\Log;
/**
* Update published attribute reading its
* publish_at and unpublish_at attributes.
*/
class ApproachSlidesStatusUpdate
{
/**
* Called when the job will be executed.
*
* @return void
*/
public function handle(): void
{
/** @var \Illuminate\Database\Eloquent\Collection<array-key,\App\Models\ApproachSlide> */
$approachSlidesListToUnPublish = ApproachSlide::query()
->where('unpublish_at', '<=', Carbon::now())
->whereNotNull('unpublish_at')
->where('published', true)->get();
Log::debug(__CLASS__ . " approachSlides to unpublish " . $approachSlidesListToUnPublish->count());
foreach ($approachSlidesListToUnPublish as $approachSlide) {
$approachSlide->publish_at = null;
$approachSlide->unpublish_at = null;
$approachSlide->published = false;
$approachSlide->saveOrFail();
}
/** @var \Illuminate\Database\Eloquent\Collection<array-key,\App\Models\ApproachSlide> */
$approachSlidesListToPublish = ApproachSlide::query()
->where('publish_at', '<=', Carbon::now())
->whereNotNull('publish_at')
->where('published', false)->get();
Log::debug(__CLASS__ . " approachSlides to publish " . $approachSlidesListToPublish->count());
// Unpublish all approachSlide with no date because only 1 approachSlide can be published.
if ($approachSlidesListToPublish->count()) {
ApproachSlide::query()->where('published', true)
->each(function (ApproachSlide $approachSlide) {
$approachSlide->published = false;
$approachSlide->saveOrFail();
});
}
foreach ($approachSlidesListToPublish as $approachSlide) {
$approachSlide->publish_at = null;
$approachSlide->published = true;
$approachSlide->saveOrFail();
}
}
}