* Further development

This commit is contained in:
2025-04-06 17:15:45 +02:00
parent b8aa5096a8
commit 2e1bffaf09
10 changed files with 360 additions and 89 deletions

View File

@@ -6,11 +6,15 @@ using SytelineSaAppEfDataModel.Services;
namespace BroseCumulativeReport;
public class App(IScheduleOrderService scheduleOrderService, IScheduleOrderDetailsService scheduleOrderDetailsService, IMaterialTransactionService materialTransactionService) : IApp
public class App(
IScheduleOrderService scheduleOrderService,
IScheduleOrderDetailsService scheduleOrderDetailsService,
IMaterialTransactionService materialTransactionService) : IApp
{
public async Task RunAsync()
{
IList<ScheduleOrderDto> scheduleOrders = (await GetScheduleOrders()).ToList();
ExcelGenerator excelGenerator = new ExcelGenerator();
Dictionary<string, ScheduleOrderDto?> scheduleOrdersByPoNumber = scheduleOrders
.Where(x => !string.IsNullOrWhiteSpace(x.PONum)).GroupBy(x => x.PONum)
@@ -21,36 +25,145 @@ public class App(IScheduleOrderService scheduleOrderService, IScheduleOrderDetai
foreach (KeyValuePair<string, ScheduleOrderDto?> scheduleOrderByPoNumber in scheduleOrdersByPoNumber)
{
if (scheduleOrderByPoNumber.Value == null) continue;
ScheduleOrderDto scheduleOrder = scheduleOrderByPoNumber.Value;
IEnumerable<ScheduleOrderDetailDetailDto> scheduleOrderDetailDetails =
await GetScheduleOrderDetailsDetailsByIdAsync(scheduleOrder.ScheduleOrderDetails.FirstOrDefault()
?.ID ?? 0);
scheduleOrderDetailDetails =
scheduleOrderDetailDetails.Where(x => x.DateFrom > DateTime.Now.AddDays(-7)).ToList();
if (!scheduleOrderDetailDetails.Any()) continue;
if (string.IsNullOrWhiteSpace(scheduleOrder.PONum)) continue;
if (wzNumbersByPoNumber.ContainsKey(scheduleOrder.PONum)) continue;
string wzNumber =
scheduleOrder.ScheduleOrderDetails?.FirstOrDefault()?.ScheduleOrderDetailMiscs
scheduleOrder.ScheduleOrderDetails.FirstOrDefault()?.ScheduleOrderDetailMiscs
?.FirstOrDefault(x => x.Type == "AAK")?.Value ?? string.Empty;
int quantity = int.Parse(scheduleOrder.ScheduleOrderDetails?.FirstOrDefault()?.ScheduleOrderDetailMiscs
?.FirstOrDefault(x => x.Type is "48" or "70")?.Value ?? "0");
if (string.IsNullOrWhiteSpace(wzNumber)) continue;
IEnumerable<ScheduleOrderDetailDetailDto> scheduleOrderDetailDetails =
await GetScheduleOrderDetailsDetailsByIdAsync(scheduleOrder.ScheduleOrderDetails?.FirstOrDefault()
?.ScheduleOrderID ?? 0);
int quantity = int.Parse(scheduleOrder.ScheduleOrderDetails.FirstOrDefault()?.ScheduleOrderDetailMiscs
?.FirstOrDefault(x => x.Type is "48" or "70")?.Value ?? "0");
foreach (ScheduleOrderDetailDetailDto detail in scheduleOrderDetailDetails)
{
scheduleOrder.ScheduleOrderDetails?.FirstOrDefault()?.ScheduleOrderDetailDetails
.Add(detail);
.Add(detail);
}
Wz wz = new Wz(scheduleOrder.PONum, wzNumber, string.Empty, scheduleOrder, quantity);
Wz wz = new Wz(scheduleOrder.PONum, wzNumber, scheduleOrder.PONum, scheduleOrder, quantity);
wzNumbersByPoNumber.Add(scheduleOrder.PONum, wz);
}
List<MainRow> mainRows = new List<MainRow>();
IDictionary<string, List<MaterialTransactionDto>> transitMaterialTransactionsByCurrentWz =
await GetTransitMaterialTransactionsByCurrentWz(wzNumbersByPoNumber);
IDictionary<string, string> orderNumbersByWz = await GetOrderNumbersByWz(wzNumbersByPoNumber);
foreach (KeyValuePair<string, Wz> wzByPoNumber in wzNumbersByPoNumber)
{
if (!scheduleOrdersByPoNumber.TryGetValue(wzByPoNumber.Key, out ScheduleOrderDto? scheduleOrder) ||
scheduleOrder == null) continue;
if (scheduleOrder.ScheduleOrderDetails.Count > 1)
throw new Exception(
$"More than one ScheduleOrderDetail found for the same PO number {wzByPoNumber.Key}");
IList<ScheduleOrderDetailDetailDto> scheduleOrderDetailDetails =
scheduleOrder.ScheduleOrderDetails.First().ScheduleOrderDetailDetails;
IDictionary<DateTime, IList<Item>> itemsToSendByDate = GetItemsToSendByDate(scheduleOrder,
scheduleOrder.ScheduleOrderDetails.First(), scheduleOrderDetailDetails);
orderNumbersByWz.TryGetValue(wzByPoNumber.Value.WzNumber, out string? orderNumber);
MainRow mainRow = new MainRow
{
CustomerName = scheduleOrder.Recipient.RecipientDesc,
CustomerOrderNumber = wzByPoNumber.Value.CustomerOrderNumber,
OrderNumber = orderNumber ?? "",
OrderDate = scheduleOrder.LastUpdateDate,
SalesChannelProductCode = scheduleOrder.ScheduleOrderDetails.First().Sc_productCode,
ShipperProductCode = scheduleOrder.ScheduleOrderDetails.First().Sh_productCode,
LastWzNumber = wzByPoNumber.Value.WzNumber,
WzQuantity = wzByPoNumber.Value.Quantity
};
mainRow.SendDatesWithQuantity = itemsToSendByDate.OrderBy(x => x.Key).Where(x => x.Key >= DateTime.Now)
.Select(x => (x.Key,
x.Value.Where(z => z.SalesChannelProductCode == mainRow.SalesChannelProductCode)
.Sum(y => y.Quantity))).ToList();
transitMaterialTransactionsByCurrentWz.TryGetValue(wzByPoNumber.Value.WzNumber,
out List<MaterialTransactionDto>? materialTransactions);
if (materialTransactions != null && materialTransactions.Any())
{
mainRow.ChildRows = materialTransactions.Select(x => new ChildRow(x.MTGroupNum, x.Qty, x.TransDate))
.ToList();
}
else
{
mainRow.ChildRows = new List<ChildRow>();
}
mainRows.Add(mainRow);
}
mainRows = mainRows.OrderBy(x => x.CustomerName).ToList();
string filePath = Path.Combine(Directory.GetCurrentDirectory(), "BroseCumulativeReport.xlsx");
if (File.Exists(filePath))
{
File.Delete(filePath);
}
excelGenerator.GenerateExcel(filePath, mainRows);
Console.WriteLine($"Plik '{filePath}' został wygenerowany!");
}
private async Task<IEnumerable<MaterialTransactionDto>> GetMaterialTransactions(ISet<string> wzNumbers)
{
return await materialTransactionService.GetByWzNumbers(wzNumbers);
}
private async Task<IEnumerable<ScheduleOrderDto>> GetScheduleOrders()
{
return await scheduleOrderService.GetByPurchaserId(1);
}
private async Task<IEnumerable<MaterialTransactionDto>> GetMaterialTransactionsByOrderNumber(string orderNumber)
{
return await materialTransactionService.GetByOrderNumber(orderNumber);
}
private async Task<IDictionary<string, string>> GetOrderNumbersByWz(IDictionary<string, Wz> wzNumbersByPoNumber)
{
HashSet<string> wzNumbers = wzNumbersByPoNumber.Select(x => x.Value.WzNumber).ToHashSet();
IEnumerable<MaterialTransactionDto> orderNumbersByWz =
await materialTransactionService.GetOrderNumbersByWz(wzNumbers);
return orderNumbersByWz.GroupBy(x => x.MTGroupNum).ToDictionary(x => x.Key ?? "",
y => y.Select(z => z).MaxBy(v => v.TransDate)?.RefNum ?? "");
}
private async Task<IEnumerable<ScheduleOrderDetailDetailDto>> GetScheduleOrderDetailsDetailsByIdAsync(
int scheduleOrderDetailId)
{
return await scheduleOrderDetailsService.GetScheduleOrderDetailsDetailsByIdAsync(scheduleOrderDetailId);
}
private async Task<IDictionary<string, List<MaterialTransactionDto>>> GetTransitMaterialTransactionsByCurrentWz(
IDictionary<string, Wz> wzNumbersByPoNumber)
{
IDictionary<string, List<MaterialTransactionDto>> transitMaterialTransactionsByCurrentWz =
new Dictionary<string, List<MaterialTransactionDto>>();
ISet<string> wzNumbers = wzNumbersByPoNumber.Values.Select(x => x.WzNumber).ToHashSet();
IEnumerable<MaterialTransactionDto> materialTransactions = await GetMaterialTransactions(wzNumbers);
@@ -58,38 +171,53 @@ public class App(IScheduleOrderService scheduleOrderService, IScheduleOrderDetai
foreach (MaterialTransactionDto materialTransaction in materialTransactions)
{
string? orderNumber = materialTransaction.RefNum;
if(string.IsNullOrWhiteSpace(orderNumber)) continue;
IEnumerable<MaterialTransactionDto> materialTransactionsByOrderNumber = await GetMaterialTransactionsByOrderNumber(orderNumber);
if (string.IsNullOrWhiteSpace(orderNumber)) continue;
if (string.IsNullOrWhiteSpace(materialTransaction.MTGroupNum)) continue;
IEnumerable<MaterialTransactionDto> materialTransactionsByOrderNumber =
await GetMaterialTransactionsByOrderNumber(orderNumber);
List<MaterialTransactionDto> materialTransactionsSentAfterCurrentOne = materialTransactionsByOrderNumber
.Where(x => x.TransDate > materialTransaction.TransDate).ToList();
transitMaterialTransactionsByCurrentWz.Add(materialTransaction.MTGroupNum,
materialTransactionsSentAfterCurrentOne);
}
Console.WriteLine("Aplikacja działa!");
}
private async Task<IEnumerable<MaterialTransactionDto>> GetMaterialTransactions(ISet<string> wzNumbers)
{
return await materialTransactionService.GetByWzNumbers(wzNumbers);
}
private async Task<IEnumerable<ScheduleOrderDto>> GetScheduleOrders()
{
return await scheduleOrderService.GetByPurchaserId(1);
}
private async Task<IEnumerable<MaterialTransactionDto>> GetMaterialTransactionsByOrderNumber(string orderNumber)
{
return await materialTransactionService.GetByOrderNumber(orderNumber);
return transitMaterialTransactionsByCurrentWz;
}
private async Task<IEnumerable<ScheduleOrderDetailDetailDto>> GetScheduleOrderDetailsDetailsByIdAsync(
int scheduleOrderDetailId)
private IDictionary<DateTime, IList<Item>> GetItemsToSendByDate(ScheduleOrderDto scheduleOrder,
ScheduleOrderDetailDto scheduleOrderDetail, IList<ScheduleOrderDetailDetailDto> scheduleOrderDetailDetails)
{
return await scheduleOrderDetailsService.GetScheduleOrderDetailsDetailsByIdAsync(scheduleOrderDetailId);
IDictionary<DateTime, IList<Item>> itemsToSendByDate = new Dictionary<DateTime, IList<Item>>();
foreach (ScheduleOrderDetailDetailDto scheduleOrderDetailDetail in scheduleOrderDetailDetails)
{
DateTime nextSendDate = GetNextSendDate(scheduleOrderDetailDetail);
Item item = new Item(scheduleOrder.Recipient.RecipientDesc, scheduleOrderDetail.Sc_productCode,
scheduleOrderDetail.Sh_productCode, scheduleOrderDetailDetail.Qty);
if (itemsToSendByDate.TryGetValue(nextSendDate, out IList<Item>? items))
{
items.Add(item);
}
else
{
itemsToSendByDate.Add(nextSendDate, new List<Item> { item });
}
}
return itemsToSendByDate;
}
private DateTime GetNextSendDate(ScheduleOrderDetailDetailDto scheduleOrderDetailDetail)
{
int daysSinceThursday = ((int)scheduleOrderDetailDetail.DateFrom.DayOfWeek - (int)DayOfWeek.Thursday + 7) % 7;
DateTime nearestThursday = scheduleOrderDetailDetail.DateFrom.Date.AddDays(-daysSinceThursday);
return nearestThursday;
}
}

View File

@@ -26,7 +26,7 @@
</ItemGroup>
<ItemGroup>
<None Update="appsettings.json">
<None Update="appSettings.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>

View File

@@ -1,3 +1,4 @@
using System.Globalization;
using BroseCumulativeReport.Model;
using Syncfusion.Drawing;
@@ -8,67 +9,171 @@ using System.IO;
public class ExcelGenerator
{
public void GenerateExcel(string filePath, List<MainRow> rows)
public void GenerateExcel(string filePath, List<MainRow> mainRows)
{
using (ExcelEngine excelEngine = new ExcelEngine())
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 darkGreenHeaderStyle = workbook.Styles.Add("DarkGreenHeader");
darkGreenHeaderStyle.Color = Color.FromArgb(34, 139, 34);
darkGreenHeaderStyle.Font.Bold = true;
darkGreenHeaderStyle.Font.Color = ExcelKnownColors.White;
IStyle lightGreenStyle = workbook.Styles.Add("LightGreen");
lightGreenStyle.Color = Color.FromArgb(173, 255, 47);
IStyle darkOrangeHeaderStyle = workbook.Styles.Add("DarkOrangeHeader");
darkOrangeHeaderStyle.Color = Color.FromArgb(255, 140, 0);
darkOrangeHeaderStyle.Font.Bold = true;
darkOrangeHeaderStyle.Font.Color = ExcelKnownColors.White;
IStyle lightOrangeStyle = workbook.Styles.Add("LightOrange");
lightOrangeStyle.Color = Color.FromArgb(255, 165, 0);
int currentRow = 1;
var mainHeaders = new List<string>
{ "Klient", "Numer zamówienia", "Numer zamówienia SL", "Data ostatniego komunikatu", "Pozycja", "Pozycja Klienta", "Ostatnia WZ", "Skumulowana ilość dostarczona" };
var childHeaders = new List<string> { "W tranzycie:", "Numer WZ", "Data wysyłki", "Ilość" };
mainHeaders.AddRange(mainRows.SelectMany(x => x.SendDatesWithQuantity).Select(x => x.SendDate).Distinct()
.OrderBy(x => x.Date).Select(x => x.Date.ToString("dd.MM.yyyy")).ToList());
bool addHeaders = false;
for (int i = 0; i < mainHeaders.Count; i++)
{
IApplication application = excelEngine.Excel;
application.DefaultVersion = ExcelVersion.Xlsx;
string columnLetter = GetColumnLetter(i);
worksheet.Range[$"{columnLetter}{currentRow}"].Text = mainHeaders[i];
worksheet.Range[$"{columnLetter}{currentRow}"].CellStyle = darkGreenHeaderStyle;
}
IWorkbook workbook = application.Workbooks.Create(1);
IWorksheet worksheet = workbook.Worksheets[0];
// Definicja stylów
IStyle darkGreenStyle = workbook.Styles.Add("DarkGreen");
darkGreenStyle.Color = Color.FromArgb(144, 238, 144); // Lekko ciemny zielony
darkGreenStyle.Font.Bold = true;
IStyle lightGreenStyle = workbook.Styles.Add("LightGreen");
lightGreenStyle.Color = Color.FromArgb(173, 255, 47); // Lekko zielony
IStyle darkOrangeStyle = workbook.Styles.Add("DarkOrange");
darkOrangeStyle.Color = Color.FromArgb(255, 140, 0); // Lekko ciemny pomarańczowy
darkOrangeStyle.Font.Bold = true;
IStyle lightOrangeStyle = workbook.Styles.Add("LightOrange");
lightOrangeStyle.Color = Color.FromArgb(255, 165, 0); // Lekko pomarańczowy
int currentRow = 1;
bool isGreen = true; // Flaga do przełączania kolorów
foreach (var row in rows)
currentRow++;
foreach (var mainRow in mainRows)
{
worksheet.FreeRange(currentRow, 6);
if (addHeaders)
{
// Ustawienie stylu dla głównego wiersza
IStyle mainRowStyle = isGreen ? darkGreenStyle : darkOrangeStyle;
IStyle subRowStyle = isGreen ? lightGreenStyle : lightOrangeStyle;
// Wpisanie głównego wiersza
//worksheet.Range[$"A{currentRow}"].Text = row.Nazwa;
worksheet.Range[$"A{currentRow}:B{currentRow}"].CellStyle = mainRowStyle;
currentRow++;
// Wpisanie podwierszy
foreach (var podwiersz in row.ChildRows)
for (int i = 0; i < mainHeaders.Count; i++)
{
// worksheet.Range[$"A{currentRow}"].Text = podwiersz.Detal;
// worksheet.Range[$"B{currentRow}"].Number = podwiersz.Wartosc;
worksheet.Range[$"A{currentRow}:B{currentRow}"].CellStyle = subRowStyle;
currentRow++;
string columnLetter = GetColumnLetter(i);
worksheet.Range[$"{columnLetter}{currentRow}"].Text = mainHeaders[i];
worksheet.Range[$"{columnLetter}{currentRow}"].CellStyle = darkGreenHeaderStyle;
}
// Przełączenie kolorów
isGreen = !isGreen;
currentRow++;
}
int columnIndex = 0;
string letter = GetColumnLetter(columnIndex);
worksheet.Range[$"{letter}{currentRow}"].Text = mainRow.CustomerName;
worksheet.Range[$"{letter}{currentRow}"].CellStyle = lightGreenStyle;
columnIndex++;
letter = GetColumnLetter(columnIndex);
worksheet.Range[$"{letter}{currentRow}"].Text = mainRow.CustomerOrderNumber;
columnIndex++;
letter = GetColumnLetter(columnIndex);
worksheet.Range[$"{letter}{currentRow}"].Text = mainRow.OrderNumber;
columnIndex++;
letter = GetColumnLetter(columnIndex);
worksheet.Range[$"{letter}{currentRow}"].Text = mainRow.OrderDate.ToString("dd.MM.yyyy");
columnIndex++;
letter = GetColumnLetter(columnIndex);
worksheet.Range[$"{letter}{currentRow}"].Text = mainRow.ShipperProductCode;
columnIndex++;
letter = GetColumnLetter(columnIndex);
worksheet.Range[$"{letter}{currentRow}"].Text = mainRow.SalesChannelProductCode;
columnIndex++;
letter = GetColumnLetter(columnIndex);
worksheet.Range[$"{letter}{currentRow}"].Text = mainRow.LastWzNumber;
columnIndex++;
letter = GetColumnLetter(columnIndex);
worksheet.Range[$"{letter}{currentRow}"].Text = mainRow.WzQuantity.ToString();
worksheet.Range[$"{letter}{currentRow}"].HorizontalAlignment = ExcelHAlign.HAlignRight;
worksheet.Range[$"{letter}{currentRow}"].NumberFormat = "0";
worksheet.Rows[currentRow - 1].CellStyle = lightGreenStyle;
foreach ((DateTime SendDate, int Quantity) sendDateWithQuantity in mainRow.SendDatesWithQuantity)
{
string date = sendDateWithQuantity.SendDate.ToString("dd.MM.yyyy");
int index = mainHeaders.IndexOf(date);
if (index < 0) continue;
letter = GetColumnLetter(index);
worksheet.Range[$"{letter}{currentRow}"].Text = sendDateWithQuantity.Quantity.ToString();
worksheet.Range[$"{letter}{currentRow}"].HorizontalAlignment = ExcelHAlign.HAlignRight;
worksheet.Range[$"{letter}{currentRow}"].NumberFormat = "0";
}
// Dopasowanie szerokości kolumn
worksheet.AutofitColumn(1);
worksheet.AutofitColumn(2);
currentRow++;
// Zapis pliku
using (FileStream stream = new FileStream(filePath, FileMode.Create, FileAccess.Write))
columnIndex = 0;
if (!mainRow.ChildRows.Any())
{
workbook.SaveAs(stream);
addHeaders = false;
continue;
}
addHeaders = true;
foreach (var header in childHeaders)
{
string columnLetter = GetColumnLetter(columnIndex);
worksheet.Range[$"{columnLetter}{currentRow}"].Text = header;
worksheet.Range[$"{columnLetter}{currentRow}"].CellStyle = darkOrangeHeaderStyle;
columnIndex++;
}
currentRow++;
foreach (var childRow in mainRow.ChildRows)
{
columnIndex = 1;
string columnLetter = GetColumnLetter(columnIndex);
worksheet.Range[$"{columnLetter}{currentRow}"].Text = childRow.WzNumber;
worksheet.Range[$"{columnLetter}{currentRow}"].CellStyle = lightOrangeStyle;
columnIndex++;
columnLetter = GetColumnLetter(columnIndex);
worksheet.Range[$"{columnLetter}{currentRow}"].Text = childRow.Date?.ToString("dd.MM.yyyy");
worksheet.Range[$"{columnLetter}{currentRow}"].CellStyle = lightOrangeStyle;
columnIndex++;
columnLetter = GetColumnLetter(columnIndex);
worksheet.Range[$"{columnLetter}{currentRow}"].Text =
((int)Math.Abs(childRow.Quantity ?? 0M)).ToString(CultureInfo.InvariantCulture);
worksheet.Range[$"{columnLetter}{currentRow}"].CellStyle = lightOrangeStyle;
worksheet.Range[$"{columnLetter}{currentRow}"].HorizontalAlignment = ExcelHAlign.HAlignRight;
worksheet.Range[$"{columnLetter}{currentRow}"].NumberFormat = "0";
currentRow++;
}
}
for (int i = 0; i < Math.Max(mainHeaders.Count, childHeaders.Count); i++)
{
worksheet.AutofitColumn(i + 1);
}
using FileStream stream = new FileStream(filePath, FileMode.Create, FileAccess.Write);
workbook.SaveAs(stream);
}
private static string GetColumnLetter(int columnIndex)
{
string columnName = string.Empty;
while (columnIndex >= 0)
{
columnName = (char)('A' + (columnIndex % 26)) + columnName;
columnIndex = (columnIndex / 26) - 1;
}
return columnName;
}
}

View File

@@ -2,5 +2,14 @@ namespace BroseCumulativeReport.Model;
public class ChildRow
{
public string? WzNumber { get; set; }
public decimal? Quantity { get; set; }
public DateTime? Date { get; set; }
public ChildRow(string? wzNumber, decimal? quantity, DateTime? date)
{
WzNumber = wzNumber;
Quantity = quantity;
Date = date;
}
}

View File

@@ -0,0 +1,17 @@
namespace BroseCumulativeReport.Model;
public class Item
{
public string CustomerName { get; set; }
public string SalesChannelProductCode { get; set; }
public string ShipperProductCode { get; set; }
public int Quantity { get; set; }
public Item(string customerName, string salesChannelProductCode, string shipperProductCode, int quantity)
{
CustomerName = customerName;
SalesChannelProductCode = salesChannelProductCode;
ShipperProductCode = shipperProductCode;
Quantity = quantity;
}
}

View File

@@ -2,5 +2,15 @@ namespace BroseCumulativeReport.Model;
public class MainRow
{
public IEnumerable<ChildRow> ChildRows { get; set; }
public string CustomerName { get; set; }
public string CustomerOrderNumber { get; set; }
public string OrderNumber { get; set; }
public DateTime OrderDate { get; set; }
public string SalesChannelProductCode { get; set; }
public string ShipperProductCode { get; set; }
public string LastWzNumber { get; set; }
public int WzQuantity { get; set; }
public List<(DateTime SendDate, int Quantity)> SendDatesWithQuantity { get; set; } = new();
public IEnumerable<ChildRow> ChildRows { get; set; } = new List<ChildRow>();
}

View File

@@ -13,7 +13,7 @@ public class Wz
public Wz(string poNumber, string wzNumber, string customerOrderNumber, ScheduleOrderDto scheduleOrder, int quantity)
{
PoNumber = poNumber;
WzNumber = wzNumber;
WzNumber = wzNumber.Replace("_", "");
CustomerOrderNumber = customerOrderNumber;
ScheduleOrder = scheduleOrder;
Quantity = quantity;

View File

@@ -1,6 +1,8 @@
using BroseCumulativeReport;
using Microsoft.Extensions.DependencyInjection;
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("NRAiBiAaIQQuGjN/V09+XU9HdVRDX3xKf0x/TGpQb19xflBPallYVBYiSV9jS3tTckVgWHldc3ZUR2lfVE90Vg==");
Service service = new Service();
var host = service.CreateHostBuilder(args).Build();

View File

@@ -17,7 +17,7 @@ public class Service
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext, config) =>
{
config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
config.AddJsonFile("appSettings.json", optional: false, reloadOnChange: true);
})
.ConfigureServices((hostContext, services) =>
{