namespace Meezi.Core.Authorization;

/// <summary>
/// Capabilities a café employee can be granted. These are the single source of
/// truth for authorization — controllers check a <see cref="Permission"/> rather
/// than hard-coding role names, so the role→capability mapping lives in exactly
/// one place (<see cref="RolePermissions"/>).
/// </summary>
public enum Permission
{
    // Café-level administration (Owner only)
    ManageCafeSettings,
    ManageBilling,
    ManageBranches,

    // Management (Owner + Manager)
    ManageStaff,
    ManageMenu,
    ManageInventory,
    ManageExpenses,
    ManageTaxes,
    ManageCoupons,
    ManageReservations,
    ManageTables,
    ViewReports,
    ReviewLeave,
    ManageSalaries,
    ManagePrintSettings,

    // Front-of-house operations
    ProcessOrders,
    HandlePayments,
    OperateRegister,
    ManageQueue,

    // Kitchen
    ViewKitchen,

    // Delivery
    HandleDelivery,
}
