Example #1
0
        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;
            }
        }
Example #2
0
        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;
            }
        }
Example #3
0
 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;
     }
 }