public async Task <IActionResult> Register([Bind("Name,Address,Email,Password,ConfirmPassword")] RestaurantRegistrationModel userModel) { if (!ModelState.IsValid) { return(View(userModel)); } //there are better way to do this, could also use an automapper but oh well :^) Restaurant restaurant = new Restaurant(); restaurant.Name = userModel.Name; restaurant.Address = userModel.Address; restaurant.Email = userModel.Email; restaurant.State = Restaurant.RestaurantState.Pending; restaurant.UserName = userModel.Email; var result = await _userManager.CreateAsync(restaurant, userModel.Password); if (!result.Succeeded) { foreach (var error in result.Errors) { ModelState.TryAddModelError(error.Code, error.Description); } return(View(userModel)); } await _userManager.AddToRoleAsync(restaurant, "Restaurant"); _flashMessage.Confirmation($"Registered successfully! You can login now"); return(RedirectToAction(nameof(HomeController.Index), "Home")); }
public async Task RegisterRestaurant(RestaurantRegistrationModel model) { try { await _dispatcher.SendAsync(new RegisterRestaurant { RestaurantName = model.RestaurantName, ContactEmailAddress = new Domain.Shared.EmailAddress(model.ContactEmailAddress) }); } catch (Exception e) { _logger.LogError(e, e.Message); throw; } }
public async Task <Object> RestaurentRegistration(RestaurantRegistrationModel model) { var usr = await _userManager.FindByEmailAsync(model.OwnerEmail); if (usr != null) { return(BadRequest(new { message = "User Already Exists" })); } var Role = "RestaurantOwner"; var applicationUser = new ApplicationUserModel() { UserName = model.OwnerEmail, Email = model.OwnerEmail }; ProfileModel profile = new ProfileModel() { Email = model.OwnerEmail, Name = model.OwnerName, PhoneNumber = model.OwnerPhoneNumber }; RestaurentModel restaurent = new RestaurentModel() { OwnerEmail = model.OwnerEmail, RestaurantEmail = model.RestaurantEmail, Phone = model.RestaurantPhone, Name = model.RestaurantName, Location = model.ResturantAddress }; try { var result = await _userManager.CreateAsync(applicationUser, model.Password); await _userManager.AddToRoleAsync(applicationUser, Role); _context.Profile.Add(profile); _context.Restaurent.Add(restaurent); await _context.SaveChangesAsync(); var resturantID = _context.Restaurent.Where(r => r.OwnerEmail == model.OwnerEmail).FirstOrDefault().ID; RestaurentRequestModel restaurentRequest = new RestaurentRequestModel() { IsVerified = false, RegistrationDateTime = DateTime.Now, RestaurentID = resturantID }; _context.RestaurentRequest.Add(restaurentRequest); await _context.SaveChangesAsync(); if (result.Succeeded) { var code = await _userManager.GenerateEmailConfirmationTokenAsync(applicationUser); var callbackUrl = Url.Action(("ConfirmEmail"), "User", new { userId = applicationUser.Id, code = code }, Request.Scheme); EmailSender emailSender = new EmailSender(); emailSender.sendVerificationEmail(model.OwnerEmail, callbackUrl); } return(Ok(result)); } catch (Exception ex) { throw ex; } }