Giuliano Paschoalino 690ab131aa feat: Initialize ComplianceNFs project structure with core, infrastructure, service, and monitor components
- 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
2025-06-05 14:47:28 -03:00

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();