ListAll.php 2.78 KB
Newer Older
Georgios Tsakalos's avatar
Georgios Tsakalos committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14
<?php
/**
 * gredu_labs.
 *
 * @link https://github.com/eellak/gredu_labs for the canonical source repository
 *
 * @copyright Copyright (c) 2008-2015 Greek Free/Open Source Software Society (https://gfoss.ellak.gr/)
 * @license GNU GPLv3 http://www.gnu.org/licenses/gpl-3.0-standalone.html
 */

namespace GrEduLabs\Schools\Action\Lab;

use GrEduLabs\Schools\Service\LabServiceInterface;
use GrEduLabs\Schools\Service\StaffServiceInterface;
15
use RedBeanPHP\R;
Georgios Tsakalos's avatar
Georgios Tsakalos committed
16 17 18 19 20 21 22 23 24
use Slim\Http\Request;
use Slim\Http\Response;
use Slim\Views\Twig;

class ListAll
{
    protected $view;

    public function __construct(
25
        Twig $view,
Georgios Tsakalos's avatar
Georgios Tsakalos committed
26 27
        LabServiceInterface $labservice,
        StaffServiceInterface $staffservice
28
    ) {
Georgios Tsakalos's avatar
Georgios Tsakalos committed
29 30 31 32 33 34 35 36 37 38 39 40
        $this->view         = $view;
        $this->labservice   = $labservice;
        $this->staffservice = $staffservice;
    }

    public function __invoke(Request $req, Response $res, array $args = [])
    {
        $school = $req->getAttribute('school', false);
        if (!$school) {
            return $res->withStatus(403, 'No school');
        }

41 42 43 44 45 46 47 48 49 50 51 52 53 54
       // $lab = R::dispense('lab');
       // $lab->school_id = 1;
       // $teacher = R::load('teacher', 2);
       // $lab->sharedCourse = array($course1, $course2);
       // $lab->area = 55;
       // $lab->in_school_use = true;
       // $lab->out_school_use = false;
       // $lab->attachment = 'foo/bar/qux/arxeio.gph';
       // $lab->has_network = true;
       // $lab->has_server = true;


       // R::store($lab);

55 56
        $labs        = $this->labservice->getLabsBySchoolId($school->id);
        $staff       = $this->staffservice->getTeachersBySchoolId($school->id);
Georgios Tsakalos's avatar
Georgios Tsakalos committed
57 58
        $clean_staff = [];
        foreach ($staff as $obj) {
59
            if ($obj['is_responsible']) {
Georgios Tsakalos's avatar
Georgios Tsakalos committed
60 61
                $clean_staff[] = [
                    'value' => $obj['id'],
62
                    'label' => $obj['name'] . " " . $obj['surname'],
Georgios Tsakalos's avatar
Georgios Tsakalos committed
63 64
                    ];
            }
Georgios Tsakalos's avatar
Georgios Tsakalos committed
65
        }
66 67
        $courses = $this->labservice->getCourses();
        $lessons = [];
68
        foreach ($courses as $lesson) {
69 70
            $lessons[] = ['value' => $lesson->id, 'label' => $lesson->name];
        }
71 72 73
        error_log(print_r($courses, TRUE));
        error_log(print_r('courses', TRUE));

Georgios Tsakalos's avatar
Georgios Tsakalos committed
74
        return $this->view->render($res, 'schools/labs.twig', [
75 76
            'labs'      => $labs,
            'staff'     => $clean_staff,
Georgios Tsakalos's avatar
Georgios Tsakalos committed
77 78 79 80 81 82 83 84 85 86 87 88 89 90
            'lab_types' => [
                [
                    'value' => 1,
                    'label' => 'ΕΡΓΑΣΤΗΡΙΟ',
                ],
                [
                    'value' => 2,
                    'label' => 'ΑΙΘΟΥΣΑ',
                ],
                [
                    'value' => 3,
                    'label' => 'ΓΡΑΦΕΙΟ',
                ],
            ],
91
            'lessons' => $lessons,
Georgios Tsakalos's avatar
Georgios Tsakalos committed
92 93 94
        ]);
    }
}