Example #1
0
        public virtual async Task <ActionResult <IEnumerable <dynamic> > > Sort([FromQuery] string fields, [FromQuery] string asc, [FromQuery] string desc)
        {
            var query = _context.Set <T>().AsQueryable();

            if (!string.IsNullOrWhiteSpace(asc))
            {
                var tab2 = asc.Split(',');
                //on verifie si on a deux éléments dans le tableau pour savoir si on va faire le thenBy()

                if (tab2.Length == 1)
                {
                    query = IQueryableExtensions.SelectColonnesAscOne(query, tab2[0]);
                }
                else
                {
                    query = IQueryableExtensions.SelectColonnesAsc(query, tab2);
                }
            }


            if (!string.IsNullOrWhiteSpace(desc))
            {
                var tab3 = desc.Split(',');
                //on verifie si on a deux éléments dans le tableau pour savoir si on va faire le thenBy()

                if (tab3.Length == 1)
                {
                    query = IQueryableExtensions.SelectColonnesDescOne(query, tab3[0]);
                }
                else
                {
                    query = IQueryableExtensions.SelectColonnesDesc(query, tab3);
                }
            }



            if (!string.IsNullOrWhiteSpace(fields))
            {
                var tab1 = fields.Split(',');

                // var results = await IQueryableExtensions.SelectDynamic<TModel>(query, tab).ToListAsync();
                var results = await query.SelectModel(tab1).ToListAsync();

                return(results.Select((x) => IQueryableExtensions.SelectObject(x, tab1)).ToList());

                // toujours penser a faire le select a la fin
                return(await query.ToListAsync());
            }
            else
            {
                return(Ok(ToJsonList(await query.ToListAsync())));
            }
        }