SubmitedApplications rewrite. submited.aplication.preview rewrite. New...

SubmitedApplications rewrite. submited.aplication.preview rewrite. New validation check in ApplicationSubmit
parent ec0f9657
...@@ -38,6 +38,14 @@ epal.current_user: ...@@ -38,6 +38,14 @@ epal.current_user:
_controller: '\Drupal\epal\Controller\CurrentUser::getLoginInfo' _controller: '\Drupal\epal\Controller\CurrentUser::getLoginInfo'
requirements: requirements:
_user_is_logged_in: 'TRUE' _user_is_logged_in: 'TRUE'
epal.applicationdetails:
path: '/epal/application/{studentId}'
options:
_auth: [ 'basic_auth' ]
defaults:
_controller: '\Drupal\epal\Controller\SubmitedApplications::getApplicationDetails'
requirements:
_user_is_logged_in: 'TRUE'
epal.submitedapplications: epal.submitedapplications:
path: '/epal/subapplic' path: '/epal/subapplic'
options: options:
...@@ -317,4 +325,4 @@ epal.totalstudents: ...@@ -317,4 +325,4 @@ epal.totalstudents:
defaults: defaults:
_controller: '\Drupal\epal\Controller\HelpDesk::findTotalStudents' _controller: '\Drupal\epal\Controller\HelpDesk::findTotalStudents'
requirements: requirements:
_user_is_logged_in: 'TRUE' _user_is_logged_in: 'TRUE'
\ No newline at end of file
...@@ -117,8 +117,7 @@ class ApplicationSubmit extends ControllerBase ...@@ -117,8 +117,7 @@ class ApplicationSubmit extends ControllerBase
$guardian_fathername_encoded = $crypt->encrypt($applicationForm[0]['cu_fathername']); $guardian_fathername_encoded = $crypt->encrypt($applicationForm[0]['cu_fathername']);
$guardian_mothername_encoded = $crypt->encrypt($applicationForm[0]['cu_mothername']); $guardian_mothername_encoded = $crypt->encrypt($applicationForm[0]['cu_mothername']);
} catch (\Exception $e) { } catch (\Exception $e) {
print_r($e->getMessage()); $this->logger->error($e->getMessage());
$this->logger->warning($e->getMessage());
return $this->respondWithStatus([ return $this->respondWithStatus([
"error_code" => 5001 "error_code" => 5001
], Response::HTTP_INTERNAL_SERVER_ERROR); ], Response::HTTP_INTERNAL_SERVER_ERROR);
...@@ -197,7 +196,8 @@ class ApplicationSubmit extends ControllerBase ...@@ -197,7 +196,8 @@ class ApplicationSubmit extends ControllerBase
'guardian_mothername' => $applicationForm[0]['cu_mothername'] 'guardian_mothername' => $applicationForm[0]['cu_mothername']
]), sizeof($applicationForm[1]), $applicationForm[0]['currentclass'], ]), sizeof($applicationForm[1]), $applicationForm[0]['currentclass'],
$applicationForm[3]['sectorfield_id'], $applicationForm[3]['sectorfield_id'],
$applicationForm[3]['coursefield_id'])) > 0) { $applicationForm[3]['coursefield_id'],
$epalUser)) > 0) {
return $this->respondWithStatus([ return $this->respondWithStatus([
"error_code" => $errorCode "error_code" => $errorCode
], Response::HTTP_OK); ], Response::HTTP_OK);
...@@ -284,7 +284,7 @@ class ApplicationSubmit extends ControllerBase ...@@ -284,7 +284,7 @@ class ApplicationSubmit extends ControllerBase
if (!$epalConfig) { if (!$epalConfig) {
$secondPeriodEnabled = 0; $secondPeriodEnabled = 0;
} else { } else {
$secondPeriodEnabled = $epalConfig->activate_second_period->getString(); $secondPeriodEnabled = intval($epalConfig->activate_second_period->getString());
} }
return $secondPeriodEnabled; return $secondPeriodEnabled;
} }
...@@ -301,7 +301,7 @@ class ApplicationSubmit extends ControllerBase ...@@ -301,7 +301,7 @@ class ApplicationSubmit extends ControllerBase
* 8002 τα στοιχεία φοίτησης δεν επικυρώθηκαν * 8002 τα στοιχεία φοίτησης δεν επικυρώθηκαν
* 8003 τα στοιχεία φοίτησης δεν είναι έγκυρα * 8003 τα στοιχεία φοίτησης δεν είναι έγκυρα
*/ */
private function validateStudent($student, $numberOfSchools, $chosenClass, $chosenSector, $chosenCourse) private function validateStudent($student, $numberOfSchools, $chosenClass, $chosenSector, $chosenCourse, $epalUser = null)
{ {
$error_code = 0; $error_code = 0;
if ($numberOfSchools < 1) { if ($numberOfSchools < 1) {
...@@ -386,6 +386,34 @@ class ApplicationSubmit extends ControllerBase ...@@ -386,6 +386,34 @@ class ApplicationSubmit extends ControllerBase
return 1023; return 1023;
} }
// second period: check if application exists
if ($student['second_period'] == 1 && $epalUser !== null) {
$esQuery = $this->connection->select('epal_student', 'es')
->fields('es',
array('name',
'studentsurname',
'birthdate',
));
$esQuery->condition('es.epaluser_id', $epalUser->id(), '=');
$existing = $esQuery->execute()->fetchAll(\PDO::FETCH_OBJ);
/* $existing = $this->entityTypeManager->getStorage('epal_student')
->loadByProperties(['epaluser_id' => $epalUser->id->value]); */
if ($existing && sizeof($existing) > 0) {
$crypt = new Crypt();
foreach ($existing as $candidate) {
if (($crypt->decrypt($candidate->name) == $student['name'])
&& ($crypt->decrypt($candidate->studentsurname) == $student['studentsurname'])
&& ($candidate->birthdate == $student['birthdate'])
) {
return 8004;
}
}
}
}
// check as per specs: // check as per specs:
// - can't check certification prior to 2014, pass through // - can't check certification prior to 2014, pass through
// - check certification if last passed class is gym // - check certification if last passed class is gym
......
...@@ -23,9 +23,9 @@ import { API_ENDPOINT, API_ENDPOINT_PARAMS } from '../app.settings'; ...@@ -23,9 +23,9 @@ import { API_ENDPOINT, API_ENDPOINT_PARAMS } from '../app.settings';
<form [formGroup]="formGroup" method = "POST" action="{{apiEndPoint}}/oauth/login{{apiEndPointParams}}" #form> <form [formGroup]="formGroup" method = "POST" action="{{apiEndPoint}}/oauth/login{{apiEndPointParams}}" #form>
<!-- <input type="hidden" name="X-oauth-enabled" value="true"> --> <!-- <input type="hidden" name="X-oauth-enabled" value="true"> -->
<div class="text-center bg-warning" style="padding: 2em;"><p> <!-- <div class="text-center bg-warning" style="padding: 2em;"><p>
<strong>Ανακοίνωση:</strong> τη Δευτέρα <strong>26/6/2017</strong> <strong>Ανακοίνωση:</strong> τη Δευτέρα <strong>26/6/2017</strong>
το σύστημα θα είναι διαθέσιμο<br/> <strong>μετά τις 13:00</strong> λόγω εργασιών συντήρησης.</p></div> το σύστημα θα είναι διαθέσιμο<br/> <strong>μετά τις 13:00</strong> λόγω εργασιών συντήρησης.</p></div> -->
<div *ngFor="let loginInfoToken$ of loginInfo$ | async; let i=index"></div> <div *ngFor="let loginInfoToken$ of loginInfo$ | async; let i=index"></div>
<div class="row" style="min-height: 300px; margin-top: 100px;"> <div class="row" style="min-height: 300px; margin-top: 100px;">
......
...@@ -440,6 +440,11 @@ import { HelperDataService } from "../../services/helper-data-service"; ...@@ -440,6 +440,11 @@ import { HelperDataService } from "../../services/helper-data-service";
mText = "Τα στοιχεία φοίτησης που υποβάλλατε δεν είναι έγκυρα. Παρακαλώ ελέγξτε τη φόρμα σας και προσπαθήστε ξανά. Εάν το θέμα συνεχίσει να υφίσταται, επικοινωνήστε με την ομάδα υποστήριξης."; mText = "Τα στοιχεία φοίτησης που υποβάλλατε δεν είναι έγκυρα. Παρακαλώ ελέγξτε τη φόρμα σας και προσπαθήστε ξανά. Εάν το θέμα συνεχίσει να υφίσταται, επικοινωνήστε με την ομάδα υποστήριξης.";
mHeader = "modal-header-danger"; mHeader = "modal-header-danger";
break; break;
case 8004:
mTitle = "Αποτυχία Υποβολής Δήλωσης Προτίμησης";
mText = "Τα στοιχεία φοίτησης που υποβάλλατε δεν είναι έγκυρα. Παρακαλώ ελέγξτε τη φόρμα σας και προσπαθήστε ξανά. Ελέγξτε επίσης αν έχετε ήδη κάνει δήλωση για τον ίδιο μαθητή.";
mHeader = "modal-header-danger";
break;
default: default:
mTitle = "Αποτυχία Υποβολής Δήλωσης Προτίμησης"; mTitle = "Αποτυχία Υποβολής Δήλωσης Προτίμησης";
mText = "Ελέξτε τη φόρμα σας. Υπάρχουν λάθη - ελλείψεις που δεν επιτρέπουν την υποβολή."; mText = "Ελέξτε τη φόρμα σας. Υπάρχουν λάθη - ελλείψεις που δεν επιτρέπουν την υποβολή.";
......
...@@ -89,25 +89,22 @@ import {Location} from '@angular/common'; ...@@ -89,25 +89,22 @@ import {Location} from '@angular/common';
<div style="width: 100%"> <div style="width: 100%">
<div *ngFor="let StudentDetails$ of SubmitedDetails$ | async" [hidden]="UserData$.id !== applicationIdActive" style="margin: 10px 10px 10px 10px;"> <div *ngFor="let StudentDetails$ of SubmitedDetails$ | async" [hidden]="UserData$.id !== applicationIdActive" style="margin: 10px 10px 10px 10px;">
<div *ngFor="let StudentResult$ of StudentResults$ | async"> <div *ngIf = "StudentDetails$.applicantsResultsDisabled == '0'" >
<div *ngIf = "StudentResult$.applicantsResultsDisabled == '0'" > <div *ngIf = "StudentDetails$.status == '1'" >
<div *ngIf = "StudentResult$.status == '1'" >
<div class="col-md-12" style="font-size: 1.0em; color: #143147; font-weight: bold;"> <div class="col-md-12" style="font-size: 1.0em; color: #143147; font-weight: bold;">
Η αίτησή σας ικανοποιήθηκε. Έχετε επιλεγεί για να εγγραφείτε στο {{StudentResult$.schoolName}}. Η αίτησή σας ικανοποιήθηκε. Έχετε επιλεγεί για να εγγραφείτε στο {{StudentDetails$.schoolName}}.
Παρακαλώ να προσέλθετε ΑΜΕΣΑ στο σχολείο για να προχωρήσει η διαδικασία εγγραφής σας σε αυτό, επισυνάπτοντας τα απαραίτητα δικαιολογητικά. Παρακαλώ να προσέλθετε ΑΜΕΣΑ στο σχολείο για να προχωρήσει η διαδικασία εγγραφής σας σε αυτό, προσκομίζοντας τα απαραίτητα δικαιολογητικά. Διεύθυνση σχολείου: {{StudentDetails$.schoolAddress}}, Τηλέφωνο σχολείου: {{StudentDetails$.schoolTel}}<br><br>
Διεύθυνση σχολείου: {{StudentResult$.schoolAddress}}, Τηλέφωνο σχολείου: {{StudentResult$.schoolTel}}<br><br>
</div> </div>
</div> </div>
<div *ngIf = "StudentResult$.status != '1'" > <div *ngIf = "StudentDetails$.status != '1'" >
<div class="col-md-12" style="font-size: 1.0em; color: #a52a2a; font-weight: bold;"> <div class="col-md-12" style="font-size: 1.0em; color: #a52a2a; font-weight: bold;">
Η αίτησή σας δεν ήταν δυνατό να ικανοποιηθεί. Παρακαλώ επικοινωνήστε άμεσα τηλεφωνικά με τη Διεύθυνση Δευτεροβάθμιας Εκπαίδευσης στην οποία ανήκετε, Η αίτησή σας είναι σε εκκρεμότητα. Για την τοποθέτησή σας και τις ενέργειες που πρέπει να κάνετε θα ενημερωθείτε με νέο μήνυμα, με τον ίδιο τρόπο, μετά τις 8-7-2017.<br><br>
προκειμένου να διερευνηθεί εκ νέου η δυνατότητα εγγραφής σας.<br><br>
</div> </div>
</div> </div>
</div> </div>
</div>
<div class="row oddin" style="margin: 0px 2px 0px 2px; line-height: 2em;"> <div class="row oddin" style="margin: 0px 2px 0px 2px; line-height: 2em;">
<div class="col-md-3" style="font-size: 0.8em;">Αριθμός Δήλωσης Προτίμησης ΕΠΑΛ</div> <div class="col-md-3" style="font-size: 0.8em;">Αριθμός Δήλωσης Προτίμησης ΕΠΑΛ</div>
...@@ -203,7 +200,7 @@ import {Location} from '@angular/common'; ...@@ -203,7 +200,7 @@ import {Location} from '@angular/common';
<div class="col-md-6" style="font-size: 1em; font-weight: bold;">Επιλογή ΕΠΑΛ</div> <div class="col-md-6" style="font-size: 1em; font-weight: bold;">Επιλογή ΕΠΑΛ</div>
</div> </div>
<div class="row oddin" style="margin: 0px 2px 0px 2px; line-height: 2em;" *ngFor="let epalChoices$ of EpalChosen$ | async; let i=index; let isOdd=odd; let isEven=even" [hidden]="UserData$.id !== applicationIdActive"> <div class="row oddin" style="margin: 0px 2px 0px 2px; line-height: 2em;" *ngFor="let epalChoices$ of StudentDetails$['epalSchoolsChosen']; let i=index; let isOdd=odd; let isEven=even" [hidden]="UserData$.id !== applicationIdActive">
<div class="col-md-6" style="font-size: 0.8em; font-weight: bold; text-align: center;">{{epalChoices$.choice_no}}</div> <div class="col-md-6" style="font-size: 0.8em; font-weight: bold; text-align: center;">{{epalChoices$.choice_no}}</div>
<div class="col-md-6" style="font-size: 0.8em; font-weight: bold;">{{epalChoices$.epal_id}}</div> <div class="col-md-6" style="font-size: 0.8em; font-weight: bold;">{{epalChoices$.epal_id}}</div>
</div> </div>
...@@ -253,14 +250,6 @@ import {Location} from '@angular/common'; ...@@ -253,14 +250,6 @@ import {Location} from '@angular/common';
private SubmitedUsersSub: Subscription; private SubmitedUsersSub: Subscription;
private SubmitedDetails$: BehaviorSubject<any>; private SubmitedDetails$: BehaviorSubject<any>;
private SubmitedDetailsSub: Subscription; private SubmitedDetailsSub: Subscription;
private EpalChosen$: BehaviorSubject<any>;
private EpalChosenSub: Subscription;
private incomeChosen$: BehaviorSubject<any>;
private incomeChosenSub: Subscription;
private CritirioChosen$: BehaviorSubject<any>;
private CritirioChosenSub: Subscription;
private StudentResults$: BehaviorSubject<any>;
private StudentResultsSub: Subscription;
private showLoader$: BehaviorSubject<boolean>; private showLoader$: BehaviorSubject<boolean>;
public isModalShown: BehaviorSubject<boolean>; public isModalShown: BehaviorSubject<boolean>;
private applicationIdActive = <number>-1; private applicationIdActive = <number>-1;
...@@ -278,13 +267,8 @@ import {Location} from '@angular/common'; ...@@ -278,13 +267,8 @@ import {Location} from '@angular/common';
) { ) {
this.SubmitedApplic$ = new BehaviorSubject([{}]); this.SubmitedApplic$ = new BehaviorSubject([{}]);
this.SubmitedDetails$ = new BehaviorSubject([{}]); this.SubmitedDetails$ = new BehaviorSubject([{}]);
this.EpalChosen$ = new BehaviorSubject([{}]);
this.CritirioChosen$ = new BehaviorSubject([{}]);
this.incomeChosen$ = new BehaviorSubject([{}]);
this.showLoader$ = new BehaviorSubject(false); this.showLoader$ = new BehaviorSubject(false);
this.isModalShown = new BehaviorSubject(false); this.isModalShown = new BehaviorSubject(false);
this.StudentResults$ = new BehaviorSubject([{}]);
} }
ngOnDestroy() { ngOnDestroy() {
...@@ -294,20 +278,8 @@ import {Location} from '@angular/common'; ...@@ -294,20 +278,8 @@ import {Location} from '@angular/common';
this.SubmitedUsersSub.unsubscribe(); this.SubmitedUsersSub.unsubscribe();
if (this.SubmitedDetailsSub) if (this.SubmitedDetailsSub)
this.SubmitedDetailsSub.unsubscribe(); this.SubmitedDetailsSub.unsubscribe();
if (this.EpalChosenSub)
this.EpalChosenSub.unsubscribe();
if (this.CritirioChosenSub)
this.CritirioChosenSub.unsubscribe();
if (this.incomeChosenSub)
this.incomeChosenSub.unsubscribe();
if (this.StudentResultsSub)
this.StudentResultsSub.unsubscribe();
this.SubmitedDetails$.unsubscribe(); this.SubmitedDetails$.unsubscribe();
this.EpalChosen$.unsubscribe();
this.SubmitedApplic$.unsubscribe(); this.SubmitedApplic$.unsubscribe();
this.StudentResults$.unsubscribe();
} }
ngOnInit() { ngOnInit() {
...@@ -347,25 +319,6 @@ import {Location} from '@angular/common'; ...@@ -347,25 +319,6 @@ import {Location} from '@angular/common';
this.showLoader$.next(false); this.showLoader$.next(false);
}); });
this.EpalChosenSub = this._hds.getEpalchosen(this.applicationIdActive).subscribe(data => {
this.EpalChosen$.next(data);
},
error => {
this.EpalChosen$.next([{}]);
console.log("Error Getting Schools");
});
this.StudentResultsSub = this._hds.showResults(this.applicationIdActive).subscribe(data => {
this.StudentResults$.next(data);
this.showLoader$.next(false);
},
error => {
this.StudentResults$.next([{}]);
console.log("Error Getting Results");
this.showLoader$.next(false);
});
} }
createPdfServerSide() { createPdfServerSide() {
...@@ -373,22 +326,6 @@ import {Location} from '@angular/common'; ...@@ -373,22 +326,6 @@ import {Location} from '@angular/common';
} }
/*
showResults() {
this.StudentResultsSub = this._hds.showResults(this.applicationIdActive).subscribe(data => {
this.StudentResults$.next(data);
this.showLoader$.next(false);
},
error => {
this.StudentResults$.next([{}]);
console.log("Error Getting Results");
this.showLoader$.next(false);
});
}
*/
deleteApplication(appId: number): void { deleteApplication(appId: number): void {
this.applicationId = appId; this.applicationId = appId;
this.showConfirmModal(); this.showConfirmModal();
......
...@@ -487,7 +487,7 @@ export class HelperDataService implements OnInit, OnDestroy { ...@@ -487,7 +487,7 @@ export class HelperDataService implements OnInit, OnDestroy {
}); });
this.createAuthorizationHeader(headers); this.createAuthorizationHeader(headers);
let options = new RequestOptions({ headers: headers }); let options = new RequestOptions({ headers: headers });
return this.http.get(`${AppSettings.API_ENDPOINT}/epal/student/` + headerIdNew, options) return this.http.get(`${AppSettings.API_ENDPOINT}/epal/application/` + headerIdNew, options)
.map(response => response.json()); .map(response => response.json());
} }
...@@ -509,8 +509,6 @@ export class HelperDataService implements OnInit, OnDestroy { ...@@ -509,8 +509,6 @@ export class HelperDataService implements OnInit, OnDestroy {
getStudentPerSchool(classId, sector, specialit) { getStudentPerSchool(classId, sector, specialit) {
this.loginInfo$.getValue().forEach(loginInfoToken => { this.loginInfo$.getValue().forEach(loginInfoToken => {
...@@ -997,7 +995,7 @@ export class HelperDataService implements OnInit, OnDestroy { ...@@ -997,7 +995,7 @@ export class HelperDataService implements OnInit, OnDestroy {
}); });
} }
showResults(headerid) { /* showResults(headerid) {
let headers = new Headers({ let headers = new Headers({
"Content-Type": "application/json", "Content-Type": "application/json",
...@@ -1008,7 +1006,7 @@ export class HelperDataService implements OnInit, OnDestroy { ...@@ -1008,7 +1006,7 @@ export class HelperDataService implements OnInit, OnDestroy {
return this.http.get(`${AppSettings.API_ENDPOINT}/epal/showresults/` + headerIdStr, options) return this.http.get(`${AppSettings.API_ENDPOINT}/epal/showresults/` + headerIdStr, options)
.map(response => response.json()); .map(response => response.json());
} } */
findTotalStudents() { findTotalStudents() {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment