# Sistema de Tickets - PHP + SQLite v6

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

## Funcionalidades

- Login de utilizadores
- Criação de tickets por tipo de assunto/categoria
- Cada categoria tem email responsável
- Estados do ticket com histórico de alterações
- Comentários gerais no ticket
- Upload múltiplo de fotografias/ficheiros
- Cada upload pode ter uma nota/comentário associada ao conjunto
- Comentários por grupo de ficheiros
- Comentários por ficheiro/foto individual
- Timeline do ticket em página separada
- Transferência/atribuição do ticket para outro utilizador
- Histórico de atribuições, com quem transferiu, de quem para quem e data
- Página de importação/exportação seletiva com checkboxes

## Instalação

1. Copiar a pasta `tickets_sqlite` para o servidor web.
2. Garantir permissões de escrita na pasta:

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

3. Confirmar que o PHP tem SQLite ativo:

```bash
php -m | grep sqlite
```

São necessários:

- `pdo_sqlite`
- `sqlite3`

4. Ajustar o ficheiro:

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

Principalmente:

```php
'base_url' => 'http://localhost/tickets_sqlite/public'
```

## Login inicial

```text
admin@local.test
admin123
```

Também são criados:

```text
funcionario@local.test / user123
responsavel@local.test / agent123
```

## Timeline

A timeline fica numa página separada:

```text
public/ticket_timeline.php?id=ID_DO_TICKET
```

Também existe botão `Ver timeline` na página do ticket.

## Transferência de ticket

O ticket pode ser passado para outro utilizador por:

- administrador;
- responsável original da categoria/ticket;
- detentor atual do ticket.

Cada transferência fica registada em:

```text
ticket_assignment_history
```

## Importação / exportação

A página está disponível no menu:

```text
Importar/Exportar
```

Permite selecionar por checkboxes:

- utilizadores;
- categorias;
- tickets;
- comentários;
- histórico de estados;
- histórico de atribuições;
- grupos de uploads;
- ficheiros enviados;
- comentários de ficheiros/grupos.

A exportação gera um ficheiro JSON.

Nota: os metadados dos ficheiros são exportados, mas os ficheiros físicos da pasta `data/uploads` devem ser copiados manualmente se mudar de servidor.
