public List <DownloadDecision> Sync() { _logger.ProgressInfo("Starting RSS Sync"); var reports = _rssFetcherAndParser.Fetch().Concat(_pendingReleaseService.GetPending()).ToList(); var decisions = _downloadDecisionMaker.GetRssDecision(reports); var processed = _processDownloadDecisions.ProcessDecisions(decisions); _pendingReleaseService.RemoveGrabbed(processed.Grabbed); _pendingReleaseService.RemoveRejected(decisions.Where(d => d.Rejected).ToList()); var message = String.Format("RSS Sync Completed. Reports found: {0}, Reports grabbed: {1}", reports.Count, processed.Grabbed.Count); if (processed.Pending.Any()) { message += ", Reports pending: " + processed.Pending.Count; } _logger.ProgressInfo(message); return(processed.Grabbed.Concat(processed.Pending).ToList()); }