예제 #1
0
        public HttpResponseMessage CreateUserAccount(AppUserViewModel accountModel)
        {
            var response = new ApiResultViewModel <AppUserViewModel>();

            if (ModelState.IsValid)
            {
                var user = new AppUser
                {
                    Email          = accountModel.Email,
                    UserName       = accountModel.UserName,
                    PhoneNumber    = accountModel.PhoneNumber,
                    FirstName      = accountModel.FirstName,
                    LastName       = accountModel.LastName,
                    LockoutEnabled = !accountModel.Status
                };

                try
                {
                    if (IposConfig.UseMembership)
                    {
                        var membershipUser = IposMembershipService.CreateUserAccount(accountModel);

                        if (membershipUser.HasError)
                        {
                            response.errorMessage = membershipUser.ErrorMessage;
                            response.errorStatus  = true;
                            return(Request.CreateResponse(response));
                        }
                    }

                    var userRegisterResponse = _appUserMgr.Create(user, accountModel.Password);

                    if (userRegisterResponse.Succeeded)
                    {
                        AddToMutipleRoles(accountModel, user.Id);

                        var eventDescription = String.Format("{0} account was created.", accountModel.UserName);

                        var membershipUserId = IposConfig.UseMembership ? (Guid?)IposMembershipService.GetUserId(User.Identity.Name) : null;

                        _auditSvc.LogEvent(eventDescription, AuditType.NEW_ACCOUNT, membershipUserId, User.Identity.GetUserId <int>());

                        response.message = "New User account has been created.";
                        return(Request.CreateResponse(response));
                    }
                    else
                    {
                        response.errorMessage = userRegisterResponse.Errors.FirstOrDefault();
                    }
                }
                catch (Exception e)
                {
                    _logger.Log(e);

#if DEBUG
                    response.errorMessage = e.Message;
                    response.errorStatus  = true;
#else
                    response.errorMessage = "Error occured, please contact admin.";
                    response.errorStatus  = true;
#endif
                }
            }
            else
            {
                response.errorStatus  = true;
                response.errorMessage = "Cannot create user account with Incomplete fields.";
            }

            return(Request.CreateResponse(response));
        }