using System.Collections;
using DigitalData.Core.Exceptions;
using MediatR;
namespace EnvelopeGenerator.Application.Common.Extensions;
///
/// Extension methods for that enforce non-null and non-empty responses.
///
public static class MediatorExtensions
{
///
/// Sends a request via MediatR and throws when the response is null or an empty collection.
///
/// The expected response type.
/// The mediator instance.
/// The MediatR request whose response may be null.
/// Optional message for the .
/// Cancellation token.
/// A guaranteed non-null .
/// Thrown when the response is null or an empty collection.
public static async Task SendOrNotFoundAsync(this IMediator mediator, IRequest request, string? exceptionMessage, CancellationToken cancellationToken = default)
{
if(await mediator.Send(request, cancellationToken) is TResponse res)
{
if(res is IEnumerable enumerable && !enumerable.Cast