private static int PrintClientRequestIdsByIssuesBetweenMonths(StreamWriter file, Issue issue, DateTime start, DateTime end, bool print = true) { var ClientRequestIdInfosInMonth = ClientRequestIdHelper.clientRequestInfoList.Where(x => x.PreciseTimeStamp >= start && x.PreciseTimeStamp < end); if (ClientRequestIdInfosInMonth == null || ClientRequestIdInfosInMonth.ToList().Count < 1) { return(0); } int count = 0; var affectedClientRequestIdInfos = ClientRequestIdHelper.GetAffectedClientRequestInfos(issue, ClientRequestIdInfosInMonth.ToList()); count = affectedClientRequestIdInfos == null ? 0 : affectedClientRequestIdInfos.Count; if (print && affectedClientRequestIdInfos != null && affectedClientRequestIdInfos.Count > 0) { file.WriteLine("ClientRequestIDs between Date: '" + start.ToString("dddd, MMM dd yyyy") + "' and '" + end.ToString("dddd, MMM dd yyyy") + "' , Count: " + affectedClientRequestIdInfos.ToList().Count); file.WriteLine(); foreach (var clientRequestInfo in affectedClientRequestIdInfos) { string clientRequestInfoStatement = string.IsNullOrEmpty(clientRequestInfo.StampName) ? clientRequestInfo.Id : clientRequestInfo.StampName.Split('-').First() + " " + clientRequestInfo.Id; file.WriteLine(clientRequestInfoStatement); } file.WriteLine(); } return(count); }
private static void PrintClientRequestIdsByIssues(StreamWriter file) { file.WriteLine("---------------------------------------------------------- ClientRequestIds for issues----------------------------------------------------------"); file.WriteLine(); foreach (var issue in IssueHelper.IssueList) { var affectedClientRequestIdInfos = ClientRequestIdHelper.GetAffectedClientRequestInfos(issue); if (affectedClientRequestIdInfos != null && affectedClientRequestIdInfos.Count > 0) { file.WriteLine("*********ClientRequestIDs affected by issue: " + issue.Type + ", Bug: " + issue.BugId + ", Count: " + affectedClientRequestIdInfos.Count); file.WriteLine(); foreach (var clientRequestInfo in affectedClientRequestIdInfos) { string clientRequestInfoStatement = string.IsNullOrEmpty(clientRequestInfo.StampName) ? clientRequestInfo.Id : clientRequestInfo.StampName.Split('-').First() + " " + clientRequestInfo.Id; file.WriteLine(clientRequestInfoStatement); } file.WriteLine(); } } file.WriteLine("*********Uncategorised ClientRequestIDs: "); foreach (var clientRequestId in ClientRequestIdHelper.clientRequestInfoList) { var machingIssues = IssueHelper.GetMachingIssues(clientRequestId.ErrorContent.ToString()); if (machingIssues == null || machingIssues.Count == 0) { string clientRequestInfoStatement = string.IsNullOrEmpty(clientRequestId.StampName) ? clientRequestId.Id : clientRequestId.StampName.Split('-').First() + " " + clientRequestId.Id; file.WriteLine(clientRequestInfoStatement); } } }
private static void GenericAnalysis() { Parallel.ForEach(IssueHelper.IssueList, (issue) => { QueryHelper.ProcessClientRequestInfoDetailsForIssue(issue); }); using (StreamWriter file = File.CreateText(inMarketResultsFilePath)) { file.WriteLine("---------------------------------------------------------- ClientRequestIds for issues----------------------------------------------------------"); file.WriteLine(); foreach (var issue in IssueHelper.IssueList) { var affectedClientRequestIdInfos = ClientRequestIdHelper.GetAffectedClientRequestInfos(issue); file.WriteLine("*********ClientRequestIDs affected by issue: " + issue.Type + ", Bug: " + issue.BugId + ", affected count:" + affectedClientRequestIdInfos.Count); file.WriteLine(); foreach (var clientRequestInfo in affectedClientRequestIdInfos) { string clientRequestInfoStatement = clientRequestInfo.Id; file.WriteLine(clientRequestInfoStatement); } file.WriteLine(); } } }
private static void PrintClientRequestIdsByIssuesPerMonth(StreamWriter file) { DateTime currentTime = DateTime.Now; DateTime currentMonthStart = new DateTime(currentTime.Year, currentTime.Month, 1); DateTime oneMonthsAgo = currentMonthStart.AddMonths(-1); DateTime twoMonthsAgo = currentMonthStart.AddMonths(-2); DateTime threeMonthsAgo = currentMonthStart.AddMonths(-3); file.WriteLine("---------------------------------------------------------- ClientRequestIds for issues: monthly display----------------------------------------------------------"); file.WriteLine(); foreach (var issue in IssueHelper.IssueList) { var affectedClientRequestIdInfos = ClientRequestIdHelper.GetAffectedClientRequestInfos(issue); if (affectedClientRequestIdInfos != null && affectedClientRequestIdInfos.Count > 0) { file.WriteLine("*********ClientRequestIDs affected by issue: " + issue.Type + ", Bug: " + issue.BugId + ", Count: " + affectedClientRequestIdInfos.Count); file.WriteLine(); } else { continue; } PrintClientRequestIdsByIssuesBetweenMonths(file, issue, currentMonthStart, currentTime); PrintClientRequestIdsByIssuesBetweenMonths(file, issue, oneMonthsAgo, currentMonthStart); PrintClientRequestIdsByIssuesBetweenMonths(file, issue, twoMonthsAgo, oneMonthsAgo); PrintClientRequestIdsByIssuesBetweenMonths(file, issue, threeMonthsAgo, twoMonthsAgo); PrintClientRequestIdsByIssuesBetweenMonths(file, issue, DateTime.MinValue, threeMonthsAgo); } file.WriteLine("*********Uncategorised ClientRequestIDs: "); PrintUncategorizedClientRequestIdsByIssuesBetweenMonths(file, currentMonthStart, currentTime); PrintUncategorizedClientRequestIdsByIssuesBetweenMonths(file, oneMonthsAgo, currentMonthStart); PrintUncategorizedClientRequestIdsByIssuesBetweenMonths(file, twoMonthsAgo, oneMonthsAgo); PrintUncategorizedClientRequestIdsByIssuesBetweenMonths(file, threeMonthsAgo, twoMonthsAgo); PrintUncategorizedClientRequestIdsByIssuesBetweenMonths(file, DateTime.MinValue, threeMonthsAgo); }
private static void PrintClientRequestIdCountForIssuesByMonth(StreamWriter file) { DateTime currentTime = DateTime.Now; DateTime currentMonthStart = new DateTime(currentTime.Year, currentTime.Month, 1); DateTime oneMonthsAgo = currentMonthStart.AddMonths(-1); DateTime twoMonthsAgo = currentMonthStart.AddMonths(-2); DateTime threeMonthsAgo = currentMonthStart.AddMonths(-3); file.WriteLine("---------------------------------------------------------- ClientRequestId count for issues: monthly display----------------------------------------------------------"); file.WriteLine(); if (PrintClientRequestIdsBetweenMonths(file, currentMonthStart, currentTime, false) > 0) { file.WriteLine("*********Between Date: '" + currentMonthStart.ToString("dddd, MMM dd yyyy") + "' and '" + currentTime.ToString("dddd, MMM dd yyyy") + "'"); file.WriteLine(); foreach (var issue in IssueHelper.IssueList) { var affectedClientRequestIdInfos = ClientRequestIdHelper.GetAffectedClientRequestInfos(issue); if (affectedClientRequestIdInfos != null && affectedClientRequestIdInfos.Count > 0) { file.WriteLine("Issue: " + issue.Type + ", Bug: " + issue.BugId + ", Affected ClientRequestId Count: " + PrintClientRequestIdsByIssuesBetweenMonths(file, issue, currentMonthStart, currentTime, false)); file.WriteLine(); } else { continue; } } } if (PrintClientRequestIdsBetweenMonths(file, oneMonthsAgo, currentMonthStart, false) > 0) { file.WriteLine("*********Between Date: '" + oneMonthsAgo.ToString("dddd, MMM dd yyyy") + "' and '" + currentMonthStart.ToString("dddd, MMM dd yyyy") + "'"); file.WriteLine(); foreach (var issue in IssueHelper.IssueList) { var affectedClientRequestIdInfos = ClientRequestIdHelper.GetAffectedClientRequestInfos(issue); if (affectedClientRequestIdInfos != null && affectedClientRequestIdInfos.Count > 0) { file.WriteLine("Issue: " + issue.Type + ", Bug: " + issue.BugId + ", Affected ClientRequestId Count: " + PrintClientRequestIdsByIssuesBetweenMonths(file, issue, oneMonthsAgo, currentMonthStart, false)); file.WriteLine(); } else { continue; } } } if (PrintClientRequestIdsBetweenMonths(file, twoMonthsAgo, oneMonthsAgo, false) > 0) { file.WriteLine("*********Between Date: '" + twoMonthsAgo.ToString("dddd, MMM dd yyyy") + "' and '" + oneMonthsAgo.ToString("dddd, MMM dd yyyy") + "'"); file.WriteLine(); foreach (var issue in IssueHelper.IssueList) { var affectedClientRequestIdInfos = ClientRequestIdHelper.GetAffectedClientRequestInfos(issue); if (affectedClientRequestIdInfos != null && affectedClientRequestIdInfos.Count > 0) { file.WriteLine("Issue: " + issue.Type + ", Bug: " + issue.BugId + ", Affected ClientRequestId Count: " + PrintClientRequestIdsByIssuesBetweenMonths(file, issue, twoMonthsAgo, oneMonthsAgo, false)); file.WriteLine(); } else { continue; } } } if (PrintClientRequestIdsBetweenMonths(file, threeMonthsAgo, twoMonthsAgo, false) > 0) { file.WriteLine("*********Between Date: '" + threeMonthsAgo.ToString("dddd, MMM dd yyyy") + "' and '" + twoMonthsAgo.ToString("dddd, MMM dd yyyy") + "'"); file.WriteLine(); foreach (var issue in IssueHelper.IssueList) { var affectedClientRequestIdInfos = ClientRequestIdHelper.GetAffectedClientRequestInfos(issue); if (affectedClientRequestIdInfos != null && affectedClientRequestIdInfos.Count > 0) { file.WriteLine("Issue: " + issue.Type + ", Bug: " + issue.BugId + ", Affected ClientRequestId Count: " + PrintClientRequestIdsByIssuesBetweenMonths(file, issue, threeMonthsAgo, twoMonthsAgo, false)); file.WriteLine(); } else { continue; } } } if (PrintClientRequestIdsBetweenMonths(file, DateTime.MinValue, threeMonthsAgo, false) > 0) { file.WriteLine("*********Between Date: '" + DateTime.MinValue.ToString("dddd, MMM dd yyyy") + "' and '" + threeMonthsAgo.ToString("dddd, MMM dd yyyy") + "'"); file.WriteLine(); foreach (var issue in IssueHelper.IssueList) { var affectedClientRequestIdInfos = ClientRequestIdHelper.GetAffectedClientRequestInfos(issue); if (affectedClientRequestIdInfos != null && affectedClientRequestIdInfos.Count > 0) { file.WriteLine("Issue: " + issue.Type + ", Bug: " + issue.BugId + ", Affected ClientRequestId Count: " + PrintClientRequestIdsByIssuesBetweenMonths(file, issue, DateTime.MinValue, threeMonthsAgo, false)); file.WriteLine(); } else { continue; } } } }
static void Main(string[] args) { var watch = System.Diagnostics.Stopwatch.StartNew(); currentForgroundColor = Console.ForegroundColor; var commandLineOptions = new CommandLineOptions(); var commandLineParsingState = CommandLine.Parser.Default.ParseArguments(args, commandLineOptions); if (commandLineParsingState) { Console.ForegroundColor = ConsoleColor.DarkCyan; if (!string.IsNullOrEmpty(commandLineOptions.InputFile)) { clientRequestIdsFilePath = commandLineOptions.InputFile; Console.WriteLine("Reading ClientRequestIds from file: " + clientRequestIdsFilePath); ClientRequestIdHelper.Initialize(clientRequestIdsFilePath); } if (!string.IsNullOrEmpty(commandLineOptions.InputList)) { Console.WriteLine("Reading ClientRequestIds from command line list: " + commandLineOptions.InputList); ClientRequestIdHelper.Initialize(commandLineOptions.InputList.Split(',').ToList()); } if (!string.IsNullOrEmpty(commandLineOptions.OutputFile)) { inMarketResultsFilePath = commandLineOptions.OutputFile; } else { inMarketResultsFilePath = Path.Combine(Path.GetDirectoryName(Environment.GetCommandLineArgs()[0]), "InMarketResultsFilePath" + ".txt"); } if (!string.IsNullOrEmpty(commandLineOptions.IssueMapFile)) { issueMapFilePath = commandLineOptions.IssueMapFile; IssueHelper.Initialize(issueMapFilePath); } else { issueMapFilePath = Path.Combine(Path.GetDirectoryName(Environment.GetCommandLineArgs()[0]), "IssueMapFilePath" + ".txt"); } Console.WriteLine("Reading IssueMaps from file: " + issueMapFilePath); IssueHelper.Initialize(issueMapFilePath); needDRALogs = commandLineOptions.WithDRALogs; useSyncCalls = commandLineOptions.UseAsyncKustoCalls; displayByMonth = commandLineOptions.DisplayByMonth; } if (args.Length == 0 || args[0] == "/?" || (string.IsNullOrEmpty(commandLineOptions.InputFile) && string.IsNullOrEmpty(commandLineOptions.InputList)) || string.IsNullOrEmpty(inMarketResultsFilePath) || string.IsNullOrEmpty(issueMapFilePath)) { Console.WriteLine(commandLineOptions.GetUsage()); Console.ForegroundColor = currentForgroundColor; return; } if (genericProcess) { GenericAnalysis(); } else if (displayByMonth) { DisplayByMonth(); } else { SpecificAnalysis(); } watch.Stop(); var elapsedMs = watch.ElapsedMilliseconds; Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Total time taken for analysis: " + Math.Ceiling((double)elapsedMs / 1000) + " seconds"); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Analysis is complete and output is generated at: " + inMarketResultsFilePath); Console.ForegroundColor = currentForgroundColor; }