Esempio n. 1
0
        /// <summary>
        /// Get paged objects
        /// </summary>
        /// <param name="page"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        public TableApartmentsDTO GetPaged(ApartmentFilterDTO filter)
        {
            var model = new TableApartmentsDTO();

            model.Filter = filter;

            var models = db.Apartments.Select(x => new ApartmentDTO
            {
                Id                = x.Id,
                idApartment       = x.IdApartment,
                CommonArea        = x.CommonArea,
                Cost              = x.Cost,
                Floor             = x.Floor,
                KitchenArea       = x.KitchenArea,
                QuantitiesOfRooms = x.QuantitiesOfRooms,
                BuildingNumber    = x.Building.BuildingNumber,
                NameRC            = x.Building.NameRC,
                QueueNumber       = x.Building.QueueNumber,
                DistrictTitle     = x.Building.District.Title,
                RegionTitle       = x.Building.District.Region.Title
            });

            models = Filter(filter, models);

            models = Sort(filter, models);

            models = models.Skip((filter.Page - 1) * filter.PageSize).Take(filter.PageSize + 1);

            model.NextPage = models.Count() > filter.PageSize;

            model.Apartments = models.Take(filter.PageSize).ToList();

            return(model);
        }
Esempio n. 2
0
        /// <summary>
        /// Filter query
        /// </summary>
        /// <param name="filter"></param>
        /// <param name="models"></param>
        /// <returns></returns>
        private IQueryable <ApartmentDTO> Filter(ApartmentFilterDTO filter, IQueryable <ApartmentDTO> models)
        {
            if (filter.CommonAreaFrom > 0)
            {
                models = models.Where(x => x.CommonArea >= filter.CommonAreaFrom);
            }

            if (filter.CommonAreaTo > 0)
            {
                models = models.Where(x => x.CommonArea <= filter.CommonAreaTo);
            }

            if (filter.KitchenAreaFrom > 0)
            {
                models = models.Where(x => x.KitchenArea >= filter.KitchenAreaFrom);
            }

            if (filter.KitchenAreaTo > 0)
            {
                models = models.Where(x => x.KitchenArea <= filter.KitchenAreaTo);
            }

            if (filter.CostFrom > 0)
            {
                models = models.Where(x => x.Cost >= filter.CostFrom);
            }

            if (filter.CostTo > 0)
            {
                models = models.Where(x => x.Cost <= filter.CostTo);
            }

            return(models);
        }
Esempio n. 3
0
        /// <summary>
        /// Sort query
        /// </summary>
        /// <param name="filter"></param>
        /// <param name="models"></param>
        /// <returns></returns>
        private IQueryable <ApartmentDTO> Sort(ApartmentFilterDTO filter, IQueryable <ApartmentDTO> models)
        {
            switch (filter.SortField?.ToLower())
            {
            case "commonarea":
                if (filter.SortOrder == "asc")
                {
                    models = models.OrderBy(x => x.CommonArea);
                }
                else
                {
                    models = models.OrderByDescending(x => x.CommonArea);
                }
                break;

            case "kitchenarea":
                if (filter.SortOrder == "asc")
                {
                    models = models.OrderBy(x => x.KitchenArea);
                }
                else
                {
                    models = models.OrderByDescending(x => x.KitchenArea);
                }
                break;

            case "cost":
                if (filter.SortOrder == "asc")
                {
                    models = models.OrderBy(x => x.Cost);
                }
                else
                {
                    models = models.OrderByDescending(x => x.Cost);
                }
                break;

            case "floor":
                if (filter.SortOrder == "asc")
                {
                    models = models.OrderBy(x => x.Floor);
                }
                else
                {
                    models = models.OrderByDescending(x => x.Floor);
                }
                break;

            case "districttitle":
                if (filter.SortOrder == "asc")
                {
                    models = models.OrderBy(x => x.Floor);
                }
                else
                {
                    models = models.OrderByDescending(x => x.Floor);
                }
                break;

            default:
                break;
            }

            return(models);
        }
Esempio n. 4
0
 public TableApartmentsDTO()
 {
     Filter = new ApartmentFilterDTO();
 }