# Domura Fees — Guia de Instalação em cPanel
## Stack: PHP 8.2 + Laravel 11 + MySQL + SMTP cPanel

---

## PRÉ-REQUISITOS NO CPANEL

Antes de instalar, confirma no painel cPanel:
- PHP 8.1 ou superior (recomendado 8.2)
- Extensões: PDO, pdo_mysql, mbstring, openssl, tokenizer, xml, ctype, json, bcmath
- Acesso a MySQL (criar base de dados e utilizador)
- Acesso a Cron Jobs
- Acesso a Email Accounts (conta de email já criada, ex: fees@domura.pt)
- Terminal SSH (recomendado) ou File Manager

---

## PASSO 1 — Criar base de dados MySQL

1. No cPanel → **MySQL Databases**
2. Criar base de dados: `domura_fees`
3. Criar utilizador: `domura_user` com password segura
4. Adicionar utilizador à base de dados com **All Privileges**
5. Anotar: host (normalmente `localhost`), nome da BD, utilizador e password

---

## PASSO 2 — Fazer upload dos ficheiros

### Via Git (recomendado se tiveres SSH):
```bash
cd ~/public_html
git clone https://github.com/domura/fees.git domura-fees
# ou via zip:
# unzip domura-fees.zip -d domura-fees
```

### Via File Manager:
1. Faz upload do ZIP para `public_html/`
2. Extrai para pasta `domura-fees/`

> **Importante:** a pasta `public/` do Laravel deve ser a pasta pública.
> Em cPanel podes criar um subdomínio `fees.domura.pt` apontando para `domura-fees/public`

---

## PASSO 3 — Configurar o subdomínio (se aplicável)

1. cPanel → **Subdomains**
2. Criar `fees.domura.pt`
3. Document Root: `/home/UTILIZADOR/domura-fees/public`

---

## PASSO 4 — Instalar dependências PHP (Composer)

Via SSH:
```bash
cd ~/domura-fees
php8.2 /usr/local/bin/composer install --no-dev --optimize-autoloader
```

Se não tiveres SSH, faz upload da pasta `vendor/` já gerada localmente.

---

## PASSO 5 — Configurar o ficheiro .env

1. Copia `.env.example` para `.env`
2. Edita com os teus dados:

```env
APP_NAME="Domura Fees"
APP_ENV=production
APP_KEY=                          # gerar no passo 6
APP_DEBUG=false
APP_URL=https://fees.domura.pt

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=domura_fees
DB_USERNAME=domura_user
DB_PASSWORD=A_TUA_PASSWORD_MYSQL

# SMTP cPanel — usa os dados do email criado no cPanel
MAIL_MAILER=smtp
MAIL_HOST=mail.domura.pt          # normalmente mail.DOMINIO.pt
MAIL_PORT=587
MAIL_USERNAME=fees@domura.pt
MAIL_PASSWORD=A_PASSWORD_DO_EMAIL
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=fees@domura.pt
MAIL_FROM_NAME="Domura Fees"

SESSION_DRIVER=file
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
TIMEZONE=Europe/Lisbon
```

> **Nota SMTP cPanel:** o host SMTP pode ser `localhost` se o servidor e o email estiverem no mesmo cPanel. Testa ambos. A porta 587 com TLS é a mais fiável; alternativa: porta 465 com SSL.

---

## PASSO 6 — Gerar chave da aplicação

```bash
php8.2 artisan key:generate
```

---

## PASSO 7 — Criar tabelas na base de dados

Opção A — via phpMyAdmin:
1. Abre phpMyAdmin no cPanel
2. Selecciona a base de dados `domura_fees`
3. Vai a **SQL** e cola o conteúdo de `database/domura_schema.sql`
4. Executa

Opção B — via SSH:
```bash
php8.2 artisan migrate --seed
# ou importar SQL directamente:
mysql -u domura_user -p domura_fees < database/domura_schema.sql
```

---

## PASSO 8 — Criar utilizador master inicial

Via SSH:
```bash
php8.2 artisan tinker
```

```php
DB::table('users')->insert([
    'name'       => 'Ricardo Dias',
    'email'      => 'admin@domura.pt',
    'password'   => bcrypt('Domura2025!'),
    'role'       => 'master',
    'created_at' => now(),
    'updated_at' => now(),
]);
```

**Altera a password após o primeiro login.**

---

## PASSO 9 — Permissões de pastas

```bash
chmod -R 755 ~/domura-fees
chmod -R 775 ~/domura-fees/storage
chmod -R 775 ~/domura-fees/bootstrap/cache
```

---

## PASSO 10 — Configurar Cron Job no cPanel

1. cPanel → **Cron Jobs**
2. Adicionar cron job com frequência **Once Per Day** às 08:00:

```
0 8 * * * /usr/local/bin/php8.2 /home/UTILIZADOR/domura-fees/artisan schedule:run >> /dev/null 2>&1
```

> Substitui `UTILIZADOR` pelo teu nome de utilizador cPanel.
> Este cron activa o scheduler do Laravel que corre o comando `domura:emails-mensais` só nos dias 1, 5 e 9 de cada mês.

**Para testar manualmente:**
```bash
php8.2 artisan domura:emails-mensais
```

---

## PASSO 11 — Testar SMTP

Via SSH ou tinker:
```bash
php8.2 artisan tinker
```
```php
Mail::raw('Teste SMTP Domura', fn($m) => $m->to('teu-email@domura.pt')->subject('Teste'));
```

Se receberes o email, o SMTP está configurado correctamente.

---

## PASSO 12 — Verificação final

- [ ] Login funciona em `https://fees.domura.pt/login`
- [ ] Dashboard master carrega
- [ ] Criar uma agência de teste
- [ ] Criar um consultor de teste
- [ ] Verificar que os 12 registos de pagamento foram criados
- [ ] Verificar que o cron job aparece no cPanel
- [ ] Enviar email de teste via SSH
- [ ] Verificar histórico de emails na plataforma

---

## RESOLUÇÃO DE PROBLEMAS COMUNS

| Problema | Solução |
|----------|---------|
| Página em branco | Verificar `storage/logs/laravel.log` |
| Erro 500 | `APP_DEBUG=true` temporariamente para ver o erro |
| Email não chega | Testar com porta 465/SSL ou `localhost` como host SMTP |
| Cron não funciona | Verificar path do PHP: `which php8.2` no SSH |
| Sem permissão na pasta storage | `chmod -R 775 storage bootstrap/cache` |

---

## ESTRUTURA DE FICHEIROS (resumo)

```
domura-fees/
├── app/
│   ├── Http/Controllers/
│   │   ├── AuthController.php
│   │   ├── DashboardController.php
│   │   ├── ConsultorController.php      ← scope de agência aqui
│   │   └── EmailTemplateController.php  ← templates + histórico
│   ├── Console/Commands/
│   │   └── EnviarEmailsMensais.php      ← cron dias 1, 5, 9
│   └── Http/Middleware/
│       └── CheckRole.php               ← master/agencia/consultor
├── database/
│   └── domura_schema.sql               ← instalar via phpMyAdmin
├── resources/views/
│   ├── layouts/app.blade.php
│   ├── auth/login.blade.php
│   └── emails/{index,edit}.blade.php
├── routes/web.php
├── .env.example                        ← copiar para .env
└── INSTALACAO.md                       ← este ficheiro
```
