add notifications logic and add support of both JWT and Sanctum

This commit is contained in:
root
2026-03-11 01:20:31 -04:00
parent f6be51576c
commit 182036cc41
141 changed files with 8685 additions and 648 deletions
@@ -0,0 +1,49 @@
<?php
namespace App\Services\Attendance;
use DateTimeImmutable;
use DateTimeZone;
use Illuminate\Support\Facades\DB;
class AttendanceAutoPublishJobService
{
public function __construct(private AttendanceAutoPublishService $autoPublish)
{
}
public function run(?DateTimeImmutable $now = null): array
{
$zone = $this->autoPublish->timezone();
$now = $now ? $now->setTimezone($zone) : new DateTimeImmutable('now', $zone);
$nowStr = $now->format('Y-m-d H:i:s');
$cutoffDate = $this->autoPublish->secondSundayBackwardDate($now);
$query = DB::table('attendance_day')
->where('status', 'submitted')
->where(function ($q) use ($nowStr, $cutoffDate) {
$q->where('auto_publish_at', '<=', $nowStr)
->orWhere(function ($sub) use ($cutoffDate) {
$sub->whereNull('auto_publish_at')
->where('date', '<=', $cutoffDate);
});
});
$count = (clone $query)->count();
if ($count > 0) {
$query->update([
'status' => 'published',
'published_by' => 0,
'published_at' => $nowStr,
'updated_at' => $nowStr,
]);
}
return [
'published' => $count,
'checked_at' => $nowStr,
'timezone' => $zone->getName(),
];
}
}