using MediatR;
using FacebookService.API.Application.Dtos;

namespace FacebookService.API.Application.Commands;

/// <summary>
/// EN: Command to update customer tags and custom fields.
/// VI: Command để cập nhật tags và custom fields của customer.
/// </summary>
/// <param name="CustomerId">EN: Customer ID / VI: ID customer</param>
/// <param name="Tags">EN: New tags (replaces existing) / VI: Tags mới (thay thế hiện có)</param>
/// <param name="CustomFields">EN: Custom fields to set / VI: Custom fields để đặt</param>
public record UpdateCustomerCommand(
    Guid CustomerId,
    IEnumerable<string>? Tags = null,
    Dictionary<string, string>? CustomFields = null
) : IRequest<UpdateCustomerCommandResult>;

/// <summary>
/// EN: Result of UpdateCustomerCommand.
/// VI: Kết quả của UpdateCustomerCommand.
/// </summary>
/// <param name="Success">EN: Whether update was successful / VI: Cập nhật có thành công không</param>
/// <param name="CustomerId">EN: Updated customer ID / VI: ID customer đã cập nhật</param>
public record UpdateCustomerCommandResult(bool Success, Guid CustomerId);
