public async Task <IActionResult> Insert(UserCreationParameters parameters) { FirebaseAuthLink firebaseUser = null; User user = null; try { user = _repo.GetAll().FirstOrDefault(x => x.Email.ToLower() == parameters.Email.ToLower()); if (user == null) { firebaseUser = await _fireRepo.CreateUser(parameters.Email, parameters.Password); User u = new User() { Email = parameters.Email, IsAdmin = parameters.IsAdmin }; _repo.Insert(u); return(CreatedAtAction("GetByID", new { id = u.ID }, BuildResponse(u))); } else { return(ReturnUserFriendlyError(Errors.ExistingEmail)); } } catch { if (firebaseUser != null) { await _fireRepo.DeleteUser(firebaseUser.FirebaseToken); } if (user != null) { _repo.Delete(user.ID); } return(ReturnUserFriendlyError(Errors.Unknown)); } }
public UserCreationResponse CreateUser(UserCreationParameters userData) { var userManagementService = ObjectFactory.GetInstance <IUserManagementService>(); var newUser = new Trex.Server.Core.Model.User() { UserName = userData.User.UserName, Name = userData.User.FullName, Email = userData.User.Email, Price = userData.User.Price }; var userCreationResponse = userManagementService.CreateUser(newUser, userData.Password, userData.PasswordQuestion, userData.PasswordAnswer); if (userCreationResponse.Success) { UpdateUserRoles(userData.User.UserName, userData.User.Roles); } return(userCreationResponse.ToDtoObject()); }