예제 #1
0
 public HelferType(IHelferStore store)
 {
     Name = "Helfer";
     Field(x => x.Id)
     .Description("Id");
     Field <KontaktType>("kontakt", resolve: context => context.Source.Kontakt);
     Field(x => x.Anmerkung);
     FieldAsync <ListGraphType <TaetigkeitEnumType> >("taetigkeiten",
                                                      resolve: async context =>
     {
         return(await store.GetTaetigkeiten(context.Source.Id));
     });
     Field <ListGraphType <EinsatzType> >("einsaetze",
                                          resolve: context =>
     {
         return(context.Source.Einsaetze);
     }
                                          );
     Field <IntGraphType>("totalEinsaetze",
                          resolve: context =>
     {
         return(context.Source.Einsaetze.Count());
     }
                          );
     Field(x => x.hatAuto);
     Field(x => x.istRisikogruppe);
     Field(x => x.istFreiwilliger);
     Field(x => x.istZivildiener);
     Field(x => x.istAusgelastet);
     Field(x => x.istDSGVOKonform);
 }
예제 #2
0
 public EinsatzType(IHelferStore store)
 {
     Name = "Einsatz";
     Field <HelferType>("helfer", resolve: x => store.GetHelfer(x.Source.Helfer.Id));
     Field(p => p.Hilfesuchender);
     Field <TaetigkeitEnumType>("taetigkeit", resolve: p => p.Source.Taetigkeit);
     Field(p => p.VermitteltDurch);
     Field(p => p.VermitteltAm);
     Field(p => p.Anmerkungen);
     Field(p => p.Id);
     Field(p => p.Dauer, nullable: true);
 }
예제 #3
0
 public HilfswerkMutation(IHelferStore store)
 {
     Name = "Mutation";
     this.AuthorizeWith("DefaultPolicy");
     FieldAsync <HelferType>("createHelfer",
                             arguments: new QueryArguments(
                                 new QueryArgument <NonNullGraphType <CreateHelferInputType> > {
         Name = "helfer"
     }),
                             resolve: async context =>
     {
         var helfer = context.GetArgument <HelferCreateModel>("helfer");
         return(await store.AddHelfer(helfer));
     });
     FieldAsync <EinsatzType>("createEinsatz",
                              arguments: new QueryArguments(new QueryArgument <NonNullGraphType <StringGraphType> > {
         Name = "helferId"
     },
                                                            new QueryArgument <NonNullGraphType <EinsatzInputType> > {
         Name = "einsatz"
     }
                                                            ),
                              resolve: async context =>
     {
         var helferId = context.GetArgument <string>("helferId");
         var einsatz  = context.GetArgument <EinsatzCreateModel>("einsatz");
         return(await store.AddEinsatz(helferId, einsatz));
     });
     FieldAsync <EinsatzType>("editEinsatz",
                              arguments: new QueryArguments(new QueryArgument <NonNullGraphType <IdGraphType> > {
         Name = "helferId"
     },
                                                            new QueryArgument <NonNullGraphType <IdGraphType> > {
         Name = "einsatzId"
     },
                                                            new QueryArgument <NonNullGraphType <EinsatzEditInputType> > {
         Name = "einsatz"
     }),
                              resolve: async context =>
     {
         var helferId  = context.GetArgument <string>("helferId");
         var einsatzId = context.GetArgument <string>("einsatzId");
         var einsatz   = context.GetArgument <EinsatzEditModel>("einsatz");
         return(await store.EditEinsatz(helferId, einsatzId, einsatz));
     });
     FieldAsync <BooleanGraphType>("editHelfer",
                                   arguments: new QueryArguments(
                                       new QueryArgument <NonNullGraphType <EditHelferInputType> > {
         Name = "helfer"
     },
                                       new QueryArgument <IdGraphType> {
         Name = "id"
     }),
                                   resolve: async context =>
     {
         var helfer = context.GetArgument <HelferEditModel>("helfer");
         var id     = context.GetArgument <string>("id");
         try
         {
             await store.EditHelfer(id, helfer);
             return(true);
         }
         catch (InvalidOperationException ex)
         {
             return(false);
         }
     });
     FieldAsync <BooleanGraphType>("removeEinsatz",
                                   arguments: new QueryArguments(new QueryArgument <IdGraphType> {
         Name = "helferId"
     },
                                                                 new QueryArgument <IdGraphType> {
         Name = "einsatzId"
     }),
                                   resolve: async context =>
     {
         var helferId  = context.GetArgument <string>("helferId");
         var einsatzId = context.GetArgument <string>("einsatzId");
         await store.RemoveEinsatz(helferId, einsatzId);
         return(true);
     });
     FieldAsync <BooleanGraphType>("setAusgelastet",
                                   arguments: new QueryArguments(
                                       new QueryArgument <BooleanGraphType> {
         Name = "istAusgelastet"
     },
                                       new QueryArgument <IdGraphType> {
         Name = "id"
     }),
                                   resolve: async context =>
     {
         var istAusgelastet = context.GetArgument <bool>("istAusgelastet");
         var id             = context.GetArgument <string>("id");
         try
         {
             await store.SetAusgelastet(id, istAusgelastet);
             return(true);
         }
         catch (InvalidOperationException)
         {
             return(false);
         }
     });
 }
예제 #4
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());
            }
                );
        }