Пример #1
0
        private void AddUserMutations(UserFacade userFacade, UserRoleFacade userRoleFacade,
                                      UserGroupFacade userGroupFacade, GroupFacade groupFacade)
        {
            User ParseUser(User user)
            {
                user.UserRole = userRoleFacade.GetAll().SingleOrDefault(x => x.RoleName == "Student");
                return(user);
            }

            Field <UserType>("addUser",
                             arguments: new QueryArguments(new QueryArgument <NonNullGraphType <IntGraphType> > {
                Name = "groupId"
            },
                                                           new QueryArgument <NonNullGraphType <IntGraphType> > {
                Name = "userId"
            },
                                                           new QueryArgument <NonNullGraphType <UserInputType> > {
                Name = "user"
            }),
                             resolve: context => {
                var user    = ParseUser(context.GetArgument <User>("user"));
                var groupId = context.GetArgument <int>("groupId");
                if (user.FirstName == null || user.LastName == null || user.Login == null ||
                    user.Password == null)
                {
                    throw new ArgumentException();
                }

                if (userFacade.GetByLogin(user.Login) != null)
                {
                    return(null);
                }

                user.UserRoleId = userRoleFacade.GetByName("Студент").Id;

                user = userFacade.Add(user);

                UserGroup userGroup = new UserGroup {
                    User = user, Group = groupFacade.GetById(groupId)
                };

                userGroupFacade.Add(userGroup);

                return(user);
            }
                             );

            Field <UserType>("deleteUser",
                             arguments: new QueryArguments(new QueryArgument <NonNullGraphType <IntGraphType> > {
                Name = "userId"
            },
                                                           new QueryArgument <NonNullGraphType <IntGraphType> > {
                Name = "deleteId"
            }),
                             resolve: context => {
                var deleteUser = userFacade.GetById(context.GetArgument <int>("deleteId"));
                userGroupFacade.Delete(userGroupFacade.GetUserGroupByUserId(deleteUser.Id));
                return(userFacade.Delete(deleteUser));
            }
                             );

            Field <UserType>("editUser",
                             arguments: new QueryArguments(new QueryArgument <NonNullGraphType <IntGraphType> > {
                Name = "userId"
            },
                                                           new QueryArgument <NonNullGraphType <UserInputType> > {
                Name = "user"
            },
                                                           new QueryArgument <NonNullGraphType <IntGraphType> > {
                Name = "editId"
            }),
                             resolve: context => {
                var editId = context.GetArgument <int>("editId");
                var user   = ParseUser(context.GetArgument <User>("user"));
                return(userFacade.Edit(editId, user));
            }
                             );
        }