
Fixed issue with running testcases Added file permission check in Probe.php for storage and bootstrap directories. Named route bugs fixed reported on bugsnag
132 lines
3.7 KiB
PHP
132 lines
3.7 KiB
PHP
<?php
|
|
|
|
namespace App\Console;
|
|
|
|
use App\Model\MailJob\Condition;
|
|
use Illuminate\Console\Scheduling\Schedule;
|
|
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
|
|
|
|
class Kernel extends ConsoleKernel
|
|
{
|
|
/**
|
|
* The Artisan commands provided by your application.
|
|
*
|
|
* @var array
|
|
*/
|
|
protected $commands = [
|
|
'App\Console\Commands\Inspire',
|
|
'App\Console\Commands\SendReport',
|
|
'App\Console\Commands\CloseWork',
|
|
'App\Console\Commands\TicketFetch',
|
|
'App\Console\Commands\UpdateEncryption',
|
|
\App\Console\Commands\DropTables::class,
|
|
\App\Console\Commands\Install::class,
|
|
\App\Console\Commands\InstallDB::class,
|
|
];
|
|
|
|
/**
|
|
* Define the application's command schedule.
|
|
*
|
|
* @param \Illuminate\Console\Scheduling\Schedule $schedule
|
|
*
|
|
* @return void
|
|
*/
|
|
protected function schedule(Schedule $schedule)
|
|
{
|
|
if (isInstall()) {
|
|
$this->execute($schedule, 'fetching');
|
|
$this->execute($schedule, 'notification');
|
|
$this->execute($schedule, 'work');
|
|
if ($this->getCurrentQueue() != 'sync') {
|
|
$schedule->command('queue:listen '.$this->getCurrentQueue().' --sleep 60')->everyMinute();
|
|
}
|
|
}
|
|
}
|
|
|
|
public function execute($schedule, $task)
|
|
{
|
|
$condition = new Condition();
|
|
$command = $condition->getConditionValue($task);
|
|
switch ($task) {
|
|
case 'fetching':
|
|
$this->getCondition($schedule->command('ticket:fetch'), $command);
|
|
break;
|
|
case 'notification':
|
|
$this->getCondition($schedule->command('report:send'), $command);
|
|
break;
|
|
case 'work':
|
|
$this->getCondition($schedule->command('ticket:close'), $command);
|
|
break;
|
|
}
|
|
}
|
|
|
|
public function getCondition($schedule, $command)
|
|
{
|
|
$condition = $command['condition'];
|
|
$at = $command['at'];
|
|
switch ($condition) {
|
|
case 'everyMinute':
|
|
$schedule->everyMinute();
|
|
break;
|
|
case 'everyFiveMinutes':
|
|
$schedule->everyFiveMinutes();
|
|
break;
|
|
case 'everyTenMinutes':
|
|
$schedule->everyTenMinutes();
|
|
break;
|
|
case 'everyThirtyMinutes':
|
|
$schedule->everyThirtyMinutes();
|
|
break;
|
|
case 'hourly':
|
|
$schedule->hourly();
|
|
break;
|
|
case 'daily':
|
|
$schedule->daily();
|
|
break;
|
|
case 'dailyAt':
|
|
$this->getConditionWithOption($schedule, $condition, $at);
|
|
break;
|
|
case 'weekly':
|
|
$schedule->weekly();
|
|
break;
|
|
case 'monthly':
|
|
$schedule->monthly();
|
|
break;
|
|
case 'yearly':
|
|
$schedule->yearly();
|
|
break;
|
|
}
|
|
}
|
|
|
|
public function getConditionWithOption($schedule, $command, $at)
|
|
{
|
|
switch ($command) {
|
|
case 'dailyAt':
|
|
$schedule->dailyAt($at);
|
|
break;
|
|
}
|
|
}
|
|
|
|
public function getCurrentQueue()
|
|
{
|
|
$queue = 'database';
|
|
$services = new \App\Model\MailJob\QueueService();
|
|
$current = $services->where('status', 1)->first();
|
|
if ($current) {
|
|
$queue = $current->short_name;
|
|
}
|
|
|
|
return $queue;
|
|
}
|
|
|
|
/**
|
|
* Register the Closure based commands for the application.
|
|
*
|
|
* @return void
|
|
*/
|
|
protected function commands()
|
|
{
|
|
require base_path('routes/console.php');
|
|
}
|
|
}
|