public async Task <ActionResult <BasketDTO> > UpsertBasket([FromBody] BasketDTO basketDto)
        {
            var discountUpdateTasks = new List <Task>();

            foreach (var basketItem in basketDto.Items)
            {
                async Task UpdateDiscount()
                {
                    try
                    {
                        var coupon = await _discountGrpcService.GetDiscount(basketItem.ProductName);

                        basketItem.Price -= coupon.Amount;
                    }
                    catch (RpcException exception) when(exception.StatusCode == Grpc.Core.StatusCode.NotFound)
                    {
                    }
                }

                discountUpdateTasks.Add(UpdateDiscount());
            }

            await Task.WhenAll(discountUpdateTasks);

            var basket = await _basketRepository.UpsertBasket(_mapper.Map <Entities.Basket>(basketDto));

            return(CreatedAtAction(nameof(GetBasket), new { userName = basket.UserName }, _mapper.Map <BasketDTO>(basket)));
        }
Example #2
0
        public void UpdateBasket_Should_Return_Valid_Data()
        {
            //Arrange
            var mock     = new Mock <IBasketRepository>();
            var myBasket = new BasketDTO
            {
                Id     = 1,
                UserId = "25"
            };

            mock.Setup(x => x.Update(myBasket)).Returns(
                new BasketDTO
            {
                Id     = 1,
                UserId = "25"
            }
                );
            BasketUC target = new BasketUC(mock.Object);

            //Act
            var result = target.UpdateBasket(new BasketBTO
            {
                Id     = 1,
                UserId = "25"
            });

            //Assert
            mock.Verify(u => u.Update(It.IsAny <BasketDTO>()), Times.Once());
        }
        public BasketDTO AddProduct(ProductInsertDTO productInsertDTO)
        {
            if (productInsertDTO.ProductId > 0)
            {
                var newProductDTO = GetProductById(productInsertDTO.ProductId);

                for (int i = 0; i < productInsertDTO.Amount; i++)
                {
                    productInsertDTO.CurrentBasketProducts.Add(newProductDTO);
                }
            }

            decimal totalSum      = productInsertDTO.CurrentBasketProducts.Select(x => x.Price).Sum();
            var     productIdList = productInsertDTO.CurrentBasketProducts.Select(x => x.Id).ToList();
            var     discountDTO   = _discountService.CalculateDiscount(productIdList);

            BasketDTO basketDTO = new BasketDTO()
            {
                CurrentBasketProducts = productInsertDTO.CurrentBasketProducts,
                DiscountDTO           = discountDTO,
                TotalCost             = totalSum - discountDTO.TotalDiscount
            };

            _logService.LogBasketDetails(basketDTO);

            return(basketDTO);
        }
        public BasketDTO GetBasket(int userId)
        {
            Mapper.Initialize(cfg => cfg.CreateMap <Purchase, PurchaseDTO>());
            var purchase = Mapper.Map <PurchaseDTO>(db.Purchases.Get(userId));

            if (purchase == null)
            {
                return(null);
            }

            Mapper.Initialize(cfg => cfg.CreateMap <UserSubscription, UserSubscriptionDTO>());
            var items = Mapper.Map <IEnumerable <UserSubscriptionDTO> >(db.UserSubscriptions.GetAll()
                                                                        .Where(us => us.PurchaseId == purchase.Id));

            var subscriptionsIds = new List <int>();

            foreach (var item in items)
            {
                subscriptionsIds.Add(item.SubscriptionId);
            }

            Mapper.Initialize(cfg => cfg.CreateMap <Subscription, SubscriptionDTO>());
            var subscriptions = Mapper.Map <IEnumerable <Subscription>, IEnumerable <SubscriptionDTO> >(db.Subscriptions.GetAll()
                                                                                                        .Where(s => subscriptionsIds.Contains(s.Id)));

            var basket = new BasketDTO()
            {
                UserId = userId, PurchaseId = purchase.Id
            };

            basket.SubscriptionsList.AddRange(subscriptions);

            return(basket);
        }
        public Response <BasketDTO> Create(BasketDTO basket)
        {
            try
            {
                basket.Status     = DTO.Entities.ModelEnums.Status.Active;
                basket.UpdateDate = DateTime.Now;
                basket.UploadDate = DateTime.Now;

                Basket entity = null;
                entity = Map <Basket>(basket);
                _basketRepository.Create(entity);
                _unitOfWork.SaveChanges();
                basket.Id = entity.Id;
                return(new Response <BasketDTO>()
                {
                    IsSuccess = true, Message = "Ürün Sepete Eklendi.", Result = basket
                });
            }
            catch (Exception ex)
            {
                return(new Response <BasketDTO>()
                {
                    IsSuccess = false, Exception = ex, Message = "Hata oluÅŸtu."
                });
            }
        }
        public void GetBasketById_Should_Return_Valid_Data()
        {
            //Arrange
            var mock     = new Mock <IBasketRepository>();
            var myBasket = new BasketDTO
            {
                Id     = 1,
                UserId = "25"
            };

            mock.Setup(x => x.GetById(1)).Returns(
                new BasketDTO
            {
                Id     = 1,
                UserId = "25"
            }
                );

            BasketUC target = new BasketUC(mock.Object);

            //Act
            var result = target.GetBasketById(1);

            //Assert
            Assert.AreEqual(result.Id, 1);
            Assert.AreEqual(result.UserId, "25");
        }
Example #7
0
        public void UpdateBasket_Should_Return_Null_If_Bto_Is_Null()
        {
            //Arrange
            var mock     = new Mock <IBasketRepository>();
            var myBasket = new BasketDTO
            {
                Id     = 1,
                UserId = "25"
            };

            mock.Setup(x => x.Update(myBasket)).Returns(
                new BasketDTO
            {
                Id     = 1,
                UserId = "25"
            }
                );
            BasketUC target = new BasketUC(mock.Object);

            //Act
            var result = target.UpdateBasket(null);

            //Assert
            Assert.IsNull(result);
        }
Example #8
0
        public async Task <BasketDTO> GetBasketAsync(int id)
        {
            await using var connection = new SqlConnection(_connectionString);

            BasketDTO resultBasket = null;

            var queryResult = await connection.QueryAsync <BasketDTO, BasketItemDTO, BasketDTO>(
                "SELECT b.[Id] as Id, bi.[Id] as BasketItemId, bi.[ProductId], bi.[Quantity] " +
                "FROM [Basket].[Baskets] b " +
                "INNER JOIN [Basket].[BasketItems] bi on bi.BasketId = b.[Id] " +
                $"WHERE b.[Id]={id}",
                (basket, basketItem) =>
            {
                if (resultBasket == null)
                {
                    resultBasket       = basket;
                    resultBasket.Items = new List <BasketItemDTO>();
                }
                resultBasket.Items.Add(basketItem);
                return(resultBasket);
            },
                splitOn : "BasketItemId");

            return(queryResult.FirstOrDefault());
        }
Example #9
0
        public UnitTest()
        {
            userRepoMock   = new Mock <IUserRepository>();
            itemRepoMock   = new Mock <IItemRepository>();
            basketRepoMock = new Mock <IBasketRepository>();

            var options = new DbContextOptionsBuilder <ApiContext>().UseInMemoryDatabase("TestDb").ConfigureWarnings(x => x.Ignore(InMemoryEventId.TransactionIgnoredWarning)).Options;

            context = new ApiContext(options);

            basketService = new BasketService(basketRepoMock.Object, userRepoMock.Object, itemRepoMock.Object, context);

            List <BasketDTO> basketDTOList = new List <BasketDTO>();

            basketRepoMock.Setup(x => x.CreateorUpdateBasket(It.IsAny <AddedItemDTO>()))
            .Callback((AddedItemDTO addedItem) => {
                BasketDTO basketDTO = new BasketDTO();
                basketDTO.ItemId    = addedItem.Item.Id;
                basketDTOList.Add(basketDTO);
            }
                      );

            basketRepoMock.Setup(x => x.GetUserBasket(It.IsAny <int>())).Returns(basketDTOList);
            itemRepoMock.Setup(x => x.StockCheck(It.IsAny <AddedItemDTO>())).Returns(true);
            userRepoMock.Setup(x => x.UserExist(It.IsAny <int>())).Returns(true);
            itemRepoMock.Setup(x => x.UpdateCompanyStock(It.IsAny <AddedItemDTO>()));
        }
        public void AddBook(string t, int id)
        {
            BasketDal dal2 = new BasketDal(ConfigurationManager.ConnectionStrings["IMDB"].ConnectionString);

            using (SqlConnection conn = new SqlConnection(connStr))
                using (SqlCommand comm = conn.CreateCommand())
                {
                    conn.Open();
                    comm.CommandText = $"select * from Books where Title = '{t}'";
                    SqlDataReader reader = comm.ExecuteReader();

                    BooksDTO Book = new BooksDTO();
                    while (reader.Read())
                    {
                        Book.BookID = (int)reader["BookID"];
                        Book.Author = reader["Autor"].ToString();
                        Book.Price  = (Decimal)reader["Price"];
                    }
                    conn.Close();
                    BasketDTO m = new BasketDTO
                    {
                        Title    = t,
                        UserID   = id,
                        BookID   = Book.BookID,
                        StatusID = 3,
                        Author   = Book.Author,
                        Price    = Book.Price,
                        Amount   = 1,
                        Date     = DateTime.Now
                    };

                    m = dal2.CreateBasket(m);
                }
        }
        public void GetBasketTest()
        {
            BasketDAL dal    = new BasketDAL(ConfigurationManager.ConnectionStrings["IMDB"].ConnectionString);
            BasketDTO result = new BasketDTO(dal);

            Assert.IsTrue(result.GetBasket(5).BasketID == 5, "Cannot find the item");
        }
        private static void NewOne()
        {
            BasketDal dal = new BasketDal(ConfigurationManager.ConnectionStrings["IMDB"].ConnectionString);

            BasketDTO m = new BasketDTO
            {
                // BasketID = 2,
                Title    = "Mizery",
                UserID   = 1,
                BookID   = 1,
                StatusID = 2,
                Author   = "King",
                Price    = 150,
                Amount   = 1,
                Date     = DateTime.Now
            };

            m = dal.CreateBasket(m);
            Console.WriteLine($"New basket ID: {m.Title}");

            foreach (var basket in dal.GetAllBaskets())
            {
                Console.WriteLine($"{basket.BasketID}\t{basket.Title}\t{basket.Price}");
            }

            Console.WriteLine($"Deleting basket ID: {m.BasketID}");
            dal.DeleteBasket(m.BasketID);
            foreach (var basket in dal.GetAllBaskets())
            {
                Console.WriteLine($"{basket.BasketID}\t{basket.Title}\t{basket.Price}");
            }
        }
Example #13
0
        public void Get_User_Basket_Returns_BasketDto()
        {
            var basketDtoList = new List <BasketDTO>();
            var basketDto     = new BasketDTO
            {
                Id        = 1,
                ItemId    = 1,
                ItemCount = 1
            };

            basketDtoList.Add(basketDto);

            var mockMapper = new MapperConfiguration(cfg =>
            {
                cfg.CreateMap <BasketDTO, Basket>().ReverseMap();
            });
            var mapper = mockMapper.CreateMapper();


            var options = new DbContextOptionsBuilder <ApiContext>()
                          .UseInMemoryDatabase("user_basket_test_db")
                          .Options;

            using (var context = new ApiContext(options))
            {
                context.LoadUserBasketTestData(1);
                var repository = new BasketRepository(context, mapper);
                var tst        = basketDtoList.First();
                var act        = repository.GetUserBasket(1).First();

                Assert.True(tst.ItemId == act.ItemId && tst.ItemCount == act.ItemCount && tst.Id == act.Id);
            }
        }
Example #14
0
        public async Task <ActionResult <Basket> > UpdateBasket(BasketDTO basketDTO)
        {
            List <BasketItem> items = new List <BasketItem>();

            foreach (BasketItemDTO itemek in basketDTO.BasketItems)
            {
                items.Add(new BasketItem
                {
                    Id          = itemek.Id,
                    ProductName = itemek.ProductName,
                    Price       = itemek.Price,
                    Quantity    = itemek.Quantity,
                    PictureUrl  = itemek.PictureUrl,
                    TypeId      = itemek.TypeId
                });
            }
            var basketchecked = new Basket
            {
                Id = basketDTO.Id,
                CustomOrderItems = basketDTO.CustomOrderItems,
                BasketItems      = items
            };

            var updatedBasket = await _basketRepository.UpdateBasketAsync(basketchecked);

            return(Ok(updatedBasket));
        }
        private void AddButton(object sender, RoutedEventArgs e)
        {
            BasketDTO basket = (BasketDTO)dataGrid2.SelectedItem;

            _basketViewModel.ADD(TitleBox2.Text);
            _basketViewModel.Update();
            dataGrid2.Items.Refresh();
        }
        public async Task <BasketDTO> UpdateBasketAsync(BasketDTO basket)
        {
            var customBasket = await _basketRepository.UpdateBasketAsync(_mapper.Map <BasketDTO, CustomBasket>(basket));

            _mapper.Map(basket, customBasket);

            return(basket);
        }
Example #17
0
        public async Task Checkout(BasketDTO basket, string userToken)
        {
            var updateBasketUri = Infrastructure.Basket.CheckoutBasket(_basketByPassUrl);

            var response = await _apiClient.PostAsync(updateBasketUri, basket, userToken);

            response.EnsureSuccessStatusCode();
        }
        public async Task Add(BasketDTO AddDTO)
        {
            await _basketRepository.Add(_Mapper.Map <Basket>(AddDTO));

            await _basketRepository.Commit();

            await _basketRepository.DisposeAsync();
        }
Example #19
0
        public IActionResult PostInvokeSuggetionMatch()
        {
            // TODO: Send a request/function call (from lib) that generates 1000 baskets

            BasketDTO[] list = new BasketDTO[4];

            return(Ok(list));
        }
 public Basket(BasketViewModel vm)
 {
     Baskett           = new BasketDTO();
     _basketCollection = (CollectionViewSource)(Resources["BasketCollection"]);
     _basketViewModel  = vm;
     DataContext       = vm;
     InitializeComponent();
 }
Example #21
0
        public async Task Checkout(BasketDTO basket)
        {
            var uri           = API.Basket.CheckoutBasket(_basketByPassUrl);
            var basketContent = new StringContent(JsonConvert.SerializeObject(basket), System.Text.Encoding.UTF8, "application/json");

            var response = await _apiClient.PostAsync(uri, basketContent);

            response.EnsureSuccessStatusCode();
        }
        public void Do(BasketId basketId)
        {
            BasketDTO basket = _basketRepository.Get(basketId.ConsumerId, basketId.Id);

            if (basket != null)
            {
                _basketRepository.Delete(basketId.ConsumerId, basketId.Id);
            }
        }
Example #23
0
        private void ConsumerHasBasket()
        {
            BasketDTO basket = A.Fake <BasketDTO>();

            A.CallTo(() => basket.Id)
            .Returns(_basketId);

            A.CallTo(() => _basketRepository.Get(_consumerId))
            .Returns(basket);
        }
        public async Task Checkout(BasketDTO basket)
        {
            var uri = $"{_settings.Value.BasketUrl}/api/v1/basket/checkout";

            var basketContent = new StringContent(JsonConvert.SerializeObject(basket), System.Text.Encoding.UTF8, "application/json");

            var response = await _apiClient.PostAsync(uri, basketContent);

            response.EnsureSuccessStatusCode();
        }
        public async Task Checkout(BasketDTO basket)
        {
            var token = await GetUserTokenAsync();

            var updateBasketUri = API.Basket.CheckoutBasket(_remoteServiceBaseUrl);

            var response = await _apiClient.PostAsync(updateBasketUri, basket, token);

            response.EnsureSuccessStatusCode();
        }
        public BasketDTO Create(BasketDTO obj)
        {
            var basket = obj.DtoToBasket();

            contextDB.Users.First(x => x.Id == obj.UserId);
            basket.ShoppingMeals.ToList().ForEach(x => contextDB.Attach(x.Meal));
            contextDB.Baskets.Add(basket);
            contextDB.SaveChanges();
            return(basket.BasketToDTO());
        }
Example #27
0
 public static Basket ToModel(this BasketDTO basket, Guid ownerId)
 {
     return(new Basket
     {
         Id = basket.Id,
         Items = basket.Items.Select(ToModel).ToList(),
         OwnerId = ownerId,
         Status = basket.Status
     });
 }
        public BasketDTO CreateBasket(BasketDTO basket)
        {
            using (var entities = new IMDBEntities())
            {
                Basket b = _mapper.Map<Basket>(basket);
                entities.Basket.Add(b);
                entities.SaveChanges();

                return _mapper.Map<BasketDTO>(b);
            }
        }
        public async Task Checkout(BasketDTO basket)
        {
            var uri           = API.Basket.CheckoutBasket(_basketByPassUrl);
            var basketContent = new StringContent(JsonSerializer.Serialize(basket), System.Text.Encoding.UTF8, "application/json");

            _logger.LogInformation("Uri chechout {uri}", uri);

            var response = await _apiClient.PostAsync(uri, basketContent);

            response.EnsureSuccessStatusCode();
        }
Example #30
0
        public bool Checkout([FromBody] BasketDTO basketDto)
        {
            var order = basketDto.OrderInfo.MapToOrder();

            if (order != null)
            {
                order.Complete = true;
                order          = (Order)order.Save();
            }
            return(order != null);
        }