# Instalar: SMTP na Interface, Upload de Logo, Reset Password, Notificações de Novo Pedido

## 1. Ficheiros novos

```
app/Livewire/Admin/EmailSettings.php
resources/views/livewire/admin/email-settings.blade.php

app/Livewire/Auth/ForgotPassword.php
resources/views/livewire/auth/forgot-password.blade.php
app/Livewire/Auth/ResetPassword.php
resources/views/livewire/auth/reset-password.blade.php

app/Notifications/NewMaintenanceRequestNotification.php
app/Notifications/MaintenanceRequestReceivedNotification.php
```

## 2. Ficheiros a substituir

```
app/Providers/AppServiceProvider.php          (override de config de mail a partir das settings)
app/Livewire/Admin/CompanySettings.php          (upload real de logo)
resources/views/livewire/admin/company-settings.blade.php
resources/views/livewire/auth/login.blade.php    (link "Esqueci-me da password")
app/Actions/MaintenanceRequests/CreateMaintenanceRequestAction.php   (notificações)
routes/web.php
```

Sem migrations.

```bash
cd ~/public_html/app.amimak.co.mz
php artisan config:clear
php artisan route:clear
php artisan view:clear
```

Confirma que já correste isto antes (necessário para o upload de logo
funcionar, se ainda não tiveres feito):
```bash
php artisan storage:link
```

## 3. O que ganhaste

### `/admin/settings/email` — SMTP pela interface
Já não precisas de mexer no `.env`/SSH para mudar as credenciais de email.
Preenche host, porta, encriptação, utilizador, password, remetente — e há
um botão **"Enviar email de teste"** que dispara logo um email para a tua
própria conta, para confirmares que está tudo bem sem teres de esperar por
um evento real do sistema.

A password fica **encriptada** na base de dados (nunca em texto simples),
e o campo nunca mostra a password actual — só "deixar em branco para não
alterar".

### `/admin/settings` — Upload real de logo
Já não escreves o caminho do ficheiro — escolhes a imagem do computador,
ela é guardada em `storage/app/public/branding/logo.*` e a app passa a
usá-la automaticamente em toda a interface.

### "Esqueci-me da password"
Fluxo completo: link no login → `/forgot-password` (pede o email) →
recebe um link por email (usa o Laravel Notifications nativo, já ligado
ao SMTP configurado) → `/reset-password/{token}` (define nova password).
Funciona tanto para utilizadores internos como de portal.

### Notificações de novo pedido
- **Equipa interna** (roles `Admin` e `Maintenance Manager`): recebe
  email sempre que chega um pedido novo, seja do portal ou interno
- **Cliente do portal**: recebe confirmação de que o pedido dele foi
  recebido, com o número de referência

Ambas resilientes a falhas de SMTP (se o email falhar, fica registado no
log mas não impede a criação do pedido — mesmo padrão já aplicado às
notificações de mudança de estado).

## 4. Testar

1. `/admin/settings/email` → preenche com as credenciais reais → Guardar
   → "Enviar email de teste" → confirma que chega
2. `/admin/settings` → faz upload de uma imagem de logo → confirma que
   aparece em toda a app
3. Login → "Esqueci-me da password" → usa um email real de teste →
   confirma que chega o link e que consegues definir nova password
4. Cria um pedido novo via portal → confirma que:
   - O cliente recebe confirmação
   - O(s) Admin(s)/Maintenance Manager(s) recebem alerta
