'required|string|max:255', 'correo_imap_port' => 'required|integer|min:1|max:65535', 'correo_imap_user' => 'required|email', 'correo_imap_password' => 'required|string', 'correo_imap_folder' => 'required|string|max:100', 'correo_imap_minutos' => 'required|integer|min:1|max:1440', ]; public function mount(): void { $keys = [ 'correo_imap_host', 'correo_imap_port', 'correo_imap_ssl', 'correo_imap_user', 'correo_imap_password', 'correo_imap_folder', 'correo_imap_enabled', 'correo_imap_minutos', ]; foreach ($keys as $key) { $this->{$key} = WhatsappSystemConfig::get($key, $this->{$key}); } } public function save(): void { $this->validate(); $keys = [ 'correo_imap_host', 'correo_imap_port', 'correo_imap_ssl', 'correo_imap_user', 'correo_imap_password', 'correo_imap_folder', 'correo_imap_enabled', 'correo_imap_minutos', ]; foreach ($keys as $key) { WhatsappSystemConfig::set($key, (string) $this->{$key}); } $this->alert('success', 'Configuración guardada correctamente.'); } public function probar(): void { $this->validate(); $this->testing = true; $this->testStatus = ''; $this->testError = ''; $this->emails = []; try { $service = new CorreoImapService( host: $this->correo_imap_host, port: (int) $this->correo_imap_port, useSsl: $this->correo_imap_ssl === '1', user: $this->correo_imap_user, password: $this->correo_imap_password, folder: $this->correo_imap_folder, timeout: 20 ); $raw = $service->fetchLatest(5, (int) $this->correo_imap_minutos); // Añadir datos parseados de Bancolombia a cada correo $this->emails = array_map(function (array $email) { $email['bancolombia'] = BancolombiaParser::parse($email['body']); return $email; }, $raw); $this->testStatus = 'ok'; } catch (\Throwable $e) { $this->testStatus = 'error'; $this->testError = $e->getMessage(); } finally { $this->testing = false; } } public function render() { return view('livewire.whatsapp.show-correo-config'); } }