# Sistema simples de tickets — PHP + SQLite

Sistema simples para registo de eventos/avarias numa instituição.

## Funcionalidades

- Login de utilizadores
- Perfis: utilizador, responsável/agente e administrador
- Criação de tickets por categoria/tipo de assunto
- Cada categoria tem nome/email responsável
- Listagem de tickets
- Alteração de estado do ticket
- Histórico de estados com utilizador, data, estado anterior e novo estado
- Comentários com autor e data
- Upload de fotografias e ficheiros associados ao ticket
- Upload múltiplo em simultâneo
- Cada conjunto de ficheiros tem uma nota/comentário próprio
- Pré-visualização de imagens no detalhe do ticket
- Download protegido dos ficheiros, respeitando permissões do ticket
- Painel simples de categorias e utilizadores

## Requisitos

- PHP 7.4+ recomendado
- Extensão SQLite/PDO SQLite ativa
- Permissões de escrita na pasta `data/`

## Instalação rápida

1. Copiar a pasta `tickets_sqlite` para o servidor.
2. Apontar o virtual host ou URL para a pasta `public/`.
3. Editar `app/config.php` e ajustar `base_url`.
4. Garantir permissões de escrita:

```bash
chmod -R 775 data
```

A base de dados SQLite e a pasta de uploads são criadas automaticamente.

## Login inicial

Administrador:

- Email: `admin@local.test`
- Password: `admin123`

Funcionário demo:

- Email: `funcionario@local.test`
- Password: `user123`

Responsável demo:

- Email: `responsavel@local.test`
- Password: `agent123`

## Uploads

Os ficheiros são guardados fora da pasta pública, em:

```text
data/uploads/
```

O acesso é feito por `public/download.php`, validando se o utilizador pode ver o ticket.

Extensões permitidas e tamanho máximo por ficheiro podem ser alterados em:

```text
app/config.php
```

## Notas

Esta é uma base simples para desenvolvimento. Antes de usar em produção, recomenda-se:

- configurar HTTPS;
- trocar passwords iniciais;
- rever permissões de ficheiros;
- configurar backups da pasta `data/`;
- configurar SMTP em vez de `mail()`;
- ajustar limites de upload no `php.ini` (`upload_max_filesize` e `post_max_size`).
