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

namespace FacebookService.API.Application.Commands;

/// <summary>
/// EN: Command to create a new Customer from Facebook user ID.
/// VI: Command để tạo một Customer mới từ Facebook user ID.
/// </summary>
/// <param name="FacebookUserId">EN: Facebook user ID / VI: ID người dùng Facebook</param>
/// <param name="Name">EN: Optional display name / VI: Tên hiển thị tùy chọn</param>
/// <param name="Email">EN: Optional email / VI: Email tùy chọn</param>
/// <param name="Phone">EN: Optional phone / VI: Điện thoại tùy chọn</param>
/// <param name="ProfilePicUrl">EN: Optional profile picture URL / VI: URL ảnh đại diện tùy chọn</param>
/// <param name="Locale">EN: Optional locale / VI: Locale tùy chọn</param>
/// <param name="Timezone">EN: Optional timezone / VI: Timezone tùy chọn</param>
public record CreateCustomerCommand(
    string FacebookUserId,
    string? Name = null,
    string? Email = null,
    string? Phone = null,
    string? ProfilePicUrl = null,
    string? Locale = null,
    string? Timezone = null
) : IRequest<CreateCustomerCommandResult>;

/// <summary>
/// EN: Result of CreateCustomerCommand.
/// VI: Kết quả của CreateCustomerCommand.
/// </summary>
/// <param name="Id">EN: Created customer ID / VI: ID customer đã tạo</param>
/// <param name="IsNew">EN: True if customer was created, false if already existed / VI: True nếu customer được tạo mới</param>
public record CreateCustomerCommandResult(Guid Id, bool IsNew);
