public async Task <IActionResult> Register(Users user) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var result = new TaskResult <string>(); var usr = await _usersRepository.GetByUserNameAsync(user.UserName); if (usr == null) { var roleResult = await _rolesRepository.GetByNameAsync(RolesConstants.APPLICANT); if (!roleResult.Success) { roleResult.AddErrorMessage($"El role {RolesConstants.APPLICANT} no existe"); return(BadRequest(roleResult)); } await _usersRepository.CreateAsync(user); var createdSuccesfully = await _usersRepository.SaveAsync(); if (!createdSuccesfully) { result.AddErrorMessage($"No se pudo crear el usuario: {user.UserName}"); return(BadRequest(result)); } var roleAdded = await _usersRepository.AddUserRoleAsync(roleResult.Data.Id, user.Id); if (!roleAdded) { result.AddErrorMessage($"No se pudo agregar el rol {roleResult.Data.Name} al usuario {user.UserName}"); return(BadRequest(result)); } result.Data = _jwtAuthenticationManager.Authenticate(user); return(Ok(result)); } result.AddErrorMessage("El nombre de usuario ingresado ya se encuentra registrado"); return(BadRequest(result)); }