Пример #1
0
        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"));
        }
Пример #2
0
 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;
     }
 }
Пример #3
0
        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;
            }
        }