
Removed sla-escalate atrisan command from kernal as the functionality is not working and which is causing the issue while running cron command in v1.10
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 (env('DB_INSTALL') == 1) {
|
|
$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');
|
|
}
|
|
}
|