-
Criação de Salas de Reunião
- O usuário deve ser capaz de criar novas salas de reunião com título, capacidade e localização.
-
Atualização de Salas de Reunião
- O usuário deve ser capaz de atualizar as informações de uma sala de reunião existente.
-
Visualização de Salas de Reunião
- O usuário deve visualizar uma lista de todas as salas de reunião e detalhes de uma sala específica.
-
Criação de Reservas
- O usuário deve ser capaz de reservar uma sala de reunião para uma data e hora específica, com a possibilidade de adicionar uma descrição e um responsável.
-
Atualização de Reservas
- O usuário deve ser capaz de atualizar as informações de uma reserva existente.
-
Visualização de Reservas
- O usuário deve visualizar todas as reservas para uma sala de reunião e detalhes de cada reserva.
-
Exclusão de Reservas
- O usuário deve ser capaz de cancelar reservas existentes.
-
Filtragem e Busca
- O usuário deve poder filtrar reservas por sala, data e status (confirmada, pendente, cancelada).
- O usuário deve poder buscar reservas e salas pelo nome.
-
Performance
- A aplicação deve responder a consultas e buscas em menos de 2 segundos.
-
Escalabilidade
- A aplicação deve ser capaz de escalar horizontalmente para suportar um aumento no número de salas e reservas.
-
Segurança
- Dados das reservas e salas devem ser protegidos contra acesso não autorizado.
- Autenticação e autorização devem ser implementadas para garantir que apenas usuários autorizados possam criar, atualizar ou cancelar reservas.
-
Usabilidade
- A interface do usuário deve ser intuitiva e responsiva para dispositivos móveis e desktop.
-
Manutenibilidade
- O código deve ser modular e seguir princípios de Clean Code para facilitar a manutenção e extensibilidade.
-
Disponibilidade da Sala
- Uma sala de reunião não pode ser reservada para mais de um evento ao mesmo tempo.
-
Validação de Dados
- O nome da sala deve ter entre 1 e 100 caracteres.
- A capacidade da sala deve ser um número positivo.
- A data e hora da reserva devem estar no futuro.
-
Cancelamento de Reserva
- Reservas podem ser canceladas com pelo menos 24 horas de antecedência.
Coluna | Tipo | Descrição |
---|---|---|
id | INT | Identificador único da sala (chave primária) |
name | VARCHAR(100) | Nome da sala |
capacity | INT | Capacidade da sala |
location | VARCHAR(255) | Localização da sala |
Coluna | Tipo | Descrição |
---|---|---|
id | INT | Identificador único da reserva (chave primária) |
room_id | INT | Identificador da sala (chave estrangeira) |
start_time | DATETIME | Data e hora de início da reserva |
end_time | DATETIME | Data e hora de término da reserva |
description | TEXT | Descrição da reserva |
responsible | VARCHAR(100) | Nome do responsável pela reserva |
status | ENUM('confirmed', 'pending', 'cancelled') | Status da reserva |
-
GET /rooms
- Descrição: Lista todas as salas de reunião.
- Parâmetros: Nenhum
-
POST /rooms
- Descrição: Cria uma nova sala de reunião.
- Parâmetros:
name
,capacity
,location
-
GET /rooms/{id}
- Descrição: Obtém detalhes de uma sala de reunião específica.
- Parâmetros: Nenhum
-
PUT /rooms/{id}
- Descrição: Atualiza uma sala de reunião existente.
- Parâmetros:
name
,capacity
,location
-
DELETE /rooms/{id}
- Descrição: Exclui uma sala de reunião específica.
- Parâmetros: Nenhum
-
GET /rooms/{room_id}/reservations
- Descrição: Lista todas as reservas para uma sala de reunião específica.
- Parâmetros:
status
,start_time
,end_time
-
POST /rooms/{room_id}/reservations
- Descrição: Cria uma nova reserva para uma sala de reunião.
- Parâmetros:
start_time
,end_time
,description
,responsible
-
GET /rooms/{room_id}/reservations/{id}
- Descrição: Obtém detalhes de uma reserva específica.
- Parâmetros: Nenhum
-
PUT /rooms/{room_id}/reservations/{id}
- Descrição: Atualiza uma reserva existente.
- Parâmetros:
start_time
,end_time
,description
,responsible
,status
-
DELETE /rooms/{room_id}/reservations/{id}
- Descrição: Cancela uma reserva específica.
- Parâmetros: Nenhum