44 lines
1.2 KiB
PHP
44 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace App\Providers;
|
|
|
|
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
|
|
use Illuminate\Support\Facades\Schedule;
|
|
use Illuminate\Support\Facades\Event;
|
|
use Illuminate\Support\Facades\Schema;
|
|
use Illuminate\Routing\Events\RouteMatched;
|
|
use App\Models\Setting;
|
|
use App\Listeners\ScheduleListener;
|
|
use App\Jobs\CheckInvoiceDueDatesJob;
|
|
|
|
class EventServiceProvider extends ServiceProvider
|
|
{
|
|
protected $listen = [];
|
|
|
|
/**
|
|
* Bootstrap services.
|
|
*/
|
|
public function boot(): void
|
|
{
|
|
parent::boot();
|
|
|
|
if (Schema::hasTable('settings')) {
|
|
$method = Setting::where('key', 'app.schedule_method')->value('value') ?? 'internal';
|
|
if ($method === 'internal') {
|
|
Event::listen(RouteMatched::class, [ScheduleListener::class, 'handle']);
|
|
}
|
|
}
|
|
|
|
// TODO: read where to put these
|
|
// it seems to work here, but where is the apropriate place?
|
|
// Kernel::schedule did not work
|
|
Schedule::command('caldav:sync')
|
|
->everyMinute()
|
|
->withoutOverlapping();
|
|
|
|
Schedule::job(new CheckInvoiceDueDatesJob())
|
|
->daily()
|
|
->withoutOverlapping();
|
|
}
|
|
}
|