// EN: Command to create a new shop.
// VI: Command để tạo shop mới.

using MediatR;

namespace MerchantService.API.Application.Commands.Shops;

/// <summary>
/// EN: Command to create a new shop.
/// VI: Command để tạo shop mới.
/// </summary>
public record CreateShopCommand : IRequest<CreateShopResult>
{
    /// <summary>
    /// EN: Shop name.
    /// VI: Tên shop.
    /// </summary>
    public string Name { get; init; } = null!;
    
    /// <summary>
    /// EN: URL-friendly slug.
    /// VI: Slug thân thiện URL.
    /// </summary>
    public string Slug { get; init; } = null!;
    
    /// <summary>
    /// EN: Shop type (OnlineOnly, PhysicalOnly, Hybrid).
    /// VI: Loại shop (OnlineOnly, PhysicalOnly, Hybrid).
    /// </summary>
    public string Type { get; init; } = "Hybrid";
    
    /// <summary>
    /// EN: Business category.
    /// VI: Ngành nghề kinh doanh.
    /// </summary>
    public string Category { get; init; } = "Other";
    
    /// <summary>
    /// EN: Shop description.
    /// VI: Mô tả shop.
    /// </summary>
    public string? Description { get; init; }
    
    /// <summary>
    /// EN: Phone number.
    /// VI: Số điện thoại.
    /// </summary>
    public string? Phone { get; init; }
    
    /// <summary>
    /// EN: Email address.
    /// VI: Địa chỉ email.
    /// </summary>
    public string? Email { get; init; }
    
    /// <summary>
    /// EN: Website URL.
    /// VI: URL website.
    /// </summary>
    public string? Website { get; init; }
}

/// <summary>
/// EN: Result of shop creation.
/// VI: Kết quả tạo shop.
/// </summary>
public record CreateShopResult(
    Guid ShopId,
    string Name,
    string Slug,
    string Status
);
