where('rule_name', 'ProductionMail') ->select('plant', 'schedule_type') ->distinct() ->get(); foreach ($productionRules as $rule) { switch ($rule->schedule_type) { case 'Live': // Run every minute \Artisan::call('send:production-report', [ 'schedule_type' => $rule->schedule_type, 'plant' => $rule->plant, ]); break; case 'Hourly': if (now()->minute == 0) { \Artisan::call('send:production-report', [ 'schedule_type' => $rule->schedule_type, 'plant' => $rule->plant, ]); } break; case 'Daily': if (now()->format('H:i') == '07:59') { \Artisan::call('send:production-report', [ 'schedule_type' => $rule->schedule_type, 'plant' => $rule->plant, ]); } break; } } // --- Invoice Validation Rules --- $invoiceRules = AlertMailRule::where('module', 'InvoiceValidation') ->select('plant', 'schedule_type') ->distinct() ->get(); foreach ($invoiceRules as $rule) { switch ($rule->schedule_type) { case 'Live': // Run every minute \Artisan::call('send:invoice-report', [ 'schedule_type' => $rule->schedule_type, 'plant' => $rule->plant, ]); break; case 'Hourly': if (now()->minute == 0) { \Artisan::call('send:invoice-report', [ 'schedule_type' => $rule->schedule_type, 'plant' => $rule->plant, ]); } break; case 'Daily': if (now()->format('H:i') == '07:59') { \Artisan::call('send:invoice-report', [ 'schedule_type' => $rule->schedule_type, 'plant' => $rule->plant, ]); } break; } } // --- Invoice Data Report Rules --- $invoiceDataRules = AlertMailRule::where('module', 'InvoiceDataReport') ->select('plant', 'schedule_type') ->distinct() ->get(); foreach ($invoiceDataRules as $rule) { switch ($rule->schedule_type) { case 'Live': // Run every minute \Artisan::call('send:invoice-data-report', [ 'schedule_type' => $rule->schedule_type, 'plant' => $rule->plant, ]); break; case 'Hourly': if (now()->minute == 0) { \Artisan::call('send:invoice-data-report', [ 'schedule_type' => $rule->schedule_type, 'plant' => $rule->plant, ]); } break; case 'Daily': if (now()->format('H:i') == '10:00') { \Artisan::call('send:invoice-data-report', [ 'schedule_type' => $rule->schedule_type, 'plant' => $rule->plant, ]); } break; } } } /** * Helper to call Artisan commands with parameters. */ protected function callArtisanCommand($commandName, $rule) { \Artisan::call($commandName, [ 'schedule_type' => $rule->schedule_type, 'plant' => $rule->plant, ]); $this->info("Executed {$commandName} for plant: {$rule->plant}"); \Log::info("Executed {$commandName} for plant: {$rule->plant}"); } }