public async Task <IActionResult> Post(string customerId, [FromBody] AddItemDto item)
        {
            if (item == null)
            {
                return(ResponseMessage.BadRequest(Status.UnexpectedError, UnexpectedError));
            }

            var validator = new AddItemValidator();
            var results   = validator.Validate(item);

            if (!results.IsValid)
            {
                var error = results.Errors.FirstOrDefault();
                return(ResponseMessage.BadRequest(error.ErrorCode, error.ErrorMessage));
            }

            var actor = (PID)shoppingListsActorProvider.ActorInstance;

            var @event = await actor.RequestAsync <ShoppingListEvent>(new AddItem(customerId, item.Name, item.Quantity));

            switch (@event.Status)
            {
            case Status.ItemAdded: return(ResponseMessage.CreatedAtAction("Get", "ShoppingLists", new { name = item.Name }, @event.Status, ItemAdded));

            case Status.QuantityUpdated: return(ResponseMessage.Ok(@event.Status, ItemUpdatedWithNewQuantity));

            default: return(ResponseMessage.BadRequest(@event.Status, UnexpectedError));
            }
        }
        public async Task <AddItemResultDto> AddItemToBasket(AddItemDto dto, string buyerId)
        {
            bool inStock = _stockService.IsItInStock(dto.Sku, dto.Quantity);

            if (!inStock)
            {
                throw new WarningNotificationException("The product is out of stock.", "999");
            }

            var basket = await _basketRepository.FindOneAsync(p => p.BuyerId == buyerId);

            if (basket == null)
            {
                basket = new Basket(buyerId);
                basket.AddItem(dto.CatalogItemId, dto.Sku, dto.Price, dto.Quantity);

                await _basketRepository.InsertOneAsync(basket);
            }
            else
            {
                basket.AddItem(dto.CatalogItemId, dto.Sku, dto.Price, dto.Quantity);
                await _basketRepository.UpdateOneAsync(basket);
            }

            int itemCount = basket.Items.GroupBy(p => p.CatalogItemId).Count();

            return(new AddItemResultDto {
                ItemCount = itemCount
            });
        }
        public async Task AddItemToBasket_Should_Return_Ok_With_ItemCount_When_Insert_Success()
        {
            var expectedStatusCode = HttpStatusCode.OK;

            //Arrange
            var request = new AddItemDto
            {
                CatalogItemId = "H22",
                Sku           = "H22XSB",
                Price         = 22,
                Quantity      = 2
            };

            var content = new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json");

            // Act
            var response = await _client.PostAsync("/api/v1/ShoppingBasket/AddItemToBasket", content);

            var actualStatusCode = response.StatusCode;
            var actualResult     = await response.Content.ReadAsStringAsync();

            var actualResultJson = JsonConvert.DeserializeObject <AddItemResultDto>(actualResult);

            // Assert
            Assert.Equal(expectedStatusCode, actualStatusCode);
            Assert.Equal(1, actualResultJson.ItemCount);
        }
示例#4
0
        public ActionResult Additem()
        {
            var model = new AddItemDto {
                Categories = _categoryService.GetCategoryList()
            };

            return(View(model));
        }
        public async Task <Item> AddItemAsync(AddItemDto model)
        {
            var userId    = long.Parse(_httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value);
            var itemToAdd = model.ToItem(userId);
            var item      = (await _itemService.InsertAsync(itemToAdd));

            //var item = (await _itemService.InsertAsync(itemToAdd)).ToBoardReturnDto();
            return(item);
        }
示例#6
0
        public IActionResult AddItem([FromBody] AddItemDto item)
        {
            var res = Service.ShoppingCart.ShoppingCart.AddItem(item, _context);

            if (res == null)
            {
                return(new OkObjectResult(new { error = "No object created" }));
            }

            return(new OkObjectResult(res));
        }
示例#7
0
        public async Task <ActionResult> CreateItem(AddItemDto addItemDto)
        {
            var itemToAdd = _mapper.Map <Entities.Item>(addItemDto);
            await _beachBuddyRepository.AddItem(itemToAdd);

            await _beachBuddyRepository.Save();

            var itemToReturn = _mapper.Map <ItemDto>(itemToAdd);

            return(CreatedAtRoute("GetItem", new { itemId = itemToReturn.Id }, itemToReturn));
        }
示例#8
0
        public ActionResult AddItem(AddItemDto model)
        {
            if (ModelState.IsValid)
            {
                var itemId = _itemService.AddItem(model);

                return(RedirectToAction("ItemDetails", "Item", _itemService.ItemDetails(itemId)));
            }
            model.Categories = _categoryService.GetCategoryList();
            return(View(model));
        }
示例#9
0
        public IActionResult Post([FromBody] AddItemDto model)
        {
            if (!ModelState.IsValid)
            {
                NotifyModelStateErrors();
                return(Response(model));
            }

            _itemService.Add(model);

            return(Response(model));
        }
示例#10
0
        public async Task <IActionResult> UpdateItem(AddItemDto newItem)
        {
            var serviceResponse = await _itemService.UpdateItem(newItem);

            if (serviceResponse.Success == false)
            {
                return(NotFound(serviceResponse));
            }
            else
            {
                return(Ok(serviceResponse));
            }
        }
示例#11
0
        public async Task <ServiceResponse <List <GetItemDto> > > AddItem(AddItemDto newItem)
        {
            ServiceResponse <List <GetItemDto> > serviceResponse = new ServiceResponse <List <GetItemDto> >();

            await _context.Items.AddAsync(_mapper.Map <Item>(newItem));

            await _context.SaveChangesAsync();

            List <GetItemDto> items = await(_context.Items.Select(c => _mapper.Map <GetItemDto>(c))).ToListAsync();

            serviceResponse.Data = items;

            return(serviceResponse);
        }
        //public static Item ToItem(this AddItemDto model, long personId)
        //{
        //    var board = new Item
        //    {
        //        Name = model.Name,
        //        Description = model.Description,
        //        Img = model.Img,
        //        IsPrivate = model.IsPrivate,
        //        CreatedBy = personId,
        //        User = {Id = personId}
        //    };
        //    return board;
        //}

        public static Item ToItem(this AddItemDto model, long sellerId)
        {
            var item = new Item
            {
                Name                 = model.Name,
                Description          = model.Description,
                Cost                 = model.Cost,
                NumberOfParticipants = model.ParticipantsNumber,
                CreatedBy            = sellerId,
                //Seller = {Id = sellerId}
            };

            return(item);
        }
示例#13
0
        public AddItemDto ItemDetailsToAdd(int itemId)
        {
            var        itemDetails = ItemDetails(itemId);
            AddItemDto itemToEdit  = new AddItemDto
            {
                Name         = itemDetails.Name,
                Description  = itemDetails.Description,
                PricePerOne  = itemDetails.PricePerOne,
                NumberOfItem = itemDetails.NumberOfItem,
                CategoryId   = itemDetails.CategoryId,
                ItemId       = itemDetails.ItemId
            };

            return(itemToEdit);
        }
        public async Task <IActionResult> AddItem(
            AddItemDto model
            )
        {
            try
            {
                var responsePayload = await _itemService.AddItemAsync(model);

                return(Ok(responsePayload));
            }
            catch (Exception ex)
            {
                return(BadRequest(new { ex.Message }));
            }
        }
示例#15
0
        public async Task <ServiceResponse <GetItemDto> > UpdateItem(AddItemDto newItem)
        {
            ServiceResponse <GetItemDto> serviceResponse = new ServiceResponse <GetItemDto>();
            var item = await _context.Items.FirstOrDefaultAsync(x => x.Id == _mapper.Map <Item>(newItem).Id);

            if (item == null)
            {
                serviceResponse.Success = false;
                serviceResponse.Message = "Item not found";
            }
            else
            {
                item.Name = newItem.Name;
                item.Type = newItem.Type;
                _context.Items.Update(item);
                await _context.SaveChangesAsync();

                serviceResponse.Data = _mapper.Map <GetItemDto>(item);
            }

            return(serviceResponse);
        }
示例#16
0
        public int AddItem(AddItemDto model)
        {
            var item = new Item
            {
                Name         = model.Name,
                NumberOfItem = model.NumberOfItem,
                CategoryId   = model.CategoryId,
                Description  = model.Description,
                PricePerOne  = model.PricePerOne
            };

            var result = _database.Items.Add(item);

            var image = new Image
            {
                ImagePath = _fileManager.SaveFile(model.File),
                ItemId    = result.Id
            };

            _database.Images.Add(image);
            _database.SaveChanges();
            return(result.Id);
        }
示例#17
0
        public static ShoppingCartItem AddItem(AddItemDto item, eCommerceContext _context)
        {
            if (!_context.Product.Any(x => x.ProductId == item.ProductId))
            {
                return(null);
            }

            if (item.Quantity <= 0)
            {
                return(null);
            }

            API.Models.ShoppingCart cart = _context.ShoppingCart.FirstOrDefault(x => x.ShoppingCartId == item.ShoppingCartID);

            if (cart == null)
            {
                cart = new API.Models.ShoppingCart()
                {
                    LastUpdated = DateTime.Now
                }
            }
            ;

            var cartItem = new ShoppingCartItem()
            {
                ProductId = item.ProductId ?? 0,
                Quantity  = item.Quantity ?? 0
            };

            cart.ShoppingCartItem = new[] { cartItem };

            _context.SaveChanges();

            return(cartItem);
        }
    }
        public void AddItemToBasket_Should_Return_ItemCount([Frozen] Mock <IMongoRepository <Basket> > basketRepository,
                                                            [Frozen] Mock <IStockService> stockService,
                                                            AddItemDto addItemDto,
                                                            string buyerId,
                                                            BasketService sut
                                                            )
        {
            Basket basket = new Basket(buyerId);

            basketRepository.Setup(r => r.FindOneAsync(p => p.BuyerId == buyerId)).ReturnsAsync(basket);
            basketRepository.Setup(r => r.UpdateOneAsync(basket));
            stockService.Setup(s => s.IsItInStock(addItemDto.Sku, addItemDto.Quantity)).Returns(true);

            Func <Task> action = async() =>
            {
                var result = await sut.AddItemToBasket(addItemDto, buyerId);

                result.Should().BeEquivalentTo(new AddItemResultDto {
                    ItemCount = 1
                });
            };

            action.Should().NotThrow <Exception>();
        }
示例#19
0
        public async Task <IActionResult> AddItemToBasket([FromBody] AddItemDto dto)
        {
            var result = await _basketService.AddItemToBasket(dto, UserId);

            return(Ok(result));
        }
示例#20
0
 public async Task <IActionResult> AddItem(AddItemDto newItem)
 {
     return(Ok(await _itemService.AddItem(newItem)));
 }
示例#21
0
        public void Add(AddItemDto item)
        {
            var addCommand = _mapper.Map <AddNewItemCommand>(item);

            _bus.SendCommand(addCommand);
        }