package de.effigenix.domain.usermanagement;

/**
 * Predefined role names for the Effigenix ERP system.
 * Based on the 11 Bounded Contexts (7 Core, 3 Supporting, 3 Generic).
 *
 * Each role maps to a set of Permissions that control access to specific actions
 * across different Bounded Contexts.
 */
public enum RoleName {
    /**
     * System Administrator - full access to all features.
     */
    ADMIN,

    /**
     * Production Manager - manages recipes, batches, and production orders.
     * Permissions: RECIPE_*, BATCH_*, PRODUCTION_ORDER_*, STOCK_READ
     */
    PRODUCTION_MANAGER,

    /**
     * Production Worker - executes recipes and creates batches.
     * Permissions: RECIPE_READ, BATCH_READ/WRITE/COMPLETE, PRODUCTION_ORDER_READ
     */
    PRODUCTION_WORKER,

    /**
     * Quality Manager - HACCP compliance, quality assurance.
     * Permissions: HACCP_*, TEMPERATURE_LOG_*, CLEANING_RECORD_*, GOODS_INSPECTION_*
     */
    QUALITY_MANAGER,

    /**
     * Quality Inspector - records measurements and inspections.
     * Permissions: TEMPERATURE_LOG_*, CLEANING_RECORD_READ, GOODS_INSPECTION_*
     */
    QUALITY_INSPECTOR,

    /**
     * Procurement Manager - manages purchasing and suppliers.
     * Permissions: PURCHASE_ORDER_*, GOODS_RECEIPT_*, SUPPLIER_*, STOCK_READ
     */
    PROCUREMENT_MANAGER,

    /**
     * Warehouse Worker - manages inventory and stock.
     * Permissions: STOCK_*, STOCK_MOVEMENT_*, INVENTORY_COUNT_*
     */
    WAREHOUSE_WORKER,

    /**
     * Sales Manager - manages orders, invoices, and customers.
     * Permissions: ORDER_*, INVOICE_*, CUSTOMER_*, STOCK_READ
     */
    SALES_MANAGER,

    /**
     * Sales Staff - creates orders and views customers.
     * Permissions: ORDER_READ/WRITE, CUSTOMER_READ, STOCK_READ
     */
    SALES_STAFF
}
