public CurrentPlotStatus GetCurrentPlotStatus() { if (this.IsComplete) { return(null); } CurrentPlotStatus cps = new CurrentPlotStatus(); if (Phases.Count == 0) { cps.CurrentPhase = "Starting"; return(cps); } var currentPhase = Phases.OrderByDescending(p => p.Number).FirstOrDefault(); cps.CurrentPhase = $"Phase {currentPhase.Number}"; cps.StartTime = currentPhase.StartDate; cps.PhaseNumber = currentPhase.Number; if (!string.IsNullOrWhiteSpace(FinalFileSize)) { cps.CurrentPhase = CopyingStatusText; cps.StartTime = currentPhase.EndDate; cps.PhaseNumber = null; } if (Phases.Any()) { int totalPhaseLines = Phases.Sum(p => p.LogLineCount); cps.PercentComplete = (totalPhaseLines + 0.0) / (788.0 + 30 + 1636 + 143); } return(cps); }