public async Task <IActionResult> GetAllFiltered(SerieQueryResource query = null) { try { var series = await service.Find(query); return(Ok(series)); } catch (Exception) { return(NotFound()); } }
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; } }