Commit 512d5de2 authored by Νίκος Κατσαούνος's avatar Νίκος Κατσαούνος

Merge branch 'develop' of https://git.minedu.gov.gr/itminedu/e-epal into component_updates

parents 9f99a8df 569c2ae6
# Ηλεκτρονική υπηρεσία για εγγραφές και μετεγγραφές μαθητών στην Επαγγελματική Εκπαίδευση #
# Ηλεκτρονική υπηρεσία δηλώσεων προτίμησης ΕΠΑΛ για το νέο σχολικό έτος #
# Περιγραφή #
Η Ηλεκτρονική Υπηρεσία για τις εγγραφές και μετεγγραφές μαθητών στα Επαγγελματικά Λύκεια (ΕΠΑΛ) που θα αναπτυχθεί έχει ως κύριο σκοπό να παρέχει τη δυνατότητα ηλεκτρονικής δήλωσης προτίμησης των μαθητών για φοίτηση σε κάποιο από τα ΕΠΑΛ της χώρας μας, καθώς και την κατανομή τους σε αυτά με βάση συγκεκριμένα κριτήρια και λαμβάνοντας υπόψη τις προτιμήσεις τους. Η δημιουργία της υπηρεσίας θα υλοποιηθεί από την ομάδα Ανοικτού Λογισμικού του Υπουργείου Παιδείας, η οποία είναι αρμόδια για τον Σχεδιασμό, Ανάπτυξη και Συντήρηση Εφαρμογών Ανοικτού Λογισμικού του ΥΠΠΕΘ και υπάγεται στη Γενική Διεύθυνση Στρατηγικού Σχεδιασμού, Προγραμματισμού και Ηλεκτρονικής Διακυβέρνησης.
Η Ηλεκτρονική Υπηρεσία δηλώσεων προτίμησης Επαγγελματικών Λυκείων (ΕΠΑΛ) για το νέο σχολικό έτος που αναπτύσσεται έχει ως κύριο σκοπό να παρέχει τη δυνατότητα ηλεκτρονικής δήλωσης προτίμησης των μαθητών για φοίτηση σε κάποιο από τα ΕΠΑΛ της χώρας μας, καθώς και την κατανομή τους σε αυτά με βάση συγκεκριμένα κριτήρια και λαμβάνοντας υπόψη τις προτιμήσεις τους. Η δημιουργία της υπηρεσίας θα υλοποιηθεί από την ομάδα Ανοικτού Λογισμικού του Υπουργείου Παιδείας, η οποία είναι αρμόδια για τον Σχεδιασμό, Ανάπτυξη και Συντήρηση Εφαρμογών Ανοικτού Λογισμικού του ΥΠΠΕΘ και υπάγεται στη Γενική Διεύθυνση Στρατηγικού Σχεδιασμού, Προγραμματισμού και Ηλεκτρονικής Διακυβέρνησης.
Οι διαδικασίες υλοποίησης του έργου θα ακολουθήσουν τη μεθοδολογία ευέλικτης ανάπτυξης λογισμικού Agile σε πρότυπα Scrum, που υπόσχεται ανταπόκριση στις αλλαγές, παραγωγικότερες πρακτικές και λιγότερη γραφειοκρατία. Η ανταπόκριση στις αλλαγές αναφέρεται κυρίως στην συνολική ικανότητα της διαδικασίας ανάπτυξης να προσαρμόζεται ανάλογα όταν προκύπτουν αλλαγές στην πορεία του έργου, καθώς και στην ανάγκη για συνεργασία μεταξύ όλων των συμμετεχόντων. Η μέθοδος αυτή είναι μια επαναληπτική και αυξητική προσέγγιση για την ανάπτυξη έργων που επιτρέπει την προσαρμογή στις αλλαγές που προκύπτουν.
......
......@@ -43,17 +43,17 @@ function epal_mail($key, &$message, $params) {
switch ($key) {
case 'send_verification_code':
$message['from'] = \Drupal::config('system.site')->get('mail');
$message['subject'] = t('Σύστημα υποβολής αιτήσεων εγγραφής σε ΕΠΑΛ: Επιβεβαίωση e-mail', $options);
$message['subject'] = t('Σύστημα υποβολής ηλεκτρονικών δηλώσεων προτίμησης ΕΠΑΛ για το νέο σχολικό έτος: Επιβεβαίωση e-mail', $options);
$message['body'][] = $params['message'];
break;
case 'massive_mail_unallocated':
$message['from'] = \Drupal::config('system.site')->get('mail');
$message['subject'] = t('Μη ικανοποίηση ηλεκτρονικής αίτησης για εγγραφή σε ΕΠΑΛ', $options);
$message['subject'] = t('Μη ικανοποίηση ηλεκτρονικής δήλωσης προτίμησης ΕΠΑΛ', $options);
$message['body'][] = $params['message'];
break;
case 'massive_mail_located':
$message['from'] = \Drupal::config('system.site')->get('mail');
$message['subject'] = t('Ικανοποίηση ηλεκτρονικής αίτησης για εγγραφή σε ΕΠΑΛ', $options);
$message['subject'] = t('Ικανοποίηση ηλεκτρονικής δήλωσης προτίμησης ΕΠΑΛ', $options);
$message['body'][] = $params['message'];
break;
}
......
......@@ -5,6 +5,8 @@ namespace Drupal\epal;
use Symfony\Component\HttpFoundation\Response;
use Exception;
use Drupal\epal\Crypt;
/**
* Description of Client
*
......@@ -171,30 +173,32 @@ class Client
}, '');
$result = $this->get($endpoint, [], $headers); // data as path params...
try {
$crypt = new Crypt();
$val = 'call:' . print_r($endpoint, true) . ':rcv:' . print_r($result, true);
$val_enc = $crypt->encrypt($val);
$this->log(__METHOD__ . $val_enc, 'info');
} catch (\Exception $e) {
$this->log(__METHOD__ . " cannot log encrypted", 'info');
}
if ($result['success'] === false) {
$this->log(__METHOD__ . " Error while calling ws. Diagnostic: {$result['response']}. Response code: {$result['http_status']}", "error");
throw new Exception("Προέκυψε λάθος κατά την άντληση των στοιχείων.");
}
// now return true/false/null ?
return $result['response'];
// if (($response = json_decode($result['response'], true)) !== null) {
// return $response;
// } else {
// throw new Exception("Προέκυψε λάθος κατά την λήψη των στοιχείων. Αδυναμία άντλησης στοιχείων από το response {$result['response']}");
// }
}
public function getStudentEpalPromotion($didactic_year_id, $lastname, $firstname, $father_firstname, $mother_firstname, $birthdate, $registry_no, $level_name)
{
$this->log(__METHOD__); // " $didactic_year_id, $lastname, $firstname, $father_firstname, $mother_firstname, $birthdate, $registry_no, $level_name");
$this->log(__METHOD__);
return $this->getStudentEpalPromotionOrCertification($this->_settings['ws_endpoint_studentepalpromotion'], $didactic_year_id, $lastname, $firstname, $father_firstname, $mother_firstname, $birthdate, $registry_no, $level_name);
}
public function getStudentEpalCertification($didactic_year_id, $lastname, $firstname, $father_firstname, $mother_firstname, $birthdate, $registry_no, $level_name)
{
$this->log(__METHOD__); // " $didactic_year_id, $lastname, $firstname, $father_firstname, $mother_firstname, $birthdate, $registry_no, $level_name");
$this->log(__METHOD__);
return $this->getStudentEpalPromotionOrCertification($this->_settings['ws_endpoint_studentepalcertification'], $didactic_year_id, $lastname, $firstname, $father_firstname, $mother_firstname, $birthdate, $registry_no, $level_name);
}
......@@ -228,6 +232,14 @@ class Client
$result = curl_exec($ch);
// log url as appropriate
try {
$crypt = new Crypt();
$uri = $crypt->encrypt($uri);
} catch (\Exception $e) {
$uri = '-cannot encrypt-';
}
if (curl_errno($ch)) {
$this->log(__METHOD__ . " Error calling {$uri}. Curl error: " . curl_error($ch) . " Curl info: " . var_export(curl_getinfo($ch), true), "error");
throw new Exception("Λάθος κατά την κλήση της υπηρεσίας.");
......@@ -263,6 +275,14 @@ class Client
$result = curl_exec($ch);
// log url as appropriate
try {
$crypt = new Crypt();
$uri = $crypt->encrypt($uri);
} catch (\Exception $e) {
$uri = '-cannot encrypt-';
}
if (curl_errno($ch)) {
$this->log(__METHOD__ . " Error calling {$uri}. Curl error: " . curl_error($ch) . " Curl info: " . var_export(curl_getinfo($ch), true), "error");
throw new Exception("Λάθος κατά την κλήση της υπηρεσίας.");
......
......@@ -79,6 +79,19 @@ class ApplicationSubmit extends ControllerBase
], Response::HTTP_BAD_REQUEST);
}
$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_application->value) {
return $this->respondWithStatus([
"error_code" => 3002
], Response::HTTP_FORBIDDEN);
}
$crypt = new Crypt();
try {
$name_encoded = $crypt->encrypt($applicationForm[0]['name']);
......@@ -266,14 +279,14 @@ class ApplicationSubmit extends ControllerBase
(checkdate($date_parts[1], $date_parts[2], $date_parts[0]) !== true)) {
return 1003;
}
/* $birthdate = "{$date_parts[2]}-{$date_parts[1]}-{$date_parts[0]}";
$birthdate = "{$date_parts[2]}-{$date_parts[1]}-{$date_parts[0]}";
// check as per specs:
// - can't check certification prior to 2014, pass through
// - check certification if last passed class is gym
// - check promotion if last passed class is not gym
$check_certification = true;
/* $check_certification = true;
$check_promotion = true;
if (intval($student['lastschool_unittypeid']) == self::UNIT_TYPE_GYM) {
$check_promotion = false;
......@@ -307,12 +320,12 @@ class ApplicationSubmit extends ControllerBase
$student['lastschool_registrynumber'],
$level_name
);
$pass = ($service_rv === true);
if ($service_rv === true) {
$pass = ($service_rv == 'true');
if ($service_rv == 'true') {
$error_code = 0;
} elseif ($service_rv === false) {
} elseif ($service_rv == 'false') {
$error_code = 8002;
} elseif ($service_rv === null) {
} elseif ($service_rv == 'null') {
$error_code = 8003;
} else {
// -1 is an exception and data is already validated
......@@ -322,25 +335,8 @@ class ApplicationSubmit extends ControllerBase
$pass = false;
$error_code = 8000;
}
}
// TODO REMOVE
$this->logger->info(
'check certification: [' . var_export($check_certification, true) . '] ' .
'check promotion: [' . var_export($check_promotion, true) . '] ' .
'pass: [' . var_export($pass, true) . '] ' .
'check: ' . print_r([
$didactic_year_id,
$student['studentsurname'],
$student['name'],
$student['fatherfirstname'],
$student['motherfirstname'],
$birthdate,
$student['lastschool_registrynumber'],
$level_name
], true));
// return 1000; // TODO stop here until all checks are finished
} */
return $error_code; */
return $error_code;
}
}
......@@ -157,7 +157,7 @@ class Distribution extends ControllerBase {
while ($this->choice_id <= $numDistributions) {
//υπολογισμός πλήθους non-finalized αιτήσεων για να καθοριστεί ο αριθμός των fetches που θα κάνουμε με συγκεκριμένο sizeOfBlock
//υπολογισμός πλήθους non-finalized δηλώσεων για να καθοριστεί ο αριθμός των fetches που θα κάνουμε με συγκεκριμένο sizeOfBlock
if ($this->choice_id === 1) {
$sCon = $this->connection->select('epal_student', 'eStudent')
->fields('eStudent', array('id'));
......
......@@ -267,31 +267,20 @@ class InformUnlocatedStudents extends ControllerBase {
. " δεν ικανοποιήθηκε. Παρακαλώ επικοινωνήστε άμεσα τηλεφωνικά με τη Διεύθυνση Δευτεροβάθμιας Εκπαίδευσης / Τμήμα Επαγγελματικής Εκπαίδευσης."
. "\r\n\r\n Ομάδα Διαχείρισης της εφαρμογής e-epal."
. "\r\n Προσοχή: το μήνυμα που διαβάζετε είναι αυτοματοποιημένο. Παρακαλώ μην απαντάτε σε αυτό το μήνυμα.." ;//e-mail body" ;//e-mail body
//add new lines with SENDER name - check it
//$params['subject'] = t('Μη ικανοποίηση ηλεκτρονικής αίτησης για εγγραφή σε ΕΠΑΛ');
//$this->logger->warning($params['message']);
//$langcode = $user->getPreferredLangcode();
$send = true;
$mail_sent = $mailManager->mail($module, $key, $to, $langcode, $params, NULL, $send);
//$mail_sent = 1;
if ($mail_sent) {
//$this->logger->info("Το mail στάλθηκε με επιτυχία");
return 1;
}
else {
//$this->logger->info("Αποτυχία αποστολής mail.");
return 0;
}
}
public function sendMailToLocatedStudents(Request $request) {
//$msg = "test";
try {
if (!$request->isMethod('GET')) {
return $this->respondWithStatus([
......
......@@ -174,9 +174,9 @@ class PDFCreator extends ControllerBase {
private function createHeader($student) {
$this->pdf->SetFont($this->fontBold, '', 16);
$this->pdf->MultiCell(0, 8, $this->prepareString('Ηλεκτρονική Αίτηση Εγγραφής Μαθητή σε ΕΠΑΛ'), 0, 'C');
$this->pdf->MultiCell(0, 8, $this->prepareString('Ηλεκτρονική Δήλωση Προτίμησης ΕΠΑΛ'), 0, 'C');
$this->pdf->SetFont($this->fontBold, '', $this->fontSizeHeader);
$this->pdf->MultiCell(0, 8, $this->prepareString('με αριθμό αίτησης: ' . $student->id->value . ' / ' . date('d-m-y (ώρα: H:i:s)', $student->created->value)), 0, 'C');
$this->pdf->MultiCell(0, 8, $this->prepareString('με αριθμό δήλωσης: ' . $student->id->value . ' / ' . date('d-m-y (ώρα: H:i:s)', $student->created->value)), 0, 'C');
$this->pdf->Ln();
}
......@@ -391,7 +391,7 @@ class PDFCreator extends ControllerBase {
$this->pdf->Ln();
$this->pdf->SetFont($this->fontLight, '', $this->fontSizeRegular);
$this->pdf->Cell($width+15, $height, $this->prepareString('Αίτηση από:'), 0, 'L');
$this->pdf->Cell($width+15, $height, $this->prepareString('Δήλωση από:'), 0, 'L');
$this->pdf->SetFont($this->fontBold, '', $this->fontSizeRegular);
//$this->pdf->Cell($width, $height, $this->prepareString($student->relationtostudent->value), 0, 'L');
$this->pdf->Cell($width, $height, $this->prepareString($relationtostudent_decoded), 0, 'L');
......
......@@ -94,12 +94,12 @@ class ReportsCreator extends ControllerBase {
], Response::HTTP_FORBIDDEN);
}
//υπολογισμός αριθμού αιτήσεων
//υπολογισμός αριθμού δηλώσεων
$sCon = $this->connection->select('epal_student', 'eStudent')
->fields('eStudent', array('id'));
$numTotal = $sCon->countQuery()->execute()->fetchField();
//υπολογισμός αριθμού αιτήσεων που ικανοποιήθηκαν στην i προτίμηση
//υπολογισμός αριθμού δηλώσεων που ικανοποιήθηκαν στην i προτίμηση
$numData = array();
for ($i=0; $i < 3; $i++) {
$sCon = $this->connection->select('epal_student_class', 'eStudent')
......@@ -109,7 +109,7 @@ class ReportsCreator extends ControllerBase {
array_push($numData, $sCon->countQuery()->execute()->fetchField());
}
// υπολογισμός αριθμού αιτήσεων που ΔΕΝ ικανοποιήθηκαν
// υπολογισμός αριθμού δηλώσεων που ΔΕΝ ικανοποιήθηκαν
//Σημείωση: υπολογισμός με queries στη βάση
$sCon = $this->connection->select('epal_student_class', 'eStudent')
->fields('eStudent', array('student_id'));
......@@ -122,7 +122,7 @@ class ReportsCreator extends ControllerBase {
->condition('eStudent.id', $studentIds, 'NOT IN');
$numNoAllocated = $sCon->countQuery()->execute()->fetchField();
//υπολογισμός αριθμού αιτήσεων που τοποθετήθηκαν προσωρινά σε ολιγομελή τμήματα
//υπολογισμός αριθμού δηλώσεων που τοποθετήθηκαν προσωρινά σε ολιγομελή τμήματα
$numInSmallClasses = 0;
$sCon = $this->connection->select('epal_student_class', 'eStudent')
->fields('eStudent', array('id'))
......@@ -132,7 +132,7 @@ class ReportsCreator extends ControllerBase {
$list = array();
array_push($list,(object) array('name' => "Αριθμός Αιτήσεων", 'numStudents' => $numTotal));
array_push($list,(object) array('name' => "Αριθμός Δηλώσεων Προτίμησης", 'numStudents' => $numTotal));
array_push($list,(object) array('name' => "Αριθμός μαθητών που τοποθετήθηκαν στην πρώτη τους προτίμηση", 'numStudents' => $numData[0]));
array_push($list,(object) array('name' => "Αριθμός μαθητών που τοποθετήθηκαν στην δεύτερή τους προτίμηση", 'numStudents' => $numData[1]));
array_push($list,(object) array('name' => "Αριθμός μαθητών που τοποθετήθηκαν στην τρίτη τους προτίμηση", 'numStudents' => $numData[2]));
......
......@@ -118,10 +118,4 @@ class WSConsumer extends ControllerBase
return $randomString;
}
// private function respondWithStatus($arr, $s)
// {
// $res = new JsonResponse($arr);
// $res->setStatusCode($s);
// return $res;
// }
}
......@@ -11,7 +11,7 @@ class Crypt
private $fname; // store
public function __construct($fname)
public function __construct($fname = null)
{
if (is_string($fname)) {
$this->fname = $fname;
......
......@@ -8,7 +8,7 @@
},
"scripts": {
"start": "webpack-dashboard -- webpack --progress --colors --watch --display-error-details --display-cached",
"build": "webpack --progress --colors --watch --display-error-details --display-cached",
"build": "webpack --config webpack.prod.js --progress --colors --watch --display-error-details --display-cached",
"typings": "rimraf typings/ && typings install"
},
"devDependencies": {
......@@ -22,6 +22,7 @@
"babel-preset-env": "^1.1.4",
"babel-preset-es2015": "^6.18.0",
"babel-preset-stage-1": "^6.16.0",
"babili-webpack-plugin": "^0.1.1",
"bootstrap-loader": "^2.0.0-beta.20",
"css-loader": "^0.25.0",
"node-sass": "^4.5.0",
......@@ -35,6 +36,8 @@
"typescript": "^2.0.10",
"url-loader": "^0.5.7",
"webpack": "^1.14.0",
"webpack-cleanup-plugin": "^0.5.1",
"webpack-closure-compiler": "^2.1.4",
"webpack-dashboard": "^0.2.0",
"webpack-dev-server": "^1.16.2"
},
......@@ -49,8 +52,7 @@
"@angular/router": "^3.2.0",
"@ngui/auto-complete": "^0.13.3",
"@types/file-saver": "0.0.1",
"@types/html2canvas": "^0.5.33",
"@types/jspdf": "^1.1.31",
"@types/jquery": "^2.0.41",
"@types/node": "^6.0.60",
"@types/node-sass": "^3.10.32",
"babel-polyfill": "^6.20.0",
......@@ -65,10 +67,8 @@
"file-system": "^2.2.2",
"fs-writefile-promise": "^2.0.0",
"html-webpack-plugin": "^2.24.1",
"html2canvas": "^0.5.0-beta4",
"immutable": "^3.8.1",
"jquery": "^3.1.1",
"jspdf": "^1.3.3",
"mydatepicker": "^2.0.13",
"ng2-redux": "^5.1.0",
"ng2-smart-table": "^0.4.0-5",
......
......@@ -31,7 +31,10 @@ import {HelperDataService} from './services/helper-data-service';
import {LoaderService} from './services/Spinner.service';
import {AuthService} from './services/auth.service';
import SchoolAuthGuard from './guards/school.auth.guard';
import SchoolStudentsLockedGuard from './guards/school.students.locked.guard';
import SchoolCapacityLockedGuard from './guards/school.capacity.locked.guard';
import StudentAuthGuard from './guards/student.auth.guard';
import StudentLockGuard from './guards/student.lock.guard';
import RegionEduAuthGuard from './guards/regionedu.auth.guard';
import EduAdminAuthGuard from './guards/eduadmin.auth.guard';
import MinistryAuthGuard from './guards/ministry.auth.guard';
......@@ -85,14 +88,16 @@ class MyLocalization extends NgLocalization {
LoaderService,
AuthService,
SchoolAuthGuard,
SchoolStudentsLockedGuard,
SchoolCapacityLockedGuard,
StudentAuthGuard,
StudentLockGuard,
RegionEduAuthGuard,
EduAdminAuthGuard,
MinistryAuthGuard
]
})
class AppModule {}
// enableProdMode();
enableProdMode();
platformBrowserDynamic().bootstrapModule(AppModule);
import { Component, OnInit, OnDestroy, ElementRef, ViewChild, Renderer} from "@angular/core";
import { Component, OnInit, OnDestroy, ElementRef, ViewChild, Renderer } from "@angular/core";
import { Injectable } from "@angular/core";
import { AppSettings } from '../../app.settings';
import { HelperDataService } from '../../services/helper-data-service';
import {Observable} from "rxjs/Observable";
import {Http, Headers, RequestOptions} from '@angular/http';
import { Observable } from "rxjs/Observable";
import { Http, Headers, RequestOptions } from '@angular/http';
import { NgRedux, select } from 'ng2-redux';
import { IAppState } from '../../store/store';
import {Router, ActivatedRoute, Params} from '@angular/router';
import { Router, ActivatedRoute, Params } from '@angular/router';
import { BehaviorSubject, Subscription } from 'rxjs/Rx';
import { ILoginInfo } from '../../store/logininfo/logininfo.types';
......@@ -217,7 +217,7 @@ import {
private selectionCClass: BehaviorSubject<boolean>;
private limitsSub: Subscription;
private limits$: BehaviorSubject<any>;
private SchoolId ;
private SchoolId;
private currentclass: Number;
private saved: Array<number> = new Array();
private limitdown = 0;
......@@ -286,7 +286,7 @@ import {
this.School$.next(x);
console.log(x[0].type, "schoolid!");
this.SchoolId = x[0].type;
if (this.SchoolId == 'ΗΜΕΡΗΣΙΟ'){
if (this.SchoolId == 'ΗΜΕΡΗΣΙΟ') {
this.selectiontype.next(false);
}
......@@ -304,7 +304,7 @@ import {
verifyclass(txop) {
this.limitdown = 0;
this.limitup = 5;
console.log(this.SchoolId,"schoolida");
console.log(this.SchoolId, "schoolida");
this.pageno = 1;
this.retrievedStudent.next(false);
if (txop.value === "1") {
......@@ -355,7 +355,7 @@ import {
checkbclass(tmop, txop) {
console.log(this.SchoolId,"schoolidn");
console.log(this.SchoolId, "schoolidn");
this.pageno = 1;
this.retrievedStudent.next(false);
var sectorint = +this.formGroup.value.tomeas;
......@@ -376,82 +376,75 @@ import {
findstudent(txop, pageno) {
var sectorint = +this.formGroup.value.tomeas;
let sectorint = +this.formGroup.value.tomeas;
this.currentclass = +txop.value;
this.formGroup.get('pageno').setValue(this.pageno);
if (this.pageno == 1) {
console.log("mphkepage = 1");
this.StudentsSizeSub = this._hds.getStudentPerSchool(sectorint, this.currentclass, 0, 0).subscribe(x => {
this.StudentsSizeSub = this._hds.getStudentPerSchool(sectorint, this.currentclass, 0, 0)
.subscribe(x => {
this.StudentsSize$.next(x);
this.totallimit = x.id;
this.limitsSub = this._hds.getlimitsofcourse(this.currentclass).subscribe(data => {
this.limits$.next(data);
console.log(this.totallimit, data[0].limitdown, "oria");
this.tot_pages = x.id / 5;
this.tot_pages = Math.floor(x.id / 5);
if (x.id % 5 > 0) {
this.tot_pages = (x.id - (x.id % 5)) / 5 + 1;
// this.tot_pages = (x.id - (x.id % 5)) / 5 + 1;
this.tot_pages += 1;
}
console.log(this.tot_pages,"totpages")
if (isNaN(this.tot_pages)){
console.log(this.tot_pages, "totpages")
if (isNaN(this.tot_pages)) {
this.retrievedStudent.next(false);
this.tot_pages = 0;
}
if ( (x.id < data[0].limitdown) || (isNaN(this.tot_pages)))
{
if ((x.id < parseInt(data[0].limitdown)) || (isNaN(this.tot_pages))) {
console.log("mphkeprwto!")
this.retrievedStudent.next(false);
this.tot_pages = 0;
this.formGroup.get('maxpage').setValue(this.tot_pages);
//this.outoflimits.next(true);
}
else
{
} else {
// this.outoflimits.next(false);
this.formGroup.get('maxpage').setValue(this.tot_pages);
console.log(this.tot_pages,"mazeuw mathites");
this.StudentInfoSub = this._hds.getStudentPerSchool(sectorint, this.currentclass, this.limitdown, this.limitup).subscribe(data => {
console.log(this.tot_pages, "mazeuw mathites");
this.StudentInfoSub = this._hds.getStudentPerSchool(sectorint, this.currentclass, this.limitdown, this.limitup)
.subscribe(data => {
this.StudentInfo$.next(data);
console.log("tot.pages", this.formGroup.value.maxpage, "max1", this.tot_pages);
this.retrievedStudent.next(true);
},
error => {
this.StudentInfo$.next([{}]);
console.log("Error Getting Students");
},
() => console.log("Getting Students"));
() => console.log("Getting Students")
);
}
},
error => {
this.limits$.next([{}]);
console.log("Error Getting limits");
},
() => console.log("Getting limits"));
() => console.log("Getting limits")
);
});
}
else{
else {
console.log("eisai edw", this.tot_pages);
if (this.tot_pages == 0 ){
if (this.tot_pages == 0) {
console.log("mphke1", this.formGroup.value.maxpage, this.tot_pages);
this.retrievedStudent.next(false);
}
else
{
console.log(this.tot_pages,"mazeuw mathites");
else {
console.log(this.tot_pages, "mazeuw mathites");
this.StudentInfoSub = this._hds.getStudentPerSchool(sectorint, this.currentclass, this.limitdown, this.limitup).subscribe(data => {
this.StudentInfo$.next(data);
......
......@@ -7,7 +7,7 @@ import {OnInit, Component, Injectable} from '@angular/core';
<div class="row" style="margin-top: 130px; margin-bottom: 200px;">
<div class="col-md-3 offset-md-3">
<button type="submit" class="btn-primary btn-lg btn-block isclickable" style="margin: 0px; font-size: 1em; padding: 5px;" (click)="navigatedirector()">
Αιτηθέντες<br />Μαθητές
Δηλώσεις<br />Μαθητών
</button>
</div>
<div class="col-md-6">
......
......@@ -19,18 +19,26 @@
</div>
<div class="header-wrapper">
<header id="navbar" role="banner" class="navbar navbar-default">
<div class="container">
<div *ngIf="(loginInfo$ | async).size > 0">
<ul class="navbar-nav">
<div *ngIf="(loginInfo$ | async).cu_name !== ''">
<div class="row">
<div class="offset-md-8 col-md-4 pull-right">
<span class="username">{{ cuName }}&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span class="signout isclickable" (click)="signOut()" style="color:#CC3300;">Αποσύνδεση&nbsp;&nbsp;</span>
<i class="fa fa-sign-out isclickable" (click)="signOut()"></i>
<div class="col-md-2">
<i class="fa fa-home isclickable" (click)="goHome()"></i>
<span class="signout isclickable" (click)="goHome()" style="color:#CC3300;">&nbsp;&nbsp;Αρχική</span>
</div>
<div class="col-md-6">&nbsp;</div>
<div class="col-md-4" style="text-align: right">
<span class="username" style="text-align: right">{{ cuName }}&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span class="signout isclickable" style="text-align: right" (click)="signOut()" style="color:#CC3300;">Αποσύνδεση&nbsp;&nbsp;</span>
<i class="fa fa-sign-out isclickable" style="text-align: right" (click)="signOut()"></i>
</div>
</div>
</div>
</ul>
</div>
</div>
</header>
</div>
......@@ -32,7 +32,7 @@ export default class HeaderComponent implements OnInit, OnDestroy {
private modalText: BehaviorSubject<string>;
private modalHeader: BehaviorSubject<string>;
constructor( private _ata: LoginInfoActions,
constructor(private _ata: LoginInfoActions,
private _hds: HelperDataService,
private _csa: SectorCoursesActions,
private _sfa: SectorFieldsActions,
......@@ -86,19 +86,19 @@ export default class HeaderComponent implements OnInit, OnDestroy {
// this.router.navigate(['/school']);
this.authToken = "";
this.authRole = "";
window.location.assign((<any> data).next);
window.location.assign((<any>data).next);
}
else if (this.authRole === PDE_ROLE) {
// this.router.navigate(["/school"]);
this.authToken = "";
this.authRole = "";
window.location.assign((<any> data).next);
window.location.assign((<any>data).next);
}
else if (this.authRole === DIDE_ROLE) {
// this.router.navigate(["/school"]);
this.authToken = "";
this.authRole = "";
window.location.assign((<any> data).next);
window.location.assign((<any>data).next);
}
else if (this.authRole === STUDENT_ROLE) {
this._eca.initEpalClasses();
......@@ -121,6 +121,24 @@ export default class HeaderComponent implements OnInit, OnDestroy {
});
}
goHome() {
if (this.authRole === SCHOOL_ROLE) {
this.router.navigate(['/school']);
}
else if (this.authRole === PDE_ROLE) {
this.router.navigate(["/school"]);
}
else if (this.authRole === DIDE_ROLE) {
this.router.navigate(["/school"]);
}
else if (this.authRole === STUDENT_ROLE) {
this.router.navigate([""]);
}
else if (this.authRole === MINISTRY_ROLE) {
this.router.navigate(["/ministry"]);
}
}
public showModal(): void {
(<any>$("#headerNotice")).modal("show");
}
......
......@@ -28,7 +28,7 @@ import { API_ENDPOINT, API_ENDPOINT_PARAMS } from '../app.settings';
<div *ngIf="!authToken" class="col-md-8 offset-md-4">
<button type="submit" class="btn-primary btn-lg" (click)="form.submit()">
Είσοδος μέσω TaxisNet<span class="glyphicon glyphicon-menu-right"></span>
Είσοδος μέσω TaxisNet
</button>
</div>
</div>
......@@ -64,23 +64,19 @@ export default class Home implements OnInit {
};
ngOnInit() {
/* this.authToken = this.getCookie('auth_token');
this.authRole = this.getCookie('auth_role');
console.log(this.authToken);
console.log(this.authRole);
if (this.authToken && this.authRole) {
this._ata.getloginInfo({ auth_token: this.authToken, auth_role: this.authRole });
this.removeCookie('auth_token');
this.removeCookie('auth_role');
} */
this.loginInfo$ = this._ngRedux.select(state => {