argument('schedule_type'); $plantId = (int) $this->argument('plant'); $mailRules = AlertMailRule::where('module', 'ImportTransit') ->where('rule_name', 'ImportTransitMail') ->where('schedule_type', $scheduleType) ->where('plant', $plantId) ->get(); $plants = ($plantId == 0) ? Plant::all() : Plant::where('id', $plantId)->get(); $plantCodes = $plants->pluck('name', 'id'); if ($plants->isEmpty()) { $this->error('No valid plant(s) found.'); return; } // $todayRecordExists = ImportTransit::whereDate('created_at', now()->toDateString())->first(); // if (!$todayRecordExists) { // $this->info('No records created today. Mail not sent.'); // return; // } // $tableData = ImportTransit::select([ // 'cri_rfq_number', // 'mail_received_date', // 'pricol_ref_number', // 'requester', // 'shipper', // 'shipper_location', // 'shipper_invoice', // 'shipper_invoice_date', // 'customs_agent_name', // 'eta_date', // 'status', // 'delivery_location', // 'etd_date', // 'mode', // 'inco_terms', // 'port_of_loading', // 'port_of_discharge', // 'delivery_city', // 'packages', // 'type_of_package', // 'gross_weight', // 'volume', // 'bill_number', // 'bill_received_date', // 'vessel_number', // 'remark', // 'is_transit_identified', // ]) // ->where('status', '!=', 'Delivered') // ->get(); $tableData = ImportTransit::where('status', '!=', 'Delivered')->get(); if ($tableData->isEmpty()) { $this->info('No pending Import Transit records found. Mail skipped.'); return; } if (strtolower($scheduleType) == 'daily') { foreach ($mailRules as $rule) { $mailSubject = 'Daily Import Transit Report'; $fileName = 'reports/pending_import_shipment_' . now()->format('Ymd_His') . '.xlsx'; Excel::store( new ImportTransitReportExport($tableData), $fileName, 'local' ); $mail = new ImportTransitMail( $scheduleType, $tableData, $mailSubject, $fileName ); $toEmails = collect(explode(',', $rule->email)) ->map(fn ($e) => trim($e)) ->filter() ->unique() ->values() ->toArray(); $ccEmails = collect(explode(',', $rule->cc_emails)) ->map(fn ($e) => trim($e)) ->filter() ->unique() ->values() ->toArray(); if (empty($toEmails)) { $this->warn("Skipping rule {$rule->id} — no To emails."); continue; } \Mail::to($toEmails) ->cc($ccEmails) ->send($mail); $this->info( "Mail sent → Rule {$rule->id} | To: " . implode(', ', $toEmails) ); } } } }