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 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, sendo EXTENSION a extensão do arquivo e TIMESTAMP 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âmetro alt 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 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