Пример #1
0
 private void FinalizeAndUpload(DataTable dt, int reviewId, RowsTransferredEventHandler rowsTransferred)
 {
     dt.SetColumnWithValue(ReviewIdColumnName, reviewId);
     dt.MakeDateColumnsFitSqlServerBounds();
     dt.IdealizeStringColumns();
     dt.UploadIntoSqlServer(CreateSqlConnection, new UploadIntoSqlServerSettings {
         RowsTransferredEventHandler = rowsTransferred
     });
 }
Пример #2
0
 private void LoadActiveCardholders(int reviewId, Stream st, Action <Exception, int> onRowAddError, RowsTransferredEventHandler rowsTransferred)
 => LoadExcelDataTable(reviewId, st, onRowAddError, rowsTransferred, ConfigOptions.Value.ActiveCardholderImportConfig, CreateActiveCardholdersDataTable);
Пример #3
0
 private void LoadCreateWorkingCapitalFundItems(int reviewId, Stream st, Action <Exception, int> onRowAddError, RowsTransferredEventHandler rowsTransferred)
 => LoadExcelDataTable(reviewId, st, onRowAddError, rowsTransferred, ConfigOptions.Value.WorkingCapitalFundReportConfig, CreateWorkingCapitalFundItemsDataTable);
Пример #4
0
 private void LoadPegasysOpenItemsCreditCards(int reviewId, Stream st, Action <Exception, int> onRowAddError, RowsTransferredEventHandler rowsTransferred)
 => LoadExcelDataTable(reviewId, st, onRowAddError, rowsTransferred, ConfigOptions.Value.PegasysOpenItemsCreditCardsSheetsConfig, CreatePegasysOpenItemsCreditCardsDataTable);
Пример #5
0
 private void LoadCreditCardAliases(int reviewId, Stream st, Action <Exception, int> onRowAddError, RowsTransferredEventHandler rowsTransferred)
 => LoadExcelDataTable(reviewId, st, onRowAddError, rowsTransferred, ConfigOptions.Value.CreditCardAliasConfig, CreateCreditCardAliasDataTable);
Пример #6
0
 private void Load192s(int reviewId, Stream st, Action <Exception, int> onRowAddError, RowsTransferredEventHandler rowsTransferred)
 => LoadExcelDataTable(reviewId, st, onRowAddError, rowsTransferred, ConfigOptions.Value.Upload192ImportConfig, Create192DataTable);
Пример #7
0
        private void LoadEasi(int reviewId, Stream st, Action <Exception, int> onRowAddError, RowsTransferredEventHandler rowsTransferred)
        {
            DataTable dt;
            var       ds       = new DataSet();
            var       settings = new LoadTablesFromSpreadsheetSettings()
            {
                CreateDataTable = CreateEasiDataTable,
                LoadAllSheetsDefaultSettings = new LoadRowsFromSpreadsheetSettings
                {
                    TypeConverter      = U.SpreadsheetHelpers.ExcelTypeConverter,
                    RowAddErrorHandler = onRowAddError
                }
            };

            ds.LoadSheetsFromExcel(st, settings);
            dt = MergeIntoSingleTable(ds, CreateEasiDataTable);
            FinalizeAndUpload(dt, reviewId, rowsTransferred);
        }
Пример #8
0
        private async Task Load442sAsync(int reviewId, Stream st, Action <Exception, int> onRowAddError, RowsTransferredEventHandler rowsTransferred)
        {
            var dt = CreatePegasysOpenObligationsDataTable();
            await dt.LoadRowsFromDelineatedTextAsync(st, new LoadRowsFromDelineatedTextSettings
            {
                SkipRawRows        = 2,
                RowAddErrorHandler = onRowAddError
            });

            dt.SetColumnWithValue(ReviewIdColumnName, reviewId);
            dt.UploadIntoSqlServer(CreateSqlConnection, new UploadIntoSqlServerSettings {
                RowsTransferredEventHandler = rowsTransferred
            });
        }
Пример #9
0
        private void LoadExcelDataTable(int reviewId, Stream st, Action <Exception, int> onRowAddError, RowsTransferredEventHandler rowsTransferred, Config.ImportConfig importConfig, Func <DataTable> dataTableCreator)
        {
            string sheetNamesCsv = importConfig.SheetsCsv;
            int    skipRawRows   = importConfig.SkipRawRows;

            DataTable dt;
            var       ds       = new DataSet();
            var       settings = new LoadTablesFromSpreadsheetSettings()
            {
                SheetSettings   = new List <LoadRowsFromSpreadsheetSettings>(),
                CreateDataTable = dataTableCreator,
            };
            var sheetNames = R.CSV.ParseLine(sheetNamesCsv);

            foreach (var sheetName in sheetNames)
            {
                settings.SheetSettings.Add(
                    new LoadRowsFromSpreadsheetSettings
                {
                    SheetName                = sheetName,
                    TypeConverter            = U.SpreadsheetHelpers.ExcelTypeConverter,
                    UseSheetNameForTableName = true,
                    RowAddErrorHandler       = onRowAddError,
                    SkipRawRows              = skipRawRows,
                });
            }
            ds.LoadSheetsFromExcel(st, settings);
            dt = MergeIntoSingleTable(ds, dataTableCreator);

            FinalizeAndUpload(dt, reviewId, rowsTransferred);
        }
Пример #10
0
        //TODO: Email on exception or let user know what happened
        public async Task UploadFiles(UploadFilesModel model)
        {
            var reviewId = model.ReviewId;
            var folder   = await SpecialFolderProvider.GetReviewFolderAsync(model.ReviewId);

            string importer      = null;
            int    rowErrorCount = 0;

            Action <Exception, int> onRowAddError = (ex, rowNum) =>
            {
                LogError(ex, "UploadFiles: OnRowAddError with {rowNum} in {importer} with {reviewId}", rowNum, importer, reviewId);
                ++rowErrorCount;
            };

            RowsTransferredEventHandler rowsTransferred = (sender, e) =>
            {
                LogInformation("UploadFiles: Loading progress. {rowCount} in {importer} with {reviewId}", e.RowsTransferred, importer, reviewId);
            };

            try
            {
                var allFiles =
                    model.PegasysFilePathsList
                    .Union(model.RetaFileList)
                    .Union(model.EasiFileList)
                    .Union(model.One92FileList)
                    .Union(model.CreditCardAliasCrosswalkFiles)
                    .Union(model.PegasysOpenItemsCreditCards)
                    .Union(model.WorkingCapitalFundReportFiles)
                    .Union(model.ActiveCardholderFiles)
                    .ToList();
                LogInformation("Will ultimately process the following files:\n{filePaths}", allFiles.Format("\n", "\t{0}"));

                importer = nameof(Load442sAsync);
                foreach (var fn in model.PegasysFilePathsList)
                {
                    using (var st = await folder.OpenFileReadStreamAsync(fn))
                    {
                        await Load442sAsync(reviewId, st, onRowAddError, rowsTransferred);
                    }
                }

                importer = nameof(LoadReta);
                foreach (var fn in model.RetaFileList)
                {
                    using (var st = await folder.OpenFileReadStreamAsync(fn))
                    {
                        LoadReta(reviewId, st, onRowAddError, rowsTransferred);
                    }
                }

                importer = nameof(LoadEasi);
                foreach (var fn in model.EasiFileList)
                {
                    using (var st = await folder.OpenFileReadStreamAsync(fn))
                    {
                        LoadEasi(reviewId, st, onRowAddError, rowsTransferred);
                    }
                }

                importer = nameof(Load192s);
                foreach (var fn in model.One92FileList)
                {
                    using (var st = await folder.OpenFileReadStreamAsync(fn))
                    {
                        Load192s(reviewId, st, onRowAddError, rowsTransferred);
                    }
                }

                importer = nameof(LoadCreditCardAliases);
                foreach (var fn in model.CreditCardAliasCrosswalkFiles)
                {
                    using (var st = await folder.OpenFileReadStreamAsync(fn))
                    {
                        LoadCreditCardAliases(reviewId, st, onRowAddError, rowsTransferred);
                    }
                }

                importer = nameof(LoadPegasysOpenItemsCreditCards);
                foreach (var fn in model.PegasysOpenItemsCreditCards)
                {
                    using (var st = await folder.OpenFileReadStreamAsync(fn))
                    {
                        LoadPegasysOpenItemsCreditCards(reviewId, st, onRowAddError, rowsTransferred);
                    }
                }

                importer = nameof(LoadCreateWorkingCapitalFundItems);
                foreach (var fn in model.WorkingCapitalFundReportFiles)
                {
                    using (var st = await folder.OpenFileReadStreamAsync(fn))
                    {
                        LoadCreateWorkingCapitalFundItems(reviewId, st, onRowAddError, rowsTransferred);
                    }
                }

                importer = nameof(LoadActiveCardholders);
                foreach (var fn in model.ActiveCardholderFiles)
                {
                    using (var st = await folder.OpenFileReadStreamAsync(fn))
                    {
                        LoadActiveCardholders(reviewId, st, onRowAddError, rowsTransferred);
                    }
                }
            }
            catch (Exception ex)
            {
                LogError(ex, "Problem with UploadFiles in {reviewId}", reviewId);
                throw;
            }
            finally
            {
                var level = rowErrorCount == 0 ? LogLevel.Information : LogLevel.Warning;
                Logger.Log(level, "Importing of {reviewId} yielded {rowErrorCount}.  Note, this does not indicate either overall success or failure.", reviewId, rowErrorCount);
            }
        }
Пример #11
0
 private void LoadActiveCardholders(int reviewId, string uploadPath, Action <Exception, int> onRowAddError, RowsTransferredEventHandler rowsTransferred)
 => LoadExcelDataTable(reviewId, uploadPath, onRowAddError, rowsTransferred, Properties.Settings.Default.ActiveCardholderSheetsToImport, Properties.Settings.Default.ActiveCardholderSkipRawRows, CreateActiveCardholdersDataTable);
Пример #12
0
 private void LoadPegasysOpenItemsCreditCards(int reviewId, string uploadPath, Action <Exception, int> onRowAddError, RowsTransferredEventHandler rowsTransferred)
 => LoadExcelDataTable(reviewId, uploadPath, onRowAddError, rowsTransferred, Properties.Settings.Default.PegasysOpenItemsCreditCardsSheetsToImport, Properties.Settings.Default.PegasysOpenItemsCreditCardsSkipRawRows, CreatePegasysOpenItemsCreditCardsDataTable);
Пример #13
0
        private void Load442s(int reviewId, string uploadPath, Action <Exception, int> onRowAddError, RowsTransferredEventHandler rowsTransferred)
        {
            var dt = CreatePegasysOpenObligationsDataTable();

            using (var st = File.OpenRead(uploadPath))
            {
                dt.LoadRowsFromDelineatedText(st, new LoadRowsFromDelineatedTextSettings
                {
                    SkipRawRows        = 2,
                    RowAddErrorHandler = onRowAddError
                });
                dt.SetColumnWithValue(ReviewIdColumnName, reviewId);
                dt.UploadIntoSqlServer(CreateSqlConnection, new UploadIntoSqlServerSettings {
                    RowsTransferredEventHandler = rowsTransferred
                });
            }
        }
Пример #14
0
        //TODO: Email on exception or let user know what happened
        public void UploadFiles(UploadFilesModel files)
        {
            var    reviewId      = files.ReviewId;
            string importer      = null;
            int    rowErrorCount = 0;

            Action <Exception, int> onRowAddError = (ex, rowNum) =>
            {
                Log.Error(ex, "UploadFiles: OnRowAddError with {rowNum} in {importer} with {reviewId}", rowNum, importer, reviewId);
                ++rowErrorCount;
            };

            RowsTransferredEventHandler rowsTransferred = (sender, e) =>
            {
                Log.Information("UploadFiles: Loading progress. {rowCount} in {importer} with {reviewId}", e.RowsTransferred, importer, reviewId);
            };

            try
            {
                importer = nameof(Load442s);
                foreach (var fn in files.PegasysFilePathsList)
                {
                    Load442s(reviewId, fn, onRowAddError, rowsTransferred);
                }

                importer = nameof(LoadReta);
                foreach (var fn in files.RetaFileList)
                {
                    LoadReta(reviewId, fn, onRowAddError, rowsTransferred);
                }

                importer = nameof(LoadEasi);
                foreach (var fn in files.EasiFileList)
                {
                    LoadEasi(reviewId, fn, onRowAddError, rowsTransferred);
                }

                importer = nameof(Load192s);
                foreach (var fn in files.One92FileList)
                {
                    Load192s(reviewId, fn, onRowAddError, rowsTransferred);
                }

                importer = nameof(LoadCreditCardAliases);
                foreach (var fn in files.CreditCardAliasCrosswalkFiles)
                {
                    LoadCreditCardAliases(reviewId, fn, onRowAddError, rowsTransferred);
                }

                importer = nameof(LoadPegasysOpenItemsCreditCards);
                foreach (var fn in files.PegasysOpenItemsCreditCards)
                {
                    LoadPegasysOpenItemsCreditCards(reviewId, fn, onRowAddError, rowsTransferred);
                }

                importer = nameof(LoadActiveCardholders);
                foreach (var fn in files.ActiveCardholderFiles)
                {
                    LoadActiveCardholders(reviewId, fn, onRowAddError, rowsTransferred);
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex, "Problem with UploadFiles in {reviewId}", reviewId);
                throw;
            }
            finally
            {
                var level = rowErrorCount == 0 ? Serilog.Events.LogEventLevel.Information : Serilog.Events.LogEventLevel.Warning;
                Log.Write(level, "Importing of {reviewId} yielded {rowErrorCount}.  Note, this does not indicate either overall success or failure.", reviewId, rowErrorCount);
            }
        }