Пример #1
0
        public async Task <IActionResult> AddOrder([FromBody] OrderUserViewModel model)
        {
            if (ModelState.IsValid)
            {
                string      userId = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
                WebshopUser user   = await UserManager.FindByIdAsync(userId);

                if (user != null)
                {
                    decimal             totalPriceOrder = CalculateOrderPrice(model.Products);
                    List <ProductOrder> productOrders   = GetOrderProducts(model.Products);

                    decimal finalPrice = totalPriceOrder;
                    decimal discount   = 0;

                    if (model.Coupon != null)
                    {
                        var discountValidation = ValidateCouponCode(model.Coupon, totalPriceOrder);
                        if (discountValidation != null)
                        {
                            model.Coupon = discountValidation.Item1;
                            discount     = discountValidation.Item2;
                            finalPrice   = discountValidation.Item3;
                        }
                    }

                    Order newOrder = new Order
                    {
                        Guid                    = Guid.NewGuid(),
                        Paid                    = false,
                        Shipped                 = false,
                        OrderCreated            = DateTime.Now,
                        TotalPrice              = totalPriceOrder,
                        Discount                = discount,
                        FinalPrice              = finalPrice,
                        CouponCode              = model.Coupon,
                        OrderedProducts         = productOrders,
                        AssociatedUserGuid      = user.UserGuid,
                        OrderedFromGuestAccount = false,
                        EmailConfirmationSent   = false,
                        OrderStatus             = OrderStatus.Received
                    };

                    OrderRepository.AddOrder(newOrder);
                    return(Ok(newOrder.Guid));
                }
            }

            return(BadRequest());
        }
Пример #2
0
        public async Task <IActionResult> Create(CartModel cart, OrderUserViewModel model, string OrderNotes)
        {
            DoneModelView done = new DoneModelView();

            if (ModelState.IsValid)
            {
                var validate = _userService.Validate("Email", model.Email);
                if (validate.Success)
                {
                    ModelState.AddModelError("", "Email \"" + model.Email + "\" is already taken");
                }
                UserModel user = new UserModel();
                user.Email    = model.Email;
                user.LastName = model.LastName;
                user.Name     = model.Name;
                user.Phone    = model.Phone;
                user.Address  = model.Address;
                user.Created  = DateTime.Now;
                if (model.CreateAccount == true)
                {
                    if (string.IsNullOrWhiteSpace(model.Password))
                    {
                        ModelState.AddModelError("", "Password is required");
                    }
                    if (model.Password != model.ConfirmPassword)
                    {
                        ModelState.AddModelError("", "Enter the right password");
                    }

                    _userService.SignUp(user, "email", user.Email, model.Password);
                    _userService.AddToRole(user, "user");
                }

                var order = await _orderService.Create(cart, user, OrderNotes);

                var products = await _productService.GetProductsByIdList(order.Cart.ItemList.Select(id => id.ProductId).ToList());

                done.order    = order;
                done.products = products;
            }

            var categories = await _categoryService.GetAll();

            ViewData["Categories"] = categories;
            var contact = _contactService.Get();

            ViewData["contact"] = contact;
            return(View("Done", done));
        }