<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.

namespace local_coursegen\mod_settings;

/**
 * Class workshop_settings
 *
 * Inserts the accumulative assessment-form criteria generated by the AI so the
 * workshop's assessment form is ready (a workshop with no criteria cannot be
 * assessed by reviewers).
 *
 * @package    local_coursegen
 * @copyright  2026 Wilber Narvaez <https://datacurso.com>
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */
class workshop_settings extends base_settings {
    /**
     * Add the AI-generated accumulative criteria to the workshop assessment form.
     */
    public function add_settings() {
        global $DB;

        $criteria = $this->modsettings['criteria'] ?? [];
        if (empty($criteria)) {
            return;
        }

        $sort = 1;
        foreach ($criteria as $criterion) {
            $description = trim((string) ($criterion['description'] ?? ''));
            if ($description === '') {
                continue;
            }
            $maxpoints = (int) ($criterion['max_points'] ?? 10);
            if ($maxpoints < 1) {
                $maxpoints = 10;
            }

            $record = (object) [
                'workshopid' => $this->cm->instance,
                'sort' => $sort,
                'description' => $description,
                'descriptionformat' => FORMAT_HTML,
                'grade' => $maxpoints,
                'weight' => 1,
            ];
            $DB->insert_record('workshopform_accumulative', $record);
            $sort++;
        }
    }
}
