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
isAvailabletem 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
Appointmenttem 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, sendoEXTENSIONa extensão do arquivo eTIMESTAMPsendo 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âmetroaltdo 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