DirectorView.php 45.8 KB
Newer Older
Open Source Developer's avatar
transf    
Open Source Developer committed
1
2
3
4
5
6
7
8
9
10
<?php

namespace Drupal\epal\Controller;

use Drupal\Core\Entity\EntityTypeManagerInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\JsonResponse;
use Drupal\Core\Controller\ControllerBase;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
Open Source Developer's avatar
trans    
Open Source Developer committed
11
use Drupal\Core\Logger\LoggerChannelFactoryInterface;
12
use Drupal\Core\Database\Connection;
Open Source Developer's avatar
transf    
Open Source Developer committed
13

14
15
use Drupal\epal\Crypt;

Open Source Developer's avatar
transf    
Open Source Developer committed
16
17
18
class DirectorView extends ControllerBase
{
    protected $entityTypeManager;
19
    protected $logger;
20
    protected $connection;
Open Source Developer's avatar
transf    
Open Source Developer committed
21

22
23
    public function __construct(
        EntityTypeManagerInterface $entityTypeManager,
24
        Connection $connection,
25
26
        LoggerChannelFactoryInterface $loggerChannel
    ) {
Open Source Developer's avatar
transf    
Open Source Developer committed
27
        $this->entityTypeManager = $entityTypeManager;
28
        $this->connection = $connection;
29
        $this->logger = $loggerChannel->get('epal-school');
Open Source Developer's avatar
transf    
Open Source Developer committed
30
31
32
33
34
    }

    public static function create(ContainerInterface $container)
    {
        return new static(
35
            $container->get('entity_type.manager'),
36
            $container->get('database'),
37
            $container->get('logger.factory')
Open Source Developer's avatar
transf    
Open Source Developer committed
38
        );
39
    }
Open Source Developer's avatar
transf    
Open Source Developer committed
40

Open Source Developer's avatar
Open Source Developer committed
41
    public function getStudentPerSchool(Request $request, $classId, $sector, $specialit)
Open Source Developer's avatar
trans    
Open Source Developer committed
42
    {
43
        try {
44
            $authToken = $request->headers->get('PHP_AUTH_USER');
Open Source Developer's avatar
Open Source Developer committed
45

46
47
48
49
50
51
52
            $epalConfigs = $this->entityTypeManager->getStorage('epal_config')->loadByProperties(array('name' => 'epal_config'));
            $epalConfig = reset($epalConfigs);
            if (!$epalConfig) {
                return $this->respondWithStatus([
                        "error_code" => 3001
                    ], Response::HTTP_FORBIDDEN);
            }
53
            if ($epalConfig->lock_school_students_view->value) {
54
55
56
                return $this->respondWithStatus([
                        "error_code" => 3002
                    ], Response::HTTP_FORBIDDEN);
Open Source Developer's avatar
Open Source Developer committed
57
58
            }

59
60
61
62
63
64
65
66
67
68
69
            $users = $this->entityTypeManager->getStorage('user')->loadByProperties(array('name' => $authToken));
            $user = reset($users);
            if ($user) {
                $epalId = $user->init->value;
                $schools = $this->entityTypeManager->getStorage('eepal_school')->loadByProperties(array('id' => $epalId));
                $school = reset($schools);
                if (!$school) {
                    $this->logger->warning('no access to this school='.$user->id());
                    return $this->respondWithStatus([
                        "message" => "No access to this school"
                    ], Response::HTTP_FORBIDDEN);
Open Source Developer's avatar
Open Source Developer committed
70
                }
71

72
73
74
75
76
77
                $userRoles = $user->getRoles();
                $userRole = '';
                foreach ($userRoles as $tmpRole) {
                    if ($tmpRole === 'epal') {
                        $userRole = $tmpRole;
                    }
78
                }
79
80
                if ($userRole === '') {
                    return $this->respondWithStatus([
Open Source Developer's avatar
Open Source Developer committed
81
82
                             'error_code' => 4003,
                         ], Response::HTTP_FORBIDDEN);
83
84
                } elseif ($userRole === 'epal') {
                    if ($classId == 1) {
Open Source Developer's avatar
Open Source Developer committed
85
                        $selectIdNew = -1;
86
                    } elseif ($classId == 2) {
Open Source Developer's avatar
Open Source Developer committed
87
                        $selectIdNew = $sector;
88
                    } else {
Open Source Developer's avatar
Open Source Developer committed
89
                        $selectIdNew = $specialit;
90
                    }
Open Source Developer's avatar
bug    
Open Source Developer committed
91
                    $studentPerSchool = $this->entityTypeManager->getStorage('epal_student_class')->loadByProperties(array('epal_id' => $epalId, 'specialization_id' => $selectIdNew, 'currentclass' => $classId));
92
93
94
95
                }
                if ($studentPerSchool) {
                    $list = array();
                    foreach ($studentPerSchool as $object) {
96
                        $studentId = $object->student_id->target_id;
97
98
                        $epalStudents = $this->entityTypeManager->getStorage('epal_student')->loadByProperties(array('id' => $studentId));
                        $epalStudent = reset($epalStudents);
99
100
101
102
103
104
105
106
107
108
109
                        if ($epalStudents) {
                            $studentIdNew = $epalStudent->id();
                            $checkstatus = $this->entityTypeManager->getStorage('epal_student_class')->loadByProperties(array('student_id' => $studentIdNew));
                            $checkstudentstatus = reset($checkstatus);
                            $sectorName = '';
                            $courseName = '';
                            if ($epalStudent->currentclass->value === '2') {
                                $sectors = $this->entityTypeManager->getStorage('epal_student_sector_field')->loadByProperties(array('student_id' => $studentIdNew));
                                $sector = reset($sectors);
                                if ($sector) {
                                    $sectorName = $this->entityTypeManager->getStorage('eepal_sectors')->load($sector->sectorfield_id->target_id)->name->value;
Open Source Developer's avatar
Open Source Developer committed
110
                                }
111
112
113
114
115
                            } elseif ($epalStudent->currentclass->value === '3' || $epalStudent->currentclass->value === '4') {
                                $courses = $this->entityTypeManager->getStorage('epal_student_course_field')->loadByProperties(array('student_id' => $studentIdNew));
                                $course = reset($courses);
                                if ($course) {
                                    $courseName = $this->entityTypeManager->getStorage('eepal_specialty')->load($course->coursefield_id->target_id)->name->value;
Open Source Developer's avatar
Open Source Developer committed
116
                                }
117
118
                            }

119
                            $crypt = new Crypt();
120
121
122
123
124
125
126
127
                            try {
                                $name_decoded = $crypt->decrypt($epalStudent->name->value);
                                $studentsurname_decoded = $crypt->decrypt($epalStudent->studentsurname->value);
                                $fatherfirstname_decoded = $crypt->decrypt($epalStudent->fatherfirstname->value);
                                $motherfirstname_decoded = $crypt->decrypt($epalStudent->motherfirstname->value);
                                $regionaddress_decoded = $crypt->decrypt($epalStudent->regionaddress->value);
                                $regiontk_decoded = $crypt->decrypt($epalStudent->regiontk->value);
                                $regionarea_decoded = $crypt->decrypt($epalStudent->regionarea->value);
128
                                // $certificatetype_decoded = $crypt->decrypt($epalStudent->certificatetype->value); // obsolete
129
130
131
132
133
134
135
136
137
138
139
140
141
                                $relationtostudent_decoded = $crypt->decrypt($epalStudent->relationtostudent->value);
                                $telnum_decoded = $crypt->decrypt($epalStudent->telnum->value);
                                $guardian_name_decoded = $crypt->decrypt($epalStudent->guardian_name->value);
                                $guardian_surname_decoded = $crypt->decrypt($epalStudent->guardian_surname->value);
                                $guardian_fathername_decoded = $crypt->decrypt($epalStudent->guardian_fathername->value);
                                $guardian_mothername_decoded = $crypt->decrypt($epalStudent->guardian_mothername->value);
                            } catch (\Exception $e) {
                                $this->logger->warning(__METHOD__ . ' Decrypt error: ' . $e->getMessage());
                                return $this->respondWithStatus([
                                "message" => t("An unexpected error occured during DECODING data in getStudentPerSchool Method ")
                                ], Response::HTTP_INTERNAL_SERVER_ERROR);
                            }

142
                            $list[] = array(
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
                                'id' => $epalStudent->id(),
                                'name' => $name_decoded,
                                'studentsurname' => $studentsurname_decoded,
                                'fatherfirstname' => $fatherfirstname_decoded,
                                'motherfirstname' => $motherfirstname_decoded,
                                'guardian_name' => $guardian_name_decoded,
                                'guardian_surname' => $guardian_surname_decoded,
                                'guardian_fathername' => $guardian_fathername_decoded,
                                'guardian_mothername' => $guardian_mothername_decoded,
                                'lastschool_schoolname' => $epalStudent->lastschool_schoolname->value,
                                'lastschool_schoolyear' => $epalStudent->lastschool_schoolyear->value,
                                'lastschool_class' => $epalStudent->lastschool_class->value,
                                'currentclass' =>$epalStudent -> currentclass ->value,
                                'currentsector' =>$sectorName,
                                'currentcourse' =>$courseName,
                                'regionaddress' => $regionaddress_decoded,
                                'regiontk' => $regiontk_decoded,
                                'regionarea' => $regionarea_decoded,
161
                                'certificatetype' => '', // $certificatetype_decoded, // obsolete
162
163
164
165
166
167
168
169
170
171
172
                                'graduation_year' => $epalStudent->graduation_year->value,
                                'telnum' => $telnum_decoded,
                                'relationtostudent' => $relationtostudent_decoded,
                                //'birthdate' => substr($epalStudent->birthdate->value, 8, 10) . '/' . substr($epalStudent->birthdate->value, 6, 8) . '/' . substr($epalStudent->birthdate->value, 0, 4),
                                'birthdate' => date("d-m-Y", strtotime($epalStudent->birthdate->value)),
                                'checkstatus' => $checkstudentstatus -> directorconfirm ->value,
                                'created' => date('d/m/Y H:i', $epalStudent -> created ->value),

                            );
                        }
                    }
173
                    return $this->respondWithStatus($list, Response::HTTP_OK);
174
                } else {
175
176
177
                    return $this->respondWithStatus([
                        'message' => t('Students not found!'),
                    ], Response::HTTP_NOT_FOUND);
178
179
180
                }
            } else {
                return $this->respondWithStatus([
181
                    'message' => t('User not found!'),
Open Source Developer's avatar
trans    
Open Source Developer committed
182
                ], Response::HTTP_FORBIDDEN);
183
            }
184
185
        } catch (\Exception $e) {
            $this->logger->warning($e->getMessage());
186
            return $this->respondWithStatus([
187
                'message' => t('Unexpected Error'),
188
            ], Response::HTTP_FORBIDDEN);
189
        }
Open Source Developer's avatar
Open Source Developer committed
190
    }
Open Source Developer's avatar
changes    
Open Source Developer committed
191

Open Source Developer's avatar
trans    
Open Source Developer committed
192
193
194
    public function ConfirmStudents(Request $request)
    {
        if (!$request->isMethod('POST')) {
195
            return $this->respondWithStatus(['message' => t('Method Not Allowed')], Response::HTTP_METHOD_NOT_ALLOWED);
Open Source Developer's avatar
trans    
Open Source Developer committed
196
197
        }

198
        $authToken = $request->headers->get('PHP_AUTH_USER');
199
        $users = $this->entityTypeManager->getStorage('user')->loadByProperties(array('name' => $authToken));
200
201
202
203
204
205
206
        $user = reset($users);
        if ($user) {
            $userRoles = $user->getRoles();
            $userRole = '';
            foreach ($userRoles as $tmpRole) {
                if ($tmpRole === 'epal') {
                    $userRole = $tmpRole;
Open Source Developer's avatar
Open Source Developer committed
207
                }
208
            }
209
            if ($userRole === 'epal') {
210
211
212
213
                if ($content = $request->getContent()) {
                    $postData = json_decode($content);
                    $arr = $postData->students;
                    $type = $postData->type;
Open Source Developer's avatar
Open Source Developer committed
214
215
                    $valnew = intval($arr);
                    $typen = intval($type);
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
                    $studentForConfirm = $this->entityTypeManager->getStorage('epal_student_class')->loadByProperties(['student_id' => $valnew]);
                    $studentConfirm = reset($studentForConfirm);
                    if ($studentConfirm) {
                        if ($typen === 1) {
                            $studentConfirm->set('directorconfirm', 1);
                            $studentConfirm->save();
                            return $this->respondWithStatus(['message' => t('saved')], Response::HTTP_OK);
                        } elseif ($typen === 2) {
                            $studentConfirm->set('directorconfirm', 0);
                            $studentConfirm->save();
                            return $this->respondWithStatus(['message' => t('saved')], Response::HTTP_OK);
                        } elseif ($typen === 3) {
                            unset($studentConfirm->{directorconfirm});
                            $studentConfirm->save();
                            return $this->respondWithStatus(['message' => t('saved')], Response::HTTP_OK);
                        } else {
                            return $this->respondWithStatus(['message' => t('Bad request')], Response::HTTP_FORBIDDEN);
Open Source Developer's avatar
Open Source Developer committed
233
                        }
234
235
236
237
238
                    } else {
                        return $this->respondWithStatus(['message' => t('Student not found')], Response::HTTP_FORBIDDEN);
                    }
                } else {
                    return $this->respondWithStatus(['message' => t('post with no data')], Response::HTTP_BAD_REQUEST);
Open Source Developer's avatar
trans    
Open Source Developer committed
239
240
                }
            } else {
241
                return $this->respondWithStatus(['error_code' => 4003], Response::HTTP_FORBIDDEN);
242
243
            }
        } else {
244
            return $this->respondWithStatus(['message' => t('EPAL user not found')], Response::HTTP_FORBIDDEN);
Open Source Developer's avatar
trans    
Open Source Developer committed
245
246
247
        }
    }

248
    public function SaveCapacity(Request $request, $taxi, $tomeas, $specialit)
Open Source Developer's avatar
Open Source Developer committed
249
250
    {
        if (!$request->isMethod('POST')) {
251
            return $this->respondWithStatus([
252
                    'message' => t('Method Not Allowed'),
Open Source Developer's avatar
Open Source Developer committed
253
254
255
256
                ], Response::HTTP_METHOD_NOT_ALLOWED);
        }
        $authToken = $request->headers->get('PHP_AUTH_USER');

257
258
259
260
261
262
263
264
265
266
267
268
269
        $epalConfigs = $this->entityTypeManager->getStorage('epal_config')->loadByProperties(array('name' => 'epal_config'));
        $epalConfig = reset($epalConfigs);
        if (!$epalConfig) {
            return $this->respondWithStatus([
                    "error_code" => 3001
                ], Response::HTTP_FORBIDDEN);
        }
        if ($epalConfig->lock_capacity->value) {
            return $this->respondWithStatus([
                    "error_code" => 3002
                ], Response::HTTP_FORBIDDEN);
        }

270
        $users = $this->entityTypeManager->getStorage('user')->loadByProperties(array('name' => $authToken));
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
        $user = reset($users);
        if ($user) {
            $schoolid = $user->init->value;
            $schools = $this->entityTypeManager->getStorage('eepal_school')->loadByProperties(array('id' => $schoolid));
            $school = reset($schools);
            if (!$school) {
                $this->logger->warning('no access to this school='.$user->id());
                $response = new Response();
                $response->setContent('No access to this school');
                $response->setStatusCode(Response::HTTP_FORBIDDEN);
                $response->headers->set('Content-Type', 'application/json');

                return $response;
            }
            $userRoles = $user->getRoles();
            $userRole = '';
            foreach ($userRoles as $tmpRole) {
                if ($tmpRole === 'epal') {
                    $userRole = $tmpRole;
Open Source Developer's avatar
Open Source Developer committed
290
                }
291
292
293
            }
            if ($userRole === '') {
                return $this->respondWithStatus([
Open Source Developer's avatar
Open Source Developer committed
294
295
                             'error_code' => 4003,
                         ], Response::HTTP_FORBIDDEN);
296
297
            } elseif ($userRole === 'epal') {
                $postData = null;
Open Source Developer's avatar
Open Source Developer committed
298

299
300
301
302
303
304
                if ($content = $request->getContent()) {
                    $postData = json_decode($content);
                    $cap = $postData->capacity;
                    if ($cap <= 0 || $cap > 99) {
                        return $this->respondWithStatus([
                            'message' => t('Number out of limits!'),
Open Source Developer's avatar
Open Source Developer committed
305
                        ], Response::HTTP_BAD_REQUEST);
306
                    }
Open Source Developer's avatar
Open Source Developer committed
307

308
309
310
311
312
313
                    if (($tomeas == 0) && ($specialit == 0)) {
                        $CapacityPerClass = $this->entityTypeManager->getStorage('eepal_school')->loadByProperties(array('id' => $schoolid));
                        $classcapacity = reset($CapacityPerClass);
                        if ($classcapacity) {
                            $classcapacity->set('capacity_class_a', $cap);
                            $classcapacity->save();
Open Source Developer's avatar
Open Source Developer committed
314
                        }
315
                    }
Open Source Developer's avatar
Open Source Developer committed
316

317
318
319
320
321
322
                    if (($tomeas != 0) && ($specialit == 0)) {
                        $CapacityPerClass = $this->entityTypeManager->getStorage('eepal_sectors_in_epal')->loadByProperties(array('epal_id' => $schoolid, 'sector_id' => $tomeas));
                        $classcapacity = reset($CapacityPerClass);
                        if ($classcapacity) {
                            $classcapacity->set('capacity_class_sector', $cap);
                            $classcapacity->save();
Open Source Developer's avatar
Open Source Developer committed
323
                        }
324
                    }
Open Source Developer's avatar
Open Source Developer committed
325

326
327
328
329
330
331
                    if (($specialit != 0) && ($taxi == 3)) {
                        $CapacityPerClass = $this->entityTypeManager->getStorage('eepal_specialties_in_epal')->loadByProperties(array('epal_id' => $schoolid, 'specialty_id' => $specialit));
                        $classcapacity = reset($CapacityPerClass);
                        if ($classcapacity) {
                            $classcapacity->set('capacity_class_specialty', $cap);
                            $classcapacity->save();
Open Source Developer's avatar
Open Source Developer committed
332
                        }
333
                    }
Open Source Developer's avatar
Open Source Developer committed
334

335
336
337
338
339
340
341
342
                    if (($specialit != 0) && ($taxi == 4)) {
                        $CapacityPerClass = $this->entityTypeManager->getStorage('eepal_specialties_in_epal')->loadByProperties(array('epal_id' => $schoolid, 'specialty_id' => $specialit));
                        $classcapacity = reset($CapacityPerClass);
                        if ($classcapacity) {
                            $classcapacity->set('capacity_class_specialty_d', $cap);
                            $classcapacity->save();
                        }
                    }
Open Source Developer's avatar
Open Source Developer committed
343

344
345
                    return $this->respondWithStatus([
                            'message' => t('saved'),
Open Source Developer's avatar
Open Source Developer committed
346
                        ], Response::HTTP_OK);
Open Source Developer's avatar
Open Source Developer committed
347
348
                }
            } else {
349
350
351
352
353
                return $this->respondWithStatus([
                    'message' => t('post with no data'),
                ], Response::HTTP_BAD_REQUEST);
            }
        } else {
Open Source Developer's avatar
Open Source Developer committed
354
            return $this->respondWithStatus([
355
                    'message' => t('EPAL user not found'),
Open Source Developer's avatar
Open Source Developer committed
356
357
358
359
                ], Response::HTTP_FORBIDDEN);
        }
    }

360
    public function getSchools(Request $request)
Open Source Developer's avatar
trans    
Open Source Developer committed
361
362
363
364
365
    {
        $authToken = $request->headers->get('PHP_AUTH_USER');

        $users = $this->entityTypeManager->getStorage('user')->loadByProperties(array('name' => $authToken));
        $user = reset($users);
366
367
368
369
370
371
372
        if ($user) {
            $selectionId = $user->init->value;
            $userRoles = $user->getRoles();
            $userRole = '';
            foreach ($userRoles as $tmpRole) {
                if (($tmpRole === 'epal') || ($tmpRole === 'regioneduadmin') || ($tmpRole === 'eduadmin')) {
                    $userRole = $tmpRole;
373
                }
374
            }
375

376
377
            if ($userRole === '') {
                return $this->respondWithStatus([
378
                    'error_code' => 4003,
Open Source Developer's avatar
ch    
Open Source Developer committed
379
                    "message" => t("1")
380
                ], Response::HTTP_FORBIDDEN);
381
            } elseif ($userRole === 'regioneduadmin') {
382
383
384
                $schools = $this->entityTypeManager
                    ->getStorage('eepal_school')
                    ->loadByProperties(array('region_edu_admin_id' => $selectionId));
385
            } elseif ($userRole === 'eduadmin') {
386
387
388
389
390
                $schools = $this->entityTypeManager
                    ->getStorage('eepal_school')
                    ->loadByProperties(array('edu_admin_id' => $selectionId));
            } else {
                $schools = [];
391
            }
392

393
394
            if ($schools) {
                $list = array();
Open Source Developer's avatar
Open Source Developer committed
395

396
397
398
                foreach ($schools as $object) {
                    $status = $this->returnstatus($object->id());
                    $list[] = array(
399
400
401
402
                        'id' => $object->id(),
                        'name' => $object->name->value,
                        'status' => $status,
                    );
Open Source Developer's avatar
trans    
Open Source Developer committed
403
404
                }

405
                return $this->respondWithStatus($list, Response::HTTP_OK);
406
407
            } else {
                return $this->respondWithStatus([
408
409
                    'message' => t('No schools found!'),
                ], Response::HTTP_FORBIDDEN);
Open Source Developer's avatar
trans    
Open Source Developer committed
410
            }
411
412
        } else {
            return $this->respondWithStatus([
413
414
                'message' => t('User not found!'),
            ], Response::HTTP_FORBIDDEN);
415
        }
Open Source Developer's avatar
trans    
Open Source Developer committed
416
417
    }

Open Source Developer's avatar
trans    
Open Source Developer committed
418
419
    public function getCoursesPerSchool(Request $request, $schoolid)
    {
420
        $authToken = $request->headers->get('PHP_AUTH_USER');
Open Source Developer's avatar
trans    
Open Source Developer committed
421
422
423

        $users = $this->entityTypeManager->getStorage('user')->loadByProperties(array('name' => $authToken));
        $user = reset($users);
424
425
426
427
428
429
430
        if ($user) {
            $newid = $user->init->value;
            $userRoles = $user->getRoles();
            $userRole = '';
            foreach ($userRoles as $tmpRole) {
                if (($tmpRole === 'regioneduadmin') || ($tmpRole === 'eduadmin')) {
                    $userRole = $tmpRole;
Open Source Developer's avatar
Open Source Developer committed
431
                }
432
433
434
            }
            if ($userRole === '') {
                return $this->respondWithStatus([
435
436
                    'error_code' => 4003,
                ], Response::HTTP_FORBIDDEN);
437
            } elseif ($userRole === 'regioneduadmin') {
438
439
                $SchoolCats = $this->entityTypeManager->getStorage('eepal_school')
                    ->loadByProperties(array('id' => $schoolid, 'region_edu_admin_id' => $newid));
440
            } elseif ($userRole === 'eduadmin') {
441
442
                $SchoolCats = $this->entityTypeManager->getStorage('eepal_school')
                    ->loadByProperties(array('id' => $schoolid, 'edu_admin_id' => $newid));
443
            }
Open Source Developer's avatar
Open Source Developer committed
444

445
446
447
            $SchoolCat = reset($SchoolCats);
            if ($SchoolCat) {
                $categ = $SchoolCat->metathesis_region->value;
448
                $operation_shift = $SchoolCat->operation_shift->value;
Open Source Developer's avatar
Open Source Developer committed
449
                $capacity_class_a = ($SchoolCat -> capacity_class_a ->value) *25;
450
451
452
453
            } else {
                return $this->respondWithStatus([
                    'message' => t('No school located'),
                ], Response::HTTP_FORBIDDEN);
454
            }
Open Source Developer's avatar
bugs    
Open Source Developer committed
455

456
457
458
459
            $list = array();
            $limit = -1;
            $CourseA = $this->entityTypeManager->getStorage('eepal_school')
                ->loadByProperties(array('id' => $schoolid));
460
            if ($CourseA) {
461
462
                $limit_down = $this->entityTypeManager->getStorage('epal_class_limits')
                    ->loadByProperties(array('name' => 1, 'category' => $categ));
463
464
465
                $limitdown = reset($limit_down);
                if ($limitdown) {
                    $limit = $limitdown->limit_down->value;
466
467
                } else {
                    $limit = -1;
Open Source Developer's avatar
trans    
Open Source Developer committed
468
                }
469
470
                $studentPerSchool = $this->entityTypeManager->getStorage('epal_student_class')
                    ->loadByProperties(array('epal_id' => $schoolid, 'specialization_id' => -1, 'currentclass' => 1));
471
472
473
                $list = array();
                foreach ($CourseA as $object) {
                    $list[] = array(
474
475
476
477
478
479
                        'id' => '1',
                        'name' => 'Α Λυκείου',
                        'size' => sizeof($studentPerSchool),
                        'categ' => $categ,
                        'classes' => 1,
                        'limitdown' => $limit,
Open Source Developer's avatar
Open Source Developer committed
480
481
                         'capc' => $capacity_class_a,

482
                    );
483
484
                }
            }
485

486
487
            $CourseB = $this->entityTypeManager->getStorage('eepal_sectors_in_epal')
                ->loadByProperties(array('epal_id' => $schoolid));
488
            if ($CourseB) {
489
490
                $limit_down = $this->entityTypeManager->getStorage('epal_class_limits')
                    ->loadByProperties(array('name' => 2, 'category' => $categ));
491
492
493
                $limitdown = reset($limit_down);
                if ($limitdown) {
                    $limit = $limitdown->limit_down->value;
494
495
                } else {
                    $limit = -1;
496
                }
Open Source Developer's avatar
Open Source Developer committed
497

498
499
                foreach ($CourseB as $object) {
                    $sectorid = $object->sector_id->entity->id();
Open Source Developer's avatar
Open Source Developer committed
500
                    $capacity_class_b = ($object -> capacity_class_sector ->value) *25;
501
502
                    $studentPerSchool = $this->entityTypeManager->getStorage('epal_student_class')
                        ->loadByProperties(array('epal_id' => $schoolid, 'specialization_id' => $sectorid, 'currentclass' => 2));
503
                    $list[] = array(
504
505
506
507
508
509
                        'id' => $object->sector_id->entity->id(),
                        'name' => 'Β Λυκείου  '.$object->sector_id->entity->get('name')->value,
                        'size' => sizeof($studentPerSchool),
                        'categ' => $categ,
                        'classes' => 2,
                        'limitdown' => $limit,
Open Source Developer's avatar
Open Source Developer committed
510
511
                        'capc' => $capacity_class_b,

512
                    );
Open Source Developer's avatar
trans    
Open Source Developer committed
513
                }
514
            }
515
516
            $CourseC = $this->entityTypeManager->getStorage('eepal_specialties_in_epal')
                ->loadByProperties(array('epal_id' => $schoolid));
517
            if ($CourseC) {
518
519
                $limit_down = $this->entityTypeManager->getStorage('epal_class_limits')
                    ->loadByProperties(array('name' => 3, 'category' => $categ));
520
521
522
                $limitdown = reset($limit_down);
                if ($limitdown) {
                    $limit = $limitdown->limit_down->value;
523
524
                } else {
                    $limit = -1;
525
                }
Open Source Developer's avatar
Open Source Developer committed
526

527
528
                foreach ($CourseC as $object) {
                    $specialityid = $object->specialty_id->entity->id();
Open Source Developer's avatar
Open Source Developer committed
529
                    $capacity_class_c = ($object -> capacity_class_specialty ->value) *25;
530
531
                    $studentPerSchool = $this->entityTypeManager->getStorage('epal_student_class')
                        ->loadByProperties(array('epal_id' => $schoolid, 'specialization_id' => $specialityid, 'currentclass' => 3));
532
                    $list[] = array(
533
534
535
536
537
538
                        'id' => $object->specialty_id->entity->id(),
                        'name' => 'Γ Λυκείου  '.$object->specialty_id->entity->get('name')->value,
                        'size' => sizeof($studentPerSchool),
                        'categ' => $categ,
                        'classes' => 3,
                        'limitdown' => $limit,
Open Source Developer's avatar
Open Source Developer committed
539
540
                        'capc' => $capacity_class_c,

541
                    );
Open Source Developer's avatar
trans    
Open Source Developer committed
542
                }
543
            }
544
            if ($CourseC && $operation_shift != 'ΗΜΕΡΗΣΙΟ') {
545
546
                $limit_down = $this->entityTypeManager->getStorage('epal_class_limits')
                    ->loadByProperties(array('name' => 4, 'category' => $categ));
Open Source Developer's avatar
trans    
Open Source Developer committed
547
548
549
                $limitdown = reset($limit_down);
                if ($limitdown) {
                    $limit = $limitdown->limit_down->value;
550
551
                } else {
                    $limit = -1;
Open Source Developer's avatar
trans    
Open Source Developer committed
552
553
554
555
                }

                foreach ($CourseC as $object) {
                    $specialityid = $object->specialty_id->entity->id();
556
557
                    $studentPerSchool = $this->entityTypeManager->getStorage('epal_student_class')
                        ->loadByProperties(array('epal_id' => $schoolid, 'specialization_id' => $specialityid, 'currentclass' => 4));
558
                      $capacity_class_d = ($object -> capacity_class_specialty_d ->value) *25;
Open Source Developer's avatar
trans    
Open Source Developer committed
559
                    $list[] = array(
560
561
562
563
564
565
                        'id' => $object->specialty_id->entity->id(),
                        'name' => 'Δ Λυκείου  '.$object->specialty_id->entity->get('name')->value,
                        'size' => sizeof($studentPerSchool),
                        'categ' => $categ,
                        'classes' => 4,
                        'limitdown' => $limit,
Open Source Developer's avatar
Open Source Developer committed
566
                        'capc' => $capacity_class_d,
567
                    );
Open Source Developer's avatar
trans    
Open Source Developer committed
568
569
570
                }
            }

571
            if ($CourseA || $CourseB || $CourseC) {
572
                return $this->respondWithStatus($list, Response::HTTP_OK);
573
574
            } else {
                return $this->respondWithStatus([
575
576
                    'message' => t('No courses found!'),
                ], Response::HTTP_FORBIDDEN);
Open Source Developer's avatar
trans    
Open Source Developer committed
577
            }
578
579
        } else {
            return $this->respondWithStatus([
580
581
                'message' => t('User not found!'),
            ], Response::HTTP_FORBIDDEN);
582
        }
Open Source Developer's avatar
trans    
Open Source Developer committed
583
    }
Open Source Developer's avatar
trans    
Open Source Developer committed
584

585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
    protected function getLimit($name, $categ)
    {
        static $limits = array();

        $key = "{$name}_{$categ}";
        if (isset($limits[$key])) {
            $limit = $limits[$key];
        } else {
            $limit_down = $this->entityTypeManager->getStorage('epal_class_limits')->loadByProperties(array('name' => $name, 'category' => $categ));
            $limitdown = reset($limit_down);
            if ($limitdown) {
                $limit = $limitdown->limit_down->value;
            } else {
                $limit = -1;
            }
            $limits[$key] = $limit;
        }

        return $limit;
    }

606
607
608
609
610
611
612
    public function returnstatus($id)
    {
        $schoolid = $id;
        $SchoolCats = $this->entityTypeManager->getStorage('eepal_school')->loadByProperties(array('id' => $schoolid));
        $SchoolCat = reset($SchoolCats);
        if ($SchoolCat) {
            $categ = $SchoolCat->metathesis_region->value;
Ασπασία Κατσή's avatar
pdebug    
Ασπασία Κατσή committed
613
            $operation_shift = $school -> operation_shift -> value;
614
615
        } else {
            $categ = '-';
Ασπασία Κατσή's avatar
pdebug    
Ασπασία Κατσή committed
616
            $operation_shift ='-';
617
        }
Open Source Developer's avatar
trans    
Open Source Developer committed
618

619
        $CourseA = $this->entityTypeManager->getStorage('epal_student')->loadByProperties(array('id' => $schoolid));
620
        if ($CourseA) {
621
            $limit = $this->getLimit(1, $categ);
622

Open Source Developer's avatar
bug    
Open Source Developer committed
623
            $studentPerSchool = $this->entityTypeManager->getStorage('epal_student_class')->loadByProperties(array('epal_id' => $schoolid, 'specialization_id' => -1, 'currentclass' => 1));
624

625
626
627
            if (sizeof($studentPerSchool) < $limit) {
                return false;
            }
628
        }
629

630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
        $limit = $this->getLimit(2, $categ);
        $sCon = $this->connection->select('eepal_sectors_in_epal_field_data', 'eSchool');
        $sCon->leftJoin('epal_student_class', 'eStudent',
            'eStudent.epal_id = ' . $schoolid . ' ' .
            'AND eStudent.specialization_id = eSchool.sector_id ' .
            'AND eStudent.currentclass = 2');
        $sCon->fields('eSchool', array('sector_id'))
            ->fields('eStudent', array('specialization_id'))
            ->groupBy('specialization_id')
            ->groupBy('sector_id')
            ->condition('eSchool.epal_id', $schoolid, '=');
        $sCon->addExpression('count(eStudent.id)', 'eStudent_count');

        $results = $sCon->execute()->fetchAll(\PDO::FETCH_OBJ);

        foreach ($results as $result) {
            if ($result->eStudent_count < $limit) {
                return false;
648
649
            }
        }
650

651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
        $limit = $this->getLimit(3, $categ);
        $sCon = $this->connection->select('eepal_specialties_in_epal_field_data', 'eSchool');
        $sCon->leftJoin('epal_student_class', 'eStudent',
            'eStudent.epal_id = ' . $schoolid . ' ' .
            'AND eStudent.specialization_id = eSchool.specialty_id ' .
            'AND eStudent.currentclass = 3');
        $sCon->fields('eSchool', array('specialty_id'))
            ->fields('eStudent', array('specialization_id'))
            ->groupBy('specialization_id')
            ->groupBy('specialty_id')
            ->condition('eSchool.epal_id', $schoolid, '=');
        $sCon->addExpression('count(eStudent.id)', 'eStudent_count');

        $results = $sCon->execute()->fetchAll(\PDO::FETCH_OBJ);

        foreach ($results as $result) {
            if ($result->eStudent_count < $limit) {
                return false;
669
670
            }
        }
Open Source Developer's avatar
trans    
Open Source Developer committed
671

Ασπασία Κατσή's avatar
pdebug    
Ασπασία Κατσή committed
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
        if ($operation_shift == 'ΕΣΠΕΡΙΝΟ')
        {
            $limit = $this->getLimit(4, $categ);
            $sCon = $this->connection->select('eepal_specialties_in_epal_field_data', 'eSchool');
            $sCon->leftJoin('epal_student_class', 'eStudent',
                'eStudent.epal_id = ' . $schoolid . ' ' .
                'AND eStudent.specialization_id = eSchool.specialty_id ' .
                'AND eStudent.currentclass = 4');
            $sCon->fields('eSchool', array('specialty_id'))
                ->fields('eStudent', array('specialization_id'))
                ->groupBy('specialization_id')
                ->groupBy('specialty_id')
                ->condition('eSchool.epal_id', $schoolid, '=');
            $sCon->addExpression('count(eStudent.id)', 'eStudent_count');

            $results = $sCon->execute()->fetchAll(\PDO::FETCH_OBJ);

            foreach ($results as $result) {
                if ($result->eStudent_count < $limit) {
                    return false;
                }
            }
        }

696
697
        return true;
    }
Open Source Developer's avatar
trans    
Open Source Developer committed
698

699

Open Source Developer's avatar
changes    
Open Source Developer committed
700
    public function FindCapacityPerSchool(Request $request)
Open Source Developer's avatar
trans    
Open Source Developer committed
701
    {
Open Source Developer's avatar
changes    
Open Source Developer committed
702
        $i = 0;
703
        $authToken = $request->headers->get('PHP_AUTH_USER');
Open Source Developer's avatar
trans    
Open Source Developer committed
704
705

        $users = $this->entityTypeManager->getStorage('user')->loadByProperties(array('name' => $authToken));
706
707
708
709
710
711
712
        $user = reset($users);
        if ($user) {
            $schoolid = $user->init->value;
            $schools = $this->entityTypeManager->getStorage('eepal_school')->loadByProperties(array('id' => $schoolid));
            $school = reset($schools);
            if (!$school) {
                $this->logger->warning('no access to this school='.$user->id());
713
                return $this->respondWithStatus(['message' => 'No access to this school'], Response::HTTP_FORBIDDEN);
714
            }
715
716

            $operation_shift = $school->operation_shift->value;
717
718
719
720
721
            $userRoles = $user->getRoles();
            $userRole = '';
            foreach ($userRoles as $tmpRole) {
                if ($tmpRole === 'epal') {
                    $userRole = $tmpRole;
Open Source Developer's avatar
trans    
Open Source Developer committed
722
                }
723
724
            }
            if ($userRole === '') {
725
                return $this->respondWithStatus(['error_code' => 4003], Response::HTTP_FORBIDDEN);
726
            } elseif ($userRole === 'epal') {
Open Source Developer's avatar
changes    
Open Source Developer committed
727
                $categ = $school->metathesis_region->value;
728
                $list = array();
729

Open Source Developer's avatar
changes    
Open Source Developer committed
730
731
732
733
734
735
736
737
738
739
                $CourseA = $this->entityTypeManager->getStorage('eepal_school')->loadByProperties(array('id' => $schoolid));
                $classcapacity = reset($CourseA);
                if ($classcapacity) {
                    $list[] = array(
                        'class' => 1,
                        'newsector' => 0,
                        'newspecialit' => 0,
                        'taxi' => 'Ά Λυκείου',
                        'capacity' => $classcapacity->capacity_class_a->value,
                        'globalindex' => $i,
740
                    );
741
                }
Open Source Developer's avatar
changes    
Open Source Developer committed
742
                ++$i;
743

Open Source Developer's avatar
changes    
Open Source Developer committed
744
745
746
747
                $CourseB = $this->entityTypeManager->getStorage('eepal_sectors_in_epal')->loadByProperties(array('epal_id' => $schoolid));
                if ($CourseB) {
                    foreach ($CourseB as $object) {
                        $sectorid = $object->sector_id->entity->id();
748

Open Source Developer's avatar
changes    
Open Source Developer committed
749
750
751
752
753
754
755
756
                        $CapacityPerClass = $this->entityTypeManager->getStorage('eepal_sectors_in_epal')->loadByProperties(array('epal_id' => $schoolid, 'sector_id' => $sectorid));
                        $classcapacity = reset($CapacityPerClass);
                        if ($classcapacity) {
                            $list[] = array(
                                'class' => 2,
                                'newsector' => $object->sector_id->entity->id(),
                                'newspecialit' => 0,
                                'taxi' => 'Β Λυκείου  '.$object->sector_id->entity->get('name')->value,
757
                                'capacity' => $classcapacity->capacity_class_sector->value,
Open Source Developer's avatar
changes    
Open Source Developer committed
758
                                'globalindex' => $i,
759
                            );
Open Source Developer's avatar
changes    
Open Source Developer committed
760
761
                        }
                        ++$i;
762
763
                    }
                }
764

Open Source Developer's avatar
changes    
Open Source Developer committed
765
766
                $CourseC = $this->entityTypeManager->getStorage('eepal_specialties_in_epal')->loadByProperties(array('epal_id' => $schoolid));
                if ($CourseC) {
767
                    foreach ($CourseC as $object) {
Open Source Developer's avatar
changes    
Open Source Developer committed
768
769
770
771
772
773
                        $specialityid = $object->specialty_id->entity->id();
                        $CapacityPerClass = $this->entityTypeManager->getStorage('eepal_specialties_in_epal')->loadByProperties(array('epal_id' => $schoolid, 'specialty_id' => $specialityid));
                        $classcapacity = reset($CapacityPerClass);
                        if ($classcapacity) {
                            $list[] = array(
                                'class' => 3,
774
775
776
777
778
                                'newsector' => 0,
                                'newspecialit' => $object->specialty_id->entity->id(),
                                'taxi' => 'Γ Λυκείου  '.$object->specialty_id->entity->get('name')->value,
                                'capacity' => $classcapacity->capacity_class_specialty->value,
                                'globalindex' => $i,
Open Source Developer's avatar
changes    
Open Source Developer committed
779
780
781
                            );
                        }
                        ++$i;
782
783
                    }
                }
Open Source Developer's avatar
trans    
Open Source Developer committed
784

Open Source Developer's avatar
changes    
Open Source Developer committed
785
786
787
                if ($CourseC && $operation_shift != 'ΗΜΕΡΗΣΙΟ') {
                    foreach ($CourseC as $object) {
                        $specialityid = $object->specialty_id->entity->id();
788

Open Source Developer's avatar
changes    
Open Source Developer committed
789
790
791
792
                        $CapacityPerClass = $this->entityTypeManager->getStorage('eepal_specialties_in_epal')->loadByProperties(array('epal_id' => $schoolid, 'specialty_id' => $specialityid));
                        $classcapacity = reset($CapacityPerClass);
                        if ($classcapacity) {
                            $list[] = array(
793
794
795
796
797
798
799
                                'class' => 4,
                                'newsector' => 0,
                                'newspecialit' => $object->specialty_id->entity->id(),
                                'taxi' => 'Δ Λυκείου  '.$object->specialty_id->entity->get('name')->value,
                                'capacity' => $classcapacity->capacity_class_specialty_d->value,
                                'globalindex' => $i,
                            );
Open Source Developer's avatar
changes    
Open Source Developer committed
800
801
                        }
                        ++$i;
802
803
                    }
                }
Open Source Developer's avatar
Open Source Developer committed
804

805
                return $this->respondWithStatus($list, Response::HTTP_OK);
Open Source Developer's avatar
Open Source Developer committed
806
            }
807
        } else {
808
            return $this->respondWithStatus(['message' => t('EPAL user not found')], Response::HTTP_FORBIDDEN);
Open Source Developer's avatar
trans    
Open Source Developer committed
809
810
        }
    }
811

Open Source Developer's avatar
changes    
Open Source Developer committed
812
    public function FindCoursesPerSchool(Request $request)
Open Source Developer's avatar
Open Source Developer committed
813
    {
Open Source Developer's avatar
Open Source Developer committed
814
        $i = 0;
815
        $authToken = $request->headers->get('PHP_AUTH_USER');
Open Source Developer's avatar
Open Source Developer committed
816
817

        $users = $this->entityTypeManager->getStorage('user')->loadByProperties(array('name' => $authToken));
818
819
820
821
822
823
824
825
826
827
828
829
830
831
        $user = reset($users);
        if ($user) {
            $schoolid = $user->init->value;
            $schools = $this->entityTypeManager->getStorage('eepal_school')->loadByProperties(array('id' => $schoolid));
            $school = reset($schools);
            if (!$school) {
                $this->logger->warning('no access to this school='.$user->id());
                $response = new Response();
                $response->setContent('No access to this school');
                $response->setStatusCode(Response::HTTP_FORBIDDEN);
                $response->headers->set('Content-Type', 'application/json');

                return $response;
            }
Open Source Developer's avatar
Open Source Developer committed
832
            $operation_shift = $school -> operation_shift -> value;
833
834
835
836
837
            $userRoles = $user->getRoles();
            $userRole = '';
            foreach ($userRoles as $tmpRole) {
                if ($tmpRole === 'epal') {
                    $userRole = $tmpRole;
Open Source Developer's avatar
Open Source Developer committed
838
                }
839
840
841
            }
            if ($userRole === '') {
                return $this->respondWithStatus([
Open Source Developer's avatar
Open Source Developer committed
842
843
                             'error_code' => 4003,
                         ], Response::HTTP_FORBIDDEN);
844
            } elseif ($userRole === 'epal') {
Open Source Developer's avatar
Open Source Developer committed
845
                $categ = $school->metathesis_region->value;
846
                $list = array();
847

848
                $CourseA = $this->entityTypeManager->getStorage('eepal_school')->loadByProperties(array('id' => $schoolid));
Open Source Developer's avatar
changes    
Open Source Developer committed
849
                if ($CourseA) {
850
851
852
853
854
855
                    $limit_down = $this->entityTypeManager->getStorage('epal_class_limits')->loadByProperties(array('name' => 1, 'category' => $categ));
                    $limitdown = reset($limit_down);
                    if ($limitdown) {
                        $limit = $limitdown->limit_down->value;
                    }
                    $studentPerSchool = $this->entityTypeManager->getStorage('epal_student_class')->loadByProperties(array('epal_id' => $schoolid, 'specialization_id' => -1, 'currentclass' => 1));
Open Source Developer's avatar
Open Source Developer committed
856

Open Source Developer's avatar
Open Source Developer committed
857
858
                    $list[] = array(
                        'class' => 1,
Open Source Developer's avatar
Open Source Developer committed
859
860
                        'newsector' => 0,
                        'newspecialit' => 0,
Open Source Developer's avatar
Open Source Developer committed
861
                        'taxi' => 'Ά Λυκείου',
862
                        'globalindex' => $i,
Open Source Developer's avatar
Open Source Developer committed
863
864
                        'limitdown' => $limit,
                        'size' => sizeof($studentPerSchool),
Open Source Developer's avatar
Open Source Developer committed
865
                       );
866
867
                }
                ++$i;
868

869
870
                $CourseB = $this->entityTypeManager->getStorage('eepal_sectors_in_epal')->loadByProperties(array('epal_id' => $schoolid));
                if ($CourseB) {
Open Source Developer's avatar
Open Source Developer committed
871
872
873
874
875
876
                    $limit_down = $this->entityTypeManager->getStorage('epal_class_limits')->loadByProperties(array('name' => 2, 'category' => $categ));
                    $limitdown = reset($limit_down);
                    if ($limitdown) {
                        $limit = $limitdown->limit_down->value;
                    }

877
878
                    foreach ($CourseB as $object) {
                        $sectorid = $object->sector_id->entity->id();
Open Source Developer's avatar
bug    
Open Source Developer committed
879
                        $studentPerSchool = $this->entityTypeManager->getStorage('epal_student_class')->loadByProperties(array('epal_id' => $schoolid, 'specialization_id' => $sectorid, 'currentclass' => 2));
880
881
882
883
884
885
886
887
888
                        $list[] = array(
                            'class' => 2,
                            'newsector' => $object->sector_id->entity->id(),
                            'newspecialit' => 0,
                            'taxi' => 'Β Λυκείου  '.$object->sector_id->entity->get('name')->value,
                            'globalindex' => $i,
                            'limitdown' => $limit,
                            'size' => sizeof($studentPerSchool),
                            );
889

890
                        ++$i;
Open Source Developer's avatar
Open Source Developer committed
891
                    }
892
                }
893

894
895
                $CourseC = $this->entityTypeManager->getStorage('eepal_specialties_in_epal')->loadByProperties(array('epal_id' => $schoolid));
                if ($CourseC) {
Open Source Developer's avatar
Open Source Developer committed
896
897
                    $limit_down = $this->entityTypeManager->getStorage('epal_class_limits')->loadByProperties(array('name' => 3, 'category' => $categ));
                        $limitdown = reset($limit_down);
898
899
900
901
                    if ($limitdown) {
                        $limit = $limitdown->limit_down->value;
                    }
                    foreach ($CourseC as $object) {
902
                        $specialityid = $object->specialty_id->entity->id();
Open Source Developer's avatar
bug    
Open Source Developer committed
903
                        $studentPerSchool = $this->entityTypeManager->getStorage('epal_student_class')->loadByProperties(array('epal_id' => $schoolid, 'specialization_id' => $specialityid, 'currentclass' => 3));
904
                        $list[] = array(
905
                            'class' => 3,
906
907
908
909
910
911
912
                            'newsector' => 0,
                            'newspecialit' => $object->specialty_id->entity->id(),
                            'taxi' => 'Γ Λυκείου  '.$object->specialty_id->entity->get('name')->value,
                            'globalindex' => $i,
                            'limitdown' => $limit,
                            'size' => sizeof($studentPerSchool),
                        );
913
                        ++$i;
Open Source Developer's avatar
Open Source Developer committed
914
                    }
915
                }
916

Open Source Developer's avatar
Open Source Developer committed
917
918
919
                if ($CourseC && $operation_shift != 'ΗΜΕΡΗΣΙΟ') {
                        $limit_down = $this->entityTypeManager->getStorage('epal_class_limits')->loadByProperties(array('name' => 4, 'category' => $categ));
                        $limitdown = reset($limit_down);
920
921
922
                    if ($limitdown) {
                        $limit = $limitdown->limit_down->value;
                    }
923
924
                    foreach ($CourseC as $object) {
                        $specialityid = $object->specialty_id->entity->id();
Open Source Developer's avatar
bug    
Open Source Developer committed
925
                        $studentPerSchool = $this->entityTypeManager->getStorage('epal_student_class')->loadByProperties(array('epal_id' => $schoolid, 'specialization_id' => $specialityid, 'currentclass' => 4));
926
927
928
929
930
931
932
933
934
                        $list[] = array(
                                'class' => 4,
                                'newsector' => 0,
                                'newspecialit' => $object->specialty_id->entity->id(),
                                'taxi' => 'Δ Λυκείου  '.$object->specialty_id->entity->get('name')->value,
                                'globalindex' => $i,
                                'limitdown' => $limit,
                                'size' => sizeof($studentPerSchool),
                        );
935
936
937
                        ++$i;
                    }
                }
Open Source Developer's avatar
Open Source Developer committed
938

939
                return $this->respondWithStatus($list, Response::HTTP_OK);
940
941
            }
        } else {
Open Source Developer's avatar
Open Source Developer committed
942
            return $this->respondWithStatus([
943
                    'message' => t('EPAL user not found'),
Open Source Developer's avatar
Open Source Developer committed
944
945
946
947
                ], Response::HTTP_FORBIDDEN);
        }
    }

948
949
    private function respondWithStatus($arr, $s)
    {
Open Source Developer's avatar
transf    
Open Source Developer committed
950
951
        $res = new JsonResponse($arr);
        $res->setStatusCode($s);
952

Open Source Developer's avatar
transf    
Open Source Developer committed
953
954
955
        return $res;
    }
}