using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging; using WinFormDiApp.BL.Helpers; using WinFormDiApp.BLI; using WinFormDiApp.BL.Models; using Microsoft.Extensions.DependencyInjection; namespace WinFormDiApp.BLR; public class ReadingIn : IReadingIn { private readonly IConfiguration _configuration; private readonly ILogger _logger; private readonly IAccountRecordRepository _accountRecordRepository; public ReadingIn( IConfiguration configuration, ILogger logger, IAccountRecordRepository accountRecordRepository) { _configuration = configuration; _logger = logger; _accountRecordRepository = accountRecordRepository; } // @"C:\dev\MyYearlyCountings\TransactionsTest.xls" public IEnumerable readXLS(string FilePath) { List records = new List(); AccountRecord? record = null; FileInfo existingFile = new FileInfo(FilePath); using (Excel exObject = new Excel(existingFile.FullName, 1)) { //get the first worksheet in the workbook int colCount = exObject.Columns; int rowCount = exObject.Rows; //get row count bool prt = false; for (int row = 0; row <= rowCount; row++) { if (prt) { //Console.WriteLine(); //// _logger.LogInformation(""); records.Add(record); } prt = false; for (int col = 0; col <= colCount; col++) { var x = exObject.ReadCell(row, col); if (exObject.ReadCell(row, col) == null) { // Console.WriteLine(" Row:" + row + " column:" + col + " Value:" + "null"); } else { if (col == 0 && exObject.DataType == "DateTime") { prt = true; record = new AccountRecord(); } //Console.WriteLine(" Row:" + row + " column:" + col + " Value:" + worksheet.Cells[row, col].Value.ToString().Trim()); if (prt) { // _logger.LogInformation($"{exObject.ReadCell(row, col).ToString().Trim()}/t"); switch (col) { case 0: { record.BetalDatum = DateTime.FromOADate(double.Parse(exObject.ReadCell(row, col))); break; } case 2: { record.Mottagare = exObject.ReadCell(row, col).ToString().Trim(); break; } case 4: { record.Konto = exObject.ReadCell(row, col).ToString().Trim(); break; } case 6: { record.Belopp = double.Parse(exObject.ReadCell(row, col).ToString().Trim()); break; } case 8: { record.Avisering = exObject.ReadCell(row, col).ToString().Trim(); break; } } } } } } } return records; } public bool ReadAndSaveInvoices(string fullFileName) { var result = true; var restab = readXLS(fullFileName); if (restab != null) { try { restab.ToList().ForEach(x => { _accountRecordRepository.AddAccountRecord(x); }); // restab.ToList().ForEach(x => { _accountRecordRepository.AddAccountRecord(x); }); } catch (Exception ex) { _logger.LogError($"MassUppdatering misslyckat: {ex.Message}"); result = false; } } return result; } }