public static void CreateEvent(string calendarName, string id, string title, DateTime date, int status, long ownerId) { int calID = CalendarId(calendarName); if (SimilarEventExists(calID, title, date)) { // MLW TODO remove these SMap.GetLogger().Trace("An event already exists for " + calendarName + "; Name:" + title + "; ID=" + id + "; " + date.ToString()); return; } else { SMap.GetLogger().Trace("Adding a new event for " + calendarName + "; Name:" + title + "; ID=" + id + "; " + date.ToString()); } CalendarEvent.NameFromEventId(id); DnDSignUpEntities entities = new DnDSignUpEntities(); Event e = new Event(); e.EventId = id; e.Title = title; e.AllDay = true; e.CalendarId = calID; e.StartTime = date; e.EndTime = date; e.Status = status; e.OwnerId = ownerId; entities.Events.Add(e); entities.SaveChanges(); }
/// <summary> /// Get the single event corresponding to this calendar and event id. /// Throws InvalidOperationException if not exactly 1 such event exists. /// </summary> public static Event GetEvent(string calendarName, string eventID) { int calendarId = CalendarId(calendarName); DnDSignUpEntities entities = new DnDSignUpEntities(); DbSet<Event> events = entities.Events; Event existingEvent = events.Single(anevent => anevent.EventId == eventID && anevent.CalendarId == calendarId); return existingEvent; }
public static void DeleteEvent(string calendarName, string id) { int currentCalendarId = CalendarId(calendarName); DnDSignUpEntities entities = new DnDSignUpEntities(); Event e = entities.Events.Single(x => x.CalendarId == currentCalendarId && x.EventId == id); if (e != null) { entities.Events.Remove(e); entities.SaveChanges(); } }
// MLW TODO begin and end times so not all are acquired... public static List<CalendarEvent> GetEventsInCalendar(string calendarName) { var eventList = new List<CalendarEvent>(); int calendarId = CalendarId(calendarName); DnDSignUpEntities entities = new DnDSignUpEntities(); DbSet<RegisteredUser> regUsers = entities.RegisteredUsers; DbSet<Event> dbEvents = entities.Events; DbSet<PlayerGroup> groups = entities.PlayerGroups; var calEvents = from dbEvent in dbEvents join user in regUsers on dbEvent.OwnerId equals user.FacebookID where dbEvent.CalendarId == calendarId select new { newEvent = dbEvent, spouseId = user.SpouseOf, isPlayer = user.Player }; foreach (var calEvent in calEvents) { eventList.Add(new CalendarEvent(calEvent.newEvent, calEvent.spouseId/*, calEvent.isPlayer*/)); } return eventList; }
/// <summary> /// A similar event is defined by one that has the same title, calendar, day. /// </summary> private static bool SimilarEventExists(int calendarID, string title, DateTime start) { DnDSignUpEntities entities = new DnDSignUpEntities(); DbSet<Event> events = entities.Events; //MLW TODO make ownerID instead when first name is no longer sufficient. bool bExists = events.Any(anevent => anevent.Title == title && anevent.CalendarId == calendarID && anevent.StartTime == start); return bExists; }
internal static bool UserExists(long facebookId) { DnDSignUpEntities entities = new DnDSignUpEntities(); RegisteredUser user = entities.RegisteredUsers.SingleOrDefault(u => u.FacebookID == facebookId); if (user != null) return true; else return false; }
internal static void UpdateUsersFacebookInfo(FacebookInfo info) { DnDSignUpEntities entities = new DnDSignUpEntities(); FacebookInfo fi = entities.FacebookInfoes.SingleOrDefault(u => u.FacebookId == info.FacebookId); if (fi != null) entities.FacebookInfoes.Remove(fi); entities.FacebookInfoes.Add(info); entities.SaveChanges(); }
/// <summary> /// Get all users for the calendarID (corresponds to player group) for which Player==true /// </summary> internal static List<User> Players(int calendarID) { List<User> players = new List<User>(); DnDSignUpEntities entities = new DnDSignUpEntities(); //IEnumerable<RegisteredUser> users = entities.RegisteredUsers.Where(u => u.Player == true); DbSet<RegisteredUser> regUsers = entities.RegisteredUsers; DbSet<PlayerGroup> groups = entities.PlayerGroups; var dbUsers = from dbUser in regUsers join aGroup in groups on dbUser.FacebookID equals aGroup.RegisteredUser where dbUser.Player == true && aGroup.GroupID == calendarID select new { FacebookID = dbUser.FacebookID, SpouseOf = dbUser.SpouseOf }; foreach (var dbUser in dbUsers) { User user = new User(); user.Spouse = new Spouse(); user.FBID = dbUser.FacebookID; user.FbInfo = GetFacebookInfo(dbUser.FacebookID); user.IsPlayer = true; if (user.FbInfo != null) user.Name = user.FbInfo.First;//MLW TODO check for null user.Spouse.fbInfo = GetFacebookInfo(dbUser.SpouseOf); user.Spouse.FBID = dbUser.SpouseOf == null ? User.FBID_Def : (long)dbUser.SpouseOf; players.Add(user); } return players; }
internal static string HighestEventId(int calendarID) { string maxID = ""; DnDSignUpEntities entities = new DnDSignUpEntities(); if (entities.Events.Count(x => x.CalendarId == calendarID) > 0) { maxID = entities.Events.OrderByDescending(x => x.EventId).Where(x => x.CalendarId == calendarID).First().EventId; maxID = maxID.Substring(maxID.LastIndexOf("_") + 1); } else maxID = "1"; return maxID; }
internal static User GetUser(long facebookID) { DnDSignUpEntities entities = new DnDSignUpEntities(); RegisteredUser regUser = entities.RegisteredUsers.SingleOrDefault(x => x.FacebookID == facebookID); if (regUser == null) return null; User user = new User(); user.Spouse = new Spouse(); user.FBID = regUser.FacebookID; user.IsPlayer = regUser.Player; user.FbInfo = GetFacebookInfo(regUser.FacebookID); if (user.FbInfo != null) user.Name = user.FbInfo.First; //MLW TODO check for null user.Spouse.fbInfo = GetFacebookInfo(regUser.SpouseOf); user.Spouse.FBID = regUser.SpouseOf == null ? User.FBID_Def : (long)regUser.SpouseOf; return user; }
internal static FacebookInfo GetFacebookInfo(long? facebookID) { if (facebookID == null) return null; DnDSignUpEntities entities = new DnDSignUpEntities(); FacebookInfo fbInfo = entities.FacebookInfoes.SingleOrDefault(x => x.FacebookId == facebookID); return fbInfo; }
//public static Player GetUser(long facebookId) //{ // DnDSignUpEntities entities = new DnDSignUpEntities(); // return (Player)entities.FacebookUsers.SingleOrDefault(u => u.FacebookId == facebookId); //} //public static Player Get(string facebookName) //{ // DnDSignUpEntities entities = new DnDSignUpEntities(); // return (Player)entities.FacebookUsers.SingleOrDefault(u => u.Name == facebookName); //} /// <summary> /// Get the first name of the user for the corresponding Facebook ID /// </summary> internal static string FirstNameFromId(long facebookId) { DnDSignUpEntities entities = new DnDSignUpEntities(); FacebookInfo fi = entities.FacebookInfoes.SingleOrDefault(u => u.FacebookId == facebookId); if (fi == null) return ""; return fi.First; }
internal static string CalendarName(int calendarID) { DnDSignUpEntities entities = new DnDSignUpEntities(); string calendarName = entities.Calendars.Single(x => x.Id == calendarID).Name.Trim(); return calendarName; }
internal static int CalendarId(string calendarName) { int id; DnDSignUpEntities entities = new DnDSignUpEntities(); id = entities.Calendars.Single(x => x.Name == calendarName).Id; return id; }
public static void UpdateEvent(string calendarName, CalendarEvent oEvent) { int currentCalendarId = CalendarId(calendarName); DnDSignUpEntities entities = new DnDSignUpEntities(); // MLW TODO first name change Event e = entities.Events.Single(x => x.CalendarId == currentCalendarId && x.EventId == oEvent.ID); if (e != null) { e.EventId = oEvent.ID; e.Title = oEvent.Title; e.AllDay = oEvent.IsAllDay; e.CalendarId = currentCalendarId; e.StartTime = oEvent.StartDateTime; e.EndTime = oEvent.EndDateTime; e.Status = oEvent.Status; e.OwnerId = oEvent.OwnerId; DbEntityEntry entry = entities.Entry(e); entry.State = EntityState.Modified; entities.SaveChanges(); } }
public static IQueryable<SiteLog> GetLogAtLevels(string[] levels, int maxRows = 50, bool bDesc = false) { DnDSignUpEntities entities = new DnDSignUpEntities(); //var predicate = PredicateBuilder.False<SiteLog>(); //foreach (string lvl in levels) //{ // string temp = lvl; // predicate = predicate.Or(b => b.Level.Equals(temp)); //} //if (bDesc) // return entities.SiteLogs.AsExpandable().Where(predicate).OrderByDescending(b => b.TimeStamp).Take(maxRows); //else // return entities.SiteLogs.AsExpandable().Where(predicate).OrderBy(b => b.TimeStamp).Take(maxRows); if (bDesc) return entities.SiteLogs.OrderByDescending(b => b.TimeStamp).Take(maxRows); else return entities.SiteLogs.OrderBy(b => b.TimeStamp).Take(maxRows); }