using Meezi.Core.Enums;



namespace Meezi.API.Models.Tables;



public record TableDto(

    string Id,

    string BranchId,

    string? SectionId,

    string? SectionName,

    int SortOrder,

    string Number,

    int Capacity,

    string? Floor,

    string QrCode,

    string QrCodeUrl,

    string? ImageUrl,

    string? VideoUrl,

    bool IsActive);



public record CreateTableRequest(

    string? BranchId,

    string Number,

    int Capacity = 4,

    string? Floor = null,

    bool IsActive = true);



public record CreateBranchTableRequest(

    string Number,

    int Capacity = 4,

    string? Floor = null,

    string? SectionId = null,

    int SortOrder = 0,

    bool IsActive = true);



public record PatchTableRequest(

    string? Number,

    int? Capacity,

    string? Floor,

    string? BranchId,

    string? ImageUrl,

    string? VideoUrl,

    bool? IsActive,

    bool? IsCleaning);



public record PatchBranchTableRequest(

    string? Number,

    int? Capacity,

    string? Floor,

    string? SectionId,

    int? SortOrder,

    string? ImageUrl,

    string? VideoUrl,

    bool? IsActive,

    bool? IsCleaning);



public record TableSectionDto(

    string Id,

    string BranchId,

    string Name,

    int SortOrder,

    bool IsActive,

    int TableCount);



public record CreateTableSectionRequest(string Name, int SortOrder = 0);



public record PatchTableSectionRequest(

    string? Name,

    int? SortOrder,

    bool? IsActive);



public record SetTableCleaningRequest(bool IsCleaning);



public record QrResolveResponse(
    string CafeId,
    string CafeSlug,
    string TableId,
    string TableNumber,
    string TableName,
    string BranchId,
    string BranchName,
    string CafeName,
    string PrimaryColor,
    string? LogoUrl,
    string WelcomeText,
    string? WifiPassword,
    string? Address,
    bool IsCleaning);



public record TableCurrentOrderSummary(
    string OrderId,
    OrderStatus Status,
    decimal Total,
    string? GuestLabel,
    OrderSource? Source = null);



public record TableBoardDto(

    string Id,

    string BranchId,

    string? SectionId,

    string? SectionName,

    int SortOrder,

    string Number,

    int Capacity,

    string? Floor,

    string QrCode,

    string QrCodeUrl,

    string? ImageUrl,

    string? VideoUrl,

    bool IsActive,

    TableBoardStatus Status,

    TableCurrentOrderSummary? CurrentOrder,

    bool IsCleaning);



public record BranchTableOperationResult<T>(bool Success, T? Data, string? ErrorCode, string? Message);


