- Consolidated commands and handlers into single files for better organization. - Updated file naming conventions for commands and queries. - Added explicit Git operation rules to prevent automatic commits/pushes. - Introduced new projects and restructured solution file (`legacy` folder). - Refactored `CreateEmailAccountCommand`, `ProcessEmailCommand`, and others to use `IUnitOfWork`. - Enhanced `ProcessEmailCommandHandler` with attachment validation and error handling. - Removed redundant handler files after consolidation. - Improved code consistency and added `TODO` comments for future enhancements.
40 lines
1.5 KiB
C#
40 lines
1.5 KiB
C#
using DigitalData.EmailProfiler.Application.Interfaces.Repositories;
|
|
using DigitalData.EmailProfiler.Domain.Exceptions;
|
|
using MediatR;
|
|
|
|
namespace DigitalData.EmailProfiler.Application.Features.EmailProfiles.Commands;
|
|
|
|
/// <summary>
|
|
/// Command to update an existing email profile.
|
|
/// </summary>
|
|
public record UpdateEmailProfileCommand : IRequest<Unit>
|
|
{
|
|
public int Id { get; init; }
|
|
public string ProfileName { get; init; } = string.Empty;
|
|
public string? ValidationSql { get; init; }
|
|
public int PollIntervalMinutes { get; init; }
|
|
public bool IsActive { get; init; }
|
|
}
|
|
|
|
public class UpdateEmailProfileCommandHandler(IUnitOfWork unitOfWork)
|
|
: IRequestHandler<UpdateEmailProfileCommand, Unit>
|
|
{
|
|
public async Task<Unit> Handle(UpdateEmailProfileCommand request, CancellationToken cancellationToken)
|
|
{
|
|
var profile = await unitOfWork.EmailProfiles.GetByIdAsync(request.Id, cancellationToken)
|
|
?? throw new DomainException($"Email profile with ID {request.Id} not found");
|
|
|
|
profile.ProfileName = request.ProfileName;
|
|
profile.ValidationSql = request.ValidationSql;
|
|
profile.PollIntervalMinutes = request.PollIntervalMinutes;
|
|
profile.IsActive = request.IsActive;
|
|
profile.ChangedWhen = DateTime.Now;
|
|
profile.ChangedWho = "System"; // TODO: Get from current user context
|
|
|
|
await unitOfWork.EmailProfiles.UpdateAsync(profile, cancellationToken);
|
|
await unitOfWork.SaveChangesAsync(cancellationToken);
|
|
|
|
return Unit.Value;
|
|
}
|
|
}
|