private IEnumerable <CalculArenhInfo> GetCalculInfos(IEnumerable <LogEntry> logEntries) { CalculArenhInfo calculArenhInfo = null; foreach (var logEntry in logEntries) { if (IsDebutTraitementEntry(logEntry)) { var regexResult = _debutTraitementRegex.Match(logEntry.Message); calculArenhInfo = new CalculArenhInfo(int.Parse(regexResult.Groups[TraitementIdGroupName].Value), logEntry.GetThread()); } else if (calculArenhInfo != null && IsStartCalculEntry(logEntry)) { var regexResult = _startCalculRegex.Match(logEntry.Message); calculArenhInfo.SetInfos(regexResult.Groups[GroupIdGroupName].Value, regexResult.Groups[ProfilIdGroupName].Value, regexResult.Groups[UserGroupName].Value, logEntry.DateTime); } else if (calculArenhInfo != null && IsLancemenGenerationModeleLisseEntry(logEntry)) { calculArenhInfo.DebutCalculArenh = logEntry.DateTime; } else if (calculArenhInfo != null && IsAppelMethodEntry(logEntry)) { calculArenhInfo.FinCalculArenh = logEntry.DateTime; yield return(calculArenhInfo); calculArenhInfo = null; } } if (calculArenhInfo != null) { yield return(calculArenhInfo); } }
public string AnalyseLogs(IEnumerable <LogEntry> logEntries) => CalculArenhInfo.GetHeaderCsv() + "\r\n" + string.Join("\r\n", GetCalculInfos(logEntries).Where(i => i.IsValidPricingNome).Select(i => i.ToCsvLine()));