diff --git a/.gitignore b/.gitignore index 46fbec9..0266a2c 100644 --- a/.gitignore +++ b/.gitignore @@ -370,4 +370,4 @@ FodyWeavers.xsd /EnvelopeGenerator.Server/EnvelopeGenerator.Server/publish-output /EnvelopeGenerator.Server/EnvelopeGenerator.Server/tekh_softHSM_test.md /legacy/App -/src/DigitalData.EmailProfiler.API/appsettings.Secrets.json +/src/DigitalData.MessagingService.API/appsettings.Secrets.json diff --git a/AGENTS.md b/AGENTS.md index d319163..c8f39cb 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,7 +1,7 @@ -# EmailProfiler - Agent Notes and Future Enhancements +# MessagingService - Agent Notes and Future Enhancements ## Purpose -This document contains important notes, decisions, and future enhancement plans for the EmailProfiler application. This is intended for AI agents and developers who will continue development. +This document contains important notes, decisions, and future enhancement plans for the MessagingService application. This is intended for AI agents and developers who will continue development. --- @@ -302,7 +302,7 @@ return Accepted(); // HTTP 202 - command queued for processing 2. **Create RabbitMqEmailQueue.cs**: ```csharp - // src/DigitalData.EmailProfiler.Infrastructure/Queue/RabbitMqEmailQueue.cs + // src/DigitalData.MessagingService.Infrastructure/Queue/RabbitMqEmailQueue.cs public class RabbitMqEmailQueue : IEmailQueue { private readonly IConnection _connection; @@ -412,7 +412,7 @@ return Accepted(); // HTTP 202 - command queued for processing **Example Command**: ```csharp -// src/DigitalData.EmailProfiler.Application/EmailProfiles/Commands/CreateEmailProfileCommand.cs +// src/DigitalData.MessagingService.Application/EmailProfiles/Commands/CreateEmailProfileCommand.cs public record CreateEmailProfileCommand(string ProfileName, int EmailAccountId) : IRequest; public class CreateEmailProfileCommandHandler : IRequestHandler @@ -498,7 +498,7 @@ public class LimilabsEmailService : IEmailService **Status**: ✅ Complete - DbContext, Repository, Services, RabbitMQ, and DI implemented **Completed**: -- ✅ EmailProfilerDbContext with DbSet for all entities (attribute-only config, no overrides) +- ✅ MessagingServiceDbContext with DbSet for all entities (attribute-only config, no overrides) - ✅ Generic Repository implementing IRepository with AutoMapper-based CRUD - ✅ LimilabsEmailService (IMAP/SMTP with OAuth2 using Limilabs Mail.dll - TODO: Add Limilabs.Mail NuGet) - ✅ GdPicturePdfProcessingService (using GdPicture.NET 14 - TODO: Add GdPicture NuGet and license) @@ -517,7 +517,7 @@ public class LimilabsEmailService : IEmailService **DbContext Example**: ```csharp -public class EmailProfilerDbContext : DbContext +public class MessagingServiceDbContext : DbContext { public DbSet EmailAccounts { get; set; } public DbSet EmailProfiles { get; set; } @@ -695,7 +695,7 @@ if (builder.Configuration["Hosting:Mode"] == "WindowsService") Install as Windows Service: ```bash -sc create EmailProfiler binPath="C:\Path\To\DigitalData.EmailProfiler.API.exe" +sc create MessagingService binPath="C:\Path\To\DigitalData.MessagingService.API.exe" ``` --- diff --git a/DigitalData.EmailProfiler.sln b/DigitalData.MessagingService.sln similarity index 82% rename from DigitalData.EmailProfiler.sln rename to DigitalData.MessagingService.sln index e198862..151e18f 100644 --- a/DigitalData.EmailProfiler.sln +++ b/DigitalData.MessagingService.sln @@ -5,15 +5,15 @@ VisualStudioVersion = 17.14.36717.8 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{02EA681E-C7D8-13C7-8484-4AC65E1B71E8}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DigitalData.EmailProfiler.API", "src\DigitalData.EmailProfiler.API\DigitalData.EmailProfiler.API.csproj", "{456817AB-67A3-49DD-9EC5-1253A727B958}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DigitalData.MessagingService.API", "src\DigitalData.MessagingService.API\DigitalData.MessagingService.API.csproj", "{456817AB-67A3-49DD-9EC5-1253A727B958}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DigitalData.EmailProfiler.Infrastructure", "src\DigitalData.EmailProfiler.Infrastructure\DigitalData.EmailProfiler.Infrastructure.csproj", "{D2C32417-FE92-4063-97A9-3DA8D811E561}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DigitalData.MessagingService.Infrastructure", "src\DigitalData.MessagingService.Infrastructure\DigitalData.MessagingService.Infrastructure.csproj", "{D2C32417-FE92-4063-97A9-3DA8D811E561}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DigitalData.EmailProfiler.Domain", "src\DigitalData.EmailProfiler.Domain\DigitalData.EmailProfiler.Domain.csproj", "{76ADC1D0-4DFA-0B1E-57C9-2636434A0043}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DigitalData.MessagingService.Domain", "src\DigitalData.MessagingService.Domain\DigitalData.MessagingService.Domain.csproj", "{76ADC1D0-4DFA-0B1E-57C9-2636434A0043}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DigitalData.EmailProfiler.Application", "src\DigitalData.EmailProfiler.Application\DigitalData.EmailProfiler.Application.csproj", "{1874A827-C6A5-EB5E-0FE9-30A7200382B7}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DigitalData.MessagingService.Application", "src\DigitalData.MessagingService.Application\DigitalData.MessagingService.Application.csproj", "{1874A827-C6A5-EB5E-0FE9-30A7200382B7}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DigitalData.EmailProfiler.Tests", "tests\DigitalData.EmailProfiler.Tests\DigitalData.EmailProfiler.Tests.csproj", "{211FB65F-2406-474E-A426-DA246B250AB8}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DigitalData.MessagingService.Tests", "tests\DigitalData.MessagingService.Tests\DigitalData.MessagingService.Tests.csproj", "{211FB65F-2406-474E-A426-DA246B250AB8}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{4F20FEFD-9289-42C6-ABA6-8DB236D74559}" EndProject diff --git a/IMPLEMENTATION_GUIDE.md b/IMPLEMENTATION_GUIDE.md index 8c2db4a..aa83974 100644 --- a/IMPLEMENTATION_GUIDE.md +++ b/IMPLEMENTATION_GUIDE.md @@ -1,8 +1,8 @@ -# EmailProfiler - Implementation Guide for AI Agents +# MessagingService - Implementation Guide for AI Agents ## Overview -This guide provides step-by-step instructions for AI agents to continue the implementation of the EmailProfiler application. The project is a modern .NET 8.0 rewrite of a legacy VB.NET email automation system. +This guide provides step-by-step instructions for AI agents to continue the implementation of the MessagingService application. The project is a modern .NET 8.0 rewrite of a legacy VB.NET email automation system. --- @@ -34,7 +34,7 @@ This guide provides step-by-step instructions for AI agents to continue the impl ## Architecture Overview ``` -DigitalData.EmailProfiler/ +DigitalData.MessagingService/ ├── src/ │ ├── Domain/ ✅ COMPLETE │ ├── Application/ 🚧 IN PROGRESS (5%) @@ -56,15 +56,15 @@ DigitalData.EmailProfiler/ #### 2.1. Create Repository Interfaces -**Location**: `src/DigitalData.EmailProfiler.Application/Interfaces/Repositories/` +**Location**: `src/DigitalData.MessagingService.Application/Interfaces/Repositories/` Create these files: **IEmailProfileRepository.cs**: ```csharp -using DigitalData.EmailProfiler.Domain.Entities; +using DigitalData.MessagingService.Domain.Entities; -namespace DigitalData.EmailProfiler.Application.Interfaces.Repositories; +namespace DigitalData.MessagingService.Application.Interfaces.Repositories; public interface IEmailProfileRepository { @@ -80,9 +80,9 @@ public interface IEmailProfileRepository **IEmailAccountRepository.cs**: ```csharp -using DigitalData.EmailProfiler.Domain.Entities; +using DigitalData.MessagingService.Domain.Entities; -namespace DigitalData.EmailProfiler.Application.Interfaces.Repositories; +namespace DigitalData.MessagingService.Application.Interfaces.Repositories; public interface IEmailAccountRepository { @@ -97,9 +97,9 @@ public interface IEmailAccountRepository **IEmailHistoryRepository.cs**: ```csharp -using DigitalData.EmailProfiler.Domain.Entities; +using DigitalData.MessagingService.Domain.Entities; -namespace DigitalData.EmailProfiler.Application.Interfaces.Repositories; +namespace DigitalData.MessagingService.Application.Interfaces.Repositories; public interface IEmailHistoryRepository { @@ -116,11 +116,11 @@ public interface IEmailHistoryRepository #### 2.2. Create Service Interfaces -**Location**: `src/DigitalData.EmailProfiler.Application/Interfaces/Services/` +**Location**: `src/DigitalData.MessagingService.Application/Interfaces/Services/` **IEmailService.cs**: ```csharp -namespace DigitalData.EmailProfiler.Application.Interfaces.Services; +namespace DigitalData.MessagingService.Application.Interfaces.Services; public interface IEmailService { @@ -169,13 +169,13 @@ public class EmailAttachmentData #### 2.3. Create MediatR Commands -**Location**: `src/DigitalData.EmailProfiler.Application/EmailProfiles/Commands/` +**Location**: `src/DigitalData.MessagingService.Application/EmailProfiles/Commands/` **CreateEmailProfileCommand.cs**: ```csharp using MediatR; -namespace DigitalData.EmailProfiler.Application.EmailProfiles.Commands; +namespace DigitalData.MessagingService.Application.EmailProfiles.Commands; public record CreateEmailProfileCommand( string ProfileName, @@ -213,15 +213,15 @@ public class CreateEmailProfileCommandHandler : IRequestHandler>; @@ -248,14 +248,14 @@ public class GetEmailProfilesQueryHandler : IRequestHandler { @@ -277,15 +277,15 @@ public class CreateEmailProfileCommandValidator : AbstractValidator options) : base(options) { } + public MessagingServiceDbContext(DbContextOptions options) : base(options) { } public DbSet EmailAccounts { get; set; } public DbSet EmailProfiles { get; set; } @@ -420,21 +420,21 @@ public class EmailProfilerDbContext : DbContext #### 3.3. Create Repositories -**Location**: `src/DigitalData.EmailProfiler.Infrastructure/Persistence/Repositories/` +**Location**: `src/DigitalData.MessagingService.Infrastructure/Persistence/Repositories/` **EmailProfileRepository.cs**: ```csharp using Microsoft.EntityFrameworkCore; -using DigitalData.EmailProfiler.Domain.Entities; -using DigitalData.EmailProfiler.Application.Interfaces.Repositories; +using DigitalData.MessagingService.Domain.Entities; +using DigitalData.MessagingService.Application.Interfaces.Repositories; -namespace DigitalData.EmailProfiler.Infrastructure.Persistence.Repositories; +namespace DigitalData.MessagingService.Infrastructure.Persistence.Repositories; public class EmailProfileRepository : IEmailProfileRepository { - private readonly EmailProfilerDbContext _context; + private readonly MessagingServiceDbContext _context; - public EmailProfileRepository(EmailProfilerDbContext context) + public EmailProfileRepository(MessagingServiceDbContext context) { _context = context; } @@ -516,17 +516,17 @@ Create similar repositories for **EmailAccountRepository**, **EmailHistoryReposi #### 3.5. Create DependencyInjection.cs -**Location**: `src/DigitalData.EmailProfiler.Infrastructure/DependencyInjection.cs` +**Location**: `src/DigitalData.MessagingService.Infrastructure/DependencyInjection.cs` ```csharp using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Configuration; using Microsoft.EntityFrameworkCore; -using DigitalData.EmailProfiler.Infrastructure.Persistence; -using DigitalData.EmailProfiler.Application.Interfaces.Repositories; -using DigitalData.EmailProfiler.Infrastructure.Persistence.Repositories; +using DigitalData.MessagingService.Infrastructure.Persistence; +using DigitalData.MessagingService.Application.Interfaces.Repositories; +using DigitalData.MessagingService.Infrastructure.Persistence.Repositories; -namespace DigitalData.EmailProfiler.Infrastructure; +namespace DigitalData.MessagingService.Infrastructure; public static class DependencyInjection { @@ -535,7 +535,7 @@ public static class DependencyInjection IConfiguration configuration) { // DbContext - services.AddDbContext(options => + services.AddDbContext(options => options.UseSqlServer( configuration.GetConnectionString("DefaultConnection"), sqlOptions => @@ -572,7 +572,7 @@ public static class DependencyInjection #### 4.1. Add NuGet Packages ```bash -cd src/DigitalData.EmailProfiler.API +cd src/DigitalData.MessagingService.API dotnet add package Serilog.AspNetCore dotnet add package Serilog.Sinks.File dotnet add package Serilog.Sinks.MSSqlServer @@ -581,12 +581,12 @@ dotnet add package Scalar.AspNetCore #### 4.2. Update Program.cs -**Location**: `src/DigitalData.EmailProfiler.API/Program.cs` +**Location**: `src/DigitalData.MessagingService.API/Program.cs` ```csharp -using DigitalData.EmailProfiler.API; -using DigitalData.EmailProfiler.Application; -using DigitalData.EmailProfiler.Infrastructure; +using DigitalData.MessagingService.API; +using DigitalData.MessagingService.Application; +using DigitalData.MessagingService.Infrastructure; using Serilog; using Scalar.AspNetCore; @@ -639,7 +639,7 @@ app.MapControllers(); try { - Log.Information("Starting EmailProfiler API"); + Log.Information("Starting MessagingService API"); app.Run(); } catch (Exception ex) @@ -654,16 +654,16 @@ finally #### 4.3. Create Controllers -**Location**: `src/DigitalData.EmailProfiler.API/Controllers/` +**Location**: `src/DigitalData.MessagingService.API/Controllers/` **EmailProfilesController.cs**: ```csharp using Microsoft.AspNetCore.Mvc; using MediatR; -using DigitalData.EmailProfiler.Application.EmailProfiles.Commands; -using DigitalData.EmailProfiler.Application.EmailProfiles.Queries; +using DigitalData.MessagingService.Application.EmailProfiles.Commands; +using DigitalData.MessagingService.Application.EmailProfiles.Queries; -namespace DigitalData.EmailProfiler.API.Controllers; +namespace DigitalData.MessagingService.API.Controllers; [ApiController] [Route("api/[controller]")] @@ -713,13 +713,13 @@ Create similar controllers for **EmailAccountsController**, **EmailHistoryContro #### 4.4. Create Background Workers -**Location**: `src/DigitalData.EmailProfiler.API/Workers/` +**Location**: `src/DigitalData.MessagingService.API/Workers/` **EmailPollingWorker.cs** and **EmailSenderWorker.cs** (See agents.md for implementation examples) #### 4.5. Update appsettings.json -**Location**: `src/DigitalData.EmailProfiler.API/appsettings.json` +**Location**: `src/DigitalData.MessagingService.API/appsettings.json` ```json { @@ -758,7 +758,7 @@ Create similar controllers for **EmailAccountsController**, **EmailHistoryContro #### 5.1. Add NuGet Packages ```bash -cd tests/DigitalData.EmailProfiler.Tests +cd tests/DigitalData.MessagingService.Tests dotnet add package FakeItEasy dotnet add package Bogus dotnet add package FluentAssertions @@ -768,15 +768,15 @@ dotnet add package Testcontainers.MsSql #### 5.2. Create Unit Tests -**Location**: `tests/DigitalData.EmailProfiler.Tests/Unit/Domain/` +**Location**: `tests/DigitalData.MessagingService.Tests/Unit/Domain/` **MessageIdGeneratorTests.cs**: ```csharp using Xunit; using FluentAssertions; -using DigitalData.EmailProfiler.Domain.Services; +using DigitalData.MessagingService.Domain.Services; -namespace DigitalData.EmailProfiler.Tests.Unit.Domain; +namespace DigitalData.MessagingService.Tests.Unit.Domain; public class MessageIdGeneratorTests { @@ -844,7 +844,7 @@ The README should include (in German): **Template structure**: ```markdown -# DigitalData EmailProfiler +# DigitalData MessagingService ## Übersicht [Application overview in German] @@ -912,15 +912,15 @@ dotnet build dotnet test # Run API -cd src/DigitalData.EmailProfiler.API +cd src/DigitalData.MessagingService.API dotnet run # Create migration -cd src/DigitalData.EmailProfiler.Infrastructure -dotnet ef migrations add InitialCreate --startup-project ../DigitalData.EmailProfiler.API +cd src/DigitalData.MessagingService.Infrastructure +dotnet ef migrations add InitialCreate --startup-project ../DigitalData.MessagingService.API # Update database -dotnet ef database update --startup-project ../DigitalData.EmailProfiler.API +dotnet ef database update --startup-project ../DigitalData.MessagingService.API ``` --- diff --git a/README.md b/README.md index f2f7812..baa1263 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,2 @@ -# DigitalData.EmailProfiler +# DigitalData.MessagingService diff --git a/STATUS.md b/STATUS.md index d3c1db9..e190b60 100644 --- a/STATUS.md +++ b/STATUS.md @@ -1,4 +1,4 @@ -# EmailProfiler - Implementation Status Report +# MessagingService - Implementation Status Report **Last Updated**: 2026-07-20 **Overall Progress**: 75% Complete (3 of 4 phases done) @@ -7,7 +7,7 @@ ## Executive Summary -The EmailProfiler migration from legacy VB.NET to modern C# .NET 8.0 Clean Architecture is **75% complete**. All core layers (Domain, Application, Infrastructure) are fully implemented with real service stubs ready for integration. Only API layer controllers and workers remain. +The MessagingService migration from legacy VB.NET to modern C# .NET 8.0 Clean Architecture is **75% complete**. All core layers (Domain, Application, Infrastructure) are fully implemented with real service stubs ready for integration. Only API layer controllers and workers remain. ### ✅ What's Working - Complete Domain model with 8 entities mapped to legacy database @@ -68,7 +68,7 @@ The EmailProfiler migration from legacy VB.NET to modern C# .NET 8.0 Clean Archi **Files**: ``` -src/DigitalData.EmailProfiler.Domain/ +src/DigitalData.MessagingService.Domain/ ├── Entities/ (8 files) ├── ValueObjects/ (3 files) ├── Enums/ (5 files) @@ -135,7 +135,7 @@ src/DigitalData.EmailProfiler.Domain/ **Files**: ``` -src/DigitalData.EmailProfiler.Application/ +src/DigitalData.MessagingService.Application/ ├── EmailProfiles/Commands/ (3 files) ├── EmailProfiles/Queries/ (2 files) ├── EmailProfiles/Validators/ (2 files) @@ -158,7 +158,7 @@ src/DigitalData.EmailProfiler.Application/ ### Phase 3: Infrastructure Layer ✅ COMPLETE (100%) **Database**: -- ✅ `EmailProfilerDbContext` - EF Core DbContext with 8 DbSets +- ✅ `MessagingServiceDbContext` - EF Core DbContext with 8 DbSets - NO `OnModelCreating` override (attribute-only configuration) - NO `SaveChangesAsync` override (Repository handles this) - Connection string: `DefaultConnection` from appsettings @@ -231,8 +231,8 @@ src/DigitalData.EmailProfiler.Application/ **Files**: ``` -src/DigitalData.EmailProfiler.Infrastructure/ -├── Persistence/EmailProfilerDbContext.cs +src/DigitalData.MessagingService.Infrastructure/ +├── Persistence/MessagingServiceDbContext.cs ├── Repositories/Repository.cs ├── Services/ (6 files) ├── Messaging/ (3 files) @@ -290,7 +290,7 @@ src/DigitalData.EmailProfiler.Infrastructure/ **Files**: ``` -src/DigitalData.EmailProfiler.API/ +src/DigitalData.MessagingService.API/ ├── Controllers/ (3 files) ├── appsettings.json ├── appsettings.Secrets.json @@ -311,7 +311,7 @@ src/DigitalData.EmailProfiler.API/ **Test Structure**: ``` -tests/DigitalData.EmailProfiler.Tests/ +tests/DigitalData.MessagingService.Tests/ ├── Domain/ │ ├── Services/MessageIdGeneratorTests.cs │ ├── ValueObjects/EmailAddressTests.cs @@ -362,7 +362,7 @@ tests/DigitalData.EmailProfiler.Tests/ ### 5. SQL Server Database ✅ AVAILABLE **Status**: Legacy database exists **Action**: Update connection string in `appsettings.Secrets.json` -**Files Affected**: `EmailProfilerDbContext.cs` +**Files Affected**: `MessagingServiceDbContext.cs` --- @@ -380,7 +380,7 @@ tests/DigitalData.EmailProfiler.Tests/ **Build Command**: ```bash -dotnet build src/DigitalData.EmailProfiler.Infrastructure/DigitalData.EmailProfiler.Infrastructure.csproj +dotnet build src/DigitalData.MessagingService.Infrastructure/DigitalData.MessagingService.Infrastructure.csproj ``` --- @@ -472,10 +472,10 @@ dotnet build src/DigitalData.EmailProfiler.Infrastructure/DigitalData.EmailProfi **What You Can Do Right Now**: 1. Build the solution: `dotnet build` -2. Review the Domain layer: `src/DigitalData.EmailProfiler.Domain/` -3. Review the Application layer: `src/DigitalData.EmailProfiler.Application/` -4. Review the Infrastructure layer: `src/DigitalData.EmailProfiler.Infrastructure/` -5. Review the API layer: `src/DigitalData.EmailProfiler.API/` +2. Review the Domain layer: `src/DigitalData.MessagingService.Domain/` +3. Review the Application layer: `src/DigitalData.MessagingService.Application/` +4. Review the Infrastructure layer: `src/DigitalData.MessagingService.Infrastructure/` +5. Review the API layer: `src/DigitalData.MessagingService.API/` **What You Need to Complete**: 1. Add Limilabs.Mail NuGet package: `dotnet add package Limilabs.Mail` diff --git a/src/DigitalData.EmailProfiler.Infrastructure/Persistence/EmailProfilerDbContext.cs b/src/DigitalData.EmailProfiler.Infrastructure/Persistence/EmailProfilerDbContext.cs deleted file mode 100644 index de19223..0000000 --- a/src/DigitalData.EmailProfiler.Infrastructure/Persistence/EmailProfilerDbContext.cs +++ /dev/null @@ -1,11 +0,0 @@ -using Microsoft.EntityFrameworkCore; - -namespace DigitalData.EmailProfiler.Infrastructure.Persistence; - -/// -/// Entity Framework Core DbContext for EmailProfiler. -/// IMPORTANT: This context maps to a LEGACY database - NO schema modifications allowed! -/// -public class EmailProfilerDbContext(DbContextOptions options) : DbContext(options) -{ -} diff --git a/src/DigitalData.EmailProfiler.API/Controllers/EmailsController.cs b/src/DigitalData.MessagingService.API/Controllers/EmailsController.cs similarity index 90% rename from src/DigitalData.EmailProfiler.API/Controllers/EmailsController.cs rename to src/DigitalData.MessagingService.API/Controllers/EmailsController.cs index 6cd0d09..1ce5ad4 100644 --- a/src/DigitalData.EmailProfiler.API/Controllers/EmailsController.cs +++ b/src/DigitalData.MessagingService.API/Controllers/EmailsController.cs @@ -1,8 +1,8 @@ -using DigitalData.EmailProfiler.Application.EmailSending.Commands; +using DigitalData.MessagingService.Application.EmailSending.Commands; using MediatR; using Microsoft.AspNetCore.Mvc; -namespace DigitalData.EmailProfiler.API.Controllers; +namespace DigitalData.MessagingService.API.Controllers; /// /// Email sending API controller diff --git a/src/DigitalData.EmailProfiler.API/DigitalData.EmailProfiler.API.csproj b/src/DigitalData.MessagingService.API/DigitalData.MessagingService.API.csproj similarity index 61% rename from src/DigitalData.EmailProfiler.API/DigitalData.EmailProfiler.API.csproj rename to src/DigitalData.MessagingService.API/DigitalData.MessagingService.API.csproj index a5e9bb2..c8099d4 100644 --- a/src/DigitalData.EmailProfiler.API/DigitalData.EmailProfiler.API.csproj +++ b/src/DigitalData.MessagingService.API/DigitalData.MessagingService.API.csproj @@ -4,7 +4,7 @@ net8.0 enable enable - dotnet-DigitalData.EmailProfiler.Service-e7ef6a9a-436f-48a1-b4f6-ec9381c8cb47 + dotnet-DigitalData.MessagingService.Service-e7ef6a9a-436f-48a1-b4f6-ec9381c8cb47 @@ -21,9 +21,9 @@ - - - + + + diff --git a/src/DigitalData.EmailProfiler.API/Middleware/ExceptionHandlingMiddleware.cs b/src/DigitalData.MessagingService.API/Middleware/ExceptionHandlingMiddleware.cs similarity index 96% rename from src/DigitalData.EmailProfiler.API/Middleware/ExceptionHandlingMiddleware.cs rename to src/DigitalData.MessagingService.API/Middleware/ExceptionHandlingMiddleware.cs index 11919c1..bc311aa 100644 --- a/src/DigitalData.EmailProfiler.API/Middleware/ExceptionHandlingMiddleware.cs +++ b/src/DigitalData.MessagingService.API/Middleware/ExceptionHandlingMiddleware.cs @@ -1,8 +1,8 @@ using System.Net; using System.Text.Json; -using DigitalData.EmailProfiler.Domain.Exceptions; +using DigitalData.MessagingService.Domain.Exceptions; -namespace DigitalData.EmailProfiler.API.Middleware; +namespace DigitalData.MessagingService.API.Middleware; /// /// Global exception handling middleware diff --git a/src/DigitalData.EmailProfiler.API/Program.cs b/src/DigitalData.MessagingService.API/Program.cs similarity index 85% rename from src/DigitalData.EmailProfiler.API/Program.cs rename to src/DigitalData.MessagingService.API/Program.cs index de7c162..bbd21a4 100644 --- a/src/DigitalData.EmailProfiler.API/Program.cs +++ b/src/DigitalData.MessagingService.API/Program.cs @@ -1,7 +1,7 @@ -using DigitalData.EmailProfiler.API.Middleware; -using DigitalData.EmailProfiler.Application; -using DigitalData.EmailProfiler.Application.Common.Dtos; -using DigitalData.EmailProfiler.Infrastructure; +using DigitalData.MessagingService.API.Middleware; +using DigitalData.MessagingService.Application; +using DigitalData.MessagingService.Application.Common.Dtos; +using DigitalData.MessagingService.Infrastructure; using Serilog; // Configure Serilog early @@ -16,7 +16,7 @@ Log.Logger = new LoggerConfiguration() try { - Log.Information("Starting EmailProfiler API"); + Log.Information("Starting MessagingService API"); var builder = WebApplication.CreateBuilder(args); @@ -71,13 +71,13 @@ try app.MapControllers(); - Log.Information("EmailProfiler API started successfully"); + Log.Information("MessagingService API started successfully"); app.Run(); } catch (Exception ex) { - Log.Fatal(ex, "EmailProfiler API failed to start"); + Log.Fatal(ex, "MessagingService API failed to start"); throw; } finally diff --git a/src/DigitalData.EmailProfiler.API/Properties/launchSettings.json b/src/DigitalData.MessagingService.API/Properties/launchSettings.json similarity index 100% rename from src/DigitalData.EmailProfiler.API/Properties/launchSettings.json rename to src/DigitalData.MessagingService.API/Properties/launchSettings.json diff --git a/src/DigitalData.EmailProfiler.API/appsettings.Development.json b/src/DigitalData.MessagingService.API/appsettings.Development.json similarity index 100% rename from src/DigitalData.EmailProfiler.API/appsettings.Development.json rename to src/DigitalData.MessagingService.API/appsettings.Development.json diff --git a/src/DigitalData.EmailProfiler.API/appsettings.json b/src/DigitalData.MessagingService.API/appsettings.json similarity index 100% rename from src/DigitalData.EmailProfiler.API/appsettings.json rename to src/DigitalData.MessagingService.API/appsettings.json diff --git a/src/DigitalData.EmailProfiler.Application/Common/Dtos/EmailAccountDto.cs b/src/DigitalData.MessagingService.Application/Common/Dtos/EmailAccountDto.cs similarity index 87% rename from src/DigitalData.EmailProfiler.Application/Common/Dtos/EmailAccountDto.cs rename to src/DigitalData.MessagingService.Application/Common/Dtos/EmailAccountDto.cs index dde72ba..7229922 100644 --- a/src/DigitalData.EmailProfiler.Application/Common/Dtos/EmailAccountDto.cs +++ b/src/DigitalData.MessagingService.Application/Common/Dtos/EmailAccountDto.cs @@ -1,4 +1,4 @@ -namespace DigitalData.EmailProfiler.Application.Common.Dtos; +namespace DigitalData.MessagingService.Application.Common.Dtos; /// /// DTO for EmailAccount query results. diff --git a/src/DigitalData.EmailProfiler.Application/Common/Events/OutgoingEmailEvent.cs b/src/DigitalData.MessagingService.Application/Common/Events/OutgoingEmailEvent.cs similarity index 89% rename from src/DigitalData.EmailProfiler.Application/Common/Events/OutgoingEmailEvent.cs rename to src/DigitalData.MessagingService.Application/Common/Events/OutgoingEmailEvent.cs index 9ad63e9..5969de1 100644 --- a/src/DigitalData.EmailProfiler.Application/Common/Events/OutgoingEmailEvent.cs +++ b/src/DigitalData.MessagingService.Application/Common/Events/OutgoingEmailEvent.cs @@ -1,4 +1,4 @@ -namespace DigitalData.EmailProfiler.Application.Common.Events; +namespace DigitalData.MessagingService.Application.Common.Events; public class OutgoingEmailEvent { diff --git a/src/DigitalData.EmailProfiler.Application/Common/Interfaces/ICommandPublisher.cs b/src/DigitalData.MessagingService.Application/Common/Interfaces/ICommandPublisher.cs similarity index 91% rename from src/DigitalData.EmailProfiler.Application/Common/Interfaces/ICommandPublisher.cs rename to src/DigitalData.MessagingService.Application/Common/Interfaces/ICommandPublisher.cs index 5fb22c7..6696f40 100644 --- a/src/DigitalData.EmailProfiler.Application/Common/Interfaces/ICommandPublisher.cs +++ b/src/DigitalData.MessagingService.Application/Common/Interfaces/ICommandPublisher.cs @@ -1,6 +1,6 @@ using MediatR; -namespace DigitalData.EmailProfiler.Application.Common.Interfaces; +namespace DigitalData.MessagingService.Application.Common.Interfaces; /// /// Interface for publishing commands to a message broker (e.g., RabbitMQ) diff --git a/src/DigitalData.EmailProfiler.Application/Common/Interfaces/IEmailService.cs b/src/DigitalData.MessagingService.Application/Common/Interfaces/IEmailService.cs similarity index 90% rename from src/DigitalData.EmailProfiler.Application/Common/Interfaces/IEmailService.cs rename to src/DigitalData.MessagingService.Application/Common/Interfaces/IEmailService.cs index 6e38d48..c7639c5 100644 --- a/src/DigitalData.EmailProfiler.Application/Common/Interfaces/IEmailService.cs +++ b/src/DigitalData.MessagingService.Application/Common/Interfaces/IEmailService.cs @@ -1,4 +1,4 @@ -namespace DigitalData.EmailProfiler.Application.Common.Interfaces; +namespace DigitalData.MessagingService.Application.Common.Interfaces; /// /// Email service interface for SMTP operations. diff --git a/src/DigitalData.EmailProfiler.Application/Common/Interfaces/IEncryptionService.cs b/src/DigitalData.MessagingService.Application/Common/Interfaces/IEncryptionService.cs similarity index 74% rename from src/DigitalData.EmailProfiler.Application/Common/Interfaces/IEncryptionService.cs rename to src/DigitalData.MessagingService.Application/Common/Interfaces/IEncryptionService.cs index 3149a18..a92fa0f 100644 --- a/src/DigitalData.EmailProfiler.Application/Common/Interfaces/IEncryptionService.cs +++ b/src/DigitalData.MessagingService.Application/Common/Interfaces/IEncryptionService.cs @@ -1,4 +1,4 @@ -namespace DigitalData.EmailProfiler.Application.Common.Interfaces; +namespace DigitalData.MessagingService.Application.Common.Interfaces; /// /// Encryption service interface for password encryption. diff --git a/src/DigitalData.EmailProfiler.Application/Common/Interfaces/IOutgoingEmailQueue.cs b/src/DigitalData.MessagingService.Application/Common/Interfaces/IOutgoingEmailQueue.cs similarity index 60% rename from src/DigitalData.EmailProfiler.Application/Common/Interfaces/IOutgoingEmailQueue.cs rename to src/DigitalData.MessagingService.Application/Common/Interfaces/IOutgoingEmailQueue.cs index 8785a6a..575cbc8 100644 --- a/src/DigitalData.EmailProfiler.Application/Common/Interfaces/IOutgoingEmailQueue.cs +++ b/src/DigitalData.MessagingService.Application/Common/Interfaces/IOutgoingEmailQueue.cs @@ -1,7 +1,7 @@ -using DigitalData.EmailProfiler.Application.Common.Events; -using DigitalData.EmailProfiler.Application.EmailSending.Commands; +using DigitalData.MessagingService.Application.Common.Events; +using DigitalData.MessagingService.Application.EmailSending.Commands; -namespace DigitalData.EmailProfiler.Application.Common.Interfaces; +namespace DigitalData.MessagingService.Application.Common.Interfaces; /// /// Email queue interface for outgoing emails. diff --git a/src/DigitalData.EmailProfiler.Application/Common/Interfaces/IPdfProcessingService.cs b/src/DigitalData.MessagingService.Application/Common/Interfaces/IPdfProcessingService.cs similarity index 93% rename from src/DigitalData.EmailProfiler.Application/Common/Interfaces/IPdfProcessingService.cs rename to src/DigitalData.MessagingService.Application/Common/Interfaces/IPdfProcessingService.cs index e6b7333..21df2f3 100644 --- a/src/DigitalData.EmailProfiler.Application/Common/Interfaces/IPdfProcessingService.cs +++ b/src/DigitalData.MessagingService.Application/Common/Interfaces/IPdfProcessingService.cs @@ -1,4 +1,4 @@ -namespace DigitalData.EmailProfiler.Application.Common.Interfaces; +namespace DigitalData.MessagingService.Application.Common.Interfaces; /// /// PDF processing service interface. diff --git a/src/DigitalData.EmailProfiler.Application/Common/Interfaces/IRepository.cs b/src/DigitalData.MessagingService.Application/Common/Interfaces/IRepository.cs similarity index 96% rename from src/DigitalData.EmailProfiler.Application/Common/Interfaces/IRepository.cs rename to src/DigitalData.MessagingService.Application/Common/Interfaces/IRepository.cs index 20d2c12..8c5f6b1 100644 --- a/src/DigitalData.EmailProfiler.Application/Common/Interfaces/IRepository.cs +++ b/src/DigitalData.MessagingService.Application/Common/Interfaces/IRepository.cs @@ -1,6 +1,6 @@ using System.Linq.Expressions; -namespace DigitalData.EmailProfiler.Application.Common.Interfaces; +namespace DigitalData.MessagingService.Application.Common.Interfaces; /// /// Generic repository interface for CRUD operations. diff --git a/src/DigitalData.EmailProfiler.Application/Common/Mappings/EmailMappingProfile.cs b/src/DigitalData.MessagingService.Application/Common/Mappings/EmailMappingProfile.cs similarity index 69% rename from src/DigitalData.EmailProfiler.Application/Common/Mappings/EmailMappingProfile.cs rename to src/DigitalData.MessagingService.Application/Common/Mappings/EmailMappingProfile.cs index 37afb9f..331efa1 100644 --- a/src/DigitalData.EmailProfiler.Application/Common/Mappings/EmailMappingProfile.cs +++ b/src/DigitalData.MessagingService.Application/Common/Mappings/EmailMappingProfile.cs @@ -1,8 +1,8 @@ using AutoMapper; -using DigitalData.EmailProfiler.Application.Common.Events; -using DigitalData.EmailProfiler.Application.EmailSending.Commands; +using DigitalData.MessagingService.Application.Common.Events; +using DigitalData.MessagingService.Application.EmailSending.Commands; -namespace DigitalData.EmailProfiler.Application.Common.Mappings; +namespace DigitalData.MessagingService.Application.Common.Mappings; /// /// AutoMapper profile for Emails diff --git a/src/DigitalData.EmailProfiler.Application/DependencyInjection.cs b/src/DigitalData.MessagingService.Application/DependencyInjection.cs similarity index 96% rename from src/DigitalData.EmailProfiler.Application/DependencyInjection.cs rename to src/DigitalData.MessagingService.Application/DependencyInjection.cs index 13176bc..ae3a9ee 100644 --- a/src/DigitalData.EmailProfiler.Application/DependencyInjection.cs +++ b/src/DigitalData.MessagingService.Application/DependencyInjection.cs @@ -3,7 +3,7 @@ using FluentValidation; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; -namespace DigitalData.EmailProfiler.Application; +namespace DigitalData.MessagingService.Application; /// /// Dependency injection configuration for Application layer. diff --git a/src/DigitalData.EmailProfiler.Application/DigitalData.EmailProfiler.Application.csproj b/src/DigitalData.MessagingService.Application/DigitalData.MessagingService.Application.csproj similarity index 87% rename from src/DigitalData.EmailProfiler.Application/DigitalData.EmailProfiler.Application.csproj rename to src/DigitalData.MessagingService.Application/DigitalData.MessagingService.Application.csproj index e30abb2..3779e89 100644 --- a/src/DigitalData.EmailProfiler.Application/DigitalData.EmailProfiler.Application.csproj +++ b/src/DigitalData.MessagingService.Application/DigitalData.MessagingService.Application.csproj @@ -7,7 +7,7 @@ - + diff --git a/src/DigitalData.EmailProfiler.Application/EmailSending/Commands/SendEmailCommand.cs b/src/DigitalData.MessagingService.Application/EmailSending/Commands/SendEmailCommand.cs similarity index 86% rename from src/DigitalData.EmailProfiler.Application/EmailSending/Commands/SendEmailCommand.cs rename to src/DigitalData.MessagingService.Application/EmailSending/Commands/SendEmailCommand.cs index 2a87957..6f4571b 100644 --- a/src/DigitalData.EmailProfiler.Application/EmailSending/Commands/SendEmailCommand.cs +++ b/src/DigitalData.MessagingService.Application/EmailSending/Commands/SendEmailCommand.cs @@ -1,9 +1,9 @@ using AutoMapper; -using DigitalData.EmailProfiler.Application.Common.Events; -using DigitalData.EmailProfiler.Application.Common.Interfaces; +using DigitalData.MessagingService.Application.Common.Events; +using DigitalData.MessagingService.Application.Common.Interfaces; using MediatR; -namespace DigitalData.EmailProfiler.Application.EmailSending.Commands; +namespace DigitalData.MessagingService.Application.EmailSending.Commands; /// /// Command to send an email (enqueue to RabbitMQ) diff --git a/src/DigitalData.EmailProfiler.Application/EmailSending/Validators/SendEmailCommandValidator.cs b/src/DigitalData.MessagingService.Application/EmailSending/Validators/SendEmailCommandValidator.cs similarity index 85% rename from src/DigitalData.EmailProfiler.Application/EmailSending/Validators/SendEmailCommandValidator.cs rename to src/DigitalData.MessagingService.Application/EmailSending/Validators/SendEmailCommandValidator.cs index b93cf00..37397b1 100644 --- a/src/DigitalData.EmailProfiler.Application/EmailSending/Validators/SendEmailCommandValidator.cs +++ b/src/DigitalData.MessagingService.Application/EmailSending/Validators/SendEmailCommandValidator.cs @@ -1,7 +1,7 @@ -using DigitalData.EmailProfiler.Application.EmailSending.Commands; +using DigitalData.MessagingService.Application.EmailSending.Commands; using FluentValidation; -namespace DigitalData.EmailProfiler.Application.EmailSending.Validators; +namespace DigitalData.MessagingService.Application.EmailSending.Validators; /// /// Validator for SendEmailCommand diff --git a/src/DigitalData.EmailProfiler.Domain/Common/BaseEntity.cs b/src/DigitalData.MessagingService.Domain/Common/BaseEntity.cs similarity index 80% rename from src/DigitalData.EmailProfiler.Domain/Common/BaseEntity.cs rename to src/DigitalData.MessagingService.Domain/Common/BaseEntity.cs index 50e7d15..9b59f1f 100644 --- a/src/DigitalData.EmailProfiler.Domain/Common/BaseEntity.cs +++ b/src/DigitalData.MessagingService.Domain/Common/BaseEntity.cs @@ -1,4 +1,4 @@ -namespace DigitalData.EmailProfiler.Domain.Common; +namespace DigitalData.MessagingService.Domain.Common; public abstract class BaseEntity { diff --git a/src/DigitalData.EmailProfiler.Domain/Common/DomainConstants.cs b/src/DigitalData.MessagingService.Domain/Common/DomainConstants.cs similarity index 89% rename from src/DigitalData.EmailProfiler.Domain/Common/DomainConstants.cs rename to src/DigitalData.MessagingService.Domain/Common/DomainConstants.cs index db55631..cafe165 100644 --- a/src/DigitalData.EmailProfiler.Domain/Common/DomainConstants.cs +++ b/src/DigitalData.MessagingService.Domain/Common/DomainConstants.cs @@ -1,4 +1,4 @@ -namespace DigitalData.EmailProfiler.Domain.Common; +namespace DigitalData.MessagingService.Domain.Common; /// /// Domain-wide constants diff --git a/src/DigitalData.EmailProfiler.Domain/Common/IAggregateRoot.cs b/src/DigitalData.MessagingService.Domain/Common/IAggregateRoot.cs similarity index 67% rename from src/DigitalData.EmailProfiler.Domain/Common/IAggregateRoot.cs rename to src/DigitalData.MessagingService.Domain/Common/IAggregateRoot.cs index a7bdc76..797ec96 100644 --- a/src/DigitalData.EmailProfiler.Domain/Common/IAggregateRoot.cs +++ b/src/DigitalData.MessagingService.Domain/Common/IAggregateRoot.cs @@ -1,4 +1,4 @@ -namespace DigitalData.EmailProfiler.Domain.Common; +namespace DigitalData.MessagingService.Domain.Common; /// /// Marker interface for aggregate roots in DDD diff --git a/src/DigitalData.EmailProfiler.Domain/Common/ValueObject.cs b/src/DigitalData.MessagingService.Domain/Common/ValueObject.cs similarity index 95% rename from src/DigitalData.EmailProfiler.Domain/Common/ValueObject.cs rename to src/DigitalData.MessagingService.Domain/Common/ValueObject.cs index f741767..425a6ff 100644 --- a/src/DigitalData.EmailProfiler.Domain/Common/ValueObject.cs +++ b/src/DigitalData.MessagingService.Domain/Common/ValueObject.cs @@ -1,4 +1,4 @@ -namespace DigitalData.EmailProfiler.Domain.Common; +namespace DigitalData.MessagingService.Domain.Common; /// /// Base class for value objects that implement equality by value diff --git a/src/DigitalData.EmailProfiler.Domain/DigitalData.EmailProfiler.Domain.csproj b/src/DigitalData.MessagingService.Domain/DigitalData.MessagingService.Domain.csproj similarity index 100% rename from src/DigitalData.EmailProfiler.Domain/DigitalData.EmailProfiler.Domain.csproj rename to src/DigitalData.MessagingService.Domain/DigitalData.MessagingService.Domain.csproj diff --git a/src/DigitalData.EmailProfiler.Domain/Enums/AttachmentStatus.cs b/src/DigitalData.MessagingService.Domain/Enums/AttachmentStatus.cs similarity index 65% rename from src/DigitalData.EmailProfiler.Domain/Enums/AttachmentStatus.cs rename to src/DigitalData.MessagingService.Domain/Enums/AttachmentStatus.cs index 076678c..e4a9dcb 100644 --- a/src/DigitalData.EmailProfiler.Domain/Enums/AttachmentStatus.cs +++ b/src/DigitalData.MessagingService.Domain/Enums/AttachmentStatus.cs @@ -1,4 +1,4 @@ -namespace DigitalData.EmailProfiler.Domain.Enums; +namespace DigitalData.MessagingService.Domain.Enums; public enum AttachmentStatus { diff --git a/src/DigitalData.EmailProfiler.Domain/Enums/AuthenticationType.cs b/src/DigitalData.MessagingService.Domain/Enums/AuthenticationType.cs similarity index 59% rename from src/DigitalData.EmailProfiler.Domain/Enums/AuthenticationType.cs rename to src/DigitalData.MessagingService.Domain/Enums/AuthenticationType.cs index 137e244..d1e91cc 100644 --- a/src/DigitalData.EmailProfiler.Domain/Enums/AuthenticationType.cs +++ b/src/DigitalData.MessagingService.Domain/Enums/AuthenticationType.cs @@ -1,4 +1,4 @@ -namespace DigitalData.EmailProfiler.Domain.Enums; +namespace DigitalData.MessagingService.Domain.Enums; public enum AuthenticationType { diff --git a/src/DigitalData.EmailProfiler.Domain/Enums/EmailStatus.cs b/src/DigitalData.MessagingService.Domain/Enums/EmailStatus.cs similarity index 73% rename from src/DigitalData.EmailProfiler.Domain/Enums/EmailStatus.cs rename to src/DigitalData.MessagingService.Domain/Enums/EmailStatus.cs index 21b7b28..31e28dd 100644 --- a/src/DigitalData.EmailProfiler.Domain/Enums/EmailStatus.cs +++ b/src/DigitalData.MessagingService.Domain/Enums/EmailStatus.cs @@ -1,4 +1,4 @@ -namespace DigitalData.EmailProfiler.Domain.Enums; +namespace DigitalData.MessagingService.Domain.Enums; public enum EmailStatus { diff --git a/src/DigitalData.EmailProfiler.Domain/Enums/ErrorCode.cs b/src/DigitalData.MessagingService.Domain/Enums/ErrorCode.cs similarity index 88% rename from src/DigitalData.EmailProfiler.Domain/Enums/ErrorCode.cs rename to src/DigitalData.MessagingService.Domain/Enums/ErrorCode.cs index 0c8da7b..789a04f 100644 --- a/src/DigitalData.EmailProfiler.Domain/Enums/ErrorCode.cs +++ b/src/DigitalData.MessagingService.Domain/Enums/ErrorCode.cs @@ -1,4 +1,4 @@ -namespace DigitalData.EmailProfiler.Domain.Enums; +namespace DigitalData.MessagingService.Domain.Enums; public enum ErrorCode { diff --git a/src/DigitalData.EmailProfiler.Domain/Enums/ProcessType.cs b/src/DigitalData.MessagingService.Domain/Enums/ProcessType.cs similarity index 79% rename from src/DigitalData.EmailProfiler.Domain/Enums/ProcessType.cs rename to src/DigitalData.MessagingService.Domain/Enums/ProcessType.cs index 96dc7c2..e54d84c 100644 --- a/src/DigitalData.EmailProfiler.Domain/Enums/ProcessType.cs +++ b/src/DigitalData.MessagingService.Domain/Enums/ProcessType.cs @@ -1,4 +1,4 @@ -namespace DigitalData.EmailProfiler.Domain.Enums; +namespace DigitalData.MessagingService.Domain.Enums; public enum ProcessType { diff --git a/src/DigitalData.EmailProfiler.Domain/Exceptions/AttachmentProcessingException.cs b/src/DigitalData.MessagingService.Domain/Exceptions/AttachmentProcessingException.cs similarity index 75% rename from src/DigitalData.EmailProfiler.Domain/Exceptions/AttachmentProcessingException.cs rename to src/DigitalData.MessagingService.Domain/Exceptions/AttachmentProcessingException.cs index 5951802..432f412 100644 --- a/src/DigitalData.EmailProfiler.Domain/Exceptions/AttachmentProcessingException.cs +++ b/src/DigitalData.MessagingService.Domain/Exceptions/AttachmentProcessingException.cs @@ -1,6 +1,6 @@ -using DigitalData.EmailProfiler.Domain.Enums; +using DigitalData.MessagingService.Domain.Enums; -namespace DigitalData.EmailProfiler.Domain.Exceptions; +namespace DigitalData.MessagingService.Domain.Exceptions; public class AttachmentProcessingException : DomainException { diff --git a/src/DigitalData.EmailProfiler.Domain/Exceptions/AuthenticationFailedException.cs b/src/DigitalData.MessagingService.Domain/Exceptions/AuthenticationFailedException.cs similarity index 86% rename from src/DigitalData.EmailProfiler.Domain/Exceptions/AuthenticationFailedException.cs rename to src/DigitalData.MessagingService.Domain/Exceptions/AuthenticationFailedException.cs index 64ea6f8..1111102 100644 --- a/src/DigitalData.EmailProfiler.Domain/Exceptions/AuthenticationFailedException.cs +++ b/src/DigitalData.MessagingService.Domain/Exceptions/AuthenticationFailedException.cs @@ -1,4 +1,4 @@ -namespace DigitalData.EmailProfiler.Domain.Exceptions; +namespace DigitalData.MessagingService.Domain.Exceptions; /// /// Exception thrown when OAuth2 authentication fails. diff --git a/src/DigitalData.EmailProfiler.Domain/Exceptions/DmsNotAvailableException.cs b/src/DigitalData.MessagingService.Domain/Exceptions/DmsNotAvailableException.cs similarity index 90% rename from src/DigitalData.EmailProfiler.Domain/Exceptions/DmsNotAvailableException.cs rename to src/DigitalData.MessagingService.Domain/Exceptions/DmsNotAvailableException.cs index f26c439..dedd6c1 100644 --- a/src/DigitalData.EmailProfiler.Domain/Exceptions/DmsNotAvailableException.cs +++ b/src/DigitalData.MessagingService.Domain/Exceptions/DmsNotAvailableException.cs @@ -1,4 +1,4 @@ -namespace DigitalData.EmailProfiler.Domain.Exceptions; +namespace DigitalData.MessagingService.Domain.Exceptions; /// /// Exception thrown when DMS (windream) is not available or not configured properly. diff --git a/src/DigitalData.EmailProfiler.Domain/Exceptions/DomainException.cs b/src/DigitalData.MessagingService.Domain/Exceptions/DomainException.cs similarity index 78% rename from src/DigitalData.EmailProfiler.Domain/Exceptions/DomainException.cs rename to src/DigitalData.MessagingService.Domain/Exceptions/DomainException.cs index 5a9ce2b..7a55a73 100644 --- a/src/DigitalData.EmailProfiler.Domain/Exceptions/DomainException.cs +++ b/src/DigitalData.MessagingService.Domain/Exceptions/DomainException.cs @@ -1,6 +1,6 @@ -using DigitalData.EmailProfiler.Domain.Enums; +using DigitalData.MessagingService.Domain.Enums; -namespace DigitalData.EmailProfiler.Domain.Exceptions; +namespace DigitalData.MessagingService.Domain.Exceptions; public class DomainException : Exception { diff --git a/src/DigitalData.EmailProfiler.Domain/Exceptions/InvalidPdfException.cs b/src/DigitalData.MessagingService.Domain/Exceptions/InvalidPdfException.cs similarity index 85% rename from src/DigitalData.EmailProfiler.Domain/Exceptions/InvalidPdfException.cs rename to src/DigitalData.MessagingService.Domain/Exceptions/InvalidPdfException.cs index 2074353..ac88008 100644 --- a/src/DigitalData.EmailProfiler.Domain/Exceptions/InvalidPdfException.cs +++ b/src/DigitalData.MessagingService.Domain/Exceptions/InvalidPdfException.cs @@ -1,4 +1,4 @@ -namespace DigitalData.EmailProfiler.Domain.Exceptions; +namespace DigitalData.MessagingService.Domain.Exceptions; /// /// Exception thrown when a PDF file is invalid or corrupted. diff --git a/src/DigitalData.EmailProfiler.Domain/Exceptions/NotFoundException.cs b/src/DigitalData.MessagingService.Domain/Exceptions/NotFoundException.cs similarity index 89% rename from src/DigitalData.EmailProfiler.Domain/Exceptions/NotFoundException.cs rename to src/DigitalData.MessagingService.Domain/Exceptions/NotFoundException.cs index 5cbf9d0..d065f52 100644 --- a/src/DigitalData.EmailProfiler.Domain/Exceptions/NotFoundException.cs +++ b/src/DigitalData.MessagingService.Domain/Exceptions/NotFoundException.cs @@ -1,4 +1,4 @@ -namespace DigitalData.EmailProfiler.Domain.Exceptions; +namespace DigitalData.MessagingService.Domain.Exceptions; /// /// Exception thrown when a requested entity is not found. diff --git a/src/DigitalData.EmailProfiler.Domain/Exceptions/ValidationException.cs b/src/DigitalData.MessagingService.Domain/Exceptions/ValidationException.cs similarity index 76% rename from src/DigitalData.EmailProfiler.Domain/Exceptions/ValidationException.cs rename to src/DigitalData.MessagingService.Domain/Exceptions/ValidationException.cs index 8b82244..81f176a 100644 --- a/src/DigitalData.EmailProfiler.Domain/Exceptions/ValidationException.cs +++ b/src/DigitalData.MessagingService.Domain/Exceptions/ValidationException.cs @@ -1,6 +1,6 @@ -using DigitalData.EmailProfiler.Domain.Enums; +using DigitalData.MessagingService.Domain.Enums; -namespace DigitalData.EmailProfiler.Domain.Exceptions; +namespace DigitalData.MessagingService.Domain.Exceptions; public class ValidationException : DomainException { diff --git a/src/DigitalData.EmailProfiler.Domain/Services/MessageIdGenerator.cs b/src/DigitalData.MessagingService.Domain/Services/MessageIdGenerator.cs similarity index 88% rename from src/DigitalData.EmailProfiler.Domain/Services/MessageIdGenerator.cs rename to src/DigitalData.MessagingService.Domain/Services/MessageIdGenerator.cs index fcbf9fb..84313ec 100644 --- a/src/DigitalData.EmailProfiler.Domain/Services/MessageIdGenerator.cs +++ b/src/DigitalData.MessagingService.Domain/Services/MessageIdGenerator.cs @@ -1,6 +1,6 @@ -using DigitalData.EmailProfiler.Domain.ValueObjects; +using DigitalData.MessagingService.Domain.ValueObjects; -namespace DigitalData.EmailProfiler.Domain.Services; +namespace DigitalData.MessagingService.Domain.Services; public interface IMessageIdGenerator { diff --git a/src/DigitalData.EmailProfiler.Domain/ValueObjects/EmailAddress.cs b/src/DigitalData.MessagingService.Domain/ValueObjects/EmailAddress.cs similarity index 86% rename from src/DigitalData.EmailProfiler.Domain/ValueObjects/EmailAddress.cs rename to src/DigitalData.MessagingService.Domain/ValueObjects/EmailAddress.cs index aa647f0..b33fb61 100644 --- a/src/DigitalData.EmailProfiler.Domain/ValueObjects/EmailAddress.cs +++ b/src/DigitalData.MessagingService.Domain/ValueObjects/EmailAddress.cs @@ -1,8 +1,8 @@ using System.ComponentModel.DataAnnotations; -using DigitalData.EmailProfiler.Domain.Common; -using DigitalData.EmailProfiler.Domain.Exceptions; +using DigitalData.MessagingService.Domain.Common; +using DigitalData.MessagingService.Domain.Exceptions; -namespace DigitalData.EmailProfiler.Domain.ValueObjects; +namespace DigitalData.MessagingService.Domain.ValueObjects; /// /// Value object representing an email address with validation diff --git a/src/DigitalData.EmailProfiler.Domain/ValueObjects/MessageId.cs b/src/DigitalData.MessagingService.Domain/ValueObjects/MessageId.cs similarity index 91% rename from src/DigitalData.EmailProfiler.Domain/ValueObjects/MessageId.cs rename to src/DigitalData.MessagingService.Domain/ValueObjects/MessageId.cs index 9b2789b..0bfecb0 100644 --- a/src/DigitalData.EmailProfiler.Domain/ValueObjects/MessageId.cs +++ b/src/DigitalData.MessagingService.Domain/ValueObjects/MessageId.cs @@ -1,8 +1,8 @@ using System.Security.Cryptography; using System.Text; -using DigitalData.EmailProfiler.Domain.Common; +using DigitalData.MessagingService.Domain.Common; -namespace DigitalData.EmailProfiler.Domain.ValueObjects; +namespace DigitalData.MessagingService.Domain.ValueObjects; /// /// Value object representing a unique message identifier with hash generation diff --git a/src/DigitalData.EmailProfiler.Infrastructure/DependencyInjection.cs b/src/DigitalData.MessagingService.Infrastructure/DependencyInjection.cs similarity index 79% rename from src/DigitalData.EmailProfiler.Infrastructure/DependencyInjection.cs rename to src/DigitalData.MessagingService.Infrastructure/DependencyInjection.cs index 66ec492..0f29092 100644 --- a/src/DigitalData.EmailProfiler.Infrastructure/DependencyInjection.cs +++ b/src/DigitalData.MessagingService.Infrastructure/DependencyInjection.cs @@ -1,13 +1,13 @@ -using DigitalData.EmailProfiler.Application.Common.Interfaces; -using DigitalData.EmailProfiler.Infrastructure.Messaging; -using DigitalData.EmailProfiler.Infrastructure.Queue; -using DigitalData.EmailProfiler.Infrastructure.Services; -using DigitalData.EmailProfiler.Infrastructure.Services.Background; +using DigitalData.MessagingService.Application.Common.Interfaces; +using DigitalData.MessagingService.Infrastructure.Messaging; +using DigitalData.MessagingService.Infrastructure.Queue; +using DigitalData.MessagingService.Infrastructure.Services; +using DigitalData.MessagingService.Infrastructure.Services.Background; using Microsoft.AspNetCore.DataProtection; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; -namespace DigitalData.EmailProfiler.Infrastructure; +namespace DigitalData.MessagingService.Infrastructure; /// /// Dependency injection configuration for Infrastructure layer @@ -41,7 +41,7 @@ public static class DependencyInjection // --- Data Protection (for encryption) --- services.AddDataProtection() .PersistKeysToFileSystem(new DirectoryInfo(@"C:\ProgramData\EmailService\Keys")) - .SetApplicationName("EmailProfiler"); + .SetApplicationName("MessagingService"); // Register Background Workers services.AddHostedService(); diff --git a/src/DigitalData.EmailProfiler.Infrastructure/DigitalData.EmailProfiler.Infrastructure.csproj b/src/DigitalData.MessagingService.Infrastructure/DigitalData.MessagingService.Infrastructure.csproj similarity index 86% rename from src/DigitalData.EmailProfiler.Infrastructure/DigitalData.EmailProfiler.Infrastructure.csproj rename to src/DigitalData.MessagingService.Infrastructure/DigitalData.MessagingService.Infrastructure.csproj index 6b0369a..55f40f3 100644 --- a/src/DigitalData.EmailProfiler.Infrastructure/DigitalData.EmailProfiler.Infrastructure.csproj +++ b/src/DigitalData.MessagingService.Infrastructure/DigitalData.MessagingService.Infrastructure.csproj @@ -7,8 +7,8 @@ - - + + diff --git a/src/DigitalData.EmailProfiler.Infrastructure/Messaging/RabbitMqConfiguration.cs b/src/DigitalData.MessagingService.Infrastructure/Messaging/RabbitMqConfiguration.cs similarity index 95% rename from src/DigitalData.EmailProfiler.Infrastructure/Messaging/RabbitMqConfiguration.cs rename to src/DigitalData.MessagingService.Infrastructure/Messaging/RabbitMqConfiguration.cs index 251c883..b1e9794 100644 --- a/src/DigitalData.EmailProfiler.Infrastructure/Messaging/RabbitMqConfiguration.cs +++ b/src/DigitalData.MessagingService.Infrastructure/Messaging/RabbitMqConfiguration.cs @@ -1,4 +1,4 @@ -namespace DigitalData.EmailProfiler.Infrastructure.Messaging; +namespace DigitalData.MessagingService.Infrastructure.Messaging; /// /// Configuration for RabbitMQ connection diff --git a/src/DigitalData.MessagingService.Infrastructure/Persistence/MessagingServiceDbContext.cs b/src/DigitalData.MessagingService.Infrastructure/Persistence/MessagingServiceDbContext.cs new file mode 100644 index 0000000..b94148f --- /dev/null +++ b/src/DigitalData.MessagingService.Infrastructure/Persistence/MessagingServiceDbContext.cs @@ -0,0 +1,11 @@ +using Microsoft.EntityFrameworkCore; + +namespace DigitalData.MessagingService.Infrastructure.Persistence; + +/// +/// Entity Framework Core DbContext for MessagingService. +/// IMPORTANT: This context maps to a LEGACY database - NO schema modifications allowed! +/// +public class MessagingServiceDbContext(DbContextOptions options) : DbContext(options) +{ +} diff --git a/src/DigitalData.EmailProfiler.Infrastructure/Queue/OutgoingEmailQueue.cs b/src/DigitalData.MessagingService.Infrastructure/Queue/OutgoingEmailQueue.cs similarity index 97% rename from src/DigitalData.EmailProfiler.Infrastructure/Queue/OutgoingEmailQueue.cs rename to src/DigitalData.MessagingService.Infrastructure/Queue/OutgoingEmailQueue.cs index ba33c3e..d8a8c17 100644 --- a/src/DigitalData.EmailProfiler.Infrastructure/Queue/OutgoingEmailQueue.cs +++ b/src/DigitalData.MessagingService.Infrastructure/Queue/OutgoingEmailQueue.cs @@ -1,14 +1,14 @@ using System.Text; using System.Text.Json; -using DigitalData.EmailProfiler.Application.Common.Interfaces; -using DigitalData.EmailProfiler.Infrastructure.Messaging; +using DigitalData.MessagingService.Application.Common.Interfaces; +using DigitalData.MessagingService.Infrastructure.Messaging; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using RabbitMQ.Client; using RabbitMQ.Client.Events; -using DigitalData.EmailProfiler.Application.Common.Events; +using DigitalData.MessagingService.Application.Common.Events; -namespace DigitalData.EmailProfiler.Infrastructure.Queue; +namespace DigitalData.MessagingService.Infrastructure.Queue; /// /// RabbitMQ-based email queue implementation for outgoing emails. diff --git a/src/DigitalData.EmailProfiler.Infrastructure/Repositories/Repository.cs b/src/DigitalData.MessagingService.Infrastructure/Repositories/Repository.cs similarity index 93% rename from src/DigitalData.EmailProfiler.Infrastructure/Repositories/Repository.cs rename to src/DigitalData.MessagingService.Infrastructure/Repositories/Repository.cs index 3c9be5c..6605ada 100644 --- a/src/DigitalData.EmailProfiler.Infrastructure/Repositories/Repository.cs +++ b/src/DigitalData.MessagingService.Infrastructure/Repositories/Repository.cs @@ -1,17 +1,17 @@ using System.Linq.Expressions; using AutoMapper; -using DigitalData.EmailProfiler.Application.Common.Interfaces; -using DigitalData.EmailProfiler.Domain.Exceptions; -using DigitalData.EmailProfiler.Infrastructure.Persistence; +using DigitalData.MessagingService.Application.Common.Interfaces; +using DigitalData.MessagingService.Domain.Exceptions; +using DigitalData.MessagingService.Infrastructure.Persistence; using Microsoft.EntityFrameworkCore; -namespace DigitalData.EmailProfiler.Infrastructure.Repositories; +namespace DigitalData.MessagingService.Infrastructure.Repositories; /// /// Generic repository implementation with AutoMapper-based CRUD operations. /// IMPORTANT: Each operation auto-saves changes - NO explicit SaveChangesAsync needed! /// -public class Repository(EmailProfilerDbContext Context, IMapper Mapper) : IRepository where TEntity : class +public class Repository(MessagingServiceDbContext Context, IMapper Mapper) : IRepository where TEntity : class { private readonly DbSet _dbSet = Context.Set(); diff --git a/src/DigitalData.EmailProfiler.Infrastructure/Services/Background/AsyncInitWorker.cs b/src/DigitalData.MessagingService.Infrastructure/Services/Background/AsyncInitWorker.cs similarity index 86% rename from src/DigitalData.EmailProfiler.Infrastructure/Services/Background/AsyncInitWorker.cs rename to src/DigitalData.MessagingService.Infrastructure/Services/Background/AsyncInitWorker.cs index 66a5cb8..14084b5 100644 --- a/src/DigitalData.EmailProfiler.Infrastructure/Services/Background/AsyncInitWorker.cs +++ b/src/DigitalData.MessagingService.Infrastructure/Services/Background/AsyncInitWorker.cs @@ -1,9 +1,9 @@ -using DigitalData.EmailProfiler.Application.Common.Interfaces; -using DigitalData.EmailProfiler.Infrastructure.Queue; +using DigitalData.MessagingService.Application.Common.Interfaces; +using DigitalData.MessagingService.Infrastructure.Queue; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; -namespace DigitalData.EmailProfiler.Infrastructure.Services.Background; +namespace DigitalData.MessagingService.Infrastructure.Services.Background; /// /// A hosted background service responsible for initializing the outgoing email queue consumer. diff --git a/src/DigitalData.EmailProfiler.Infrastructure/Services/DataProtectionEncryptionService.cs b/src/DigitalData.MessagingService.Infrastructure/Services/DataProtectionEncryptionService.cs similarity index 76% rename from src/DigitalData.EmailProfiler.Infrastructure/Services/DataProtectionEncryptionService.cs rename to src/DigitalData.MessagingService.Infrastructure/Services/DataProtectionEncryptionService.cs index 7cfa5a1..d0ca9fe 100644 --- a/src/DigitalData.EmailProfiler.Infrastructure/Services/DataProtectionEncryptionService.cs +++ b/src/DigitalData.MessagingService.Infrastructure/Services/DataProtectionEncryptionService.cs @@ -1,7 +1,7 @@ -using DigitalData.EmailProfiler.Application.Common.Interfaces; +using DigitalData.MessagingService.Application.Common.Interfaces; using Microsoft.AspNetCore.DataProtection; -namespace DigitalData.EmailProfiler.Infrastructure.Services; +namespace DigitalData.MessagingService.Infrastructure.Services; /// /// Encryption service using ASP.NET Core Data Protection API. @@ -9,7 +9,7 @@ namespace DigitalData.EmailProfiler.Infrastructure.Services; /// public class DataProtectionEncryptionService(IDataProtectionProvider Provider) : IEncryptionService { - private readonly IDataProtector Protector = Provider.CreateProtector("EmailProfiler.Passwords"); + private readonly IDataProtector Protector = Provider.CreateProtector("MessagingService.Passwords"); public string Encrypt(string plainText) { diff --git a/src/DigitalData.EmailProfiler.Infrastructure/Services/DevExpressPdfProcessingService.cs b/src/DigitalData.MessagingService.Infrastructure/Services/DevExpressPdfProcessingService.cs similarity index 94% rename from src/DigitalData.EmailProfiler.Infrastructure/Services/DevExpressPdfProcessingService.cs rename to src/DigitalData.MessagingService.Infrastructure/Services/DevExpressPdfProcessingService.cs index 3e1e131..c8e5e88 100644 --- a/src/DigitalData.EmailProfiler.Infrastructure/Services/DevExpressPdfProcessingService.cs +++ b/src/DigitalData.MessagingService.Infrastructure/Services/DevExpressPdfProcessingService.cs @@ -1,8 +1,8 @@ using DevExpress.Pdf; -using DigitalData.EmailProfiler.Application.Common.Interfaces; -using DigitalData.EmailProfiler.Domain.Exceptions; +using DigitalData.MessagingService.Application.Common.Interfaces; +using DigitalData.MessagingService.Domain.Exceptions; -namespace DigitalData.EmailProfiler.Infrastructure.Services; +namespace DigitalData.MessagingService.Infrastructure.Services; /// /// PDF processing service using DevExpress.Pdf. diff --git a/src/DigitalData.EmailProfiler.Infrastructure/Services/LimilabsEmailService.cs b/src/DigitalData.MessagingService.Infrastructure/Services/LimilabsEmailService.cs similarity index 93% rename from src/DigitalData.EmailProfiler.Infrastructure/Services/LimilabsEmailService.cs rename to src/DigitalData.MessagingService.Infrastructure/Services/LimilabsEmailService.cs index 7ebd8a7..0268553 100644 --- a/src/DigitalData.EmailProfiler.Infrastructure/Services/LimilabsEmailService.cs +++ b/src/DigitalData.MessagingService.Infrastructure/Services/LimilabsEmailService.cs @@ -1,13 +1,13 @@ using System.Text; -using DigitalData.EmailProfiler.Application.Common.Dtos; -using DigitalData.EmailProfiler.Application.Common.Interfaces; -using DigitalData.EmailProfiler.Domain.Exceptions; +using DigitalData.MessagingService.Application.Common.Dtos; +using DigitalData.MessagingService.Application.Common.Interfaces; +using DigitalData.MessagingService.Domain.Exceptions; using Limilabs.Client.SMTP; using Limilabs.Mail; using Limilabs.Mail.Headers; using Microsoft.Extensions.Options; -namespace DigitalData.EmailProfiler.Infrastructure.Services; +namespace DigitalData.MessagingService.Infrastructure.Services; /// /// Email service using Limilabs Mail.dll for SMTP operations (send-only). diff --git a/tests/DigitalData.EmailProfiler.Tests/DigitalData.EmailProfiler.Tests.csproj b/tests/DigitalData.MessagingService.Tests/DigitalData.MessagingService.Tests.csproj similarity index 57% rename from tests/DigitalData.EmailProfiler.Tests/DigitalData.EmailProfiler.Tests.csproj rename to tests/DigitalData.MessagingService.Tests/DigitalData.MessagingService.Tests.csproj index f2a69b8..41923f9 100644 --- a/tests/DigitalData.EmailProfiler.Tests/DigitalData.EmailProfiler.Tests.csproj +++ b/tests/DigitalData.MessagingService.Tests/DigitalData.MessagingService.Tests.csproj @@ -17,10 +17,10 @@ - - - - + + + +