From f8c3616a9bafad1e11667712680f698a1c10480c Mon Sep 17 00:00:00 2001 From: salaheddineZidani <salaheddine.zidani@marketingconfort.com> Date: Sat, 23 Nov 2024 18:16:39 +0100 Subject: [PATCH] save changes --- pom.xml | 2 +- .../services/ExternalApiService.java | 1 + .../services/impl/CartServiceImp.java | 18 +++++++----- .../services/impl/ExternalApiServiceImpl.java | 29 +++++++++++++++---- .../services/impl/ItemCartServiceImp.java | 2 +- .../impl/PromoCodeUtilServiceImpl.java | 9 ++++-- 6 files changed, 44 insertions(+), 17 deletions(-) diff --git a/pom.xml b/pom.xml index 20e7878..0a69ec0 100644 --- a/pom.xml +++ b/pom.xml @@ -18,7 +18,7 @@ <dependency> <groupId>com.marketingconfort</groupId> <artifactId>mydressin-common</artifactId> - <version>1.0.137-SNAPSHOT-5</version> + <version>1.0.137-SNAPSHOT-7</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> diff --git a/src/main/java/com/marketingconfort/mydressin/services/ExternalApiService.java b/src/main/java/com/marketingconfort/mydressin/services/ExternalApiService.java index cdc7f45..8faa6b2 100644 --- a/src/main/java/com/marketingconfort/mydressin/services/ExternalApiService.java +++ b/src/main/java/com/marketingconfort/mydressin/services/ExternalApiService.java @@ -8,6 +8,7 @@ import java.util.List; public interface ExternalApiService { PromoCodeDTO getPromoCode(String code); + PromoCodeDTO getPromoCodeById(Long promoCodeId); List<PromoCodeDTO> getPromoCodesByIds(List<Long> ids); List<ProductCategoriesResponse> getProductsAndVariationsWithCategories(List<Long> productIds, List<Long> variationIds); void updateUsagePromoCode(boolean incrementUsage, Long promoCodeId); diff --git a/src/main/java/com/marketingconfort/mydressin/services/impl/CartServiceImp.java b/src/main/java/com/marketingconfort/mydressin/services/impl/CartServiceImp.java index 65eb030..6ad60d9 100644 --- a/src/main/java/com/marketingconfort/mydressin/services/impl/CartServiceImp.java +++ b/src/main/java/com/marketingconfort/mydressin/services/impl/CartServiceImp.java @@ -265,7 +265,6 @@ public class CartServiceImp implements CartService { if (cart.getAppliedVoucherCode() != null && cart.getAppliedVoucher() == null) { fetchAndSetAppliedVoucher(cart); } - reload(cart); Optional<CartCountConfigDTO> configOptional = cartCountConfigService.findFirstConfig(); CartCountConfigDTO config = configOptional.orElse(null); @@ -274,7 +273,9 @@ public class CartServiceImp implements CartService { cartRepository.save(cart); - CartDTO cartDTO = cartMapper.toDTO(cart); + Cart updatedCart = findCartClient(clientId); + + CartDTO cartDTO = reload(updatedCart); applyCountdownToCartDTO(cartDTO, config); @@ -811,7 +812,9 @@ public class CartServiceImp implements CartService { @Override public CartDTO removeCodePromoFromCart(Long clientId, Long promoCodeIdToRemove) { - Cart cart = findOrCreateCartByClientId(clientId); + Cart cart = cartRepository.findCartWithValidItems(clientId, Status.open, ItemCartStatus.DELETED_SITE, ItemCartStatus.DELETED_BO) + .orElseThrow(() -> new CartNotFoundException("Panier non trouvé pour le client ID: " + clientId)); + if (cart == null) { throw new IllegalArgumentException("Le panier pour ce client n'existe pas."); } @@ -824,11 +827,13 @@ public class CartServiceImp implements CartService { throw new IllegalArgumentException("Le code promo spécifié n'est pas appliqué au panier."); } - cart.getPromoCodeIds().remove(promoCodeIdToRemove); + cart.getPromoCodeIds().removeIf(id -> id.equals(promoCodeIdToRemove)); cartRepository.save(cart); CartDTO cartDTO = getCartByClientId(clientId); - cartDTO.getInfos().add("Code Promo supprimé avec succès."); + + PromoCodeDTO promoCodeDTO = externalApiService.getPromoCodeById(promoCodeIdToRemove); + cartDTO.getInfos().add("Le code promo: " + promoCodeDTO.getCode() + " est supprimé avec succès."); return cartDTO; } @@ -846,9 +851,6 @@ public class CartServiceImp implements CartService { if (!isCartValid) { cart.getPromoCodeIds().remove(promoCode.getId()); - reload(cart); - cartRepository.save(cart); - cart.getInfos().add("Le code promo " + promoCode.getCode() + " a été retiré car aucun produit éligible n'est présent dans le panier."); } } } diff --git a/src/main/java/com/marketingconfort/mydressin/services/impl/ExternalApiServiceImpl.java b/src/main/java/com/marketingconfort/mydressin/services/impl/ExternalApiServiceImpl.java index 3defad3..7506fbf 100644 --- a/src/main/java/com/marketingconfort/mydressin/services/impl/ExternalApiServiceImpl.java +++ b/src/main/java/com/marketingconfort/mydressin/services/impl/ExternalApiServiceImpl.java @@ -38,19 +38,38 @@ public class ExternalApiServiceImpl implements ExternalApiService { @Override public PromoCodeDTO getPromoCode(String code) { - String url = nameUrl.getAddonsService()+ NameUri.ADDONS + AddonsServicePath.getPromoCodeUrl(code); + String url = nameUrl.getAddonsService()+ NameUri.ADDONS + AddonsServicePath.getPromoCodeByCodeUrl(code); try { - logger.info("Envoi de la requête pour récupérer le code promo: {}", code); + logger.info("Envoi de la requête pour récupérer le code promo avec code: {}", code); ResponseEntity<PromoCodeDTO> response = mcRestTemplateService.getForObject(url, PromoCodeDTO.class); if (response.getStatusCode() == HttpStatus.OK) { logger.info("Code promo récupéré avec succès: {}", response.getBody()); return response.getBody(); } else { - logger.warn("Erreur lors de la récupération du code promo : {}", response.getStatusCode()); - throw new RuntimeException("Erreur lors de la récupération du code promo : " + response.getStatusCode()); + logger.warn("Erreur lors de la récupération du code promo avec code : {}", response.getStatusCode()); + throw new RuntimeException("Erreur lors de la récupération du code promo avec code : " + response.getStatusCode()); } } catch (RestClientException e) { - logger.error("Erreur de communication avec le microservice pour le code promo '{}': {}", code, e.getMessage(), e); + logger.error("Erreur de communication avec le microservice pour le code promo avec code '{}': {}", code, e.getMessage(), e); + throw new RuntimeException("Erreur de communication avec le microservice", e); + } + } + + @Override + public PromoCodeDTO getPromoCodeById(Long promoCodeId) { + String url = nameUrl.getAddonsService()+ NameUri.ADDONS + AddonsServicePath.getPromoCodeByIdUrl(promoCodeId); + try { + logger.info("Envoi de la requête pour récupérer le code promo ID: {}", promoCodeId); + ResponseEntity<PromoCodeDTO> response = mcRestTemplateService.getForObject(url, PromoCodeDTO.class); + if (response.getStatusCode() == HttpStatus.OK) { + logger.info("Code promo récupéré avec succès: {}", response.getBody()); + return response.getBody(); + } else { + logger.warn("Erreur lors de la récupération du code promo ID : {}", response.getStatusCode()); + throw new RuntimeException("Erreur lors de la récupération du code promo ID : " + response.getStatusCode()); + } + } catch (RestClientException e) { + logger.error("Erreur de communication avec le microservice pour le code promo ID '{}': {}", promoCodeId, e.getMessage(), e); throw new RuntimeException("Erreur de communication avec le microservice", e); } } diff --git a/src/main/java/com/marketingconfort/mydressin/services/impl/ItemCartServiceImp.java b/src/main/java/com/marketingconfort/mydressin/services/impl/ItemCartServiceImp.java index 29dac02..5696f0a 100644 --- a/src/main/java/com/marketingconfort/mydressin/services/impl/ItemCartServiceImp.java +++ b/src/main/java/com/marketingconfort/mydressin/services/impl/ItemCartServiceImp.java @@ -365,7 +365,7 @@ public class ItemCartServiceImp implements ItemCartService { deleteItemCartById(cart, itemCartId); cartService.removeInvalidPromoCodes(cart); cartRepository.save(cart); - return cartMapper.toDTO(cart); + return cartService.getCartByClientId(clientId); } diff --git a/src/main/java/com/marketingconfort/mydressin/services/impl/PromoCodeUtilServiceImpl.java b/src/main/java/com/marketingconfort/mydressin/services/impl/PromoCodeUtilServiceImpl.java index 58176ba..6a2a59f 100644 --- a/src/main/java/com/marketingconfort/mydressin/services/impl/PromoCodeUtilServiceImpl.java +++ b/src/main/java/com/marketingconfort/mydressin/services/impl/PromoCodeUtilServiceImpl.java @@ -28,8 +28,13 @@ public class PromoCodeUtilServiceImpl implements PromoCodeUtilService { @Override public CartDTO calculatePromoCodeDiscountsToCart(CartDTO cart) { - if (cart == null || cart.getPromoCodeIds() == null || cart.getPromoCodeIds().isEmpty()) { - logger.warn("Cart is null or no promo codes provided."); + if (cart == null) { + logger.warn("Cart is null."); + return cart; + } + + if (cart.getPromoCodeIds() == null || cart.getPromoCodeIds().isEmpty()) { + logger.warn("No promo codes provided in the cart with client ID: {}.", cart.getClientId()); return cart; } -- GitLab