コード例 #1
0
        public async Task <IActionResult> Register(UserRegisterViewModel user)
        {
            if (!ModelState.IsValid)
            {
                return(View(user));
            }

            var result = await _userRepository.RegisterUserAsync(user);

            if (result == null)
            {
                TempData["Error"] = "مشکلی در ثبت نام پیش آمد! لطفا مجددا امتحان کنید";
                return(View(user));
            }

            var emailSent = await _mailRepository.SendActivationLinkAsync(user.Email);

            if (!emailSent)
            {
                //SAGA RollBack Pattern
                var failUser = await _userRepository.GetUserByEmailAsync(user.Email);

                await _userRepository.DeleteUserAsync(failUser);

                TempData["Error"] = "مشکلی در ثبت نام و ارسال ایمیل تایید پیش آمد! لطفا مجددا امتحان کنید";
                return(View(user));
            }

            TempData["Success"] = "ثبت نام شما موفقیت آمیز بود! لطفا قبل از ورود به سیستم، ایمیل خود را تایید کنید";
            return(RedirectToAction("Index", "Home"));
        }