diff --git a/src/CMSMicroservice.Application/UserCartsCQ/Commands/CreateNewUserCarts/CreateNewUserCartsCommandHandler.cs b/src/CMSMicroservice.Application/UserCartsCQ/Commands/CreateNewUserCarts/CreateNewUserCartsCommandHandler.cs index 0cb9f48..702237f 100644 --- a/src/CMSMicroservice.Application/UserCartsCQ/Commands/CreateNewUserCarts/CreateNewUserCartsCommandHandler.cs +++ b/src/CMSMicroservice.Application/UserCartsCQ/Commands/CreateNewUserCarts/CreateNewUserCartsCommandHandler.cs @@ -13,6 +13,16 @@ public class CreateNewUserCartsCommandHandler : IRequestHandler(); + var existingUserCart = await _context.UserCartss + .FirstOrDefaultAsync(x => x.UserId == entity.UserId && x.ProductId == entity.ProductId && !x.IsDeleted, cancellationToken); + if (existingUserCart != null) + { + existingUserCart.Count += entity.Count; + _context.UserCartss.Update(existingUserCart); + existingUserCart.AddDomainEvent(new UpdateUserCartsEvent(existingUserCart)); + await _context.SaveChangesAsync(cancellationToken); + return existingUserCart.Adapt(); + } await _context.UserCartss.AddAsync(entity, cancellationToken); entity.AddDomainEvent(new CreateNewUserCartsEvent(entity)); await _context.SaveChangesAsync(cancellationToken);