Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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));
        }
Esempio n. 3
0
        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));
        }
Esempio n. 4
0
        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);
            }
        }