Esempio n. 1
0
        public void Stock_Check_Stock_NOT_Available_ThrowsException()
        {
            var company   = new CompanyDTO();
            var item      = new ItemDTO();
            var addedItem = new AddedItemDTO
            {
                Company = company,
                Item    = item,
            };

            addedItem.Company.Id = 5;
            addedItem.Item.Id    = 5;

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

            using (var context = new ApiContext(options))
            {
                context.LoadTestDBData(2);
                var repository = new ItemRepository(context);

                Assert.Throws <AppException>(() => repository.StockCheck(addedItem));
            }
        }
Esempio n. 2
0
        public void Stock_Check_Stock_Available_ReturnsTrue()
        {
            var company   = new CompanyDTO();
            var item      = new ItemDTO();
            var addedItem = new AddedItemDTO
            {
                Company = company,
                Item    = item,
            };

            addedItem.Company.Id = 1;
            addedItem.Item.Id    = 1;

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

            using (var context = new ApiContext(options))
            {
                context.LoadTestDBData(2);
                var repository = new ItemRepository(context);

                Assert.True(repository.StockCheck(addedItem));
            }
        }
Esempio n. 3
0
        public virtual void UpdateCompanyStock(AddedItemDTO addedItem)
        {
            var updatedCompanyItem = _context.CompanyItem.FirstOrDefault(s => s.CompanyId == addedItem.Company.Id && s.ItemId == addedItem.Item.Id);

            updatedCompanyItem.Stock -= 1;

            _context.CompanyItem.Update(updatedCompanyItem);
            _context.SaveChanges();
        }
Esempio n. 4
0
        private void CreateBasket(AddedItemDTO addedItem)
        {
            var newBasket = new Basket()
            {
                ItemId    = addedItem.Item.Id,
                ItemCount = 1,
                UserId    = addedItem.UserId
            };

            _context.Basket.Add(newBasket);
            _context.SaveChanges();
        }
Esempio n. 5
0
        public List <BasketDTO> Post([FromBody] AddedItemDTO addedItem)
        {
            try
            {
                var result = _basketService.AddItem(addedItem);

                return(result);
            }
            catch (Exception ex)
            {
                throw new AppException(ex.Message);
            }
        }
Esempio n. 6
0
        public void Add_Item_to_Basket_Test()
        {
            AddedItemDTO addedItem = new AddedItemDTO();
            var          item      = new ItemDTO();

            addedItem.Item    = item;
            addedItem.Item.Id = 5;
            List <BasketDTO> addedBasketDTOList = basketService.AddItem(addedItem);


            Assert.Equal(1, addedBasketDTOList.Count);
            Assert.Equal(addedBasketDTOList.First().ItemId, addedItem.Item.Id);
        }
Esempio n. 7
0
        public virtual void CreateorUpdateBasket(AddedItemDTO addedItem)
        {
            var userItem = CheckSameItemExists(addedItem);

            if (userItem == null)
            {
                CreateBasket(addedItem);
            }
            else
            {
                UpdateBasket(addedItem, userItem);
            }
        }
Esempio n. 8
0
        public virtual bool StockCheck(AddedItemDTO addedItem)
        {
            var stock = _context.CompanyItem.Any(s => s.CompanyId == addedItem.Company.Id && s.ItemId == addedItem.Item.Id && s.Stock > 0);
            var list  = _context.CompanyItem.ToList();

            if (stock)
            {
                return(true);
            }
            else
            {
                throw new AppException("Out of stock");
            }
        }
Esempio n. 9
0
        public void Update_Company_Stock_Returns_BasketDto()
        {
            var company   = new CompanyDTO();
            var item      = new ItemDTO();
            var addedItem = new AddedItemDTO
            {
                Company = company,
                Item    = item,
            };

            addedItem.Company.Id = 1;
            addedItem.Item.Id    = 1;

            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("company_stock_update_test_db")
                          .Options;

            using (var context = new ApiContext(options))
            {
                context.LoadUserBasketTestData(1);
                var companyStock = context.CompanyItem.First(s => s.CompanyId == addedItem.Company.Id && s.ItemId == addedItem.Item.Id).Stock;

                var repository = new ItemRepository(context);
                repository.UpdateCompanyStock(addedItem);

                var companyStockUpdated = context.CompanyItem.First(s => s.CompanyId == addedItem.Company.Id && s.ItemId == addedItem.Item.Id).Stock;
                Assert.Equal(companyStock - 1, companyStockUpdated);
            }
        }
Esempio n. 10
0
        public List <BasketDTO> AddItem(AddedItemDTO addedItem)
        {
            var trans = _context.Database.BeginTransaction();

            try
            {
                _userRepository.UserExist(addedItem.UserId);
                _itemRepository.StockCheck(addedItem);
                _basketRepository.CreateorUpdateBasket(addedItem);
                _itemRepository.UpdateCompanyStock(addedItem);

                trans.Commit();

                return(_basketRepository.GetUserBasket(addedItem.UserId));
            }
            catch (Exception e)
            {
                trans.Rollback();
                throw new AppException(e.Message);
            }
        }
Esempio n. 11
0
 private Basket CheckSameItemExists(AddedItemDTO addedItem)
 {
     return(_context.Basket.FirstOrDefault(s => s.UserId == addedItem.UserId && s.ItemId == addedItem.Item.Id));
 }
Esempio n. 12
0
 private void UpdateBasket(AddedItemDTO addedItem, Basket basket)
 {
     basket.ItemCount += 1;
     _context.Basket.Update(basket);
     _context.SaveChanges();
 }