public async Task <TurmaResource> SingleOrDefault(TurmaQueryResource query) { try { ParameterExpression argParam = Expression.Parameter(typeof(Turma), "e"); Expression nameProperty = Expression.Property(argParam, "NomeTurma"); var val1 = (query.NomeTurma != null) ? Expression.Constant(query.NomeTurma) : null; var andExp = (val1 != null) ? Expression.Equal(nameProperty, val1) : null; var lambda = (andExp != null) ? Expression.Lambda <Func <Turma, bool> >(andExp, argParam) : null; if (lambda == null) { throw new Exception("Informe ao menos um parâmetro para a consulta"); } var turma = await unitOfWork.Turmas.SingleOrDefault(lambda); var turmaResource = mapper.Map <Turma, TurmaResource>(turma); return(turmaResource); } catch (Exception ex) { throw ex; } }
public async Task <IActionResult> GetAllFiltered([FromQuery] string nomeTurma = null) { try { TurmaQueryResource query = new TurmaQueryResource() { NomeTurma = nomeTurma }; var turmas = await service.Find(query); return(Ok(turmas)); } catch (Exception) { return(NotFound()); } }