public async Task <IHttpActionResult> SendInvite(SendInviteViewModel invite) { var user = await UserManager.FindByIdAsync(invite.FromUserId); var request = HttpContext.Current.Request; var household = invite.Household; string url = string.Format("{0}://{1}{2}", request.Url.Scheme, request.Url.Authority, "/#/joinRegister/" + household); var email = new EmailService(); var message = new IdentityMessage() { Body = "To Accept your invitation to join " + user.Name + "'s Household, Click <a href=\"" + url + "\">here</a> and register", Destination = invite.ToEmail, Subject = "JUSTBalance Banking software invitation" }; await email.SendAsync(message); return(Ok()); }
public async Task <ActionResult> SendInvitation([Bind(Include = "Email,HouseholdId")] SendInviteViewModel model) { if (ModelState.IsValid) { if (model.Email == null || model.HouseholdId == null) { // Don't reveal that the user does not exist or is not confirmed ViewBag.HouseholdId = model.HouseholdId; TempData["error"] = "Something went wrong with the invite. Please try again"; return(View(model)); } var user = db.Users.FirstOrDefault(u => u.UserName == model.Email); if (user != null && user.HouseholdId != null) { ViewBag.HouseholdId = model.HouseholdId; TempData["error"] = "This user cannot be added to your household."; return(View(model)); } var invite = new Invitation(model.Email, (int)model.HouseholdId); db.Invitations.Add(invite); db.SaveChanges(); //var user = db.Users.Find(User.Identity.GetUserId()); string code = invite.Code; var callbackUrl = Url.Action("InviteConfirmation", "Invitations", new { Email = model.Email, Code = code, InviteId = invite.Id }, protocol: Request.Url.Scheme); var message = new IdentityMessage(); message.Destination = model.Email; message.Subject = "MMS Invitation"; message.Body = "Please join my household in MMS by clicking <a href=\"" + callbackUrl + "\">here</a>"; var emailSvc = new EmailService(); await emailSvc.SendAsync(message); return(RedirectToAction("InviteSent", "Invitations")); } // If we got this far, something failed, redisplay form ViewBag.HouseholdId = model.HouseholdId; return(View(model)); }