Exemplo n.º 1
0
        public ActionResult All(string orderBy, string search, int id = 1)
        {
            if (string.IsNullOrEmpty(search))
            {
                search = string.Empty;
            }

            search = search.ToLower();

            var page     = id;
            var allTrips = this.trips.GetAll()
                           .Where(x => x.Creator.UserName.ToLower().Contains(search) ||
                                  x.StartPoint.ToLower().Contains(search))
                           .Count();
            var tripsPerPage = 5;

            var totalPages = (int)Math.Ceiling(allTrips / ((decimal)tripsPerPage));

            if (page - 1 < 0)
            {
                page = 1;
            }
            else if (page - 1 >= totalPages)
            {
                page = totalPages;
            }

            var itemsToSkip = (page - 1) * tripsPerPage;

            IList <TripResponseModel> trips = new List <TripResponseModel>();
            var filtredtrips = this.trips.GetAll()
                               .Where(x => x.Creator.UserName.ToLower().Contains(search) ||
                                      x.StartPoint.ToLower().Contains(search));

            var lastSort = (string)this.Session["LastSort"];


            IOrderedQueryable <Trip> sortedTrips = filtredtrips
                                                   .OrderBy(x => x.CreatedOn)
                                                   .ThenBy(x => x.Creator.UserName);

            if (!string.IsNullOrEmpty(orderBy))
            {
                if (orderBy == "creator")
                {
                    var creator = this.Session["creator"] as string;
                    if (creator == null)
                    {
                        creator = "asc";
                    }

                    if (page == 1 && lastSort == "creator")
                    {
                        this.Session["creator"] = creator == "asc" ? "desc" : "asc";
                    }

                    creator     = this.Session["creator"] as string;
                    sortedTrips = this.OrderByCreator(creator, itemsToSkip, tripsPerPage, filtredtrips);

                    this.Session["LastSort"] = "creator";
                }
                else if (orderBy == "createdOn")
                {
                    var creator = this.Session["createdOn"] as string;
                    if (creator == null)
                    {
                        creator = "asc";
                    }

                    if (page == 1 && lastSort == "createdOn")
                    {
                        this.Session["createdOn"] = creator == "asc" ? "decs" : "asc";
                    }

                    creator = this.Session["createdOn"] as string;

                    sortedTrips = this.OrderByCreatedOn(creator, itemsToSkip, tripsPerPage, filtredtrips);

                    this.Session["LastSort"] = "createdOn";
                }
                else if (orderBy == "startPoint")
                {
                    var creator = this.Session["startPoint"] as string;
                    if (creator == null)
                    {
                        creator = "asc";
                    }

                    if (page == 1 && lastSort == "startPoint")
                    {
                        this.Session["startPoint"] = creator == "asc" ? "desc" : "asc";
                    }

                    creator = this.Session["startPoint"] as string;

                    sortedTrips = this.OrderByStartPoint(creator, itemsToSkip, tripsPerPage, filtredtrips);

                    this.Session["LastSort"] = "startPoint";
                }
            }

            var all = sortedTrips
                      .Skip(itemsToSkip)
                      .Take(tripsPerPage)
                      .To <TripResponseModel>()
                      .ToList();

            var tripModel = new TripPagableModel
            {
                CurrentPage = page,
                TotalPages  = totalPages,
                AllTrips    = all
            };

            return(View(tripModel));
        }
Exemplo n.º 2
0
        public ActionResult All(string orderBy, string search, int id = 1)
        {
            if (string.IsNullOrEmpty(search))
            {
                search = string.Empty;
            }

            search = search.ToLower();

            var page = id;
            var allTrips = this.trips.GetAll()
                                      .Where(x => x.Creator.UserName.ToLower().Contains(search) ||
                                            x.StartPoint.ToLower().Contains(search))
                                     .Count();
            var tripsPerPage = 5;

            var totalPages = (int)Math.Ceiling(allTrips / ((decimal)tripsPerPage));
            if (page - 1 < 0)
            {
                page = 1;
            }
            else if (page - 1 >= totalPages)
            {
                page = totalPages;
            }

            var itemsToSkip = (page - 1) * tripsPerPage;

            IList<TripResponseModel> trips = new List<TripResponseModel>();
            var filtredtrips = this.trips.GetAll()
                                  .Where(x => x.Creator.UserName.ToLower().Contains(search) ||
                                            x.StartPoint.ToLower().Contains(search));

            var lastSort = (string)this.Session["LastSort"];


            IOrderedQueryable<Trip> sortedTrips = filtredtrips
                                                    .OrderBy(x => x.CreatedOn)
                                                    .ThenBy(x => x.Creator.UserName);

            if (!string.IsNullOrEmpty(orderBy))
            {
                if (orderBy == "creator")
                {
                    var creator = this.Session["creator"] as string;
                    if (creator == null)
                    {
                        creator = "asc";
                    }

                    if (page == 1 && lastSort == "creator")
                    {
                        this.Session["creator"] = creator == "asc" ? "desc" : "asc";
                    }

                    creator = this.Session["creator"] as string;
                    sortedTrips = this.OrderByCreator(creator, itemsToSkip, tripsPerPage, filtredtrips);

                    this.Session["LastSort"] = "creator";
                }
                else if (orderBy == "createdOn")
                {
                    var creator = this.Session["createdOn"] as string;
                    if (creator == null)
                    {
                        creator = "asc";
                    }

                    if (page == 1 && lastSort == "createdOn")
                    {
                        this.Session["createdOn"] = creator == "asc" ? "decs" : "asc";
                    }

                    creator = this.Session["createdOn"] as string;

                    sortedTrips = this.OrderByCreatedOn(creator, itemsToSkip, tripsPerPage, filtredtrips);

                    this.Session["LastSort"] = "createdOn";
                }
                else if (orderBy == "startPoint")
                {
                    var creator = this.Session["startPoint"] as string;
                    if (creator == null)
                    {
                        creator = "asc";
                    }

                    if (page == 1 && lastSort == "startPoint")
                    {
                        this.Session["startPoint"] = creator == "asc" ? "desc" : "asc";
                    }

                    creator = this.Session["startPoint"] as string;

                    sortedTrips = this.OrderByStartPoint(creator, itemsToSkip, tripsPerPage, filtredtrips);

                    this.Session["LastSort"] = "startPoint";
                }
            }

            var all = sortedTrips
                                .Skip(itemsToSkip)
                                .Take(tripsPerPage)
                                .To<TripResponseModel>()
                                .ToList();

            var tripModel = new TripPagableModel
            {
                CurrentPage = page,
                TotalPages = totalPages,
                AllTrips = all
            };

            return View(tripModel);
        }