Ejemplo n.º 1
0
        public IActionResult SendRemindersFromHome(int eventId)
        {
            string userId = User.FindFirst(ClaimTypes.NameIdentifier).Value;

            UserInfo userInfo = _context.UserInfo.Where(x => x.UserId == userId).First();

            EventTable foundEvent = _context.EventTable.Where(x => x.EventId == eventId).First();

            Groups group = _context.Groups.Where(x => x.GroupId == foundEvent.GroupId).First();

            List <GroupMembers> members = _context.GroupMembers.Where(x => x.Groups == group.GroupId).ToList();

            TimeZoneInfo myTimeZone      = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
            DateTime     currentDateTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, myTimeZone);

            TimeSpan timeRemainingForEvent = foundEvent.DateAndTime.Subtract(currentDateTime);
            string   timeLeft;

            if (timeRemainingForEvent.TotalDays < 1)
            {
                if (timeRemainingForEvent.Hours > 1)
                {
                    timeLeft = timeRemainingForEvent.Hours.ToString();
                    timeLeft = timeLeft + " hours";
                }
                else
                {
                    timeLeft = timeRemainingForEvent.Hours.ToString();
                    timeLeft = timeLeft + " hour";
                }
            }
            else
            {
                if (timeRemainingForEvent.Days > 1)
                {
                    timeLeft = timeRemainingForEvent.Days.ToString();
                    timeLeft = timeLeft + " days";
                }
                else
                {
                    timeLeft = timeRemainingForEvent.Days.ToString();
                    timeLeft = timeLeft + " day";
                }
            }


            foreach (var m in members)
            {
                SmsController.SendTextInHome(TwilioAccountSid, TwilioAuthToken, $"Hey, {m.MemberName}! Just a reminder from {userInfo.FirstName} You have {timeLeft} until {foundEvent.EventName}. Are you still coming? You can still RSVP by texting back with 'yes {foundEvent.EventId}' or 'no {foundEvent.EventId}'", m.PhoneNumber);
            }


            return(RedirectToAction("Events"));
        }
Ejemplo n.º 2
0
        public IActionResult AddEventToDatabase(EventTable newEvent, DateTime eventDate, TimeSpan eventTime, int groupId)
        {
            newEvent.UserId = User.FindFirst(ClaimTypes.NameIdentifier).Value;
            bool badDate = false;

            List <EventTable> eventList = _context.EventTable.Where(x => x.UserId == newEvent.UserId).ToList();

            string        id        = User.FindFirst(ClaimTypes.NameIdentifier).Value;
            List <Groups> groupList = _context.Groups.Where(x => x.UserId == id).ToList();
            UserInfo      userInfo  = _context.UserInfo.Where(x => x.UserId == id).First();

            try
            {
                if (ModelState.IsValid)
                {
                    Groups selectedGroup = _context.Groups.Where(x => x.GroupId == groupId).FirstOrDefault();
                    newEvent.GroupId     = selectedGroup.GroupId;
                    newEvent.GroupName   = selectedGroup.GroupName;
                    newEvent.DateAndTime = eventDate + eventTime;

                    TimeZoneInfo myTimeZone      = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
                    DateTime     currentDateTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, myTimeZone);

                    // Date and Time check
                    if (newEvent.DateAndTime.CompareTo(currentDateTime) < 1)
                    {
                        badDate = true;
                        throw new Exception();
                    }

                    _context.EventTable.Add(newEvent);
                    _context.SaveChanges();

                    List <GroupMembers> members = _context.GroupMembers.Where(x => x.Groups == newEvent.GroupId).ToList();

                    foreach (var m in members)
                    {
                        SmsController.SendTextInHome(TwilioAccountSid, TwilioAuthToken, $"Hi, {m.MemberName}! {userInfo.FirstName} just invited you to {newEvent.EventName} on {newEvent.DateAndTime.ToShortDateString()}  at {newEvent.Venue}, {newEvent.VenueLocation}. Respond with 'yes {newEvent.EventId}' if you accept, and 'no {newEvent.EventId}' if you decline.", m.PhoneNumber);
                    }

                    return(RedirectToAction("Events"));
                }
                else
                {
                    ViewBag.ErrorMsg = "Invalid Data. Please try again.";
                    return(View(groupList));
                }
            }
            catch
            {
                if (badDate)
                {
                    ViewBag.ErrorMsg = "Date and time entered are before the current date and time. Please try again.";
                    return(View(groupList));
                }
                else
                {
                    ViewBag.ErrorMsg = "Unknown error";
                    return(View(groupList));
                }
            }
        }