예제 #1
0
        public IUserResult CreateUserAndAccount(IUser userDTO, string password)
        {
            IUserResult userCreateResult = null;

            try
            {
                if (_userService.EmailExists(userDTO.Email))
                {
                    //Can't create an account with the same email address.
                    userCreateResult = new UserFailureResult();
                    userCreateResult.AddData(string.Format("Email address '{0}' already exists.", userDTO.Email));
                }
                else
                {
                    var result = _userService.CreateItem(userDTO, password);

                    if (result.Result is UserSuccessResult)
                    {
                        var accountDTO = new AccountDTO();

                        accountDTO.UserId = ((UserDTO)result.Result.Item).Id;

                        if (string.IsNullOrEmpty(accountDTO.Name))
                        {
                            accountDTO.Name = "My Account";
                        }

                        var accountCreateResult = _accountService.CreateItem(accountDTO);

                        if (accountCreateResult is AccountSuccessResult)
                        {
                            Commit();
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Rollback();
                userCreateResult = new UserFailureResult();
                userCreateResult.AddData(string.Format("Error occcured while attempting to create a new user/account: {0}.", e.Message));
            }

            return(userCreateResult);
        }
예제 #2
0
        public IUserResult GetItem(string key)
        {
            var         user   = users.Where(u => u.Id == key).FirstOrDefault();
            IUserResult result = null;

            if (user != null)
            {
                result = new UserSuccessResult()
                {
                    Item = user
                };
            }
            else
            {
                result = new UserFailureResult();
                result.AddData(new List <string> {
                    "Unable to locate user ID " + key
                });
            }

            return(result);
        }
예제 #3
0
        public IUserResult DeactivateUser(IUser userDTO)
        {
            IUserResult userDeactivationResult = null;

            try
            {
                userDTO.IsActive       = false;
                userDeactivationResult = _userService.UpdateItem(userDTO);

                if (userDeactivationResult is UserSuccessResult)
                {
                    //Deactivate any/all accounts for this user.
                    _accountService.DeactivateAllAccounts(userDTO.Id);
                }
            }
            catch (Exception e)
            {
                userDeactivationResult = new UserFailureResult();
                userDeactivationResult.AddData(string.Format("Error occurred while deactivating user: {0}.", e.Message));
            }

            return(userDeactivationResult);
        }
예제 #4
0
        public IUserResult UpdateItem(IUser model)
        {
            var         retrieveResult = GetItem(model.Id);
            IUserResult result         = null;

            if (retrieveResult is UserSuccessResult) //Normally you'd use a mapper here.
            {
                retrieveResult.Item.PhoneNumber = model.PhoneNumber;
                retrieveResult.Item.FirstName   = model.FirstName;
                retrieveResult.Item.LastName    = model.LastName;
                result = new UserSuccessResult()
                {
                    Item = retrieveResult.Item
                };
            }
            else
            {
                result = new UserFailureResult();
                ((List <string>)result.Data).Add("Unable to locate user ID " + model.Id);
            }

            return(result);
        }
예제 #5
0
        public async Task <IUserResult> CreateItem(IUser userDTO, string password)
        {
            IUserResult result           = null;
            var         validationErrors = userValidator.Validate(userDTO);

            if (validationErrors.Count() == 0)
            {
                ((IoTHubUserIdentity)userDTO).UserName = userDTO.Email;

                var createResult = await userManager.CreateAsync((IoTHubUserIdentity)userDTO, password);

                if (createResult.Succeeded)
                {
                    result = new UserSuccessResult()
                    {
                        Item = userDTO
                    };
                }
                else
                {
                    result = new UserFailureResult()
                    {
                        Item = userDTO
                    };
                }
            }
            else
            {
                result = new UserFailureResult()
                {
                    Item = userDTO
                };
                result.AddData(validationErrors);
            }

            return(result);
        }