public async Task <Helfer[]> FindHelfer(HelferFilter filter) { var helferQuery = from helfer in _db.Helfer .Include(p => p.HelferTaetigkeiten) select helfer; if (filter.PlzFilter.Any()) { helferQuery = helferQuery.Where(p => filter.PlzFilter.Contains(p.Kontakt.Plz)); } if (filter.TaetigkeitFilter.Any()) { var taetigkeiten = filter.TaetigkeitFilter.Cast <int>().ToArray(); helferQuery = helferQuery.Where(p => p.HelferTaetigkeiten.Any(q => taetigkeiten.Contains(q.TaetigkeitId))); } if (filter.IstRisikoGruppeFilter.HasValue) { helferQuery = helferQuery.Where(p => p.istRisikogrupepe == filter.IstRisikoGruppeFilter.Value); } if (filter.HatAutoFilter.HasValue) { helferQuery = helferQuery.Where(p => p.hatAuto == filter.HatAutoFilter.Value); } if (filter.IstFreiwilligerFilter.HasValue) { helferQuery = helferQuery.Where(p => p.istFreiwilliger == filter.IstFreiwilligerFilter.Value); } if (filter.IstZivildienerFilter.HasValue) { helferQuery = helferQuery.Where(p => p.istZivildiener == filter.IstZivildienerFilter.Value); } if (filter.IstAusgelastetFilter.HasValue) { helferQuery = helferQuery.Where(p => p.istAusgelastet == filter.IstAusgelastetFilter.Value); } if (filter.IstDSGVOKonform.HasValue) { helferQuery = helferQuery.Where(p => p.istDSGVOKonform == filter.IstDSGVOKonform.Value); } return(await helferQuery .Include(v => v.Einsaetze) .Select(Projector.HelferProjection) .ToArrayAsync()); }
public HilfswerkQuery(IHelferStore store, IReportGenerator reportGenerator, IOptionsSnapshot <GraphQLAuthorizationOptions> options) { if (!string.IsNullOrWhiteSpace(options.Value.AuthorizationPolicy)) { this.AuthorizeWith(options.Value.AuthorizationPolicy); } Name = "Query"; FieldAsync <ListGraphType <HelferType> >( name: "helferByName", arguments: new QueryArguments(new QueryArgument <NonNullGraphType <StringGraphType> > { Name = "nameSearchTerms" }), resolve: async context => { return(await store.FindByName(context.GetArgument <string>("nameSearchTerms"))); } ); FieldAsync <HelferType>( name: "helferById", arguments: new QueryArguments(new QueryArgument <IdGraphType> { Name = "helferId" }), resolve: async context => { return(await store.GetHelfer(context.GetArgument <string>("helferId"))); } ); FieldAsync <EinsatzType>( name: "einsatzById", arguments: new QueryArguments(new QueryArgument <IdGraphType> { Name = "helferId" }, new QueryArgument <IdGraphType> { Name = "einsatzId" }), resolve: async context => { return(await store.GetEinsatz(context.GetArgument <string>("helferId"), context.GetArgument <string>("einsatzId"))); } ); FieldAsync <ListGraphType <HelferType> >( name: "helfer", arguments: new QueryArguments(new QueryArgument <ListGraphType <IntGraphType> > { Name = "inPlz" }, new QueryArgument <ListGraphType <TaetigkeitEnumType> > { Name = "taetigkeitIn" }, new QueryArgument <BooleanGraphType> { Name = "istRisikoGruppe" }, new QueryArgument <BooleanGraphType> { Name = "hatAuto" }, new QueryArgument <BooleanGraphType> { Name = "istZivildiener" }, new QueryArgument <BooleanGraphType> { Name = "istFreiwilliger" }, new QueryArgument <BooleanGraphType> { Name = "istAusgelastet" }, new QueryArgument <BooleanGraphType> { Name = "istDSGVOKonform" } ), resolve: async context => { var filter = new HelferFilter { PlzFilter = context.GetArgument <int[]>("inPlz") ?? Array.Empty <int>(), TaetigkeitFilter = context.GetArgument <Models.Taetigkeit[]>("taetigkeitIn") ?? Array.Empty <Models.Taetigkeit>(), HatAutoFilter = context.GetArgument <bool?>("hatAuto"), IstRisikoGruppeFilter = context.GetArgument <bool?>("istRisikoGruppe"), IstZivildienerFilter = context.GetArgument <bool?>("istZivildiener"), IstFreiwilligerFilter = context.GetArgument <bool?>("istFreiwilliger"), IstAusgelastetFilter = context.GetArgument <bool?>("istAusgelastet"), IstDSGVOKonform = context.GetArgument <bool?>("istDSGVOKonform") }; return(await store.FindHelfer(filter)); } ); FieldAsync <ReportByMonthType>( name: "reportByMonth", resolve: async context => { return(await reportGenerator.GenerateReport()); } ); }