public LatencyConversionModel ConvertCsvToLatencyConversionModel(List <string> data) { try { if (data == null || !data.Any()) { return(new LatencyConversionModel()); } var latencyConversionModel = new LatencyConversionModel(); var conversionHeader = LineSplitter(data[0]).ToList(); data.RemoveAt(0); foreach (var latencyRow in data) { var splitRow = LineSplitter(latencyRow).ToList(); var clientId = splitRow[0]; var conversionRow = new Dictionary <int, int>(); for (var i = 1; i < conversionHeader.Count; i++) { conversionRow.Add(int.Parse(conversionHeader[i]), int.Parse(splitRow[i])); } latencyConversionModel.LatencyConversionTable.Add(clientId, conversionRow); } return(latencyConversionModel); } catch (Exception e) { MessageBox.Show($@"Failed parsing latency conversion table. InnerMessage: {e.Message}"); throw; } }
public Tuple <ClientLog, List <string> > ConvertCsvToClientDataModel(List <string> data, LatencyConversionModel latencyConversionModel) { try { if (data == null || !data.Any()) { return(new Tuple <ClientLog, List <string> >(new ClientLog(), new List <string>())); } if (latencyConversionModel == null) { latencyConversionModel = new LatencyConversionModel(); } var clientReport = new ClientLog(); data.RemoveAt(0); var clientReportAndIssues = data .Select(line => LineSplitter(line).ToArray()) .Select(lineParams => { try { var row = new ClientModelRow(); row.InvoiceNumber = latencyConversionModel.LatencyConversionTable.ContainsKey(lineParams[20]) && latencyConversionModel.LatencyConversionTable[lineParams[20]].ContainsKey(int.Parse(lineParams[15])) ? latencyConversionModel.LatencyConversionTable[lineParams[20]][int.Parse(lineParams[15])] : int.Parse(lineParams[15]); row.InvoiceDate = TryParsingDateTime(lineParams[19], true); row.AmountDue = float.Parse(lineParams[16]); row.PaymentTerms = int.Parse(lineParams[14]); row.ClientId = lineParams[20]; row.ClientNumber = int.Parse(lineParams[5]); row.CompanyNumber = int.Parse(lineParams[4]); return(new Tuple <ClientModelRow, string>(row, string.Empty)); } catch (Exception e) { return(new Tuple <ClientModelRow, string>(null, $"Error parsing content from client file in row: {string.Join(",", lineParams)}. Excpetion: {e.Message}")); } }).ToList(); clientReport.ClientReport = clientReportAndIssues .Select(x => x.Item1) .Where(x => x != null) .ToList(); var issues = clientReportAndIssues .Select(x => x.Item2) .Where(x => x != null) .ToList(); return(new Tuple <ClientLog, List <string> >(clientReport, issues)); } catch (Exception e) { MessageBox.Show($@"Failed parsing client report. InnerMessage: {e.Message}"); throw; } }
public Tuple <ClientLog, List <string> > GetClientLog(string reportName, LatencyConversionModel conversionModel) { try { var logContent = _fileSystemController.ReadFileContents($"{LogsFolder}\\{ReportTypes.ClientReport}\\{reportName}.csv"); var clientLog = _dataConverter.ConvertCsvToClientDataModel(logContent, conversionModel); return(clientLog); } catch (Exception e) { MessageBox.Show($@"Failed getting client log: {reportName}. InnerMessage: {e.Message}"); throw; } }