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")); }
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)); } } }