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());
        }
Пример #2
0
        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));
        }