Esempio n. 1
0
        public IEnumerable <NewsDto> GetNewsList(FilterBaseDto filter)
        {
            using (var ctx = new Entities())
            {
                var ns = ctx.News.Include(x => x.Images); //Questo equivale a select * FROM News e poi aggiungerà JOIN a Images

                ns = FilterQuery(filter, ns);

                var mapped = AutoMapper.Mapper.Map <IEnumerable <News>, IEnumerable <NewsDto> >(ns);

                return(mapped);
            }
        }
Esempio n. 2
0
        public IEnumerable <EventsDto> GetEventsList(FilterBaseDto filter)
        {
            using (var ctx = new Entities())
            {
                var ns = ctx.Events.Include(x => x.Images);

                ns = FilterQuery(filter, ns);

                var mapped = AutoMapper.Mapper.Map <IEnumerable <Events>, IEnumerable <EventsDto> >(ns);

                return(mapped);
            }
        }
Esempio n. 3
0
        private static IQueryable <News> FilterQuery(FilterBaseDto filter, IQueryable <News> ns)
        {
            if (!string.IsNullOrEmpty(filter.Query))
            {
                switch (filter.Field)
                {
                case FieldsEnum.NoField:
                    ns = ns.Where(x => x.Title.Contains(filter.Query) || x.ShortDescription.Contains(filter.Query));
                    break;

                case FieldsEnum.Title:
                    ns = ns.Where(x => x.Title.Contains(filter.Query));
                    break;

                case FieldsEnum.ShortDescription:
                    ns = ns.Where(x => x.ShortDescription.Contains(filter.Query));
                    break;

                case FieldsEnum.Description:
                    ns = ns.Where(x => x.Description.Contains(filter.Query));
                    break;

                case FieldsEnum.Author:
                    ns = ns.Where(x => x.Author.Contains(filter.Query));
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }

            switch (filter.OrderByField)
            {
            case OrderByFieldsEnum.NoField:
                ns = filter.OrderByDescending == null || filter.OrderByDescending == true
                        ? ns.OrderByDescending(x => x.CreationDate)
                        : ns.OrderBy(x => x.CreationDate);

                break;

            case OrderByFieldsEnum.Title:
                ns = filter.OrderByDescending == true
                        ? ns.OrderByDescending(x => x.Title)
                        : ns.OrderBy(x => x.Title);

                break;

            case OrderByFieldsEnum.CreationDate:
                ns = filter.OrderByDescending == null || filter.OrderByDescending == true
                        ? ns.OrderByDescending(x => x.CreationDate)
                        : ns.OrderBy(x => x.CreationDate);

                break;

            case OrderByFieldsEnum.LastUpdateDate:
                ns = filter.OrderByDescending == null || filter.OrderByDescending == true
                        ? ns.OrderByDescending(x => x.LastUpdateDate)
                        : ns.OrderBy(x => x.LastUpdateDate);

                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
            return(ns);
        }