<?php

declare(strict_types=1);

namespace Ekdos\Users;

/**
 * Feingranulare Rechte statt Namensabfragen. Jede Prüfung im alten Code
 * ("nur Sascha", "nur Svenja") entspricht genau einem Eintrag hier.
 */
final class Permission
{
    /** Benutzer anlegen, ändern, löschen. */
    public const string UsersManage = 'users.manage';

    /** Vormals: nur Sascha. */
    public const string OffersDelete = 'offers.delete';
    public const string CustomersDelete = 'customers.delete';
    public const string TasksDelete = 'tasks.delete';
    public const string PurchasesCreate = 'purchases.create';
    public const string PurchasesDelete = 'purchases.delete';

    /** Vormals: nur Svenja. */
    public const string PurchasesComplete = 'purchases.complete';
    public const string InvoicesProcess = 'invoices.process';

    /** @var list<string> */
    public const array ALL = [
        self::UsersManage,
        self::OffersDelete,
        self::CustomersDelete,
        self::TasksDelete,
        self::PurchasesCreate,
        self::PurchasesDelete,
        self::PurchasesComplete,
        self::InvoicesProcess,
    ];

    /** Menschenlesbare Bezeichnung für die Benutzerverwaltung. */
    public static function label(string $permission): string
    {
        return match ($permission) {
            self::UsersManage => 'Benutzerverwaltung',
            self::OffersDelete => 'Angebote löschen',
            self::CustomersDelete => 'Kunden löschen',
            self::TasksDelete => 'Aufgaben löschen',
            self::PurchasesCreate => 'Online-Käufe eintragen',
            self::PurchasesDelete => 'Online-Käufe löschen',
            self::PurchasesComplete => 'Online-Käufe abschließen',
            self::InvoicesProcess => 'Rechnungen bearbeiten und versenden',
            default => $permission,
        };
    }
}
