Example #1
0
        public async Task <OperationResult> ResetPassword([FromBody] UserItem userItem)
        {
            var operationResult = new OperationResult {
                IsSuccess = false
            };

            try
            {
                if (!string.IsNullOrEmpty(userItem.UserName))
                {
                    var user = userManager.FindByNameAsync(userItem.UserName).Result;

                    if (user != null)
                    {
                        userItem.Adapt <UserItem, User>(user);

                        var code = await userManager.GeneratePasswordResetTokenAsync(user);

                        var result = await userManager.ResetPasswordAsync(user, code, userItem.NewPassword);

                        if (result.Succeeded)
                        {
                            operationResult.IsSuccess      = true;
                            operationResult.SuccessMessage = "Password Reset Successfully.";
                        }
                        else
                        {
                            operationResult.ErrorMessage = string.Join(", ", result.Errors.Select(p => p.Description).ToArray());
                        }
                    }
                    else
                    {
                        operationResult.ErrorMessage = "User not found!";
                    }
                }
                else
                {
                    operationResult.ErrorMessage = "User not found!";
                }
            }
            catch (Exception ex)
            {
                operationResult.ErrorMessage = ex.Message;
            }

            return(operationResult);
        }
Example #2
0
        public async Task <OperationResult> Save([FromBody] UserItem userItem)
        {
            var operationResult = new OperationResult {
                IsSuccess = false
            };

            try
            {
                if (!(userItem.UserId == Guid.Empty))
                {
                    var user = userManager.FindByNameAsync(userItem.UserName).Result;

                    if (user != null)
                    {
                        bool updateUserEmail = user.Email != userItem.Email;

                        //Set Modified Date
                        user.DateModified = DateTime.UtcNow;
                        userItem.Adapt(user);

                        var result = await userManager.UpdateAsync(user);

                        if (updateUserEmail)
                        {
                            user.UserName = user.Email;
                            await userManager.UpdateNormalizedEmailAsync(user);

                            await userManager.UpdateNormalizedUserNameAsync(user);
                        }

                        if (result.Succeeded)
                        {
                            foreach (var ud in UserRoleDetail.GetAll().Where(r => r.UserId == user.Id).ToList())
                            {
                                UserRoleDetail.Remove(ud.UserRoleDetailId);
                            }

                            foreach (var role in userItem.SelectedRole)
                            {
                                UserRoleDetail.Add(new UserRoleDetail {
                                    RoleId = role.RoleId, UserId = user.Id, IsActive = true
                                });
                            }

                            operationResult.IsSuccess      = true;
                            operationResult.SuccessMessage = "User Updated Successfully.";
                        }
                        else
                        {
                            operationResult.ErrorMessage = string.Join(", ", result.Errors.Select(p => p.Description).ToArray());
                        }
                    }
                    else
                    {
                        operationResult.ErrorMessage = "User not found!";
                    }
                }
                else
                {
                    var newUser = userItem.Adapt <UserItem, User>();
                    newUser.Id       = Guid.NewGuid().ToString();
                    newUser.UserName = userItem.Email;
                    newUser.AdminId  = UserEmail;

                    newUser.DateCreated = DateTime.UtcNow;

                    //get package id and organizatin id incase of non admin user
                    if (newUser.AdminId != null)
                    {
                        var adminuser = userManager.FindByEmailAsync(newUser.AdminId).Result;
                        newUser.OrganizationId = adminuser.OrganizationId;
                        newUser.AdminId        = adminuser.Id;
                    }
                    else
                    {
                        //save organization and then associate it with user
                        if (!string.IsNullOrEmpty(userItem.OrganizationName))
                        {
                            var org = new Organization
                            {
                                Name = userItem.OrganizationName
                            };
                            OrganizationRepositoy.Add(org);
                            newUser.OrganizationId = org.OrganizationId;
                        }
                    }

                    var result = await userManager.CreateAsync(newUser, userItem.Password);

                    if (result.Succeeded)
                    {
                        //get package id and organizatin id incase of non admin user
                        if (string.IsNullOrEmpty(UserEmail))
                        {
                            UserRoleDetail.Add(new UserRoleDetail {
                                RoleId = Convert.ToInt32(Roles.Admin), UserId = newUser.Id, IsActive = true
                            });                                                                                                                        //admin role
                        }
                        else
                        {
                            foreach (var role in userItem.SelectedRole)
                            {
                                UserRoleDetail.Add(new UserRoleDetail {
                                    RoleId = role.RoleId, UserId = newUser.Id, IsActive = true
                                });
                            }
                        }

                        operationResult.IsSuccess      = true;
                        operationResult.SuccessMessage = "User Created Successfully.";
                    }
                    else
                    {
                        operationResult.ErrorMessage = string.Join(", ", result.Errors.Select(p => p.Description).ToArray());
                    }
                }
            }
            catch (Exception ex)
            {
                operationResult.ErrorMessage = ex.Message;
            }

            return(operationResult);
        }