public IActionResult Create(CreateOrderViewModel model)
        {
            if (!this.shoppingCartService.AnyProducts(this.User.Identity.Name))
            {
                this.TempData["error"] = ERROR_MESSAGE_TO_CONTINUE_ADD_PRODUCTS;
                return(RedirectToAction("Index", "Home"));
            }

            if (!ModelState.IsValid)
            {
                return(RedirectToAction(nameof(Create)));
            }

            var order = this.orderService.GetProcessingOrder(this.User.Identity.Name);

            if (order == null)
            {
                order = this.orderService.CreateOrder(this.User.Identity.Name);
            }

            decimal deliveryPrice = suppliersService.GetDiliveryPrice(model.SupplierId, model.DeliveryType);

            this.orderService.SetOrderDetails(order, model.FullName, model.PhoneNumber, model.PaymentType, model.DeliveryAddressId.Value, deliveryPrice);

            return(this.RedirectToAction(nameof(Complete)));
        }
Example #2
0
        public IActionResult Create(CreateOrderViewModel model)
        {
            var user = _userServices.GetUserByUsername(this.User.Identity.Name);

            var userId             = user.Id;
            var totalMoney         = 0.0m;
            var productIdForRecord = 0;
            var AddressDelivery    = "";
            var quantityForRecord  = 0;
            var paymentMethodRec   = "";

            var dayOfPurchase = DateTime.Now;

            var order = this._orderServices.GetProcessingOrder(this.User.Identity.Name);

            if (order == null)
            {
                order = this._orderServices.CreateOrder(this.User.Identity.Name);
            }

            decimal deliveryPrice = _suppliersService.GetDiliveryPrice(model.SupplierId, model.DeliveryType);

            this._orderServices.SetOrderDetails(order, model.FullName, model.PhoneNumber, model.PaymentType, model.DeliveryAddressId.Value, deliveryPrice);

            var adddress = _addressesServices.GetAllAddresses().Where(x => x.Id == order.DeliveryAddressId);

            var taxes = deliveryPrice;


            var typeOfPayment = order.PaymentType.ToString();

            paymentMethodRec = typeOfPayment;

            var productFromDb         = _productServices.GetProductById(model.ProductOrderViewModel.ProductId);
            var temporalEnterQuantity = productFromDb.Quantity - model.ProductOrderViewModel.ClientsQuantity;

            if (productFromDb.Quantity <= 1)
            {
                if (productFromDb.Quantity == 1)
                {
                    return(RedirectToAction("Error", "Orders"));
                }
            }
            if (temporalEnterQuantity <= 1 && productFromDb.Quantity > 1)
            {
                return(RedirectToAction("Create", "Orders", model.ProductOrderViewModel.ProductId));
            }

            StringBuilder sb = new StringBuilder();

            foreach (var address in adddress)
            {
                sb.Append("Град: " + address.City.Name.ToString() + " " + address.City.Postcode);
                sb.Append("Адрес: " + address.Street + " ");
                sb.Append("№ " + address.BuildingNumber + " ");
                sb.AppendLine("Допълнително описание: " + address.Description);
            }

            productIdForRecord = productFromDb.Id;
            AddressDelivery    = sb.ToString().Trim();

            if (temporalEnterQuantity > 0)
            {
                productFromDb.Quantity = temporalEnterQuantity;
                var priceWithAddTaxes = productFromDb.Price * 0.1M + productFromDb.Price;

                quantityForRecord = model.ProductOrderViewModel.ClientsQuantity;
                totalMoney        = model.ProductOrderViewModel.ClientsQuantity * priceWithAddTaxes;
            }

            _incomeMoneyService.Create(userId, totalMoney, productIdForRecord, quantityForRecord, paymentMethodRec, AddressDelivery, dayOfPurchase);

            this._db.Products.Update(productFromDb);
            this._db.SaveChanges();



            return(Redirect("/"));
        }