public async Task <IActionResult> Signup(RegistrationViewModel model) { try { //verify that email or username is not in use if (await userManager.FindByNameAsync(model.Username) == null && await userManager.FindByEmailAsync(model.Email) == null) { var AppUser = new AppUser() { Email = model.Email, PhoneNumber = model.PhoneNumber, UserName = model.Username }; var result = await userManager.CreateAsync(AppUser, model.Password); if (result.Succeeded) { //get the AppUser by Id var CreatedUser = GetUserByEmail(model.Email).Result; //assign the user to a role var roleResult = await userManager.AddToRoleAsync(CreatedUser, "user"); if (roleResult.Succeeded) { //build the koinonia user entity KoinoniaUserModel koinoniaUsers = new KoinoniaUserModel() { Id = Guid.Parse(CreatedUser.Id), FirstName = model.FirstName, LastName = model.LastName, Gender = model.Gender, stateOfOrigin = model.StateOfOrigin, }; //pass the model to the UserService userService.AddNewUser(koinoniaUsers).Wait(); //call method to auto follow the leadpastor AutoFollow(koinoniaUsers.Id).Wait(); return(Ok(new { message = "Your Account has been created succesfully" })); } return(BadRequest("User was not added to a role")); } return(BadRequest("Registration Failed")); } return(BadRequest("Username and/or Email is Already in use")); } catch (Exception ex) { throw ex; } }
public async Task <KoinoniaUsers> AddNewUser(KoinoniaUserModel model) { //build new user entity KoinoniaUsers koinoniaUsers = new KoinoniaUsers() { Id = model.Id, FirstName = model.FirstName, LastName = model.LastName, Gender = model.Gender, stateOfOrigin = model.stateOfOrigin, }; var NewUser = await usersRepo.AddNewAsync(koinoniaUsers); usersRepo.SaveChangesAsync().Wait(); return(NewUser); }