示例#1
0
        public ActionResult SubmitBooking(Order model)
        {
            if (DateTime.Today.AddDays(int.Parse(WebSetting.GetBookingLimit())) < model.OrderTime)
            {
                RedirectToAction("Index", "Home");
            }

            ISettingRepository settingRepository = new SettingRepository();
            var discount = decimal.Parse(settingRepository.GetSettingByKey(SystemSettingEnum.Discount.ToString()).Value);
            var tax      = decimal.Parse(settingRepository.GetSettingByKey(SystemSettingEnum.Tax.ToString()).Value);
            var order    = new Order
            {
                LastUpdate   = DateTime.Now,
                CreationTime = DateTime.Now,
                Name         = Resources.Resources.Content_Booking,
                Note         = model.Note,
                DepositPrice = 0,
                Discount     = discount,
                Tax          = tax,
                OrderDetails = new List <OrderDetail>(),
            };

            var tableBll = new TableBll();

            foreach (var item in model.OrderDetails)
            {
                if (tableBll.GetOrderByTableIdAndTime(item.TableId, item.OrderTime.Value) != null)
                {
                    Session.Remove("BookingEntry");
                    RedirectToAction("Index", "Home");
                }



                if (!item.FoodId.HasValue)
                {
                    var food = _foodRepository.Find(item.FoodId.Value);

                    order.OrderDetails.Add(new OrderDetail
                    {
                        TableId      = 9,
                        FoodId       = item.FoodId,
                        FoodName     = food.Name,
                        FoodPrice    = food.Price,
                        Quantity     = food.Quantity,
                        Subtotal     = food.Price * food.Quantity,
                        CreationTime = DateTime.Now,
                        OrderTime    = item.OrderTime,
                        LastUpdate   = DateTime.Now
                    });
                }
                else
                {
                    var food = _foodRepository.Find(item.FoodId.Value);

                    if (!item.Quantity.HasValue || !(item.Quantity > 0) || food.Quantity < item.Quantity.Value)
                    {
                        return(RedirectToAction("Error", "Home"));
                    }

                    var sameOrderdetails = order.OrderDetails.FirstOrDefault(x => x.FoodId == food.Id && x.TableId == item.TableId);
                    if (sameOrderdetails == null)
                    {
                        order.OrderDetails.Add(new OrderDetail
                        {
                            TableId = item.TableId,

                            Food         = food,
                            FoodId       = food.Id,
                            FoodName     = food.Name,
                            FoodPrice    = food.Price,
                            Quantity     = item.Quantity,
                            Subtotal     = food.Price * item.Quantity.Value,
                            CreationTime = DateTime.Now,
                            LastUpdate   = DateTime.Now
                        });
                    }
                    else
                    {
                        sameOrderdetails.Quantity++;
                    }
                    order.SubTotal += food.Price * item.Quantity.Value;
                    //Session["ReturnToUrl"] = "Orders/viewbooking";
                }
            }

            Session["Booking"] = order;

            return(RedirectToAction("ViewBooking"));
        }
示例#2
0
        public ActionResult SuccessPayment()
        {
            ISettingRepository settingRepository = new SettingRepository();

            var pdtToken  = settingRepository.GetSettingByKey(PaypalSettingEnum.PDTToken.ToString());
            var mode      = settingRepository.GetSettingByKey(PaypalSettingEnum.Mode.ToString());
            var paypalUrl = settingRepository.GetSettingByKey(mode.Value);

            // var payment = PDTHolder.Success(Request.QueryString.Get("tx"), pdtToken.Value, paypalUrl.Value);
            var order = Session["Booking"] as Order;


            if (order != null)
            {
                if (order != null && order.Id == 0)
                {
                    var subTotal = order.DepositPrice.Value + order.SubTotal;
                    var discount = order.Discount.Value / 100 * subTotal;
                    var tax      = order.Tax.Value / 100 * (subTotal - discount);
                    var total    = subTotal - discount + tax;
                    if (Math.Round(double.Parse(total.ToString())) > 0)
                    {
                        var entity = new Order
                        {
                            CustomerId   = order.CustomerId,
                            CreatorId    = order.CreatorId,
                            LastUpdate   = DateTime.Now,
                            CreationTime = DateTime.Now,
                            Name         = order.Name,
                            Note         = order.Note,
                            DepositPrice = total,
                            SubTotal     = order.SubTotal,
                            Tax          = order.Tax,
                            Discount     = order.Discount,
                            OrderDetails = new List <OrderDetail>(),
                        };
                        foreach (var item in order.OrderDetails)
                        {
                            entity.OrderDetails.Add(new OrderDetail
                            {
                                CreatorId    = item.CreatorId,
                                TableId      = 9,
                                FoodId       = item.FoodId,
                                FoodPrice    = item.FoodPrice,
                                Quantity     = item.Quantity,
                                Subtotal     = item.Subtotal,
                                CreationTime = DateTime.Now,
                                OrderTime    = item.OrderTime,
                                LastUpdate   = DateTime.Now,
                            });
                        }

                        entity.Note += "\nPayment info:\n\tFull Name: " + order.Customer.FullName + " " + "\n\tEmail: " + order.Customer.Email + "\n\tGross total: " +
                                       total.ToString("c", new CultureInfo("en-AU"));
                        if (!_ordersRepository.Save(entity))
                        {
                            return(RedirectToAction("Error", "Home"));
                        }
                        Session["ReturnToUrl"] = "Orders/ViewBooking";
                        order.Id = entity.Id;
                        Session.Remove("Booking");
                        Session.Remove("BookingEntry");
                    }
                }

                Session["Booking"] = order;
            }
            return(View(order));
        }
示例#3
0
        public int BookingCart(OrderDetail model)
        {
            try
            {
                if (model != null)
                {
                    var cart = Session["BookingEntry"] as Order;


                    //var orderTime = DateTime.ParseExact("18/04/2019 11:10:00", "dd/MM/yyyy hh:mm tt",
                    //    CultureInfo.InvariantCulture);

                    var orderTime = DateTime.Now;

                    var food = _foodRepository.Find(model.Id);


                    if (cart == null)
                    {
                        cart = new Order
                        {
                            OrderDetails = new List <OrderDetail>
                            {
                                new OrderDetail
                                {
                                    FoodId       = model.Id,
                                    FoodPrice    = food.Price,
                                    OrderTime    = orderTime,
                                    FoodName     = food.Name,
                                    TableId      = 9,
                                    Quantity     = food.Quantity,
                                    Subtotal     = food.Price * food.Quantity,
                                    CreationTime = DateTime.Now,
                                    LastUpdate   = DateTime.Now
                                }
                            }
                        };
                    }
                    else
                    {
                        if (!cart.OrderDetails.Any(x => x.TableId == model.Id && x.OrderTime.Value.Date == orderTime.Date && x.OrderTime.Value.Hour == orderTime.Hour))
                        {
                            cart.OrderDetails.Add(new OrderDetail
                            {
                                FoodId       = model.Id,
                                FoodPrice    = food.Price,
                                OrderTime    = orderTime,
                                FoodName     = food.Name,
                                TableId      = 9,
                                Quantity     = food.Quantity,
                                Subtotal     = food.Price * food.Quantity,
                                CreationTime = DateTime.Now,
                                LastUpdate   = DateTime.Now
                            });
                        }
                        else
                        {
                            cart.OrderDetails.Remove(cart.OrderDetails.First(x => x.TableId == model.Id));
                        }
                    }

                    if (DateTime.Today.AddDays(int.Parse(WebSetting.GetBookingLimit())) < model.OrderTime)
                    {
                        RedirectToAction("Index", "Home");
                    }

                    ISettingRepository settingRepository = new SettingRepository();
                    var discount = decimal.Parse(settingRepository.GetSettingByKey(SystemSettingEnum.Discount.ToString()).Value);
                    var tax      = decimal.Parse(settingRepository.GetSettingByKey(SystemSettingEnum.Tax.ToString()).Value);
                    var order    = new Order
                    {
                        LastUpdate   = DateTime.Now,
                        CreationTime = DateTime.Now,
                        Name         = Resources.Resources.Content_Booking,
                        // Note = model.Note,
                        DepositPrice = 0,
                        Discount     = discount,
                        Tax          = tax,
                        OrderDetails = new List <OrderDetail>(),
                    };


                    if (cart.OrderDetails != null)
                    {
                        for (var i = 0; i < cart.OrderDetails.Count; i++)
                        {
                            cart.OrderDetails.ElementAt(i).Id = i + 1;
                        }
                    }
                    Session["BookingEntry"] = cart;
                    return(cart.OrderDetails.Count);
                }
            }
            catch (Exception e)
            {
                throw;
            }

            return(1);
        }