Exemplo n.º 1
0
        public async Task <ActionResult> Invitation(string Email)
        {
            try
            {
                var email = new MailAddress(Email).ToString();

                foreach (var invite in db.Invitations.Where(i => i.EmailTo.ToLower() == email.ToLower()))
                {
                    if (invite.Accepted)
                    {
                        TempData["status"] = "accepted";
                        return(RedirectToAction("Index", "Households", null));
                    }

                    if (invite.Expires >= DateTime.Now)
                    {
                        TempData["status"] = "pending";
                        return(RedirectToAction("Index", "Households", null));
                    }
                }

                Invitation invitation = new Invitation
                {
                    Created     = DateTime.Now,
                    Expires     = DateTime.Now.AddDays(3),
                    EmailTo     = email,
                    Subject     = $"{User.Identity.FullName()} has invited you to join Budget Destoyer",
                    Body        = $"{User.Identity.FullName()} has invited you to join their house {HouseholdHelper.GetHouseholdName(User.Identity.GetUserId())} on Budget Destroyer",
                    HouseholdId = Convert.ToInt32(HouseholdHelper.GetUserHouseholdId(User.Identity.GetUserId())),
                    UniqueCode  = Guid.NewGuid(),
                    Accepted    = false
                };

                db.Invitations.Add(invitation);
                db.SaveChanges();

                string code        = invitation.UniqueCode.ToString();
                var    callbackUrl = Url.Action("RegisterInvitation", "Account", new { code = code }, protocol: Request.Url.Scheme);

                //var message = "<p>Email From: <bold>{0}</bold>({1})</p><p> Message:</p><p>{2}</p> ";
                var bodyButton = "<a href =\"" + callbackUrl + "\">here</a>";
                var sentEmail  = new MailMessage("*****@*****.**", email)
                {
                    Subject    = invitation.Subject,
                    Body       = $"{invitation.Body}. Please Join by clicking {bodyButton}",
                    IsBodyHtml = true
                };

                var svc = new PersonalEmail();
                await svc.SendAsync(sentEmail);

                TempData["status"] = "success";
                return(RedirectToAction("Index", "Households", null));
            }
            catch (FormatException ex)
            {
                TempData["status"] = "error";
                return(RedirectToAction("Index", "Households", null));
            }
        }