예제 #1
0
        public async Task <IActionResult> GetAllFiltered(SerieQueryResource query = null)
        {
            try
            {
                var series = await service.Find(query);

                return(Ok(series));
            }
            catch (Exception)
            {
                return(NotFound());
            }
        }
예제 #2
0
        public async Task <SerieResource> SingleOrDefault(SerieQueryResource query)
        {
            try
            {
                ParameterExpression argParam       = Expression.Parameter(typeof(Serie), "e");
                Expression          nameProperty   = Expression.Property(argParam, "Nome");
                Expression          ensinoProperty = Expression.Property(argParam, "Ensino");

                var val1 = Expression.Constant(query.Nome);
                var val2 = Expression.Constant(query.Ensino);

                List <Expression> listExpression = new List <Expression>();

                if (val1 != null)
                {
                    listExpression.Add(Expression.Equal(nameProperty, val1));
                }
                if (val2 != null)
                {
                    listExpression.Add(Expression.Equal(ensinoProperty, val2));
                }


                var andExp = (listExpression.Count > 1) ? Expression.AndAlso(listExpression[0], listExpression[1]) : (listExpression.Count == 1) ? listExpression[0] : null;

                var lambda = (andExp != null) ? Expression.Lambda <Func <Serie, bool> >(andExp, argParam) : null;

                if (lambda == null)
                {
                    throw new Exception("Informe ao menos um parâmetro para a consulta");
                }
                var serie = await unitOfWork.Series.SingleOrDefault(lambda);

                var seriesResource = mapper.Map <Serie, SerieResource>(serie);
                return(seriesResource);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }