Commit 2dff0c88 authored by Χάρης Παπαδόπουλος's avatar Χάρης Παπαδόπουλος
Browse files

Merge branch 'lock_actions' into 'develop'

Main application form restructuring(WIP)

See merge request !123
parents 94a4ec92 0f71f12e
......@@ -123,7 +123,7 @@ class CASLogin extends ControllerBase
}
$attributes = phpCAS::getAttributes();
/*
/*
$isAllowed = true;
$att1 = $attributes[$this->allowed1];
$att2 = $attributes[$this->allowed2];
......@@ -150,8 +150,8 @@ class CASLogin extends ControllerBase
}
if (!$found1 || !$found2) {
$isAllowed = false;
}
}
if (!$isAllowed) {
$response = new Response();
$response->setContent(t('Access is allowed only to official school accounts'));
......@@ -302,4 +302,4 @@ class CASLogin extends ControllerBase
return false;
}
}
\ No newline at end of file
}
......@@ -68,6 +68,7 @@ class ApplicationSubmit extends ControllerBase {
], Response::HTTP_FORBIDDEN);
}
$student = array(
'langcode' => 'el',
'student_record_id' => 0,
......@@ -94,9 +95,10 @@ class ApplicationSubmit extends ControllerBase {
'certificatetype' => $applicationForm[0]['certificatetype'],
'graduation_year' => $applicationForm[0]['graduation_year'],
'lastschool_registrynumber' => $applicationForm[0]['lastschool_registrynumber'],
'lastschool_unittypeid' => $applicationForm[0]['lastschool_unittypeid'],
'lastschool_schoolname' => $applicationForm[0]['lastschool_schoolname'],
'lastschool_schoolyear' => $applicationForm[0]['lastschool_schoolyear'],
'lastschool_class' => $applicationForm[0]['lastschool_class'],
'currentepal' => $applicationForm[0]['currentepal'],
'currentclass' => $applicationForm[0]['currentclass'],
'guardian_name' => $applicationForm[0]['cu_name'],
'guardian_surname' => $applicationForm[0]['cu_surname'],
......@@ -111,6 +113,22 @@ class ApplicationSubmit extends ControllerBase {
return $this->respondWithStatus([
"error_code" => $errorCode ], Response::HTTP_OK);
}
$lastSchoolRegistryNumber = $student['lastschool_registrynumber'];
$lastSchoolYear = (int)(substr($student['lastschool_schoolyear'], -4));
if ((int)date("Y") === $lastSchoolYear && (int)$student['lastschool_unittypeid'] === 5) {
$epalSchools = $this->entityTypeManager->getStorage('eepal_school')->loadByProperties(array('registry_no' => $lastSchoolRegistryNumber));
$epalSchool = reset($epalSchools);
if (!$epalSchool){
return $this->respondWithStatus([
"error_code" => 4004
], Response::HTTP_FORBIDDEN);
} else {
$student['currentepal'] = $epalSchool->id();
}
} else {
$student['currentepal'] = 0;
}
$entity_storage_student = $this->entityTypeManager->getStorage('epal_student');
$entity_object = $entity_storage_student->create($student);
$entity_storage_student->save($entity_object);
......@@ -176,6 +194,9 @@ class ApplicationSubmit extends ControllerBase {
if(!$student["agreement"]) {
return 1001;
}
if(!$student["lastschool_schoolyear"] || strlen($student["lastschool_schoolyear"]) !== 9) {
return 1002;
}
return 0;
}
}
......@@ -1138,6 +1138,46 @@ class EpalStudent extends ContentEntityBase implements EpalStudentInterface
->setDisplayConfigurable('form', true)
->setDisplayConfigurable('view', true);
$fields['lastschool_unittypeid'] = BaseFieldDefinition::create('integer')
->setLabel(t('Τύπος τελευταίου σχολείου'))
->setDescription(t('Τύπος τελευταίου σχολείου'))
->setSettings(array(
'max_length' => 3,
'text_processing' => 0,
))
->setRequired(true)
->setDisplayOptions('view', array(
'label' => 'above',
'type' => 'string',
'weight' => -4,
))
->setDisplayOptions('form', array(
'type' => 'integer',
'weight' => -4,
))
->setDisplayConfigurable('form', true)
->setDisplayConfigurable('view', true);
$fields['lastschool_schoolname'] = BaseFieldDefinition::create('string')
->setLabel(t('Ονομασία τελευταίου σχολείου'))
->setDescription(t('Ονομασία τελευταίου σχολείου'))
->setSettings(array(
'max_length' => 200,
'text_processing' => 0,
))
->setRequired(true)
->setDisplayOptions('view', array(
'label' => 'above',
'type' => 'string',
'weight' => -4,
))
->setDisplayOptions('form', array(
'type' => 'string_textfield',
'weight' => -4,
))
->setDisplayConfigurable('form', true)
->setDisplayConfigurable('view', true);
$fields['lastschool_schoolyear'] = BaseFieldDefinition::create('string')
->setLabel(t('Σχολικό έτος φοίτησης τελευταίου σχολείου'))
->setDescription(t('Σχολικό έτος φοίτησης τελευταίου σχολείου'))
......
......@@ -7,6 +7,7 @@ import { NgReduxModule, DevToolsExtension, NgRedux } from 'ng2-redux';
import {BrowserModule} from '@angular/platform-browser';
import { CookieModule } from 'ngx-cookie';
import { MyDatePickerModule } from 'mydatepicker';
import { NguiAutoCompleteModule } from '@ngui/auto-complete';
import {
FormsModule,
ReactiveFormsModule,
......@@ -22,7 +23,6 @@ import {
} from '@angular/common';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import Main from './containers/main';
import { APP_ROUTER_PROVIDERS, APP_DECLARATIONS } from './app.routes';
......@@ -60,6 +60,7 @@ class MyLocalization extends NgLocalization {
BrowserModule,
MyDatePickerModule,
FormsModule,
NguiAutoCompleteModule,
RouterModule,
ReactiveFormsModule,
APP_ROUTER_PROVIDERS,
......
<div class="row">
<breadcrumbs></breadcrumbs>
<breadcrumbs></breadcrumbs>
</div>
<div class = "loading" *ngIf="(loginInfo$ | async).size === 0"></div>
<div class="loading" *ngIf="(loginInfo$ | async).size === 0"></div>
<div id="applicationFormNotice" (onHidden)="onHidden()" class="modal fade" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header {{modalHeader | async}}" >
<h3 class="modal-title pull-left"><i class="fa fa-check-square-o"></i>&nbsp;&nbsp;{{ modalTitle | async }}</h3>
<button type="button" class="close pull-right" aria-label="Close" (click)="hideModal()">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header {{modalHeader | async}}">
<h3 class="modal-title pull-left"><i class="fa fa-check-square-o"></i>&nbsp;&nbsp;{{ modalTitle | async }}</h3>
<button type="button" class="close pull-right" aria-label="Close" (click)="hideModal()">
<span aria-hidden="true"><i class="fa fa-times"></i></span>
</button>
</div>
<div class="modal-body">
<p>{{ modalText | async }}</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default pull-left" data-dismiss="modal">Κλείσιμο</button>
</div>
</div>
</div>
</div>
<div class="modal-body">
<p>{{ modalText | async }}</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default pull-left" data-dismiss="modal">Κλείσιμο</button>
</div>
</div>
</div>
</div>
<form novalidate [formGroup]="studentDataGroup" #form>
<p style="margin-top: 20px; line-height: 2em;"> Παρακαλώ συμπληρώστε τα στοιχεία του μαθητή και στη συνέχεια επιλέξτε <i>Συνέχεια</i>. <strong>Προσοχη!</strong> Παρακαλώ να συμπληρώσετε τα στοιχεία ακριβώς όπως είναι στον τελευταίο τίτλο κτήσης απολυτηρίου/ πτυχίου του μαθητή.</p>
<p style="margin-top: 20px; line-height: 2em;"> <b> Η ακρίβεια των στοιχείων που υποβάλλονται με αυτή τη δήλωση μπορεί να ελεγχθεί με βάση το αρχείο άλλων υπηρεσιών (άρθρο 8 παρ. 4 Ν. 1599/1986)</b></p>
<p style="margin-top: 20px; line-height: 2em;"> <b> Όλα τα πεδία που συνοδεύονται από (*) είναι απαραίτητο να συμπληρωθούν</b></p>
<div *ngFor="let loginInfoRow$ of loginInfo$ | async; let i=index;" style = "margin-bottom: 20px;" >
<div class="row evenin" style="margin: 0px 2px 0px 2px; line-height: 2em;">
<div class="col-md-12" style="font-size: 1em; font-weight: bold; text-align: center;">Στοιχεία αιτούμενου κηδεμόνα</div>
</div>
<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; font-weight: bold">{{ loginInfoRow$.cu_name }}</div>
<div class="col-md-3" style="font-size: 0.8em;">Επώνυμο</div>
<div class="col-md-3" style="font-size: 0.8em; font-weight: bold">{{ loginInfoRow$.cu_surname }}</div>
</div>
<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; font-weight: bold">{{ loginInfoRow$.cu_fathername }}</div>
<div class="col-md-3" style="font-size: 0.8em;">Όνομα μητέρας</div>
<div class="col-md-3" style="font-size: 0.8em; font-weight: bold">{{ loginInfoRow$.cu_mothername }}</div>
</div>
</div>
<table>
<tr>
<td>
<div class="form-group">
<label for="regionaddress">Διεύθυνση κατοικίας αιτούμενου κηδεμόνα(<span style="color: #ff0000;">*</span>)</label><input class="form-control" type="text" formControlName="regionaddress">
</div>
<div class="alert alert-danger" *ngIf="studentDataGroup.get('regionaddress').touched && studentDataGroup.get('regionaddress').hasError('required')">
Το πεδίο δεν μπορεί να αφεθεί κενό!
</div>
<div class="alert alert-danger" *ngIf="studentDataGroup.get('regionaddress').dirty && studentDataGroup.get('regionaddress').hasError('pattern')">
Δεν επιτρέπονται μη έγκυροι χαρακτήρες σε αυτό το πεδίο!
</div>
</td>
<td>
<div class="form-group">
<label for="regiontk">TK(<span style="color: #ff0000;">*</span>)</label><input class="form-control" type="text" formControlName="regiontk">
</div>
<div class="alert alert-danger" *ngIf="studentDataGroup.get('regiontk').touched && studentDataGroup.get('regiontk').hasError('required')">
Το πεδίο δεν μπορεί να αφεθεί κενό!
</div>
<div class="alert alert-danger" *ngIf="studentDataGroup.get('regiontk').dirty && studentDataGroup.get('regiontk').hasError('pattern')">
Δεν επιτρέπονται γράμματα αλφαβήτου ή μη έγκυροι χαρακτήρες σε αυτό το πεδίο!
</div>
</td>
<td>
<div class="form-group">
<label for="regionarea">Πόλη/Περιοχή(<span style="color: #ff0000;">*</span>)</label><input class="form-control" type="text" formControlName="regionarea">
</div>
<div class="alert alert-danger" *ngIf="studentDataGroup.get('regionarea').touched && studentDataGroup.get('regionarea').hasError('required')">
Το πεδίο δεν μπορεί να αφεθεί κενό!
</div>
<div class="alert alert-danger" *ngIf="studentDataGroup.get('regionarea').dirty && studentDataGroup.get('regionarea').hasError('pattern')">
Δεν επιτρέπονται μη έγκυροι χαρακτήρες σε αυτό το πεδίο!
</div>
</td>
</tr>
</table>
<div class="row evenin" style="margin: 20px 2px 10px 2px; line-height: 2em;">
<div class="col-md-12" style="font-size: 1.5em; font-weight: bold; text-align: center;">Στοιχεία μαθητή</div>
</div>
<form novalidate [formGroup]="studentDataGroup" #form>
<p style="margin-top: 20px; line-height: 2em;"> Παρακαλώ συμπληρώστε τα στοιχεία του μαθητή και στη συνέχεια επιλέξτε <i>Συνέχεια</i>. <strong>Προσοχη!</strong> Παρακαλώ να συμπληρώσετε τα στοιχεία ακριβώς όπως είναι στον τελευταίο τίτλο κτήσης απολυτηρίου/ πτυχίου του μαθητή.</p>
<p style="margin-top: 20px; line-height: 2em;"> <b> Η ακρίβεια των στοιχείων που υποβάλλονται με αυτή τη δήλωση μπορεί να ελεγχθεί με βάση το αρχείο άλλων υπηρεσιών (άρθρο 8 παρ. 4 Ν. 1599/1986)</b></p>
<p style="margin-top: 20px; line-height: 2em;"> <b> Όλα τα πεδία που συνοδεύονται από (*) είναι απαραίτητο να συμπληρωθούν</b></p>
<div *ngFor="let loginInfoRow$ of loginInfo$ | async; let i=index;" style="margin-bottom: 20px;">
<div class="row evenin" style="margin: 0px 2px 0px 2px; line-height: 2em;">
<div class="col-md-12" style="font-size: 1em; font-weight: bold; text-align: center;">Στοιχεία αιτούμενου κηδεμόνα</div>
</div>
<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; font-weight: bold">{{ loginInfoRow$.cu_name }}</div>
<div class="col-md-3" style="font-size: 0.8em;">Επώνυμο</div>
<div class="col-md-3" style="font-size: 0.8em; font-weight: bold">{{ loginInfoRow$.cu_surname }}</div>
</div>
<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; font-weight: bold">{{ loginInfoRow$.cu_fathername }}</div>
<div class="col-md-3" style="font-size: 0.8em;">Όνομα μητέρας</div>
<div class="col-md-3" style="font-size: 0.8em; font-weight: bold">{{ loginInfoRow$.cu_mothername }}</div>
</div>
</div>
<table>
<tr>
<td>
<div class="form-group">
<label for="regionaddress">Διεύθυνση κατοικίας αιτούμενου κηδεμόνα(<span style="color: #ff0000;">*</span>)</label><input class="form-control" type="text" formControlName="regionaddress">
</div>
<div class="alert alert-danger" *ngIf="studentDataGroup.get('regionaddress').touched && studentDataGroup.get('regionaddress').hasError('required')">
Το πεδίο δεν μπορεί να αφεθεί κενό!
</div>
<div class="alert alert-danger" *ngIf="studentDataGroup.get('regionaddress').dirty && studentDataGroup.get('regionaddress').hasError('pattern')">
Δεν επιτρέπονται μη έγκυροι χαρακτήρες σε αυτό το πεδίο!
</div>
</td>
<td>
<div class="form-group">
<label for="regiontk">TK(<span style="color: #ff0000;">*</span>)</label><input class="form-control" type="text" formControlName="regiontk">
</div>
<div class="alert alert-danger" *ngIf="studentDataGroup.get('regiontk').touched && studentDataGroup.get('regiontk').hasError('required')">
Το πεδίο δεν μπορεί να αφεθεί κενό!
</div>
<div class="alert alert-danger" *ngIf="studentDataGroup.get('regiontk').dirty && studentDataGroup.get('regiontk').hasError('pattern')">
Δεν επιτρέπονται γράμματα αλφαβήτου ή μη έγκυροι χαρακτήρες σε αυτό το πεδίο!
</div>
</td>
<td>
<div class="form-group">
<label for="regionarea">Πόλη/Περιοχή(<span style="color: #ff0000;">*</span>)</label><input class="form-control" type="text" formControlName="regionarea">
</div>
<div class="alert alert-danger" *ngIf="studentDataGroup.get('regionarea').touched && studentDataGroup.get('regionarea').hasError('required')">
Το πεδίο δεν μπορεί να αφεθεί κενό!
</div>
<div class="alert alert-danger" *ngIf="studentDataGroup.get('regionarea').dirty && studentDataGroup.get('regionarea').hasError('pattern')">
Δεν επιτρέπονται μη έγκυροι χαρακτήρες σε αυτό το πεδίο!
</div>
</td>
</tr>
</table>
<div class="row evenin" style="margin: 20px 2px 10px 2px; line-height: 2em;">
<div class="col-md-12" style="font-size: 1.5em; font-weight: bold; text-align: center;">Στοιχεία μαθητή</div>
</div>
<div class="form-group">
<label for="name">Όνομα μαθητή(<span style="color: #ff0000;">*</span>)</label><input class="form-control" type="text" formControlName="name">
</div>
......@@ -131,14 +131,13 @@
Δεν επιτρέπονται ψηφία ή άλλοι μη έγκυροι χαρακτήρες σε αυτό το πεδίο!
</div>
<div class="form-group">
<label for="studentbirthdate">Ημερομηνία γέννησης μαθητή- Δεν πληκτρολογείτε. Επιλέξτε το εικονίδιο δεξιά!(<span style="color: #ff0000;">*</span>)</label>
<my-date-picker name="studentbirthdate" [options]="myDatePickerOptions"
formControlName="studentbirthdate" locale="el"></my-date-picker>
</div>
<div class="alert alert-danger" *ngIf="studentDataGroup.get('studentbirthdate').touched && studentDataGroup.get('studentbirthdate').hasError('required')">
Συμπληρώστε την ημερομηνία γέννησης του μαθητή!
</div>
<div class="form-group">
<label for="studentbirthdate">Ημερομηνία γέννησης μαθητή- Δεν πληκτρολογείτε. Επιλέξτε το εικονίδιο δεξιά!(<span style="color: #ff0000;">*</span>)</label>
<my-date-picker name="studentbirthdate" [options]="myDatePickerOptions" formControlName="studentbirthdate" locale="el"></my-date-picker>
</div>
<div class="alert alert-danger" *ngIf="studentDataGroup.get('studentbirthdate').touched && studentDataGroup.get('studentbirthdate').hasError('required')">
Συμπληρώστε την ημερομηνία γέννησης του μαθητή!
</div>
......@@ -154,6 +153,58 @@
Η επιλογή από αυτή τη λίστα είναι απαραίτητη!
</div>
<div class="form-group">
<label for="graduation_year">Έτος κτήσης απολυτηρίου(<span style="color: #ff0000;">*</span>)</label>
<br/>
<select class="form-control" formControlName="graduation_year">
<option value="">Παρακαλώ επιλέξτε...</option>
<option *ngFor="let graduationyear of graduationyears" value="{{graduationyear}}">
{{ graduationyear }}
</option>
</select>
</div>
<div class="alert alert-danger" *ngIf="studentDataGroup.get('graduation_year').dirty && studentDataGroup.get('graduation_year').hasError('status')">
Η επιλογή από αυτή τη λίστα είναι απαραίτητη!
</div>
<div class="form-group">
<label for="lastschool_schoolname">Σχολείο τελευταίας φοίτησης(<span style="color: #ff0000;">*</span>)</label><br/>
<input ngui-auto-complete formControlName="lastschool_schoolname" [source]="observableSource.bind(this)" [list-formatter]="lastSchoolListFormatter" [value-formatter]="lastSchoolValueFormatter" [min-chars]="5" no-match-found-text="Δεν βρέθηκαν σχολεία"
(valueChanged)="lastSchoolValueChanged($event)" placeholder="Πληκτρολογήστε τουλάχιστο 5 χαρακτήρες" class="form-control">
</div>
<div class="alert alert-danger" *ngIf="studentDataGroup.get('lastschool_schoolname').dirty && studentDataGroup.get('lastschool_schoolname').hasError('status')">
Η επιλογή από αυτή τη λίστα είναι απαραίτητη!
</div>
<div class="form-group">
<label for="lastschool_class">Τάξη τελευταίας φοίτησης(<span style="color: #ff0000;">*</span>)</label><br/>
<select class="form-control" formControlName="lastschool_class">
<option value="">Παρακαλώ επιλέξτε...</option>
<option value=1>Α’</option>
<option value=2>Β’</option>
<option value=3>Γ'</option>
<option value=4>Δ'</option>
</select>
</div>
<div class="alert alert-danger" *ngIf="studentDataGroup.get('lastschool_class').dirty && studentDataGroup.get('lastschool_class').hasError('status')">
Η επιλογή από αυτή τη λίστα είναι απαραίτητη!
</div>
<div class="form-group">
<label for="lastschool_schoolyear">Σχολικό έτος τελευταίας φοίτησης(<span style="color: #ff0000;">*</span>)</label>
<br/>
<select class="form-control" formControlName="lastschool_schoolyear">
<option value="">Παρακαλώ επιλέξτε...</option>
<option *ngFor="let schoolyear of schoolyears" value="{{schoolyear}}">
{{ schoolyear }}
</option>
</select>
</div>
<div class="alert alert-danger" *ngIf="studentDataGroup.get('lastschool_schoolyear').dirty && studentDataGroup.get('lastschool_schoolyear').hasError('status')">
Η επιλογή από αυτή τη λίστα είναι απαραίτητη!
</div>
<div class="form-group">
<label for="relationtostudent">Η αίτηση γίνεται από:(<span style="color: #ff0000;">*</span>)</label><br/>
<select class="form-control" formControlName="relationtostudent">
......@@ -190,6 +241,6 @@
</div>
</form>
</form>
<!-- <pre>{{studentDataGroup.value | json}}</pre> -->
<!-- <pre>{{studentDataGroup.value | json}}</pre> -->
import { Component, OnInit, OnDestroy } from '@angular/core';
import { BehaviorSubject, Subscription } from 'rxjs/Rx';
import { BehaviorSubject, Subscription, Observable } from 'rxjs/Rx';
import { Injectable } from "@angular/core";
import { Router } from '@angular/router';
import { NgRedux, select } from 'ng2-redux';
......@@ -8,12 +8,14 @@ import { IStudentDataFields } from '../../store/studentdatafields/studentdatafie
import { CriteriaActions } from '../../actions/criteria.actions';
import { ICriter } from '../../store/criteria/criteria.types';
import { IAppState } from '../../store/store';
import { VALID_NAMES_PATTERN, VALID_ADDRESS_PATTERN, VALID_ADDRESSTK_PATTERN, VALID_DIGITS_PATTERN, VALID_DATE_PATTERN } from '../../constants';
import { VALID_NAMES_PATTERN, VALID_ADDRESS_PATTERN, VALID_ADDRESSTK_PATTERN, VALID_DIGITS_PATTERN,
VALID_DATE_PATTERN, FIRST_SCHOOL_YEAR, VALID_YEAR_PATTERN, VALID_TELEPHONE_PATTERN } from '../../constants';
import { STUDENT_DATA_FIELDS_INITIAL_STATE } from '../../store/studentdatafields/studentdatafields.initial-state';
import { CRITERIA_INITIAL_STATE } from '../../store/criteria/criteria.initial-state';
import { ILoginInfo, ILoginInfoToken } from '../../store/logininfo/logininfo.types';
import { LOGININFO_INITIAL_STATE } from '../../store/logininfo/logininfo.initial-state';
import {IMyDpOptions} from 'mydatepicker';
import {Http, RequestOptions} from '@angular/http';
import {
FormBuilder,
......@@ -44,6 +46,8 @@ import {
private modalTitle: BehaviorSubject<string>;
private modalText: BehaviorSubject<string>;
private modalHeader: BehaviorSubject<string>;
private schoolyears: string[];
private graduationyears: string[];
private rss = new FormArray([]);
......@@ -54,11 +58,27 @@ import {
dateFormat: 'dd/mm/yyyy',
};
private observableSource = (keyword: any): Observable<any[]> => {
let url: string = 'https://mm.sch.gr/api/units?name='+keyword;
if (keyword) {
return this.http.get(url)
.map(res => {
let json = res.json();
return json.data;
})
} else {
return Observable.of([]);
}
}
constructor(private fb: FormBuilder,
private _sdfa: StudentDataFieldsActions,
private _sdfb: CriteriaActions,
private _ngRedux: NgRedux<IAppState>,
private router: Router) {
private router: Router,
private http: Http) {
this.populateSchoolyears();
this.populateGraduationyears();
this.loginInfo$ = new BehaviorSubject(LOGININFO_INITIAL_STATE);
this.modalTitle = new BehaviorSubject("");
this.modalText = new BehaviorSubject("");
......@@ -80,9 +100,14 @@ import {
regionarea: ['', [Validators.pattern(VALID_NAMES_PATTERN),Validators.required]],
certificatetype: ['', this.checkChoice],
relationtostudent: ['', this.checkChoice],
telnum: ['', [Validators.pattern(VALID_DIGITS_PATTERN),Validators.required]],
telnum: ['', [Validators.pattern(VALID_TELEPHONE_PATTERN),Validators.required]],
graduation_year: ['', this.checkChoice],
lastschool_schoolname: ['', [Validators.pattern(VALID_ADDRESS_PATTERN),Validators.required]],
lastschool_schoolyear: ['', this.checkChoice],
lastschool_class: ['', this.checkChoice],
});
/* this.studentCriteriaGroup = this.fb.group({
formArray: this.rss,
}); */
......@@ -105,6 +130,7 @@ import {
this.studentDataFieldsSub = this._ngRedux.select(state => {
if (state.studentDataFields.size > 0) {
state.studentDataFields.reduce(({}, studentDataField) => {
this.studentDataGroup.controls['name'].setValue(studentDataField.name);
this.studentDataGroup.controls['studentsurname'].setValue(studentDataField.studentsurname);
this.studentDataGroup.controls['fatherfirstname'].setValue(studentDataField.fatherfirstname);
......@@ -113,6 +139,10 @@ import {
this.studentDataGroup.controls['regiontk'].setValue(studentDataField.regiontk);
this.studentDataGroup.controls['regionarea'].setValue(studentDataField.regionarea);
this.studentDataGroup.controls['certificatetype'].setValue(studentDataField.certificatetype);
this.studentDataGroup.controls['graduation_year'].setValue(studentDataField.graduation_year);
this.studentDataGroup.controls['lastschool_schoolname'].setValue(studentDataField.lastschool_schoolname);
this.studentDataGroup.controls['lastschool_schoolyear'].setValue(studentDataField.lastschool_schoolyear);
this.studentDataGroup.controls['lastschool_class'].setValue(studentDataField.lastschool_class);
this.studentDataGroup.controls['relationtostudent'].setValue(studentDataField.relationtostudent);
this.studentDataGroup.controls['telnum'].setValue(studentDataField.telnum);
this.studentDataGroup.controls['studentbirthdate'].setValue(this.populateDate(studentDataField.studentbirthdate));
......@@ -122,6 +152,8 @@ import {
return state.studentDataFields;
}).subscribe(this.studentDataFields$);
/* this._sdfb.getCriteria(true);
this.criteriaSub = this._ngRedux.select(state => {
if (state.criter.size > 0) {
......@@ -138,7 +170,7 @@ import {
return state.criter;
}).subscribe(this.criteria$); */
}
};
ngOnDestroy() {
(<any>$('#applicationFormNotice')).remove();
......@@ -181,12 +213,7 @@ import {
}
checkChoice(c: FormControl) {
if (c.value === "" ) {
return {status: true}
}
else
// Null means valid, believe it or not
return null;
return (c.value === "" ) ? {status: true} : null;
}
populateDate(d) {
......@@ -205,6 +232,22 @@ import {
}
}
private populateSchoolyears(): void {
let endYear = new Date().getFullYear();
this.schoolyears = new Array();
for (let i=endYear; i>FIRST_SCHOOL_YEAR; i--) {
this.schoolyears.push((i-1) + "-" + i);
}
};
private populateGraduationyears(): void {
let endYear = new Date().getFullYear();
this.graduationyears = new Array();
for (let i=endYear; i>FIRST_SCHOOL_YEAR; i--) {
this.graduationyears.push(i + "");
}
};
setDate() {
let date = new Date();
return { date: {
......@@ -226,4 +269,16 @@ import {
(<any>$('#applicationFormNotice')).modal('hide');
}
lastSchoolListFormatter(data: any): string {
return data.name;
};