public async Task <ActionResult> Create([Bind(Include = "Username,Email,Organization")] InviteViewModel invite) { var Organizations = await db.Organizations.ToListAsync(); if (ModelState.IsValid) { var Organization = Organizations.Where(x => x.Key == invite.Organization).FirstOrDefault(); if (Organization != null) { var Name = invite.Username + "@" + Organization.Domain; if (await CheckUsername(Name)) { var Auth = Extensions.GetUniqueKey(7) + "-" + Extensions.GetUniqueKey(24); db.Invites.Add(new Invite() { Email = invite.Email, Password = Auth, Username = Name, Organization = Organization, Role = User.IsInRole(Roles.AppAdmin) ? Roles.SysAdmin : Roles.AppUser }); await db.SaveChangesAsync(); Hangfire.BackgroundJob.Enqueue(() => PostalMail.SendUserInvite(invite.Email, invite.Username, "Organization Administrator", Organization.Name, Request.Url.GetLeftPart(UriPartial.Authority) + "/Invites/Verify/" + Auth)); TempData.SetSuccess("Invite has been successfully sent to " + invite.Email); return(RedirectToAction("Index")); } else { ModelState.AddModelError("Username", "Specified user name is already taken."); } } else { ModelState.AddModelError("Organization", "Selected organization is not found."); } } invite.Organizations = Organizations.ToSelectList("Name", "- Organizations -", SelectedField: invite.Organization); SetInfo(); return(View(invite)); }
public async Task <ActionResult> Resend(string id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } var Invite = await db.Invites.Include("Organization").SingleAsync(x => x.Key == id); if (Invite == null) { return(HttpNotFound()); } Hangfire.BackgroundJob.Enqueue(() => PostalMail.SendUserInvite(Invite.Email, Invite.Username, "Organization Administrator", Invite.Organization.Name, Request.Url.GetLeftPart(UriPartial.Authority) + "/Invites/Verify/" + Invite.Password)); TempData.SetSuccess("Invite has been successfully resent to " + Invite.Email); SetInfo(); return(View("Details", Invite)); }
public async Task <ActionResult> Init([Bind(Include = "StepCode, ResendActivity, Email")] GetEmailConfirmViewModel GetEmail) { try { if (ModelState.IsValid) { var Step = await db.InitStep.FindAsync(GetEmail.StepCode); if (Step != null) { var ConfirmationCode = Extensions.GetUniqueKey(7, Numeric: true); if (GetEmail.ResendActivity) { var AdminBase = await db.AdminBase.FindAsync(GetEmail.StepCode); AdminBase.Email = GetEmail.Email; AdminBase.ConfirmationCode = ConfirmationCode; db.Entry(AdminBase).State = EntityState.Modified; TempData.SetSuccess("New confirmation code has been sent."); } else { Step.Auth++; var AdminBase = new AdminRegistrationBase() { Email = GetEmail.Email, ConfirmationCode = ConfirmationCode, ResendActivity = true, Step = Step, Role = Roles.AppAdmin }; db.Entry(AdminBase.Step).State = EntityState.Modified; db.AdminBase.Add(AdminBase); } await db.SaveChangesAsync(); BackgroundJob.Enqueue(() => PostalMail.SendAdminConfrimationCode(GetEmail.Email, ConfirmationCode)); return(RedirectToAction("Init")); } else { throw "Step Initialization failed in sequence. Contact your vendor for more information.".asException(); } } else { throw "Submitted form is not valid. Please try again.".asException(); } } catch (Exception ex) { TempData.SetError(ex.Message); } SetInfo(); return(View(new InitViewModel() { GetEmail = GetEmail, })); }