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")); }