From bdc40b2a60c16fd159db8d452d41c2264c40b472 Mon Sep 17 00:00:00 2001
From: ayaZouity <aya.zouity@marketingconfort.com>
Date: Thu, 6 Mar 2025 12:52:57 +0000
Subject: [PATCH] Add delete item functionality in back office and display sale
 session ID

---
 CHANGELOG.md                                        |  2 ++
 pom.xml                                             |  2 +-
 .../mydressin/dtos/ProductDetailsCartDTO.java       |  3 +++
 .../mydressin/mappers/CartMapper.java               |  7 +------
 .../mydressin/repositories/CartRepository.java      |  2 +-
 .../repositories/SessionOrderRepository.java        |  1 +
 .../mydressin/services/impl/CartServiceImp.java     | 13 +++++++++++--
 7 files changed, 20 insertions(+), 10 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2f5bee3..45c4b44 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,8 @@
 ## [1.0.73-RELEASE]
 ### Added
 - MYD-739/Fix List with sale sessions stats
+- Add delete item functionality in back office and display sale session ID
+
 
 ### Changed
 - Changes in existing functionality.
diff --git a/pom.xml b/pom.xml
index 479dafb..5f723b4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -18,7 +18,7 @@
 		<dependency>
 			<groupId>com.marketingconfort</groupId>
 			<artifactId>mydressin-common</artifactId>
-			<version>1.0.206-RELEASE</version>
+			<version>1.0.212-RELEASE</version>
 		</dependency>
 		<dependency>
 			<groupId>org.springframework.boot</groupId>
diff --git a/src/main/java/com/marketingconfort/mydressin/dtos/ProductDetailsCartDTO.java b/src/main/java/com/marketingconfort/mydressin/dtos/ProductDetailsCartDTO.java
index 9c05b5c..429bb82 100644
--- a/src/main/java/com/marketingconfort/mydressin/dtos/ProductDetailsCartDTO.java
+++ b/src/main/java/com/marketingconfort/mydressin/dtos/ProductDetailsCartDTO.java
@@ -1,6 +1,7 @@
 package com.marketingconfort.mydressin.dtos;
 
 import com.marketingconfort.mydressin.common.cart.dtos.ProductCartDTO;
+import com.marketingconfort.mydressin.common.cart.enumurations.ItemCartStatus;
 import com.marketingconfort.mydressin.common.cart.enumurations.ItemSource;
 import lombok.*;
 
@@ -16,4 +17,6 @@ public class ProductDetailsCartDTO {
     private long quantity;
     private double totalPrice;
     private ItemSource source;
+    private ItemCartStatus status;
+    private Long sessionOrderId;
 }
diff --git a/src/main/java/com/marketingconfort/mydressin/mappers/CartMapper.java b/src/main/java/com/marketingconfort/mydressin/mappers/CartMapper.java
index 45412e4..95855ca 100644
--- a/src/main/java/com/marketingconfort/mydressin/mappers/CartMapper.java
+++ b/src/main/java/com/marketingconfort/mydressin/mappers/CartMapper.java
@@ -60,14 +60,9 @@ public class CartMapper {
 
     public ClientCartDTO cartToClientCartDTO(Cart cart)
     {
-        List<ItemCart>  itemCarts = cart.getItems()
-                .stream()
-                .filter(itemCart -> itemCart.getStatus()!=ItemCartStatus.DELETED_SITE && itemCart.getStatus()!=ItemCartStatus.DELETED_BO )
-                .toList();
-
         ClientCartDTO clientCartDTO = new ClientCartDTO();
         clientCartDTO.setId(cart.getId());
-        clientCartDTO.setItemsCount(itemCarts.size());
+        clientCartDTO.setItemsCount(cart.getItems().size());
 
         return clientCartDTO;
     }
diff --git a/src/main/java/com/marketingconfort/mydressin/repositories/CartRepository.java b/src/main/java/com/marketingconfort/mydressin/repositories/CartRepository.java
index a73c5d9..867f4b4 100644
--- a/src/main/java/com/marketingconfort/mydressin/repositories/CartRepository.java
+++ b/src/main/java/com/marketingconfort/mydressin/repositories/CartRepository.java
@@ -78,7 +78,7 @@ public interface CartRepository extends JpaRepository<Cart, Long>, JpaSpecificat
                                                ItemSource source);
 
     @Query("SELECT c FROM Cart c " +
-            "WHERE EXISTS (SELECT ic1 FROM c.items ic1 WHERE ic1.status != 'DELETED_SITE' AND ic1.status != 'DELETED_BO' ) " +
+            "WHERE EXISTS (SELECT ic1 FROM c.items ic1) " +
             "  AND LOWER(c.status) = 'open' " +
             "  AND ((-1L) in :clientIds OR c.clientId IN :clientIds) " +
             "  AND ((-1L) in :productIds OR EXISTS (SELECT ic2 FROM c.items ic2 WHERE ic2.productId IN :productIds))")
diff --git a/src/main/java/com/marketingconfort/mydressin/repositories/SessionOrderRepository.java b/src/main/java/com/marketingconfort/mydressin/repositories/SessionOrderRepository.java
index 06ea98b..3e8ae6c 100644
--- a/src/main/java/com/marketingconfort/mydressin/repositories/SessionOrderRepository.java
+++ b/src/main/java/com/marketingconfort/mydressin/repositories/SessionOrderRepository.java
@@ -21,4 +21,5 @@ public interface SessionOrderRepository extends JpaRepository<SessionOrder,Long>
     void updateItemCartExpirationDateBySaleSessionId(@Param("sessionId") Long sessionId,
                                                      @Param("expirationDate") LocalDateTime expirationDate);
     List<SessionOrder> findAll();
+    SessionOrder findSessionOrderByItemCart_Id(Long id);
 }
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 5f374ac..ecce6f0 100644
--- a/src/main/java/com/marketingconfort/mydressin/services/impl/CartServiceImp.java
+++ b/src/main/java/com/marketingconfort/mydressin/services/impl/CartServiceImp.java
@@ -16,6 +16,7 @@ import com.marketingconfort.mydressin.common.cart.enumurations.OrderStatus;
 import com.marketingconfort.mydressin.common.cart.enumurations.Status;
 import com.marketingconfort.mydressin.common.cart.models.Cart;
 import com.marketingconfort.mydressin.common.cart.models.ItemCart;
+import com.marketingconfort.mydressin.common.cart.models.SessionOrder;
 import com.marketingconfort.mydressin.common.constant.urlServiceConstant.NameUri;
 import com.marketingconfort.mydressin.common.constant.urlServiceConstant.NameUrl;
 import com.marketingconfort.mydressin.common.constant.urlServiceConstant.Path.AddonsServicePath;
@@ -29,6 +30,7 @@ import com.marketingconfort.mydressin.exceptions.InsufficientBalanceException;
 import com.marketingconfort.mydressin.mappers.CartMapper;
 import com.marketingconfort.mydressin.mappers.ProductDTOMapper;
 import com.marketingconfort.mydressin.repositories.CartRepository;
+import com.marketingconfort.mydressin.repositories.SessionOrderRepository;
 import com.marketingconfort.mydressin.services.*;
 import com.marketingconfort.starter.core.exceptions.TechnicalException;
 import com.marketingconfort.starter.core.services.MCRestTemplateService;
@@ -64,9 +66,10 @@ public class CartServiceImp implements CartService {
     private final NameUrl nameUrl;
     private final ExternalApiService externalApiService;
     private final PromoCodeUtilService promoCodeUtilService;
+    private final SessionOrderRepository sessionOrderRepository;
 
     public CartServiceImp(CartRepository cartRepository, ProductStockService productStockService, CartMapper cartMapper, CartCountConfigService cartCountConfigService,
-                          MCRestTemplateService mcRestTemplateService, NameUrl nameUrl, ExternalApiService externalApiService, PromoCodeUtilService promoCodeUtilService) {
+                          MCRestTemplateService mcRestTemplateService, NameUrl nameUrl, ExternalApiService externalApiService, PromoCodeUtilService promoCodeUtilService, SessionOrderRepository sessionOrderRepository) {
         this.cartRepository = cartRepository;
         this.productStockService = productStockService;
         this.cartMapper = cartMapper;
@@ -75,6 +78,7 @@ public class CartServiceImp implements CartService {
         this.nameUrl = nameUrl;
         this.externalApiService = externalApiService;
         this.promoCodeUtilService = promoCodeUtilService;
+        this.sessionOrderRepository = sessionOrderRepository;
     }
 
 
@@ -1059,11 +1063,16 @@ public class CartServiceImp implements CartService {
                 ? productCart.getPromoPrice() * item.getQuantity()
                 : productCart.getRegularPrice() * item.getQuantity();
         ProductDetailsCartDTO detailsDTO = new ProductDetailsCartDTO();
-        detailsDTO.setItemId(item.getProductId());
+        detailsDTO.setItemId(item.getId());
         detailsDTO.setQuantity(item.getQuantity());
         detailsDTO.setSource(item.getSource());
         detailsDTO.setTotalPrice(price);
         detailsDTO.setProductCartDTOS(productCart);
+        detailsDTO.setStatus(item.getStatus());
+        SessionOrder sessionOrderByItemCartId = sessionOrderRepository.findSessionOrderByItemCart_Id(item.getId());
+        if(sessionOrderByItemCartId!=null){
+            detailsDTO.setSessionOrderId(sessionOrderByItemCartId.getSaleSession().getId());
+        }
         return detailsDTO;
     }
 
-- 
GitLab