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 void ProcessOrder(Cart cart, DeliveryDTO deliveryDto) { var orderItemsDto = cart.Lines; var orderItems = Mapper.Map<IEnumerable<OrderItemDTO>, IEnumerable<OrderItem>>(orderItemsDto); var order = new Order(); order.OrderItems = orderItems; order.DateCreation = DateTime.Now; order.DateSale = DateTime.Now; //order.User //order.Status; _repository.Add(order); }
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); } }