public async Task <IActionResult> Put(string id, UiRoleListItem roleDetails) { if (roleDetails == null || !ModelState.IsValid || string.IsNullOrWhiteSpace(roleDetails.Id) || id != roleDetails.Id) { return(BadRequest(new UiResponse(false, "invalid_input", "Invalid input."))); } var errorList = new List <UiResponseMessage>(); var roleWithTheSameName = await _roleManager.FindByNameAsync(roleDetails.Name); if (roleWithTheSameName != null && roleDetails.Id != roleWithTheSameName.Id) { errorList.Add(new UiResponseMessage { Code = "duplicate_name", Message = "Role with the same name is already exists." }); } if (errorList.Count > 0) { return(BadRequest(new UiResponse(false, errorList))); } var role = await _roleManager.FindByIdAsync(id); if (role == null) { errorList.Add(new UiResponseMessage { Code = "internal_error", Message = "Role is not available for editing." }); return(BadRequest(new UiResponse(false, errorList))); } role.Name = roleDetails.Name; var updateResults = await _roleManager.UpdateAsync(role); errorList.AddRange(IdentityResultToResponseMessages(updateResults)); if (errorList.Count > 0) { return(BadRequest(new UiResponse(false, errorList))); } return(Ok(new UiResponse(true, "user_updated", "User updated successfully."))); }
public async Task <IActionResult> Post(UiRoleListItem roleDetails) { if (roleDetails == null || !ModelState.IsValid || roleDetails.Id != "new") { return(BadRequest(new UiResponse(false, "invalid_input", "Invalid input."))); } var errorList = new List <UiResponseMessage>(); var roleWithTheSameName = await _roleManager.FindByNameAsync(roleDetails.Name); if (roleWithTheSameName != null) { errorList.Add(new UiResponseMessage { Code = "duplicate_name", Message = "Role with the same name already exists." }); } if (errorList.Count > 0) { return(BadRequest(new UiResponse(false, errorList))); } if (roleDetails.Id == "new") { roleDetails.Id = Guid.NewGuid().ToString(); } var role = _mapper.Map <IdentityRole>(roleDetails); var creationResults = await _roleManager.CreateAsync(role); if (!creationResults.Succeeded) { foreach (var identityError in creationResults.Errors) { errorList.Add(new UiResponseMessage { Code = "identity_error", Message = identityError.Description }); } return(BadRequest(new UiResponse(false, errorList))); } return(Ok(new UiResponse(true, "role_created", "Role created successfully."))); }