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') ->where('rule_name', 'InvoiceMail') ->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; } } // foreach ($invoiceRules as $rule) { // switch ($rule->schedule_type) { // case 'Live': // try { // Artisan::call('send:invoice-report', [ // 'schedule_type' => $rule->schedule_type, // 'plant' => $rule->plant, // ]); // Log::info('Invoice report sent | Plant: '.$rule->plant); // } catch (\Throwable $e) { // Log::error("Invoice Live Failed ({$rule->plant}): ".$e->getMessage()); // } // 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') ->where('rule_name', 'InvoiceDataMail') ->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}"); } }