// GET: Sales/Edit/5
        public ActionResult Edit(int?id)
        {
            string userId = User.Identity.GetUserId();
            var    roles  = DefualtDB.Roles.Where(a => a.Users.Any(x => x.UserId == userId)).ToList();

            if (roles.Count > 0)
            {
                ViewBag.UserRole = roles[0].Name;
                if (roles[0].Name == "Agent")
                {
                    ViewBag.Status = db.Status.Where(a => a.ID == 1 || a.ID == 4).Select(m => new SelectListItem
                    {
                        Value = m.ID.ToString(),
                        Text  = m.Name,
                    }).ToList();
                }
                else
                {
                    ViewBag.Status = db.Status.Select(m => new SelectListItem
                    {
                        Value = m.ID.ToString(),
                        Text  = m.Name,
                    }).ToList();
                }
            }

            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            Sale saleDB = db.Sales.Where(a => a.ID == id).FirstOrDefault();

            SalesViewModel sale = SalesViewModel.GetVMFromDB(saleDB);

            if (sale == null)
            {
                return(HttpNotFound());
            }

            ViewBag.ChoosenNumbers = db.Numbers.Where(a => a.IsChoosen != true && a.IsPrivate != true || a.ID == sale.ChoosenNo).Select(m => new SelectListItem
            {
                Value = m.ID.ToString(),
                Text  = m.No,
            }).ToList();

            ViewBag.Packages = db.Packages.Select(m => new SelectListItem
            {
                Value = m.ID.ToString(),
                Text  = m.PackageName,
            }).ToList();



            return(View(sale));
        }
        public ActionResult ActiveIndex()
        {
            ViewBag.State = "Active";
            List <Sale>           salesDB = new List <Sale>();
            List <SalesViewModel> sales   = new List <SalesViewModel>();
            string userId = User.Identity.GetUserId();
            var    user   = (new ApplicationDbContext()).Users.FirstOrDefault(s => s.Id == userId);

            Session["UserName"] = user.UserName;
            Session["UserId"]   = user.Id;
            var roles = DefualtDB.Roles.Where(a => a.Users.Any(x => x.UserId == userId)).ToList();

            if (roles.Count > 0)
            {
                if (roles[0].Name == "Agent")
                {
                    salesDB = db.Sales.Where(a => a.UserID == userId && a.StatusID == 2).OrderByDescending(s => s.ID).ToList();
                    foreach (var item in salesDB)
                    {
                        sales.Add(SalesViewModel.GetVMFromDB(item));
                    }
                }


                else
                {
                    salesDB = db.Sales.Where(a => a.StatusID == 2).OrderByDescending(s => s.ID).ToList();
                    foreach (var item in salesDB)
                    {
                        sales.Add(SalesViewModel.GetVMFromDB(item));
                    }
                }
            }

            var data = new[] {
                new SelectListItem {
                    Value = "1", Text = "Serial"
                },
                new SelectListItem {
                    Value = "2", Text = "ChoosenNo"
                },
                new SelectListItem {
                    Value = "3", Text = "CustomerName"
                },
            };

            ViewBag.SearchTypes = data;

            return(View("Index", sales));
        }
        public ActionResult FilterData(int?SearchType, string SearchValue, string FromDateString, string ToDateString, int?StatusID, string ActivationFromDateString, string ActivationToDateString)
        {
            DateTime?FromDate = null, ToDate = null, ActivationFromDate = null, ActivationToDate = null;

            if (FromDateString != "")
            {
                FromDate = Convert.ToDateTime(FromDateString);
            }

            if (ToDateString != "")
            {
                ToDate = Convert.ToDateTime(ToDateString);
                ToDate = ToDate.Value.AddDays(1);
            }

            if (!string.IsNullOrEmpty(ActivationFromDateString))
            {
                ActivationFromDate = Convert.ToDateTime(ActivationFromDateString);
            }

            if (!string.IsNullOrEmpty(ActivationToDateString))
            {
                ActivationToDate = Convert.ToDateTime(ActivationToDateString);
                ActivationToDate = ActivationToDate.Value.AddDays(1);
            }

            List <SalesViewModel> sales   = new List <SalesViewModel>();
            List <Sale>           SalesDB = new List <Sale>();

            if (SearchType == 2)
            {
                SearchValue = GetNumberId(SearchValue).ToString();
            }

            string userId = User.Identity.GetUserId();
            var    roles  = DefualtDB.Roles.Where(a => a.Users.Any(x => x.UserId == userId)).ToList();

            if (roles.Count > 0)
            {
                if (roles[0].Name == "Agent")
                {
                    if (SearchType == 1)
                    {
                        SalesDB = db.Sales.ToList().Where(a => a.StatusID == StatusID && a.UserID == userId && ((a.Serial == long.Parse(SearchValue) || (SearchValue == null)) && ((a.CreationDate >= FromDate || (FromDate == null)) && (a.CreationDate <= ToDate || (ToDate == null))) && ((a.ActivationDate >= ActivationFromDate || (ActivationFromDate == null)) && (a.ActivationDate <= ActivationToDate || (ActivationToDate == null))))).ToList();
                    }
                    if (SearchType == 2)
                    {
                        SalesDB = db.Sales.ToList().Where(a => a.StatusID == StatusID && a.UserID == userId && ((a.ChoosenNo == int.Parse(SearchValue) || (SearchValue == null)) && ((a.CreationDate >= FromDate || (FromDate == null)) && (a.CreationDate <= ToDate || (ToDate == null))) && ((a.ActivationDate >= ActivationFromDate || (ActivationFromDate == null)) && (a.ActivationDate <= ActivationToDate || (ActivationToDate == null))))).ToList();
                    }
                    if (SearchType == 3)
                    {
                        SalesDB = db.Sales.ToList().Where(a => a.StatusID == StatusID && a.UserID == userId && (a.CustomerName != null) && ((a.CustomerName.Contains(SearchValue) || (SearchValue == null)) && ((a.CreationDate >= FromDate || (FromDate == null)) && (a.CreationDate <= ToDate || (ToDate == null))) && ((a.ActivationDate >= ActivationFromDate || (ActivationFromDate == null)) && (a.ActivationDate <= ActivationToDate || (ActivationToDate == null))))).ToList();
                    }
                    if (SearchType == null)
                    {
                        SalesDB = db.Sales.ToList().Where(a => a.StatusID == StatusID && a.UserID == userId && ((a.CreationDate >= FromDate || (FromDate == null) && (a.CreationDate <= ToDate || (ToDate == null))) && ((a.ActivationDate >= ActivationFromDate || (ActivationFromDate == null)) && (a.ActivationDate <= ActivationToDate || (ActivationToDate == null))))).ToList();
                    }
                }
                else
                {
                    if (SearchType == 1)
                    {
                        SalesDB = db.Sales.ToList().Where(a => a.StatusID == StatusID && ((a.Serial == long.Parse(SearchValue) || (SearchValue == null)) && ((a.CreationDate >= FromDate || (FromDate == null)) && (a.CreationDate <= ToDate || (ToDate == null))) && ((a.ActivationDate >= ActivationFromDate || (ActivationFromDate == null)) && (a.ActivationDate <= ActivationToDate || (ActivationToDate == null))))).ToList();
                    }
                    if (SearchType == 2)
                    {
                        SalesDB = db.Sales.ToList().Where(a => a.StatusID == StatusID && ((a.ChoosenNo == int.Parse(SearchValue) || (SearchValue == null)) && ((a.CreationDate >= FromDate || (FromDate == null)) && (a.CreationDate <= ToDate || (ToDate == null))) && ((a.ActivationDate >= ActivationFromDate || (ActivationFromDate == null)) && (a.ActivationDate <= ActivationToDate || (ActivationToDate == null))))).ToList();
                    }
                    if (SearchType == 3)
                    {
                        SalesDB = db.Sales.ToList().Where(a => a.StatusID == StatusID && (a.CustomerName != null) && ((a.CustomerName.Contains(SearchValue) || (SearchValue == null)) && ((a.CreationDate >= FromDate || (FromDate == null)) && (a.CreationDate <= ToDate || (ToDate == null))) && ((a.ActivationDate >= ActivationFromDate || (ActivationFromDate == null)) && (a.ActivationDate <= ActivationToDate || (ActivationToDate == null))))).ToList();
                    }
                    if (SearchType == null)
                    {
                        SalesDB = db.Sales.ToList().Where(a => a.StatusID == StatusID && ((a.CreationDate >= FromDate || (FromDate == null)) && (a.CreationDate <= ToDate || (ToDate == null)) && ((a.ActivationDate >= ActivationFromDate || (ActivationFromDate == null)) && (a.ActivationDate <= ActivationToDate || (ActivationToDate == null))))).ToList();
                    }
                }


                foreach (var item in SalesDB)
                {
                    sales.Add(SalesViewModel.GetVMFromDB(item));
                }
                return(PartialView("_index", sales));
            }
            else
            {
                return(null);
            }
        }