Backup #736

ID736
Dateipfad/var/www/dev.campus.systemische-tools.de/src/UseCases/Command/CreateContentOrderCommand.php
Version1
Typ modified
Größe2.5 KB
Hash0da5468679d7c0ae79958793ccc95db494e8cbe86d5da19c7a19531784fc5539
Datum2025-12-23 07:57:37
Geändert vonclaude-code-hook
GrundClaude Code Pre-Hook Backup vor Edit-Operation
Datei existiert Ja

Dateiinhalt

<?php

namespace UseCases\Command;

/**
 * Command for creating a new content order.
 *
 * Encapsulates all data needed for content order creation
 * with built-in validation.
 */
final class CreateContentOrderCommand
{
    /**
     * @param array<string> $collections
     */
    public function __construct(
        public readonly string $title,
        public readonly string $briefing,
        public readonly string $model,
        public readonly array $collections,
        public readonly int $contextLimit,
        public readonly ?int $authorProfileId,
        public readonly ?int $contractId,
        public readonly ?int $structureId,
        public readonly string $action,
    ) {
    }

    /**
     * @param array<string, mixed> $data
     */
    public static function fromRequest(array $data): self
    {
        $collections = $data['collections'] ?? ['documents'];
        if (!is_array($collections)) {
            $collections = [$collections];
        }

        return new self(
            title: trim((string) ($data['title'] ?? '')),
            briefing: trim((string) ($data['briefing'] ?? '')),
            model: (string) ($data['model'] ?? 'mistral'),
            collections: $collections,
            contextLimit: (int) ($data['context_limit'] ?? 5),
            authorProfileId: !empty($data['author_profile_id']) ? (int) $data['author_profile_id'] : null,
            contractId: !empty($data['contract_id']) ? (int) $data['contract_id'] : null,
            structureId: !empty($data['structure_id']) ? (int) $data['structure_id'] : null,
            action: (string) ($data['action'] ?? 'save'),
        );
    }

    /**
     * Validate the command data.
     *
     * @return array<string> List of validation errors (empty if valid)
     */
    public function validate(): array
    {
        $errors = [];

        if ($this->title === '') {
            $errors[] = 'Titel ist erforderlich.';
        }

        if ($this->briefing === '') {
            $errors[] = 'Briefing ist erforderlich.';
        }

        if ($this->contextLimit < 1 || $this->contextLimit > 20) {
            $errors[] = 'Context-Limit muss zwischen 1 und 20 liegen.';
        }

        if (empty($this->collections)) {
            $errors[] = 'Mindestens eine Collection ist erforderlich.';
        }

        return $errors;
    }

    public function isValid(): bool
    {
        return $this->validate() === [];
    }

    public function shouldGenerate(): bool
    {
        return $this->action === 'generate';
    }
}

Vollständig herunterladen

Aktionen

Herunterladen

Andere Versionen dieser Datei

ID Version Typ Größe Datum
2152 3 modified 2.7 KB 2025-12-30 22:19
2151 2 modified 2.4 KB 2025-12-30 22:19
736 1 modified 2.5 KB 2025-12-23 07:57

← Zurück zur Übersicht