public Task <TUser> FindByEmailAsync(string email) { TUser us = null; if (user == null) { us = (TUser)_cosmosIdentityManage.FindUserByEmail(email); user = us; if (user == null) { return(Task.FromResult <TUser>(us)); } return(Task.FromResult <TUser>(user)); } else if (user.Email != email) { user = (TUser)_cosmosIdentityManage.FindUserByEmail(email); } return(Task.FromResult <TUser>(user)); }
public async Task <ActionResult> CreateAccount(Models.Access.CreateAccountViewModel m) { try { if (ModelState.IsValid) { if (m.AgreeTerms) { int rolIdSelected = Convert.ToInt32(_cosmosIdentityManage.GetRoles().SingleOrDefault(r => r.Name == m.Role).Id); var user = new ApplicationUser { Name = m.Name, UserName = m.Email, Email = m.Email, Hometown = string.Empty, TokenAddress = string.Empty, WalletAddress = string.Empty, IsPremium = false, LastRolId = rolIdSelected }; var result = await UserManager.CreateAsync(user, m.Password); if (result.Succeeded) { //var userRegister = UserManager.FindByEmail(user.Email); var userRegister = _cosmosIdentityManage.FindUserByEmail(user.Email); UserManager.AddToRole(userRegister.Id, m.Role); var code = await UserManager.GenerateEmailConfirmationTokenAsync(userRegister.Id); var callbackUrl = Url.Action( "AccountVerified", "Access", new { userId = userRegister.Id, code = code }, protocol: Request.Url.Scheme); string mailContent = String.Format(new MailManager().GetMailContent(EMailType.createAccount), user.UserName, callbackUrl); //Enqueue // Creamos el objeto de notificacion //Notification notification = new Notification(); //NotificationManager notificationManager = new NotificationManager(); // Enviamos la notificacion para la validacion //notification.IdUser = new Guid(user.Id); //notification.MailContent = mailContent; // Encolamos la notificacion para que el webjob la procese //notificationManager.EnqueueNewAccessUser(notification); //Enviamos el mail MailManager emailManager = new MailManager(); MailMessage message = new MailMessage(); string messageContent = String.Format(new MailManager().GetMailContent(EMailType.createAccount), user.UserName, callbackUrl); //Config message.Body = messageContent; message.Destination = userRegister.Email; message.Subject = "Thanks for signing up."; await emailManager.SendAsync(message); _cosmosIdentityManage.SetSecondaryRoles(userRegister.Id); return(View("CheckEmailActivation")); } AddErrors(result); } else { ModelState.AddModelError("", "You must accept terms and policy"); } } } catch (Exception e) { var messageException = telemetria.MakeMessageException(e, System.Reflection.MethodBase.GetCurrentMethod().Name); telemetria.Critical(messageException); } return(View(m)); }