Exemplo n.º 1
0
        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;
            }
        }