public async Task <IHttpActionResult> RegisterUser(UserRegisterModel registerModel)
        {
            if (registerModel == null)
            {
                return(BadRequest("This request is invalid"));
            }
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var user = new ApplicationUser
            {
                UserName    = registerModel.UserName,
                Email       = registerModel.Email,
                PhoneNumber = registerModel.PhoneNumber
            };

            try
            {
                var registrationToken = await UserManagerService.RegisterUser(user, registerModel.Password);

                var userProfile = new UserProfileModel
                {
                    UserId      = user.Id,
                    FirstName   = registerModel.FirstName,
                    LastName    = registerModel.LastName,
                    Email       = registerModel.Email,
                    PhoneNumber = registerModel.PhoneNumber,
                    Address     = new AddressModel
                    {
                        CountryId = registerModel.CountryId,
                        StateId   = registerModel.StateId
                    }
                };

                await _userProfileBL.CreateUserProfile(userProfile);

                var workspace = new WorkspaceModel
                {
                    Name           = string.Join("_", registerModel.FirstName, registerModel.LastName),
                    WorkspaceUsers = new List <WorkspaceUserModel>
                    {
                        new WorkspaceUserModel
                        {
                            UserId = user.Id
                        }
                    }
                };

                await _workspaceBL.CreateNewWorkspace(workspace);

                return(registrationToken != null?Ok() : GetErrorResult(new IdentityResult("The email address " + registerModel.Email + " is already taken. Please sign in.")));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }