using MediatR;
using MktZaloService.Infrastructure.Zalo.Models;

namespace MktZaloService.API.Application.Commands.Webhook;

/// <summary>
/// EN: Command to process incoming Zalo webhook event.
/// VI: Command để xử lý sự kiện webhook đến từ Zalo.
/// </summary>
public record ProcessWebhookCommand(
    ZaloWebhookEvent WebhookEvent,
    string RawBody,
    string Signature
) : IRequest<ProcessWebhookResult>;

/// <summary>
/// EN: Result of webhook processing.
/// VI: Kết quả xử lý webhook.
/// </summary>
public record ProcessWebhookResult(
    bool Success,
    string? MessageId = null,
    string? Error = null
);
