diff --git a/routes/console.php b/routes/console.php index 7e8488b..32186c1 100644 --- a/routes/console.php +++ b/routes/console.php @@ -3,70 +3,139 @@ use App\Models\AlertMailRule; use Illuminate\Foundation\Inspiring; use Illuminate\Support\Facades\Artisan; +use Illuminate\Console\Scheduling\Schedule; Artisan::command('inspire', function () { $this->comment(Inspiring::quote()); })->purpose('Display an inspiring quote'); -// Schedule::command('send:invoice-report'); -// Schedule::command('send:production-report'); + // Schedule::command('send:invoice-report'); + // Schedule::command('send:production-report'); -$rules = [ - [ - 'module' => 'InvoiceValidation', - 'rule_name' => 'InvoiceMail', - 'argument' => 'InvoiceMail', - ], - [ - 'module' => 'InvoiceValidation', - 'rule_name' => 'SerialInvoiceMail', - 'argument' => 'SerialInvoiceMail', - ], - [ - 'module' => 'InvoiceValidation', - 'rule_name' => 'MaterialInvoiceMail', - 'argument' => 'MaterialInvoiceMail', - ], -]; +// $rules = [ +// [ +// 'module' => 'InvoiceValidation', +// 'rule_name' => 'InvoiceMail', +// 'argument' => 'InvoiceMail', +// ], +// [ +// 'module' => 'InvoiceValidation', +// 'rule_name' => 'SerialInvoiceMail', +// 'argument' => 'SerialInvoiceMail', +// ], +// [ +// 'module' => 'InvoiceValidation', +// 'rule_name' => 'MaterialInvoiceMail', +// 'argument' => 'MaterialInvoiceMail', +// ], +// ]; -foreach ($rules as $rule) { - $scheduleType = AlertMailRule::where('module', $rule['module']) - ->where('rule_name', $rule['rule_name']) +// foreach ($rules as $rule) { +// $scheduleType = AlertMailRule::where('module', $rule['module']) +// ->where('rule_name', $rule['rule_name']) +// ->value('schedule_type'); + +// switch ($scheduleType) { +// case 'Live': +// Schedule::command("send:invoice-report {$rule['argument']}")->everyMinute(); +// break; +// case 'Hourly': +// Schedule::command("send:invoice-report {$rule['argument']}")->hourly(); +// break; +// case 'Daily': +// Schedule::command("send:invoice-report {$rule['argument']}")->dailyAt('07:59'); +// break; +// default: +// Schedule::command("send:invoice-report {$rule['argument']}")->hourly(); +// break; +// } +// } + +// // Production Report Scheduling +// $productionScheduleType = AlertMailRule::where('module', 'ProductionQuantities') +// ->where('rule_name', 'ProductionMail') +// ->value('schedule_type'); + +// // $this->info($productionScheduleType); +// // \Log::info('Production Schedule Type: ' . $productionScheduleType); + +// switch ($productionScheduleType) { +// case 'Live': +// Schedule::command('send:production-report')->everyMinute(); +// break; +// case 'Hourly': +// Schedule::command('send:production-report')->hourly(); +// break; +// case 'Daily': +// Schedule::command('send:production-report')->dailyAt('07:59'); +// break; +// default: +// Schedule::command('send:production-report')->hourly(); +// break; +// } + +app()->booted(function () { + $schedule = app(Schedule::class); + + // Dynamic rules for invoice reports + $rules = [ + [ + 'module' => 'InvoiceValidation', + 'rule_name' => 'InvoiceMail', + 'argument' => 'InvoiceMail', + ], + [ + 'module' => 'InvoiceValidation', + 'rule_name' => 'SerialInvoiceMail', + 'argument' => 'SerialInvoiceMail', + ], + [ + 'module' => 'InvoiceValidation', + 'rule_name' => 'MaterialInvoiceMail', + 'argument' => 'MaterialInvoiceMail', + ], + ]; + + foreach ($rules as $rule) { + $scheduleType = AlertMailRule::where('module', $rule['module']) + ->where('rule_name', $rule['rule_name']) + ->value('schedule_type'); + + switch ($scheduleType) { + case 'Live': + $schedule->command("send:invoice-report {$rule['argument']}")->everyMinute(); + break; + case 'Hourly': + $schedule->command("send:invoice-report {$rule['argument']}")->hourly(); + break; + case 'Daily': + $schedule->command("send:invoice-report {$rule['argument']}")->dailyAt('07:59'); + break; + default: + $schedule->command("send:invoice-report {$rule['argument']}")->hourly(); + break; + } + } + + // Production Report Scheduling + $productionScheduleType = AlertMailRule::where('module', 'ProductionQuantities') + ->where('rule_name', 'ProductionMail') ->value('schedule_type'); - switch ($scheduleType) { + switch ($productionScheduleType) { case 'Live': - Schedule::command("send:invoice-report {$rule['argument']}")->everyMinute(); + $schedule->command('send:production-report')->everyMinute(); break; case 'Hourly': - Schedule::command("send:invoice-report {$rule['argument']}")->hourly(); + $schedule->command('send:production-report')->hourly(); break; case 'Daily': - Schedule::command("send:invoice-report {$rule['argument']}")->dailyAt('07:59'); + $schedule->command('send:production-report')->dailyAt('07:59'); break; default: - Schedule::command("send:invoice-report {$rule['argument']}")->hourly(); + $schedule->command('send:production-report')->hourly(); break; } -} +}); -// Production Report Scheduling -$productionScheduleType = AlertMailRule::where('module', 'ProductionQuantities') - ->where('rule_name', 'ProductionMail') - ->value('schedule_type'); - -switch ($productionScheduleType) { - case 'Live': - Schedule::command('send:production-report')->everyMinute(); - break; - case 'Hourly': - Schedule::command('send:production-report')->hourly(); - break; - case 'Daily': - Schedule::command('send:production-report')->dailyAt('07:59'); - break; - default: - Schedule::command('send:production-report')->hourly(); - break; -}