Example #1
0
        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);
                }
            }
        }
Example #2
0
        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");
            }
        }
Example #3
0
 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;
 }