Classes - santosascegas/sac_arquitetura GitHub Wiki
Classe: Agenda
Gerência todas as datas disponíveis para trajetos.
Estrutura
Campo | Descrição | Tipo | Auto-inserido |
---|---|---|---|
id | Número de identificação da data | Long | Sim |
date | Data e hora para o trajeto | Date | Não |
isAvailable | Telefone do usuário | Boolean | Sim |
- O campo
isAvailable
tem como valor padrão o "SIM"(1), e só é alterado quando um agendamento for feito.
Classe: Appointment
Esta classe é responsável por gerenciar os agendamentos dos usuários.
Estrutura
Campo | Descrição | Tipo | Auto-inserido |
---|---|---|---|
id | Número de identificação do agendamento | Long | Sim |
name | Nome do usuário | String | Não |
Email do usuário | String | Não | |
doctorsNote | Atestado Médico | Date | Sim |
phone | Telefone do usuário | Boolean | Não |
idDocument | RG ou CPF do usuário | Boolean | Não |
agenda | Data que será realizada o trajeto | @Agenda | Não |
- O símbolo
@
faz referência a outra classe.
- A classe
Appointment
tem uma relação de 1 para 1 com a classe@Agenda
, logo, marcar um horário para o trajeto só pode ser concluído se houver uma data válida na agenda.
Classe: Email
A classe email é um serviço que é usado para gerenciar todos os envios de emails do site.
Estrutura
O serviço email usa o Thymeleaf como template para os emails. Os templates se encontram na pasta src/main/resources/templates
. Para os emails automáticos com um temporizador é usado o SpringBoot Quartz.
- Não há nenhuma persistência de dados dos emails no banco de dados.
Métodos
sendAdminAppointmentEmail
: Envia um email para o administrador do projeto com os dados de um novo agendamento. É enviado automáticamente após um usuário marcar uma data para o trajeto.sendClientAppointmentEmail
: Envia um email para o usuário que marcou uma data para o trajeto, o email contém informações importantes como local de encontro e dicas para o trajeto. É enviado de forma automática após a conclusão do agendamento.sendContact
: Envia um email de contato para o administrador.sendRating
: Envia um link para o email do usuário, para que ele possa relatar o que achou do trajeto. É enviado automáticamente 4 horas após o horário do trajeto.
Classe: FileStorage
O próposito dessa classe é gerenciar o upload de arquivos.
Estrutura
Campo | Descrição | Tipo | Auto-inserido |
---|---|---|---|
id | Número de identificação do arquivo | Long | Sim |
fileName | Nome do arquivo | String | Não |
path | Caminho no disco do arquivo | String | Não |
description | Descrição do arquivo | String | Não |
created_at | Data de upload do arquivo | Date | Sim |
- O campo
fileName
é modificado automaticamente no momento em que o arquivo for salvo no disco recebendo o nome de:TIME-file.EXTENSION
, sendoEXTENSION
a extensão do arquivo eTIMESTAMP
sendo a hora em que foi gravado em disco. - O campo
description
é usado para armazenar alguma descrição do arquivo para ser usada como acessibilidade com o parâmetroalt
do HTML.
Todos os arquivos são salvos em disco na raiz do projeto uploads/
.
Classe: Post
O próposito dessa classe é gerenciar a área de postagens do site, permitindo assim que os usuários expressem suas opniões acerca dos trajetos.
Estrutura
Campo | Descrição | Tipo | Auto-inserido |
---|---|---|---|
id | Número de identificação do post | Long | Sim |
name | Nome do usuário | String | Não |
phone | Telefone do usuário | String | Não |
created_at | Data de criação do post | Date | Sim |
isActive | Indica se o post é público ou não | Boolean | Sim |
message | Relato escrito sobre a experiência do usuário | Boolean | Não |
image | Foto do usuário no trajeto | @FileStorage | Não |
audio | Relato via audio do usuário | @FileStorage | Não |
question_1 | Resposta da questão 1 do formulário | Boolean | Não |
question_2 | Resposta da questão 2 do formulário | Boolean | Não |
- O símbolo
@
faz referência a outra classe.
Em cada post existe dois campos para arquivos, sendo eles image
e o audio
, ambos são opcionais. Quando um post é criado ele cria duas entradas na tabela do @FileStorage
, uma para o audio e outra para a foto, mesmo se os campos foram deixados vazios. A tabela Post guarda apenas os id's da tabela file_storage
.
Contact
Esta classe é responsável por gerenciar a página de contato. Permitindo o usuário entrar em contato com a administração do Santos às Cegas.
Estrutura
Campo | Descrição | Tipo | Auto-inserido |
---|---|---|---|
id | Número de identificação do agendamento | Long | Sim |
name | Nome do usuário | String | Não |
Email do usuário | String | Não | |
phone | Telefone do usuário | String | Não |
subject | Assunto | String | Não |
message | Mensagem para à administração | String | Não |
Esta classe usa o EmailService para enviar o email usando o template src/main/resources/templates/clientContact.html