- Created ComplianceNFs.Core project with domain entities and ports - Implemented BuyingRecord, EnergyInvoice, ParsedInvoice entities - Defined domain interfaces for mail listening, XML and PDF parsing, and repository access - Established ComplianceNFs.Infrastructure project with file archiving, mail listening, and data access implementations - Developed PDF and XML parsers for invoice data extraction - Set up AccessDbRepository and AttachmentRepository for data retrieval and storage - Created ComplianceNFs.Service project for background processing and service orchestration - Implemented Worker service for periodic tasks - Established ComplianceNFs.Monitor project with WPF UI for monitoring invoice statuses - Added ViewModel for UI data binding and command handling - Configured project files for .NET 9.0 and necessary package references - Created initial appsettings.json for configuration management - Added TODOs and roadmap for future development
37 lines
1.8 KiB
C#
37 lines
1.8 KiB
C#
using ComplianceNFs.Service;
|
|
using Microsoft.Extensions.Configuration;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.Hosting;
|
|
using ComplianceNFs.Core.Ports;
|
|
using ComplianceNFs.Infrastructure.Repositories;
|
|
using ComplianceNFs.Infrastructure.Mail;
|
|
using ComplianceNFs.Infrastructure.Parsers;
|
|
using ComplianceNFs.Infrastructure.Archiving;
|
|
|
|
IHost host = Host.CreateDefaultBuilder(args)
|
|
.ConfigureAppConfiguration((hostingContext, config) =>
|
|
{
|
|
config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
|
|
})
|
|
.ConfigureServices((context, services) =>
|
|
{
|
|
var config = context.Configuration;
|
|
// Register infrastructure
|
|
services.AddSingleton<IAccessDbRepository>(sp => new AccessDbRepository(config["AccessConnectionString"]));
|
|
services.AddSingleton<IAttachmentRepository>(sp => new AttachmentRepository(config["PostgresConnectionString"]));
|
|
services.AddSingleton<IMailListener, MailListener>();
|
|
services.AddSingleton<IXmlParser, XmlParser>();
|
|
services.AddSingleton<IPdfParser, PdfParser>();
|
|
services.AddSingleton<IFileArchiver>(sp => new FileArchiver(config["ArchiveBasePath"]));
|
|
// Register application services
|
|
services.AddSingleton<ComplianceNFs.Core.Application.Services.InvoiceIngestionService>();
|
|
services.AddSingleton<ComplianceNFs.Core.Application.Services.MatchingService>();
|
|
services.AddSingleton<ComplianceNFs.Core.Application.Services.ComplianceService>();
|
|
services.AddSingleton<ComplianceNFs.Core.Application.Services.NotificationService>();
|
|
services.AddSingleton<ComplianceNFs.Core.Application.Services.ArchivingService>();
|
|
services.AddHostedService<Worker>();
|
|
})
|
|
.Build();
|
|
|
|
host.Run();
|