Exemplo n.º 1
0
        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());
        }
Exemplo n.º 2
0
        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());
            }
                );
        }