public UpdateUserItem InitUpdate(string Id) { try { var item = new UpdateUserItem(); IdentityUserItem applicationUser = context.Users.Find(Id); item.Id = applicationUser.Id; item.UserName = applicationUser.UserName; item.Email = applicationUser.Email; item.FirstName = applicationUser.FirstName; item.LastName = applicationUser.LastName; item.UserItemRoles = context.Roles.Select(x => new SelectListItem { Text = x.Name, Value = x.Id.ToString() }).ToList(); foreach (IdentityUserRole itm in applicationUser.Roles) { item.UserItemSelectedRoles.Add(itm.RoleId); } foreach (var role in item.UserItemRoles) { if (role.Text == _administrator) { role.Text = "Ադմինիստրատոր"; } if (role.Text == _reader) { role.Text = "Դիտորդ"; } if (role.Text == _writer) { role.Text = "Տվյալների մուտքագրող"; } if (role.Text == _reportspecialist) { role.Text = "Հաշվետվությունների մասնագետ"; } } if (item != null) { return(item); } else { throw new System.NullReferenceException("Requested item is not found"); } } catch (Exception ex) { serviceException = ex; return(null); } }
public int Update(UpdateUserItem updateUserItem, IOwinContext owinContext) { using (var scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled)) { try { InstanceUserManager instanceUserManager = owinContext.GetUserManager <InstanceUserManager>(); IdentityUserItem identityUserItem = instanceUserManager.FindById(updateUserItem.Id.ToString()); if (updateUserItem != null) { identityUserItem.Email = updateUserItem.Email; identityUserItem.UserName = updateUserItem.UserName; identityUserItem.FirstName = updateUserItem.FirstName; identityUserItem.LastName = updateUserItem.LastName; IdentityResult result = instanceUserManager.Update(identityUserItem); if (result.Succeeded) { //this part is not similar to create need more investigation foreach (string item in updateUserItem.UserItemSelectedRoles) { string roleName = context.Roles.Find(item).Name; //sometimes this part not works, may be the context is not initialized? instanceUserManager.AddToRole(identityUserItem.Id, roleName); } List <IdentityUserRole> listIdentityUserRole = instanceUserManager.FindById(identityUserItem.Id).Roles.ToList(); foreach (IdentityUserRole item in listIdentityUserRole) { if (!updateUserItem.UserItemSelectedRoles.Contains(item.RoleId)) { string roleToRemove = context.Roles.Find(item.RoleId).Name; instanceUserManager.RemoveFromRole(identityUserItem.Id, roleToRemove); } } scope.Complete(); return(1); } else { updateUserItem.UserItemRoles = context.Roles.Select(x => new SelectListItem { Text = x.Name, Value = x.Id.ToString() }).ToList(); foreach (var error in result.Errors) { strErrorMessage = ErrorMessage + " " + error; } scope.Dispose(); return(0); } } else { updateUserItem.UserItemRoles = context.Roles.Select(x => new SelectListItem { Text = x.Name, Value = x.Id.ToString() }).ToList(); strErrorMessage = "There is no user with provided ID"; return(0); } } catch (Exception ex) { serviceException = ex; updateUserItem.UserItemRoles = context.Roles.Select(x => new SelectListItem { Text = x.Name, Value = x.Id.ToString() }).ToList(); if (ex.Message != null) { strErrorMessage = ex.Message; } else { strErrorMessage = ex.InnerException.Message; } scope.Dispose(); return(-1); } } }