public ICommandResult Execute(AddItemToUnauthorizedBasketCommand command) { if (command.ProductIds == null) { throw new ArgumentNullException(); } var exceptions = new List <Exception>(); foreach (var productId in command.ProductIds) { try { var product = _productRepository.GetById(productId); if (product == null) { return(new FailureResult(BasketCommandMessage.ProductDoesNotFound)); } var unauthorizedBasket = _unauthorizedBasketRepository.GetBasketItems(command.CookieId); if (unauthorizedBasket != null) { unauthorizedBasket.AddBasketItem(product); _unauthorizedBasketRepository.Edit(unauthorizedBasket); } else { var basket = new UnauthorizedBasket { CookieId = command.CookieId }; basket.AddBasketItem(product); _unauthorizedBasketRepository.Add(basket); } } catch (Exception exception) { _logger.Error(exception.Message); exceptions.Add(exception); return(new FailureResult(BasketCommandMessage.AddingItemToBasketFaild)); } } if (exceptions.Any()) { throw new AggregateException(exceptions); } _unitOfWork.Commit(); return(new SuccessResult(BasketCommandMessage.ItemAddedToBasketSuccessfully)); }
public ICommandResult Execute(TransferUnauthorizedBasketCommand command) { if (command == null) { throw new ArgumentNullException(); } var unauthorizedBasket = _unauthorizedBasketRepository.GetBasketItems(command.CookieId); var exceptions = new List <Exception>(); if (unauthorizedBasket != null) { foreach (var productItem in unauthorizedBasket.BasketItems) { try { var userBasket = _basketRepository.GetUserBasket(command.UserId); if (userBasket != null) { AddItemsToBasket(productItem.ProductId, userBasket); _basketRepository.Edit(userBasket); } else { var basket = new Basket(); AssignToUser(command, basket); AddItemsToBasket(productItem.ProductId, basket); _basketRepository.Add(basket); } } catch (Exception exception) { _logger.Error(exception.Message); exceptions.Add(exception); return(new FailureResult(BasketCommandMessage.AddingItemToBasketFaild)); } } _unauthorizedBasketRepository.ClearUnauthorizedBasket(unauthorizedBasket.BasketItems); } if (exceptions.Any()) { throw new AggregateException(exceptions); } _unitOfWork.Commit(); return(new SuccessResult(BasketCommandMessage.ItemAddedToBasketSuccessfully)); }
public BasketQueryResponse GetBasketItems(BasketQueryRequest queryRequest) { var response = new BasketQueryResponse(); try { var baskets = _unauthorizedBasketRepository.GetBasketItems(queryRequest, queryRequest.CookieId); if (baskets == null) { response.Message = BasketQueryMessages.BasketIsEmpty; return(response); } response.Basket = Mapper.Map <UnauthorizedBasket, BasketDto>(baskets); } catch (Exception exception) { _logger.Error(exception.Message); } return(response); }