java.lang.Object
br.com.receitaquedoimenos.ReceitaQueDoiMenos.services.DrinkService

@Service public class DrinkService extends Object
A classe DrinkService fornece métodos para gerenciar operações relacionadas a bebidas, incluindo criação, recuperação, atualização e exclusão de bebidas. Ela interage com o DrinkRepository e o UserRepository para lidar com a persistência e recuperação de dados de bebidas e usuários. Além disso, ela utiliza o ForbiddenWordsValidator para garantir que as bebidas sigam certas restrições de conteúdo.
Since:
2023.2
Version:
1.0
Author:
Pedro Henrique Pereira de Oliveira
See Also:
  • Constructor Details

    • DrinkService

      public DrinkService()
  • Method Details

    • createDrink

      public DrinkResponseDTO createDrink(DrinkRequestDTO drinkRequestDTO)
      Cria uma nova bebida com base no DrinkRequestDTO fornecido, valida seu conteúdo e a associa ao usuário correspondente que a criou. Retorna a bebida criada como um DrinkResponseDTO.
      Parameters:
      drinkRequestDTO - O DTO contendo informações para criar a bebida.
      Returns:
      A bebida criada como um DrinkResponseDTO.
      Throws:
      DataNotFoundException - Se o usuário criador não for encontrado.
    • getDrinksByName

      public List<DrinkResponseDTO> getDrinksByName(String drinkName)
      Recupera uma lista de bebidas com o nome especificado.
      Parameters:
      drinkName - O nome das bebidas a serem recuperadas.
      Returns:
      Uma lista de bebidas que correspondem ao nome especificado.
    • getDrinksByType

      public List<DrinkResponseDTO> getDrinksByType(TypeDrink type)
      Recupera uma lista de bebidas do tipo especificado.
      Parameters:
      type - O tipo de bebidas a serem recuperadas.
      Returns:
      Uma lista de bebidas que correspondem ao tipo especificado.
    • getAllDrinks

      public List<DrinkResponseDTO> getAllDrinks()
      Recupera uma lista de todas as bebidas no sistema.
      Returns:
      Uma lista contendo todas as bebidas no sistema.
    • getDrinkById

      public DrinkResponseDTO getDrinkById(String drinkID)
      Recupera informações sobre uma bebida específica com base em seu ID.
      Parameters:
      drinkID - O ID da bebida a ser recuperada.
      Returns:
      Informações sobre a bebida especificada como um DrinkResponseDTO.
      Throws:
      DataNotFoundException - Se a bebida com o ID especificado não for encontrada.
    • updateDrink

      public DrinkResponseDTO updateDrink(String drinkID, String userID, DrinkRequestDTO drinkRequestDTO)
      Atualiza as informações de uma bebida específica, validando o conteúdo e garantindo que o usuário solicitante tenha a autorização necessária. Retorna a bebida atualizada como um DrinkResponseDTO.
      Parameters:
      drinkID - O ID da bebida a ser atualizada.
      userID - O ID do usuário que está fazendo a solicitação de atualização.
      drinkRequestDTO - O DTO contendo as informações atualizadas para a bebida.
      Returns:
      A bebida atualizada como um DrinkResponseDTO.
      Throws:
      UnauthorizedOperationException - Se a operação de atualização não for autorizada para o usuário solicitante.
      DataNotFoundException - Se a bebida com o ID especificado não for encontrada.
    • deleteDrink

      public void deleteDrink(String drinkID, String userID)
      Exclui uma bebida específica, garantindo que o usuário solicitante tenha a autorização necessária.

      Após a exclusão, uma operação em cascada é executada, apagando o ID do drinks em outras possíveis collections.

      Parameters:
      drinkID - O ID da bebida a ser excluída.
      userID - O ID do usuário que está fazendo a solicitação de exclusão.
      Throws:
      UnauthorizedOperationException - Se a operação de exclusão não for autorizada para o usuário solicitante.
      DataNotFoundException - Se a bebida com o ID especificado não for encontrada.