public virtual async Task<ActionResult> Index() { var user = await _queries.Execute(new UserViewBy(User.Identity.GetUserId<int>())); var emails = await _queries.Execute(new EmailAddressViewsBy(User.Identity.GetUserId<int>()) { OrderBy = new Dictionary<Expression<Func<EmailAddressView, object>>, OrderByDirection> { { x => x.IsPrimary, OrderByDirection.Descending }, { x => x.IsVerified, OrderByDirection.Descending }, }, }); var model = new EmailAddressSettingsModel { UserView = user, EmailAddresses = emails.ToArray(), SendVerificationEmail = new SendVerificationEmail { Purpose = EmailVerificationPurpose.AddEmail, SendFromUrl = Url.AbsoluteAction(await MVC.UserEmails.Index()), VerifyUrlFormat = Url.AbsoluteActionFormat(await MVC.UserEmailConfirm.Index("{0}", "{1}")), }, }; ViewBag.ActionUrl = Url.Action(MVC.UserEmails.Post()); ViewBag.Purpose = model.SendVerificationEmail.Purpose; return View(MVC.Security.Views.User.EmailAddresses, model); }
public virtual async Task<ActionResult> Post(SendVerificationEmail command) { if (command == null || command.Purpose == EmailVerificationPurpose.Invalid) { return View(MVC.Errors.Views.BadRequest); } if (!ModelState.IsValid) { var user = await _queries.Execute(new UserViewBy(User.Identity.GetUserId<int>())); var emails = await _queries.Execute(new EmailAddressViewsBy(User.Identity.GetUserId<int>()) { OrderBy = new Dictionary<Expression<Func<EmailAddressView, object>>, OrderByDirection> { { x => x.IsPrimary, OrderByDirection.Descending }, { x => x.IsVerified, OrderByDirection.Descending }, }, }); var model = new EmailAddressSettingsModel { UserView = user, EmailAddresses = emails.ToArray(), SendVerificationEmail = command, }; TempData.Alerts("**Could not send verification email due to error(s) below.**", AlertFlavor.Danger); ViewBag.ActionUrl = Url.Action(MVC.UserEmails.Post()); return View(MVC.Security.Views.User.EmailAddresses, model); } command.VerifyUrlFormat = Url.AbsoluteActionFormat(await MVC.UserEmailConfirm.Index("{0}", "{1}")); command.SendFromUrl = Url.AbsoluteAction(await MVC.UserEmails.Index()); await _commands.Execute(command); Session.VerifyEmailTickets(command.CreatedTicket); return RedirectToAction(await MVC.UserEmailVerifySecret.Index(command.CreatedTicket)); }