diff --git a/src/ReC.Application/RecActions/Commands/InvokeBatchRecActionViewsCommand.cs b/src/ReC.Application/RecActions/Commands/InvokeBatchRecActionViewsCommand.cs index b30a8bb..e134c5d 100644 --- a/src/ReC.Application/RecActions/Commands/InvokeBatchRecActionViewsCommand.cs +++ b/src/ReC.Application/RecActions/Commands/InvokeBatchRecActionViewsCommand.cs @@ -1,5 +1,6 @@ -using DigitalData.Core.Abstractions.Interfaces; -using MediatR; +using MediatR; +using Microsoft.Extensions.Logging; +using ReC.Application.Common.Exceptions; using ReC.Application.RecActions.Queries; using ReC.Domain.Constants; @@ -10,7 +11,7 @@ public record InvokeBatchRecActionViewsCommand : IRequest public long ProfileId { get; init; } } -public class InvokeRecActionViewsCommandHandler(ISender sender) : IRequestHandler +public class InvokeRecActionViewsCommandHandler(ISender sender, ILogger? logger = null) : IRequestHandler { public async Task Handle(InvokeBatchRecActionViewsCommand request, CancellationToken cancel) { @@ -22,11 +23,24 @@ public class InvokeRecActionViewsCommandHandler(ISender sender) : IRequestHandle { await sender.Send(new InvokeRecActionViewCommand() { Action = action }, cancel); } - catch + catch (RecActionException ex) { switch (action.ErrorAction) { case ErrorAction.Continue: + logger?.LogWarning(ex, "Rec action failed but continuing. ActionId: {ActionId}, ProfileId: {ProfileId}", ex.ActionId, ex.ProfileId); + break; + default: + // Rethrow the exception to stop processing further actions + throw; + } + } + catch (Exception ex) + { + switch (action.ErrorAction) + { + case ErrorAction.Continue: + logger?.LogError(ex, "Unexpected error during rec action. ActionId: {ActionId}, ProfileId: {ProfileId}", action.Id, action.ProfileId); break; default: // Rethrow the exception to stop processing further actions