diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/avis/converter/AvisConverter.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/avis/converter/AvisConverter.java new file mode 100644 index 0000000..5c5d44a --- /dev/null +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/avis/converter/AvisConverter.java @@ -0,0 +1,27 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.avis.converter; + +import fr.iut_fbleau.but3.dev62.mylibrary.avis.AvisDTO; +import fr.iut_fbleau.but3.dev62.mylibrary.avis.AvisInfo; +import fr.iut_fbleau.but3.dev62.mylibrary.avis.entity.Avis; + +public final class AvisConverter { + + private AvisConverter() { + } + + public static Avis toDomain(AvisInfo avisInfo) { + return Avis.builder() + .clientId(avisInfo.clientId()) + .livreId(avisInfo.livreId()) + .note(avisInfo.note()) + .commentaire(avisInfo.commentaire()) + .dateAchat(avisInfo.dateAchat()) + .build(); + } + + public static AvisDTO toDTO(Avis avis) { + return AvisDTO.builder() + .avisId(avis.getId()) + .build(); + } +} \ No newline at end of file diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/avis/usecase/AvisUseCase.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/avis/usecase/AvisUseCase.java new file mode 100644 index 0000000..7c43fb4 --- /dev/null +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/avis/usecase/AvisUseCase.java @@ -0,0 +1,40 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.avis.usecase; + +import fr.iut_fbleau.but3.dev62.mylibrary.avis.AvisDTO; +import fr.iut_fbleau.but3.dev62.mylibrary.avis.AvisInfo; +import fr.iut_fbleau.but3.dev62.mylibrary.avis.converter.AvisConverter; +import fr.iut_fbleau.but3.dev62.mylibrary.avis.entity.Avis; +import fr.iut_fbleau.but3.dev62.mylibrary.avis.exception.NotValidAvisException; +import fr.iut_fbleau.but3.dev62.mylibrary.avis.repository.AvisRepository; +import fr.iut_fbleau.but3.dev62.mylibrary.avis.validator.AvisValidator; +import fr.iut_fbleau.but3.dev62.mylibrary.customer.exception.CustomerNotFoundException; +import fr.iut_fbleau.but3.dev62.mylibrary.customer.repository.CustomerRepository; +import java.util.Optional; +import java.util.UUID; + +public final class AvisUseCase { + + private final AvisRepository avisRepository; + private final CustomerRepository customerRepository; + + public AvisUseCase(AvisRepository avisRepository, CustomerRepository customerRepository) { + this.avisRepository = avisRepository; + this.customerRepository = customerRepository; + } + + public AvisDTO gererAvis(AvisInfo avisInfo) throws NotValidAvisException, CustomerNotFoundException { + AvisValidator.validate(avisInfo); + + customerRepository.findById(avisInfo.clientId()) + .orElseThrow(() -> new CustomerNotFoundException(avisInfo.clientId())); + + Avis avis = AvisConverter.toDomain(avisInfo); + Avis savedAvis = avisRepository.save(avis); + + return AvisConverter.toDTO(savedAvis); + } + + public Optional findAvisById(UUID uuid) { + return avisRepository.findById(uuid).map(AvisConverter::toDTO); + } +} \ No newline at end of file