public CorporationUserCreatingConfirmation CreateUser(CorporationUser user, string password) { if (!CheckUniqueUsername(user.Username, false, null)) { throw new UniqueValueViolationException("Username should be unique"); } if (!CkeckUniqueEmail(user.Email)) { throw new UniqueValueViolationException("Email should be unique"); } if (!CheckCountry(user.CountryId)) { throw new ForeignKeyConstraintViolationException("Foreign key constraint violated"); } CorporationUserCreatingConfirmation userCreated = _corporationUserRepository.CreateUser(user); _corporationUserRepository.SaveChanges(); //Dodavanje u IdentityUserDbContext string username = string.Join("", user.Username.Split(default(string[]), StringSplitOptions.RemoveEmptyEntries)); var acc = new AccountInfo(username, user.Email, userCreated.UserId); IdentityResult result = _userManager.CreateAsync(acc, password).Result; if (result.Succeeded) { _userManager.AddToRoleAsync(acc, "Regular user").Wait(); } else { _corporationUserRepository.DeleteUser(userCreated.UserId); } return(userCreated); }
public ActionResult <CorporationUserCreatingConfirmationDto> CreateUser([FromBody] CorporationUserCreatingDto corporationUser) { try { CorporationUser userEntity = _mapper.Map <CorporationUser>(corporationUser); CorporationUserCreatingConfirmation userCreated = _corporationUsersService.CreateUser(userEntity, corporationUser.Password); string location = _linkGenerator.GetPathByAction("GetUserById", "CorporationUser", new { userId = userCreated.UserId }); return(Created(location, _mapper.Map <CorporationUserCreatingConfirmationDto>(userCreated))); } catch (Exception ex) { if (ex.GetType().IsAssignableFrom(typeof(ForeignKeyConstraintViolationException))) { return(StatusCode(StatusCodes.Status409Conflict, ex.Message)); } if (ex.GetType().IsAssignableFrom(typeof(UniqueValueViolationException))) { return(StatusCode(StatusCodes.Status422UnprocessableEntity, ex.Message)); } if (ex.GetBaseException().GetType() == typeof(SqlException)) { Int32 ErrorCode = ((SqlException)ex.InnerException).Number; switch (ErrorCode) { case 2627: break; case 547: return(StatusCode(StatusCodes.Status422UnprocessableEntity, ex.Message)); case 2601: return(StatusCode(StatusCodes.Status409Conflict, ex.Message)); default: return(StatusCode(StatusCodes.Status500InternalServerError, ex.Message)); } } return(StatusCode(StatusCodes.Status500InternalServerError, ex.Message)); } }