Class DonorDepositServiceImpl
- All Implemented Interfaces:
DonorDepositService
Esta classe fornece a implementação dos métodos definidos na interface DonorDepositService,
responsável por gerenciar depósitos feitos por doadores.
A classe utiliza os repositórios DonorDepositRepository e DepositEntityService para
persistência e operações relacionadas aos depósitos.
Constantes de Erro
DONOR_EMAIL_NOT_FOUND_ERROR_MESSAGE- Código de erro para e-mail de doador não encontrado.DEPOSIT_VALIDATION_ERROR- Código de erro para falha na validação de depósito.REQUIRED_USER_ERROR_MESSAGE- Código de erro para usuário obrigatório.
Também utiliza o utilitário ValidationUtils para validações comuns.
Exemplo de Uso
@Autowired
private DonorDepositServiceImpl donorDepositService;
DepositDonationRequest request = new DepositDonationRequest();
// configuração do request
RegisteredDepositResponse response = donorDepositService.registerDonation(request);
- Since:
- 1.3.0
- Author:
- diegoneves
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Integerprivate final DepositEntityServicestatic final Integerprivate final DonorDepositRepositorystatic final Integer -
Constructor Summary
ConstructorsConstructorDescriptionDonorDepositServiceImpl(DonorDepositRepository donorDepositRepository, DepositEntityService depositEntityService) -
Method Summary
Modifier and TypeMethodDescriptionprivate static RegisteredDepositResponseFromDonorDepositMapperObtém uma instância deRegisteredDepositResponseFromDonorDepositMapperque é utilizada para mapear objetos do tipoDonorDepositpara o tipoRegisteredDepositResponse.voidlinkDepositToDonor(UserEntity user) Vincula depósitos a um doador baseado nas informações do usuário fornecidas.private List<DepositEntity>mergeDeposits(DepositDonationRequest request, DonorDeposit donorDeposit) Combina os depósitos existentes de um doador com novos depósitos fornecidos em uma solicitação de doação.registerDonation(DepositDonationRequest request) Registra uma nova doação com base nas informações fornecidas noDepositDonationRequest.private static voidValida uma solicitação de depósito.
-
Field Details
-
DONOR_EMAIL_NOT_FOUND_ERROR_MESSAGE
-
DEPOSIT_VALIDATION_ERROR
-
REQUIRED_USER_ERROR_MESSAGE
-
donorDepositRepository
-
depositEntityService
-
-
Constructor Details
-
DonorDepositServiceImpl
public DonorDepositServiceImpl(DonorDepositRepository donorDepositRepository, DepositEntityService depositEntityService)
-
-
Method Details
-
registerDonation
Description copied from interface:DonorDepositServiceRegistra uma nova doação com base nas informações fornecidas noDepositDonationRequest.Este método é responsável por processar uma solicitação de doação de depósito, validar os dados da solicitação e registrar a doação no sistema. Ele retorna um
RegisteredDepositResponsecontendo as informações da doação registrada, como confirmação de que a doação foi processada com sucesso.- Specified by:
registerDonationin interfaceDonorDepositService- Parameters:
request- O objetoDepositDonationRequestcontendo os detalhes da doação a ser registrada. Deve incluir o email do responsável pela doação e uma lista de detalhes dos depósitos (DepositDTO).- Returns:
- Um objeto
RegisteredDepositResponsecontendo os detalhes da doação registrada, incluindo o nome do usuário, email e a lista de depósitos associados.
-
registerDonationValidate
Valida uma solicitação de depósito.Este método verifica se a solicitação de depósito de doação, o e-mail do responsável pelo depósito, e a lista de objetos de depósito não são nulos ou vazios, lançando exceções em casos de validação falha.
Todas as validações utilizam o utilitário
ValidationUtilspara garantir que os dados obrigatórios estejam presentes antes de prosseguir com o processamento de depósito.- Parameters:
request- A solicitação de depósito que está sendo validada. O objetoDepositDonationRequestdeve incluir um e-mail do responsável e uma lista de objetos do tipoDepositDTO.- Throws:
DepositProcessingException- Se qualquer um dos seguintes critérios de validação falhar:- A solicitação de depósito (
request) é nula ou está vazia. - O e-mail do responsável pela doação (
request.getResponsibleEmail()) é nulo ou está vazio. - A lista de objetos de depósito (
request.getDepositDTOS()) é nula ou está vazia.
- A solicitação de depósito (
- See Also:
-
getResponseMapper
Obtém uma instância deRegisteredDepositResponseFromDonorDepositMapperque é utilizada para mapear objetos do tipoDonorDepositpara o tipoRegisteredDepositResponse.- Returns:
- Uma nova instância de
RegisteredDepositResponseFromDonorDepositMapper, que será usada para realizar o mapeamento dos dados de doações de doadores registrados.
-
mergeDeposits
private List<DepositEntity> mergeDeposits(DepositDonationRequest request, DonorDeposit donorDeposit) Combina os depósitos existentes de um doador com novos depósitos fornecidos em uma solicitação de doação.Este método une a lista de
DepositEntityexistente associada a umDonorDepositcom uma nova lista deDepositEntityque é criada a partir doDepositDonationRequest.- Parameters:
request- A solicitação de doação contendo detalhes dos novos depósitos. O objetoDepositDonationRequestdeve incluir uma lista deDepositDTO.DepositDonationRequest#getDepositDTOS()é utilizada para obter esta lista.donorDeposit- A entidadeDonorDepositexistente associada ao doador.DonorDeposit#getDeposits()deve retornar a lista atual de depósitos do doador.- Returns:
- Uma lista combinada de
DepositEntitycontendo os depósitos existentes e os novos.
-
linkDepositToDonor
Description copied from interface:DonorDepositServiceVincula depósitos a um doador baseado nas informações do usuário fornecidas.Este método valida o usuário dado e, se o perfil do usuário for do tipo "DONOR", cria um novo registro de depósito doador e salva no repositório apropriado.
- Specified by:
linkDepositToDonorin interfaceDonorDepositService- Parameters:
user- Um objetoUserEntityque representa o usuário cujos depósitos serão vinculados. O usuário deve ter um perfil do tipo "DONOR" para prosseguir com o vinculo.
-