public ViewResult Checkout(Cart cart, DeliveryDTO deliveryDto) { if (cart.Lines.Count() == 0) { ModelState.AddModelError("", "Извините, ваша корзина пуста!"); } if (ModelState.IsValid) { //todo: refactor var userId = User.Identity.GetUserId(); var client = _clientLogic.Get(userId); foreach (var item in cart.Lines) { var good = _goodLogic.Get(item.Good.Id); if (good.Count >= item.Number) { good.Count -= item.Number; good.OrderItems = null; _goodLogic.Edit(good); } else { return(View("GoodIsOver")); } } _orderLogic.ProcessOrder(cart, deliveryDto, client); cart.Clear(); return(View("Completed")); } return(View(deliveryDto)); }
public ViewResult Edit(int id) { var good = _goodLogic.Get(id); var goodEditModel = Mapper.Map <GoodDTO, GoodEditModel>(good); goodEditModel.Categories = _adminHelper.GetCategories(); goodEditModel.Colors = _adminHelper.GetColors(); return(View(goodEditModel)); }
public ActionResult Details(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } var good = _goodLogic.Get(id); if (good == null) { return(HttpNotFound()); } return(View(good)); }
public void ProcessOrder(Cart cart, DeliveryDTO deliveryDto, UserDTO userDto) { foreach (var item in cart.Lines) { item.PriceSale = item.Good.PriceSale; } OrderDTO orderDto = new OrderDTO(); orderDto.Status = _statusLogic.Get(1); orderDto.DateCreation = DateTime.Now; orderDto.DateSale = DateTime.Now; orderDto.User = userDto; orderDto.Sum = cart.Lines.Sum(x => x.PriceSale * x.Number); orderDto.Delivery = deliveryDto; Order order = new Order(); order.Id = orderDto.Id; order.User = _clientRepository.Get(userDto.Id); order.DateCreation = DateTime.Now; order.DateSale = DateTime.Now; order.Sum = orderDto.Sum; var delivery = Mapper.Map <DeliveryDTO, Delivery>(deliveryDto); var status = Mapper.Map <StatusDTO, Status>(_statusLogic.Get(1)); order.Status = status; order.Delivery = delivery; _repository.Add(order); var items = cart.Lines; foreach (OrderItemDTO itemDto in items) { itemDto.Good = _goodLogic.Get(itemDto.Good.Id); itemDto.Order = new OrderDTO { Id = order.Id }; _orderItemLogic.Add(itemDto); } }