Example #1
0
        public async Task <ActionResult> InviteUser(string inviteEmail)
        {
            if (!string.IsNullOrWhiteSpace(inviteEmail))
            {
                int?   householdId             = User.Identity.GetHouseholdId();
                string userId                  = User.Identity.GetUserId();
                var    user                    = db.Users.Find(userId);
                HouseholdInvitation invitation = new HouseholdInvitation();
                invitation.InviteCode  = Guid.NewGuid();
                invitation.Email       = inviteEmail;
                invitation.HouseholdId = householdId;
                db.HouseholdInvitations.Add(invitation);
                db.SaveChanges();

                var svc = new EmailService();
                var msg = new IdentityMessage();
                msg.Destination = inviteEmail;
                msg.Subject     = user.FullName + " has invited you to join JD Budget Planner";
                msg.Body        = user.FullName + " has invited you to join their household on JD Budget Planner! JD Budget Planner is an application for easily managing your transactions and financial budgeting. To join " + user.FullName + "'s household, visit jantoine.budgeter.azurewebsites.net and enter the following invitation code: " + invitation.InviteCode;
                await svc.SendAsync(msg);

                TempData["Message"] = "Your invitation has been sent!";
            }

            return(RedirectToAction("Index"));
        }
        public ActionResult DeleteConfirmed(int id)
        {
            HouseholdInvitation householdInvitation = db.HouseholdInvitations.Find(id);

            db.HouseholdInvitations.Remove(householdInvitation);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
 public ActionResult Edit([Bind(Include = "Id,InviteCode,HouseholdId")] HouseholdInvitation householdInvitation)
 {
     if (ModelState.IsValid)
     {
         db.Entry(householdInvitation).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(householdInvitation));
 }
        public ActionResult Create([Bind(Include = "Id,InviteCode,HouseholdId")] HouseholdInvitation householdInvitation)
        {
            if (ModelState.IsValid)
            {
                db.HouseholdInvitations.Add(householdInvitation);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }



            return(View(householdInvitation));
        }
        // GET: HouseholdInvitations/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            HouseholdInvitation householdInvitation = db.HouseholdInvitations.Find(id);

            if (householdInvitation == null)
            {
                return(HttpNotFound());
            }
            return(View(householdInvitation));
        }
Example #6
0
        public async Task <object> SendHouseholdInvitation(ApplicationUser userToInvite)
        {
            try
            {
                //Get logged user
                var user = await i.SelectUserAsync(User.Identity.GetUserId <int>());

                //First make sure that the user is not inviting himself or a non existent user
                var toUser = await i.FindUserByUserName(userToInvite.UserName);

                if (toUser != null)
                {
                    if (toUser.Id == user.Id)
                    {
                        return(new { Succeed = false, Message = "You cannot send an invitation to yourself" });
                    }

                    //Create a Household If User has none
                    if (user.Household == null || user.Household == 0)
                    {
                        var household = new { Id = 0, Name = user.Name + " Household" };
                        var id        = await i.InsertHousehold(household);

                        user.Household = id;
                        await i.UpdateUser(user);
                    }

                    //Make Sure that the user does not already belong tho the household
                    if (user.Household == toUser.Household)
                    {
                        return(new { Succeed = false, Message = "Email/User '" + userToInvite.UserName + "' already belongs to this household!" });
                    }

                    //Make sure that the user does not already has an invitation to that same household
                    var invis = await i.GetInvitationsBy_ForHousehold(user.Household);

                    if (invis.Count() > 0)
                    {
                        return(new { Succeed = false, Message = "Email/User '" + userToInvite.UserName + "' was already invited to this household!\nThe system is waiting for the user's response to the invitation." });
                    }

                    HouseholdInvitation invitation = new HouseholdInvitation();
                    invitation.FromUser_Name     = user.Name;
                    invitation.ForHouseholdId    = user.Household;
                    invitation.FromUserId        = user.Id;
                    invitation.FromUser_UserName = user.UserName;
                    invitation.ToUserId          = toUser.Id;
                    invitation.ToUser_UserName   = toUser.UserName;

                    var invitationId = await i.InsertInvitation(invitation);

                    if (invitationId == 0)
                    {
                        return(new { Succeed = false, Message = "The invitation could not be created." });
                    }

                    return(new { Succeed = true, Message = "Email/User '" + toUser.UserName + "' has been invited you household." });
                }
                else
                {
                    return(new { Succeed = false, Message = "The invitation could not be sent. \nThe user does not exist!" });
                }
            }
            catch (Exception e)
            {
                throw new HttpResponseException(HttpStatusCode.BadRequest);
            }
        }