private void SyncTogglEntries(IEnumerable <TogglEntry> togglEntries, DateTime startSyncTime) { bool succeeded = true; bool changedIssue = false; IList <WorkEntry> workEntries = TranslateEntries(togglEntries); IEnumerable <IGrouping <string, WorkEntry> > groupedEntries = from e in workEntries where e.Updated > _lastSyncTime group e by e.IssueId into eg select eg; JiraClient jiraClient = Jira; foreach (IGrouping <string, WorkEntry> entriesForIssue in groupedEntries) { // TODO: Handle when issues aren't editable JiraWorklog worklog = jiraClient.GetIssueWorklog(entriesForIssue.Key); if (worklog != null) { Logger.DebugFormat("Syncronizing worklog for {0}", entriesForIssue.Key); SyncronizeWorklog(worklog, entriesForIssue); changedIssue = true; } else { AlertStatusChange("Failed to get Jira issue worklog", Logger.Warn); Logger.ErrorFormat("Unable to get worklog for {0}", entriesForIssue.Key); succeeded = false; } } if (succeeded) { if (changedIssue) { AlertStatusChange("Syncronized successfully", Logger.Info); } Logger.Debug("Successfully syncronized systems"); _lastSyncTime = startSyncTime; } }