diff --git a/Controllers/LinesController.cs b/Controllers/LinesController.cs index f75f317..486f8da 100644 --- a/Controllers/LinesController.cs +++ b/Controllers/LinesController.cs @@ -1398,10 +1398,19 @@ namespace line_gestao_api.Controllers { await _db.ControleRecebidoLines.ExecuteDeleteAsync(); + var years = new[] { 2022, 2023, 2024, 2025 }; + var importedYears = new HashSet(); + foreach (var info in GetControleRecebidosWorksheets(wb)) + { await ImportControleRecebidosSheet(info.Sheet, info.Year); + importedYears.Add(info.Year); + } + foreach (var year in years) { + if (importedYears.Contains(year)) continue; + var ws = FindControleRecebidosWorksheet(wb, year); if (ws == null) continue; @@ -1476,29 +1485,14 @@ namespace line_gestao_api.Controllers ConteudoDaNf = string.IsNullOrWhiteSpace(conteudo) ? null : conteudo.Trim(), NumeroDaLinha = numeroLinha, ValorUnit = valorUnit, - private sealed class ControleRecebidosWorksheetInfo - { - public ControleRecebidosWorksheetInfo(IXLWorksheet sheet, int year) - { - Sheet = sheet; - Year = year; - } - - public IXLWorksheet Sheet { get; } - public int Year { get; } - } - - private static IEnumerable GetControleRecebidosWorksheets(XLWorkbook wb) - yield return new ControleRecebidosWorksheetInfo(ws, year); + ValorDaNf = valorDaNf, + DataDaNf = dataDaNf, DataDoRecebimento = dataReceb, Quantidade = qtd, IsResumo = isResumo, CreatedAt = now, UpdatedAt = now - var isControleRecebidos = name.Contains("CONTROLE") && name.Contains("RECEBIDOS"); - var isRomaneio = name.Contains("ROMANEIO"); - - if (!isControleRecebidos && !isRomaneio) + }; buffer.Add(e); @@ -1520,6 +1514,37 @@ namespace line_gestao_api.Controllers } } + private sealed class ControleRecebidosWorksheetInfo + { + public ControleRecebidosWorksheetInfo(IXLWorksheet sheet, int year) + { + Sheet = sheet; + Year = year; + } + + public IXLWorksheet Sheet { get; } + public int Year { get; } + } + + private static IEnumerable GetControleRecebidosWorksheets(XLWorkbook wb) + { + var years = new[] { 2022, 2023, 2024, 2025 }; + + foreach (var ws in wb.Worksheets) + { + var name = NormalizeHeader(ws.Name); + var isControleRecebidos = name.Contains("CONTROLE") && name.Contains("RECEBIDOS"); + var isRomaneio = name.Contains("ROMANEIO"); + + if (!isControleRecebidos && !isRomaneio) continue; + + var year = years.FirstOrDefault(y => name.Contains(y.ToString())); + if (year == 0) continue; + + yield return new ControleRecebidosWorksheetInfo(ws, year); + } + } + private static IXLWorksheet? FindControleRecebidosWorksheet(XLWorkbook wb, int year) { var normalizedName = NormalizeHeader($"CONTROLE DE RECEBIDOS {year}");