<?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/>.

/**
 * Simulatore contabilità
 *
 * @package    mod_mtcontabilita
 * @copyright  2026 Mediatouch 2000 Srl <https://www.mediatouch.it>
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 * @author     Marco Cappuccio <m.cappuccio@mediatouch.it>
 */

namespace mod_mtcontabilita\output;

use renderer_base;

/**
 * session_signup renderable class.
 */
class session_signup implements \renderable, \templatable {

    /**
     * @var \stdClass $session
     */
    private $session;

    /**
     * @var \context_module $context
     */
    private $context;

    /**
     * Constructor
     *
     * @param \stdClass $session
     * @param \context_module $context
     */
    public function __construct(\stdClass $session, \context_module $context) {
        $this->session = $session;
        $this->context = $context;
    }

    /**
     * Exports for template.
     *
     * @param renderer_base $output
     * @return array
     */
    public function export_for_template(renderer_base $output): array {
        $bookaction = '';
        $bookactiontitle = '';
        $cancelaction = '';

        if (\mod_mtcontabilita\permission::can_cancel_signup($this->session, $this->context)) {
            // User is already signed up, display "Cancel".
            $cancelaction = 'cancelsignup';
        }

        $sessionstatus = $this->session->usersubmission ? $this->session->usersubmission->statuscode : null;
        $extraclasses = '';

        return [
            'extraclasses' => $extraclasses,
            'hasactionbutton' => !empty($bookaction) || !empty($cancelaction),
            'bookaction' => $bookaction,
            'bookactiontitle' => $bookactiontitle,
            'cancelaction' => $cancelaction,
            'sessionid' => $this->session->id,
            'descriptiontitle' => get_string('description', 'mod_mtcontabilita'),
        ];
    }
}
