public async Task DoWork() // Add new gmail account and sync with db { var service = new GoogleCalendarService(); var range = (int)AppDomain.CurrentDomain.GetData("EventViewableYearRange"); var timeMax = new DateTime(DateTime.Today.Year + range - 1, 12, 31, 23, 59, 59); var accounts = _dbs.GetAvailableAccounts(); try { var events = await service.GetEvents(timeMax); if (events != null && !events.Items.IsNullOrEmpty()) { var email = events.Items[0].Creator.Email; var foundAcc = accounts.Find(a => a.Email == email); List <GXEvent> newEvents = null; int targetAccountId = 0; // Email exists within db, add new events from last sync timestamp if (foundAcc != null) { targetAccountId = foundAcc.AccId; var fromLastSync = events.Items.Where(e => e.Updated >= foundAcc.LastSync); newEvents = fromLastSync.ToGXEvents(targetAccountId); } // New email else { targetAccountId = accounts.Max(a => a.AccId) + 1; await _dbs.AddAccount(email); newEvents = events.Items.ToGXEvents(targetAccountId); } // Add new events to db await _dbs.AddEvents(newEvents, targetAccountId); await _dbs.UpdateLastSync(targetAccountId); } } catch (Newtonsoft.Json.JsonException) { throw new FormatException("Incorrect oauth token file format. Restore or delete it and try again"); } catch (DataException) { throw new DataException("Failed to modify database. Verify the connection and try again"); } finally { if (Events.Count < viewableEventsNum) { RefreshEvents(viewableEventsNum); } } }
public void EventDb_LocalAccountInitialized() { var accounts = _service.GetAvailableAccounts(); if (accounts.Count < 1 || accounts[0].Email != "_local") { Assert.Fail("Failed to initialized db with local account"); } }
public void InitModel() { Event = new GXEvent { AID = 1, StartDate = DateTime.Now, EndDate = DateTime.Now.AddDays(1), ColorId = 1 }; _originalEvent = new GXEvent(Event); LoggedIn = _dbs.GetAvailableAccounts().Count > 1; SaveChangeOnline = false; ActionName = "Create event"; Account = "Local"; Status = new ModifyEventStatusMsg { Success = false, Deleted = false, Error = null }; EventModified = false; }