diff --git a/FaKrosnoApi/Controllers/ExcelGeneratorController.cs b/FaKrosnoApi/Controllers/ExcelGeneratorController.cs index c53be87..38be5b4 100644 --- a/FaKrosnoApi/Controllers/ExcelGeneratorController.cs +++ b/FaKrosnoApi/Controllers/ExcelGeneratorController.cs @@ -92,6 +92,86 @@ public class ExcelGeneratorController(IWzHeaderService wzHeaderService, IMateria SendEmail(stream, wzHeader); } + [HttpGet("generate-marelli")] + public async Task GeneratePackListForMarelli(Guid packListId) + { + WzHeaderDto wzHeader = await wzHeaderService.GetById(packListId); + MaterialTransactionDto? materialTransaction = await materialTransactionService.GetByWzNumber(wzHeader.WzRowsMeyle.First().WzNumber); + + using ExcelEngine excelEngine = new ExcelEngine(); + IApplication application = excelEngine.Excel; + application.DefaultVersion = ExcelVersion.Xlsx; + + IWorkbook workbook = application.Workbooks.Create(1); + IWorksheet worksheet = workbook.Worksheets[0]; + + IStyle boldFontStyle = workbook.Styles.Add("BoldFontStyle"); + boldFontStyle.Font.Bold = true; + + var mainHeaders = new List + { "Numer zamówienia Meyle", "Meyle Numer", "Ilość w dostawie", "Numer Palety", "Nr Wz", "Nr Partii" }; + + worksheet["B1"].Value = "Packing List"; + worksheet["B1"].CellStyle = boldFontStyle; + + worksheet["B3"].Value = "Supplier Name"; + worksheet["B3"].CellStyle = boldFontStyle; + + worksheet["D3"].Value = "FA KROSNO"; + worksheet["D3"].CellStyle = boldFontStyle; + + worksheet["B4"].Value = "Packing List nr"; + worksheet["B4"].CellStyle = boldFontStyle; + + worksheet["B6"].Value = "Related delivery note"; + worksheet["B6"].CellStyle = boldFontStyle; + + worksheet["D6"].Value = string.Join(", ", wzHeader.WzRowsMeyle.Select(x => x.WzNumber).Distinct()); + worksheet["D6"].CellStyle = boldFontStyle; + + worksheet["B9"].Value = "Forwarder"; + worksheet["B9"].CellStyle = boldFontStyle; + + worksheet["B10"].Value = "Date"; + worksheet["B10"].CellStyle = boldFontStyle; + + worksheet["D10"].DateTime = materialTransaction?.CreateDate ?? DateTime.Now; + + int currentRow = 12; + + for (int i = 0; i < mainHeaders.Count; i++) + { + string columnLetter = GetColumnLetter(i); + worksheet.Range[$"{columnLetter}{currentRow}"].Text = mainHeaders[i]; + worksheet.Range[$"{columnLetter}{currentRow}"].CellStyle = boldFontStyle; + } + + currentRow++; + + foreach (var wzRow in wzHeader.WzRowsMeyle) + { + worksheet.Range[$"A{currentRow}"].Text = wzRow.OrderNumber; + worksheet.Range[$"B{currentRow}"].Text = wzRow.ItemNumber; + worksheet.Range[$"C{currentRow}"].Number = (double)wzRow.Quantity!; + worksheet.Range[$"D{currentRow}"].Number = (double)wzRow.PalletNumber!; + worksheet.Range[$"E{currentRow}"].Text = wzRow.WzNumber; + worksheet.Range[$"F{currentRow}"].Text = wzRow.PartNumber; + + currentRow++; + } + + for (int i = 0; i < 6; i++) + { + worksheet.AutofitColumn(i + 1); + } + + using MemoryStream stream = new MemoryStream(); + workbook.SaveAs(stream); + stream.Position = 0; + + SendEmail(stream, wzHeader); + } + private static string GetColumnLetter(int columnIndex) { string columnName = string.Empty;