/// <summary> /// Add or update contact /// </summary> public static int AddOrUpdateContact(BaseContactItemModel contactToAdd) { if (contactToAdd == null) { throw new ArgumentNullException(); } using (var db = new EventManagerDBContext()) { if (contactToAdd.ID < 0) { var newContactModel = new Contact { EmailAddress = contactToAdd.EmailAddress, EmailAddress2 = contactToAdd.EmailAddress2, FirstName = contactToAdd.FirstName, LastName = contactToAdd.LastName, PhoneNumber = contactToAdd.PhoneNumber, PhoneNumber2 = contactToAdd.PhoneNumber2, ImagePath = contactToAdd.ImagePath }; db.Contacts.Add(newContactModel); db.SaveChanges(); // SaveDatabase(); contactToAdd.ID = newContactModel.ContactID; contactToAdd.AppViewModel.ResetNewContact(); return(newContactModel.ContactID); } else { var query = from contact in db.Contacts where contact.ContactID == contactToAdd.ID select contact; var returnedContact = query.First(); if (returnedContact == null) { throw new IndexOutOfRangeException($"Event index {contactToAdd.ID} not found"); } returnedContact.EmailAddress = contactToAdd.EmailAddress; returnedContact.EmailAddress2 = contactToAdd.EmailAddress2; returnedContact.FirstName = contactToAdd.FirstName; returnedContact.LastName = contactToAdd.LastName; returnedContact.PhoneNumber = contactToAdd.PhoneNumber; returnedContact.PhoneNumber2 = contactToAdd.PhoneNumber2; returnedContact.ImagePath = contactToAdd.ImagePath; db.Contacts.Update(returnedContact); db.SaveChanges(); contactToAdd.AppViewModel.ResetNewContact(); // SaveDatabase(); return(returnedContact.ContactID); } } }
/// <summary> /// Add or update contact /// </summary> public static int SaveNewEvent(NewEventItemModel theEvent) { using (var db = new EventManagerDBContext()) { // We are creating a new event entry with default values if (AppLevelModel.ViewModel.NewEventId < 0) { var newEventModel = new Meeting { EventTitle = theEvent.EventTitle, Venue = theEvent.Venue, Description = theEvent.Description, EventStart = theEvent.EventBegin, EventEnd = theEvent.EventEnd, ImagePath = theEvent.ImagePath, VenueContactEmail = theEvent.VenueContactEmail, VenueContactPhone = theEvent.VenueContactPhone }; db.Events.Add(newEventModel); db.SaveChanges(); theEvent.ID = newEventModel.MeetingID; AppLevelModel.ViewModel.NewEventId = newEventModel.MeetingID; return(newEventModel.MeetingID); } else { // We are saving new event. Event no longer new. var query = from event1 in db.Events where event1.MeetingID == AppLevelModel.ViewModel.NewEventId select event1; var returnedEvent = query.FirstOrDefault(); returnedEvent.EventTitle = theEvent.EventTitle; returnedEvent.Venue = theEvent.Venue; returnedEvent.Description = theEvent.Description; returnedEvent.EventStart = theEvent.EventBegin; returnedEvent.EventEnd = theEvent.EventEnd; returnedEvent.ImagePath = theEvent.ImagePath; returnedEvent.VenueContactEmail = theEvent.VenueContactEmail; returnedEvent.VenueContactPhone = theEvent.VenueContactPhone; db.Events.Update(returnedEvent); db.SaveChanges(); theEvent.ID = returnedEvent.MeetingID; AppLevelModel.ViewModel.NewEventId = -1; return(returnedEvent.MeetingID); } } }
private static void AddRandomGuestList(EventManagerDBContext db, Meeting newEvent) { Random rand = new Random(); // Get all contacts var contactList = new List <Contact>(); contactList.AddRange(from c in db.Contacts select c); // Randomly select contacts for test event int noOfGuests = rand.Next(0, contactList.Count / 2); for (int i = 0; i < noOfGuests; i++) { int guestNo = rand.Next(0, contactList.Count - 1); var contact = contactList[guestNo]; var guest = new MeetingGuest { Contact = contact, GuestStatus = GustArrivalStatus.Unknown, Meeting = newEvent, }; db.EventGuests.Add(guest); contactList.RemoveAt(guestNo); } db.SaveChanges(); }
/// <summary> /// Delete event /// </summary> public static void DeleteEvent(BaseEventItemModel eventToDelete) { if (eventToDelete == null) { throw new ArgumentNullException(); } using (var db = new EventManagerDBContext()) { var query = from event1 in db.Events where event1.MeetingID == eventToDelete.ID select event1; var result = query.FirstOrDefault(); if (result != null) { db.Events.Remove(result); // Delete attendance var queryGuest = from event1 in db.EventGuests where event1.MeetingID == eventToDelete.ID select event1; db.EventGuests.RemoveRange(queryGuest); db.SaveChanges(); } } }
public static void UpdateAttendance(EventGuest updatedGuest) { if (updatedGuest == null) { throw new ArgumentNullException(nameof(updatedGuest)); } using (var db = new EventManagerDBContext()) { var query = from guest in db.EventGuests where guest.MeetingGuestID == updatedGuest.ID select guest; var returnedGuest = query.First(); if (returnedGuest == null) { throw new IndexOutOfRangeException($"Event index {updatedGuest.ID} not found"); } returnedGuest.GuestStatus = updatedGuest.GuestStatus; db.EventGuests.Update(returnedGuest); db.SaveChanges(); // SaveDatabase(); } }
public static EventGuest AddGuestToEvent(int eventId, ContactItemModel newGuest) { if (eventId < 0) { throw new ArgumentException($"{nameof(eventId)}: {eventId}"); } else { using (var db = new EventManagerDBContext()) { // Look for event guest if it exists var eventQuery = from eventGuest in db.EventGuests where eventGuest.ContactID == newGuest.ID && eventGuest.MeetingID == eventId select eventGuest; var result = eventQuery.FirstOrDefault(); if (result == null) { var meetingGuest = new MeetingGuest { ContactID = newGuest.ID, MeetingID = eventId, GuestStatus = GustArrivalStatus.Unknown }; db.EventGuests.Add(meetingGuest); db.SaveChanges(); var guest = new EventGuest { ContactID = newGuest.ID, Guest = newGuest, GuestStatus = GustArrivalStatus.Unknown, ID = meetingGuest.MeetingGuestID }; return(guest); } else { return(new EventGuest { ContactID = result.ContactID, Guest = newGuest, ID = result.ContactID, GuestStatus = result.GuestStatus }); } } } }
internal static void DeleteEventAttendance(int eventId) { using (var db = new EventManagerDBContext()) { var query = from eventGuest in db.EventGuests where eventGuest.MeetingID == eventId select eventGuest; foreach (var guest in query) { db.EventGuests.Remove(guest); } db.SaveChanges(); } }
public static void RemoveGuestFromEvent(int eventGuestId) { using (var db = new EventManagerDBContext()) { var query = from eventGuest in db.EventGuests where eventGuest.MeetingGuestID == eventGuestId select eventGuest; var result = query.FirstOrDefault(); if (result != null) { db.EventGuests.Remove(result); db.SaveChanges(); } } }
/// <summary> /// Add or update contact /// </summary> public static int UpdateExistingEvent(EventItemModel eventToUpdate) { if (eventToUpdate == null) { throw new ArgumentNullException(); } if (eventToUpdate.ID < 0) { throw new ArgumentException($"Use {nameof(RetriveNewEvent)} to get new event"); } using (var db = new EventManagerDBContext()) { // Get new ID var query = from event1 in db.Events where event1.MeetingID == eventToUpdate.ID select event1; var returnedEvent = query.FirstOrDefault(); if (returnedEvent == null) { throw new IndexOutOfRangeException($"Event index {eventToUpdate.ID} not found"); } returnedEvent.EventTitle = eventToUpdate.EventTitle; returnedEvent.Venue = eventToUpdate.Venue; returnedEvent.Description = eventToUpdate.Description; returnedEvent.EventStart = eventToUpdate.EventBegin; returnedEvent.EventEnd = eventToUpdate.EventEnd; returnedEvent.ImagePath = eventToUpdate.ImagePath; returnedEvent.VenueContactEmail = eventToUpdate.VenueContactEmail; returnedEvent.VenueContactPhone = eventToUpdate.VenueContactPhone; db.Events.Update(returnedEvent); db.SaveChanges(); return(returnedEvent.MeetingID); } }
/// <summary> /// Make sure database is created /// </summary> public static async void EnsureDbCreated(bool generateRandomData) { try { Random rand = new Random(); using (var db = new EventManagerDBContext()) { // Add test data if testing if (await db.Database.EnsureCreatedAsync() && generateRandomData) { // Generate test contacts var jsonObject = JsonObject.Parse(await LoadData()); // Create events foreach (JsonValue groupValue in jsonObject.GetNamedArray("ContactGroups", null)) { // Create contact group var groupObject = groupValue.GetObject(); // Add contacts foreach (JsonValue itemValue in groupObject.GetNamedArray("Items", null)) { var itemObject = itemValue.GetObject(); // Get image path var imageString = itemObject.GetNamedString("ImagePath", string.Empty); if (string.IsNullOrWhiteSpace(imageString)) { imageString = DefaultContactImagePath; } db.Contacts.Add(new Contact { EmailAddress = itemObject.GetNamedString("EmailAddress", string.Empty), EmailAddress2 = itemObject.GetNamedString("EmailAddress2", string.Empty), FirstName = itemObject.GetNamedString("FirstName", string.Empty), LastName = itemObject.GetNamedString("LastName", string.Empty), PhoneNumber = itemObject.GetNamedString("PhoneNumber", string.Empty), PhoneNumber2 = itemObject.GetNamedString("PhoneNumber2", string.Empty), ImagePath = itemObject.GetNamedString("ImagePath", DefaultContactImagePath) }); } } db.SaveChanges(); // foreach (JsonValue groupValue in jsonObject.GetNamedArray("EventsGroups", null)) { // Create contact group var groupObject = groupValue.GetObject(); var monthOfset = int.Parse(groupObject.GetNamedString("MonthOfset")); // Add contacts foreach (JsonValue itemValue in groupObject.GetNamedArray("Items", null)) { var itemObject = itemValue.GetObject(); // Get image path var imageString = itemObject.GetNamedString("ImagePath", string.Empty); if (string.IsNullOrWhiteSpace(imageString)) { imageString = DefaultContactImagePath; } string startDate = (DateTime.Now.Month + monthOfset).ToString() + "-" + itemObject.GetNamedString("EventBeginDay", string.Empty) + "-" + (DateTime.Now.Year).ToString(); string endDate = (DateTime.Now.Month + monthOfset).ToString() + "-" + itemObject.GetNamedString("EventEndDay", string.Empty) + "-" + (DateTime.Now.Year).ToString(); var newEvent = new Meeting { EventTitle = itemObject.GetNamedString("EventTitle", string.Empty), Venue = itemObject.GetNamedString("Venue", string.Empty), Description = itemObject.GetNamedString("Description", string.Empty), EventStart = DateTime.Parse(startDate), EventEnd = DateTime.Parse(endDate), ImagePath = itemObject.GetNamedString("ImagePath", DefaultEventImagePath), VenueContactEmail = itemObject.GetNamedString("VenueContactEmail", string.Empty), VenueContactPhone = itemObject.GetNamedString("VenueContactPhone", string.Empty), }; db.Events.Add(newEvent); AddRandomGuestList(db, newEvent); } } db.SaveChanges(); } } } catch { // System.Diagnostics.Tracing. } }
/// <summary> /// Retrieve new event from database or create one if doesn't exist. /// </summary> public static void RetriveNewEvent(NewEventItemModel newEventContainer, bool retrieveTempEvent = false) { using (var db = new EventManagerDBContext()) { if (AppLevelModel.ViewModel.NewEventId < 0) { var newEvent = new Meeting { EventTitle = newEventContainer.EventTitle, Venue = newEventContainer.Venue, Description = newEventContainer.Description, EventStart = newEventContainer.EventBegin, EventEnd = newEventContainer.EventEnd, ImagePath = newEventContainer.ImagePath, VenueContactEmail = newEventContainer.VenueContactEmail, VenueContactPhone = newEventContainer.VenueContactPhone }; db.Events.Add(newEvent); db.SaveChanges(); newEventContainer.ID = newEvent.MeetingID; AppLevelModel.ViewModel.NewEventId = newEvent.MeetingID; } else { var query = from event1 in db.Events where event1.MeetingID == AppLevelModel.ViewModel.NewEventId select event1; var result = query.FirstOrDefault(); if (result == null) { // No events found. Shouldn't occur. AppLevelModel.ViewModel.NewEventId = -1; RetriveNewEvent(newEventContainer); result = query.FirstOrDefault(); } newEventContainer.ID = result.MeetingID; if (retrieveTempEvent) { newEventContainer.EventTitle = result.EventTitle; newEventContainer.Venue = result.Venue; newEventContainer.Description = result.Description; newEventContainer.EventBegin = result.EventStart; newEventContainer.EventEnd = result.EventEnd; newEventContainer.ImagePath = result.ImagePath; newEventContainer.VenueContactEmail = result.VenueContactEmail; newEventContainer.VenueContactPhone = result.VenueContactPhone; } else { // Delete guest list var guestQuery = from eventGuest in db.EventGuests where eventGuest.MeetingID == result.MeetingID select eventGuest; foreach (var guest in guestQuery) { db.EventGuests.Remove(guest); } db.SaveChanges(); } } } }