public UserMutation(IUserRepository repository, UserMessagingService messagingService)
        {
            Field <UserType>(
                "addUser",
                arguments: new QueryArguments(new QueryArgument <NonNullGraphType <UserRegistrationType> >()
            {
                Name = "user"
            }),

                resolve: context =>
            {
                var user        = context.GetArgument <UserRegistrationInfo>("user");
                var isUserAdded = repository.AddUser(user);
                if (isUserAdded)
                {
                    messagingService.AddUserAddedMessage(user);
                    return(repository.GetUser(user.EmailID));
                }
                else
                {
                    context.Errors.Add(new GraphQL.ExecutionError("User cannot be added."));
                    return(null);
                }
            }
                );
        }
Beispiel #2
0
 /// <summary>
 ///
 /// </summary>
 public MainWindowViewModel()
 {
     // In use-case we'd take some kind of dependency injection but this would take to much time
     // and its not a part of the .NET Framework.
     _fileReadOpenService = new IOReadService();
     _fileWriteService    = new IOWriteService();
     _messagingService    = new UserMessagingService();
 }
Beispiel #3
0
 public UserSubscription(UserMessagingService messagingService)
 {
     Name = "Subscription";
     AddField(new EventStreamFieldType()
     {
         Name       = "userAdded",
         Type       = typeof(UserAddedMessage),
         Resolver   = new FuncFieldResolver <UserAddedMessage>(c => c.Source as UserAddedMessage),
         Subscriber = new EventStreamResolver <UserAddedMessage>(c => messagingService.GetMessages())
     });
 }
        protected override HandlerResult GetResult(IHostServer server, WebContext context, string callbackEndPoint, CancellationToken cancel)
        {
            var p     = RequestParameters.Create(context);
            var login = p.Get("login");

            var email = p.Get("email");

            if (string.IsNullOrWhiteSpace(login))
            {
                return(GetError("no login", login, email));
            }
            if (string.IsNullOrWhiteSpace(email))
            {
                return(GetError("no email", login, email));
            }
            var user = Users.GetUser(login);

            if (null == user)
            {
                return(GetError("not existed user", login, email));
            }
            if (!CheckState.IsLogable(user))
            {
                return(GetError("not for logon user", login, email));
            }
            var state = CheckState.GetActivityState(user);

            if (state != UserActivityState.Ok)
            {
                return(GetError("invalid state " + state.ToStr(), login, email));
            }
            if (user.Email != email)
            {
                return(GetError("invalid email", login, email));
            }
            PasswordManager.MakeRequest(user, 10, email);
            Users.Store(user);
            var    message   = UserMessagingService.SendPasswordReset(user);
            bool   sent      = false;
            string senderror = "";

            //try force
            try
            {
                if (null != Sender)
                {
                    var savedmessage = Queue.GetMessage(message.Id);
                    if (!savedmessage.WasSent)
                    {
                        Sender.Send(savedmessage);
                        Queue.MarkSent(savedmessage.Id);
                    }
                    sent = true;
                }
                else
                {
                    throw new Exception("no sender found");
                }
            }
            catch (Exception e)
            {
                senderror = e.Message;
            }
            var result = new { messageid = message.Id, minutes = 10, sent, senderror };

            return(new HandlerResult {
                Result = result, Data = new{ resetpwdreq = true, login, email, data = result }
            });
        }