application.submit.ts 29.1 KB
Newer Older
1
2
3
4
import { Component, OnInit, OnDestroy } from "@angular/core";
import { Router } from "@angular/router";
import { Http, Response, RequestOptions, Headers } from "@angular/http";
import { BehaviorSubject, Subscription } from "rxjs/Rx";
5
import { Injectable } from "@angular/core";
6
import { NgRedux, select } from "@angular-redux/store";
7
import { IAppState } from "../../store/store";
8
import { IStudentDataFieldRecords } from "../../store/studentdatafields/studentdatafields.types";
9
import { IRegionRecord, IRegionRecords, IRegionSchoolRecord } from "../../store/regionschools/regionschools.types";
10
import { ISectorRecords } from "../../store/sectorcourses/sectorcourses.types";
11
import { ISectorFieldRecords } from "../../store/sectorfields/sectorfields.types";
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import { IEpalClasses } from "../../store/epalclasses/epalclasses.types";
import { STUDENT_DATA_FIELDS_INITIAL_STATE } from "../../store/studentdatafields/studentdatafields.initial-state";
import { REGION_SCHOOLS_INITIAL_STATE } from "../../store/regionschools/regionschools.initial-state";
import { EPALCLASSES_INITIAL_STATE } from "../../store/epalclasses/epalclasses.initial-state";
import { SECTOR_COURSES_INITIAL_STATE } from "../../store/sectorcourses/sectorcourses.initial-state";
import { SECTOR_FIELDS_INITIAL_STATE } from "../../store/sectorfields/sectorfields.initial-state";
import { StudentEpalChosen, StudentCourseChosen, StudentSectorChosen } from "../students/student";
import { AppSettings } from "../../app.settings";
import { ILoginInfo, ILoginInfoToken } from "../../store/logininfo/logininfo.types";
import { LOGININFO_INITIAL_STATE } from "../../store/logininfo/logininfo.initial-state";
import { EpalClassesActions } from "../../actions/epalclass.actions";
import { SectorFieldsActions } from "../../actions/sectorfields.actions";
import { RegionSchoolsActions } from "../../actions/regionschools.actions";
import { SectorCoursesActions } from "../../actions/sectorcourses.actions";
import { StudentDataFieldsActions } from "../../actions/studentdatafields.actions";
import { HelperDataService } from "../../services/helper-data-service";
28
29

@Component({
30
    selector: "application-submit",
31
    template: `
32
    <div class = "loading" *ngIf="(studentDataFields$ | async).size === 0 || (epalSelected$ | async).length === 0 || (epalclasses$ | async).size === 0 || (loginInfo$ | async).size === 0 || (showLoader | async) === true"></div>
33
    <div id="studentFormSentNotice" (onHidden)="onHidden()" class="modal" tabindex="-1" role="dialog" aria-hidden="true" data-backdrop="static" data-keyboard="false">
34
35
      <div class="modal-dialog modal-lg">
        <div class="modal-content">
36
          <div class="modal-header {{modalHeader | async}}">
37
38
39
40
41
42
43
44
45
              <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">
46
            <button type="button" class="btn btn-default pull-left" data-dismiss="modal" (click)="hideModal()">Κλείσιμο</button>
47
48
49
50
          </div>
        </div>
      </div>
    </div>
51
52
53
54
55
    <div class="row">
            <breadcrumbs></breadcrumbs>
    </div>

<!-- <application-preview-select></application-preview-select> -->
56

57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
    <div *ngFor="let loginInfoRow$ of loginInfo$ | async; let i=index;" >
        <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>
72
        </div>
73
74
    </div>
    <div *ngFor="let studentDataField$ of studentDataFields$ | async;">
75
76
        <div class="row oddin" style="margin: 0px 2px 20px 2px; line-height: 2em;">
            <div class="col-md-3" style="font-size: 0.8em;">Διεύθυνση</div>
77
            <div class="col-md-3" style="font-size: 0.8em; font-weight: bold">{{studentDataField$.get("regionaddress")}}</div>
78
            <div class="col-md-3" style="font-size: 0.8em;">ΤΚ - Πόλη</div>
79
            <div class="col-md-3" style="font-size: 0.8em; font-weight: bold">{{studentDataField$.get("regiontk")}} - {{studentDataField$.get("regionarea")}}</div>
80
        </div>
81

82
83
84
        <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>
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
        <div><label for="name">Όνομα μαθητή</label> <p class="form-control" style="border:1px solid #eceeef;">   {{studentDataField$.get("name")}} </p> </div>
        <div><label for="studentsurname">Επώνυμο μαθητή</label> <p class="form-control" style="border:1px solid #eceeef;"> {{studentDataField$.get("studentsurname")}} </p></div>
        <div><label for="fatherfirstname">Όνομα Πατέρα</label> <p class="form-control" style="border:1px solid #eceeef;"> {{studentDataField$.get("fatherfirstname")}} </p></div>
        <div><label for="motherfirstname">Όνομα Μητέρας</label> <p class="form-control" style="border:1px solid #eceeef;"> {{studentDataField$.get("motherfirstname")}} </p></div>
        <div><label for="birthdate">Ημερομηνία Γέννησης</label> <p class="form-control" style="border:1px solid #eceeef;"> {{studentDataField$.get("studentbirthdate")}} </p></div>

        <div><label for="lastschool_schoolname">Σχολείο τελευταίας φοίτησης</label> <p class="form-control" style="border:1px solid #eceeef;"> {{studentDataField$.get("lastschool_schoolname").name}} </p></div>
        <div><label for="lastschool_schoolyear">Σχολικό έτος τελευταίας φοίτησης</label> <p class="form-control" style="border:1px solid #eceeef;"> {{studentDataField$.get("lastschool_schoolyear")}} </p></div>

        <div *ngIf="studentDataField$.get('lastschool_class') === 1"><label for="lastschool_class">Τάξη τελευταίας φοίτησης</label> <p class="form-control" style="border:1px solid #eceeef;">Α'</p></div>
        <div *ngIf="studentDataField$.get('lastschool_class') === 2"><label for="lastschool_class">Τάξη τελευταίας φοίτησης</label> <p class="form-control" style="border:1px solid #eceeef;">Β'</p></div>
        <div *ngIf="studentDataField$.get('lastschool_class') === 3"><label for="lastschool_class">Τάξη τελευταίας φοίτησης</label> <p class="form-control" style="border:1px solid #eceeef;">Γ'</p></div>
        <div *ngIf="studentDataField$.get('lastschool_class') === 4"><label for="lastschool_class">Τάξη τελευταίας φοίτησης</label> <p class="form-control" style="border:1px solid #eceeef;">Δ'</p></div>

        <div><label for="relationtostudent">Η δήλωση προτίμησης γίνεται από</label> <p class="form-control" style="border:1px solid #eceeef;"> {{studentDataField$.get("relationtostudent")}} </p></div>
        <div><label for="telnum">Τηλέφωνο επικοινωνίας</label> <p class="form-control" style="border:1px solid #eceeef;"> {{studentDataField$.get("telnum")}} </p></div>
101
102
103
104
105
106
    </div>
    <div class="row" style="margin-top: 20px; margin-bottom: 20px;">
        <div class="col-md-6">
            <button type="button" class="btn-primary btn-lg pull-left" (click)="navigateBack()">
                <i class="fa fa-backward"></i>
            </button>
107
        </div>
108
        <div class="col-md-6">
109
            <button type="button" class="btn-primary btn-lg pull-right isclickable" style="width: 9em;" (click)="submitNow()">
110
111
112
113
                <span style="font-size: 0.9em; font-weight: bold;">Υποβολή&nbsp;&nbsp;&nbsp;</span><i class="fa fa-forward"></i>
            </button>
        </div>
    </div>
114
115
116
117
  `
})

@Injectable() export default class ApplicationSubmit implements OnInit {
118
119

    private authToken;
120
    private epalSelected$: BehaviorSubject<Array<number>> = new BehaviorSubject(new Array());
121
122
123
124
    private epalSelectedOrder: Array<number> = new Array();
    private courseSelected;
    private sectorSelected;
    private classSelected;
125
    private totalPoints = <number>0;
126
    private studentDataFields$: BehaviorSubject<IStudentDataFieldRecords>;
127
128
129
130
131
132
133
134
    private epalclasses$: BehaviorSubject<IEpalClasses>;
    private loginInfo$: BehaviorSubject<ILoginInfo>;
    private studentDataFieldsSub: Subscription;
    private regionsSub: Subscription;
    private sectorsSub: Subscription;
    private sectorFieldsSub: Subscription;
    private epalclassesSub: Subscription;
    private loginInfoSub: Subscription;
135
136
    private modalTitle: BehaviorSubject<string>;
    private modalText: BehaviorSubject<string>;
137
    private modalHeader: BehaviorSubject<string>;
138
139
    public isModalShown: BehaviorSubject<boolean>;
    private showLoader: BehaviorSubject<boolean>;
140
    private currentUrl: string;
141
142
143
144
145
    private cu_name: string;
    private cu_surname: string;
    private cu_fathername: string;
    private cu_mothername: string;
    private disclaimer_checked: number;
146

147
    constructor(
148
149
150
151
152
153
154
155
156
157
158
        private _hds: HelperDataService,
        private _csa: SectorCoursesActions,
        private _sfa: SectorFieldsActions,
        private _rsa: RegionSchoolsActions,
        private _eca: EpalClassesActions,
        private _sdfa: StudentDataFieldsActions,
        private _ngRedux: NgRedux<IAppState>,
        private router: Router,
        private http: Http
    ) {

159
        //        this.regions$ = new BehaviorSubject(REGION_SCHOOLS_INITIAL_STATE);
160
161
162
163
164
165
166
167
168
169
        this.epalclasses$ = new BehaviorSubject(EPALCLASSES_INITIAL_STATE);
        this.studentDataFields$ = new BehaviorSubject(STUDENT_DATA_FIELDS_INITIAL_STATE);
        this.loginInfo$ = new BehaviorSubject(LOGININFO_INITIAL_STATE);

        this.modalTitle = new BehaviorSubject("");
        this.modalText = new BehaviorSubject("");
        this.modalHeader = new BehaviorSubject("");
        this.isModalShown = new BehaviorSubject(false);
        this.showLoader = new BehaviorSubject(false);
    };
170
171

    ngOnInit() {
Open Source Developer's avatar
preview    
Open Source Developer committed
172

173
        (<any>$("#studentFormSentNotice")).appendTo("body");
174
        this.loginInfoSub = this._ngRedux.select("loginInfo")
175
176
177
178
179
180
            .subscribe(loginInfo => {
                let linfo = <ILoginInfo>loginInfo;
                console.log("SELECTOR5");
                if (linfo.size > 0) {
                    linfo.reduce(({ }, loginInfoToken) => {
                        this.authToken = loginInfoToken.auth_token;
181

182
183
184
185
186
                        this.cu_name = loginInfoToken.cu_name;
                        this.cu_surname = loginInfoToken.cu_surname;
                        this.cu_fathername = loginInfoToken.cu_fathername;
                        this.cu_mothername = loginInfoToken.cu_mothername;
                        this.disclaimer_checked = loginInfoToken.disclaimer_checked;
187

188
189
190
191
                        return loginInfoToken;
                    }, {});
                }
                this.loginInfo$.next(linfo);
192
            }, error => { console.log("error selecting loginInfo"); });
193

194
        this.epalclassesSub = this._ngRedux.select("epalclasses").subscribe(epalclasses => {
195
            let ecs = <IEpalClasses>epalclasses;
196
            console.log("SELECTOR4");
197
198
            if (ecs.size > 0) {
                ecs.reduce(({ }, epalclass) => {
199
200
201
202
                    this.classSelected = epalclass.name;
                    return epalclass;
                }, {});
            }
203
            this.epalclasses$.next(ecs);
204
        }, error => { console.log("error selecting epalclasses"); });
205

206
        this.studentDataFieldsSub = this._ngRedux.select("studentDataFields")
207
            .subscribe(studentDataFields => {
208
                this.studentDataFields$.next(<IStudentDataFieldRecords>studentDataFields);
209
            }, error => { console.log("error selecting studentDataFields"); });
210

211
        this.regionsSub = this._ngRedux.select("regions").
212
213
            subscribe(regions => {
                console.log("SELECTOR: REGIONS");
214
215
216
217
218
219
220
221
222
223
224
225
                let rgns = <IRegionRecords>regions;
                let prevSelected: Array<number> = new Array();
                rgns.reduce((prevRgn, rgn) => {
                    rgn.epals.reduce((prevSchool, school) => {
                        if (school.selected === true) {
                            prevSelected = this.epalSelected$.getValue();
                            prevSelected[prevSelected.length] = <number>parseInt(school.epal_id);

                            this.epalSelected$.next(prevSelected);
                            this.epalSelectedOrder.push(school.order_id);
                        }
                        return school;
226
                    }, {});
227
228
229
230
231
232
233
234
                    return rgn;
                }, {});
                //                    this.regions$.next(<IRegionRecords>regions);
            },
            error => {
                console.log("Error Selecting Regions");
            }
            );
235

236

237
        this.sectorsSub = this._ngRedux.select("sectors")
238
239
            .map(sectors => <ISectorRecords>sectors)
            .subscribe(scs => {
240
241
                console.log("SELECTOR2");
                scs.reduce((prevSector, sector) => {
242
243
244
                    sector.get("courses").reduce((prevCourse, course) => {
                        if (course.get("selected") === true) {
                            this.courseSelected = course.get("course_id");
245
246
247
248
                        }
                        return course;
                    }, {});
                    return sector;
249
                }, {});
250
            });
251

252
        this.sectorFieldsSub = this._ngRedux.select("sectorFields")
253
254
            .map(sectorFields => <ISectorFieldRecords>sectorFields)
            .subscribe(sfds => {
255
256
257
258
259
260
261
262
                console.log("SELECTOR");
                sfds.reduce(({ }, sectorField) => {
                    if (sectorField.selected === true) {
                        this.sectorSelected = sectorField.id;
                    }
                    return sectorField;
                }, {});
            });
263

264
265
    };

266
    ngOnDestroy() {
267
        (<any>$("#studentFormSentNotice")).remove();
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
        if (this.studentDataFieldsSub) {
            this.studentDataFieldsSub.unsubscribe();
        }
        if (this.regionsSub) {
            this.regionsSub.unsubscribe();
        }
        if (this.sectorsSub) {
            this.sectorsSub.unsubscribe();
        }
        if (this.sectorFieldsSub) {
            this.sectorFieldsSub.unsubscribe();
        }
        if (this.epalclassesSub) {
            this.epalclassesSub.unsubscribe();
        }
        if (this.loginInfoSub) {
            this.loginInfoSub.unsubscribe();
        }
286
287
    }

288
    submitNow() {
289

290
        if (this.studentDataFields$.getValue().size === 0 || this.epalSelected$.getValue().length === 0 || this.epalclasses$.getValue().size === 0 || this.loginInfo$.getValue().size === 0)
291
292
            return;

293
294
295
296
        let aitisiObj: Array<any> = [];
        let epalObj: Array<StudentEpalChosen> = [];

        let std = this.studentDataFields$.getValue().get(0);
297

298
        aitisiObj[0] = <any>{};
299
300
301
302
303
304
305
306
        aitisiObj[0].name = std.get("name");
        aitisiObj[0].studentsurname = std.get("studentsurname");
        aitisiObj[0].studentbirthdate = std.get("studentbirthdate");
        aitisiObj[0].fatherfirstname = std.get("fatherfirstname");
        aitisiObj[0].motherfirstname = std.get("motherfirstname");
        aitisiObj[0].regionaddress = std.get("regionaddress");
        aitisiObj[0].regionarea = std.get("regionarea");
        aitisiObj[0].regiontk = std.get("regiontk");
307
        aitisiObj[0].certificatetype = "";
308

309
        aitisiObj[0].graduation_year = 0;
310
311
312
313
314
315
316
317
        aitisiObj[0].lastschool_registrynumber = std.get("lastschool_schoolname").registry_no;
        aitisiObj[0].lastschool_schoolname = std.get("lastschool_schoolname").name;
        aitisiObj[0].lastschool_schoolyear = std.get("lastschool_schoolyear");
        aitisiObj[0].lastschool_unittypeid = std.get("lastschool_schoolname").unit_type_id;
        aitisiObj[0].lastschool_class = std.get("lastschool_class");

        aitisiObj[0].relationtostudent = std.get("relationtostudent");
        aitisiObj[0].telnum = std.get("telnum");
318
319
320
321
322
323
324
325

        aitisiObj[0].cu_name = this.cu_name;
        aitisiObj[0].cu_surname = this.cu_surname;
        aitisiObj[0].cu_fathername = this.cu_fathername;
        aitisiObj[0].cu_mothername = this.cu_mothername;
        aitisiObj[0].disclaimer_checked = this.disclaimer_checked;
        aitisiObj[0].currentclass = this.classSelected;

326
327
328
        let epalSelected = this.epalSelected$.getValue();
        for (let i = 0; i < epalSelected.length; i++) {
            epalObj[i] = new StudentEpalChosen(null, epalSelected[i], this.epalSelectedOrder[i]);
329
330
        }
        aitisiObj["1"] = epalObj;
331

332
333
334
335
        if (aitisiObj[0]["currentclass"] === "2") {
            aitisiObj["3"] = new StudentSectorChosen(null, this.sectorSelected);
        } else if (aitisiObj[0]["currentclass"] === "3" || aitisiObj[0]["currentclass"] === "4") {
            aitisiObj["3"] = new StudentCourseChosen(null, this.courseSelected);
336
337
338
339
340
341
342
        }

        this.submitRecord(aitisiObj);
    }


    submitRecord(record) {
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
        let errors = {
            1004: "Όνομα μαθητή (ελάχιστο τρεις (3) χαρακτήρες)",
            1005: "Επώνυμο μαθητή (ελάχιστο τρεις (3) χαρακτήρες)",
            1006: "Όνομα Πατέρα (ελάχιστο τρεις (3) χαρακτήρες)",
            1007: "Όνομα Μητέρας (ελάχιστο τρεις (3) χαρακτήρες)",
            1008: "Διεύθυνση κατοικίας αιτούμενου",
            1009: "ΤΚ (πενταψήφιος αριθμός)",
            1010: "Πόλη/Περιοχή",
            1013: "Τάξη φοίτησης",
            1014: "Η δήλωση προτίμησης γίνεται από",
            1015: "Σταθερό Τηλέφωνο Επικοινωνίας",
            1016: "Όνομα (στοιχεία αιτούμενου)",
            1017: "Επώνυμο (στοιχεία αιτούμενου)",
            1018: "Όνομα πατέρα (στοιχεία αιτούμενου)",
            1019: "Όνομα μητέρας (στοιχεία αιτούμενου)",
            1020: "Κωδικός μονάδας σχολείου τελευταίας φοίτησης",
            1021: "Τύπος μονάδας σχολείου τελευταίας φοίτησης",
            1022: "Σχολείο τελευταίας φοίτησης",
            1023: "Τάξη τελευταίας φοίτησης"
        };
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
        let authTokenPost = this.authToken + ":" + this.authToken;

        let headers = new Headers({
            "Authorization": "Basic " + btoa(authTokenPost),
            "Accept": "*/*",
            "Access-Control-Allow-Credentials": "true",
            "Content-Type": "application/json",
        });

        let options = new RequestOptions({ headers: headers, method: "post", withCredentials: true });
        let connectionString = `${AppSettings.API_ENDPOINT}/epal/appsubmit`;
        this.showLoader.next(true);
        this.http.post(connectionString, record, options)
            .map((res: Response) => res.json())
            .subscribe(success => {
378
                (<any>$(".loading")).remove();
379
380
381
382
383
384
385
386
                this.showLoader.next(false);
                let errorCode = parseInt(success.error_code);

                let mTitle = "";
                let mText = "";
                let mHeader = "";
                switch (errorCode) {
                    case 0:
387
388
389
                        mTitle = "Υποβολή Δήλωσης Προτίμησης";
                        mText = "Η υποβολή της δήλωσής σας πραγματοποιήθηκε. Μπορείτε να τη δείτε και να την εκτυπώσετε από την επιλογή 'Εμφάνιση - Εκτύπωση Δήλωσης Προτίμησης'. Από την επιλογή 'Υποβληθείσες Δηλώσεις' θα μπορείτε να ενημερωθείτε όταν υπάρξει εξέλιξη σχετική με τη δήλωση σας. Επίσης, θα λάβετε και ενημερωτικό email.";
                        mHeader = "modal-header-success";
390
391
392
393
394
395
                        this._eca.initEpalClasses();
                        this._sfa.initSectorFields();
                        this._rsa.initRegionSchools();
                        this._csa.initSectorCourses();
                        this._sdfa.initStudentDataFields();
                        break;
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
                    case 1000:
                        mTitle = "Αποτυχία Υποβολής Δήλωσης Προτίμησης";
                        mText = "Δεν έχετε επιλέξει σχολεία";
                        mHeader = "modal-header-danger";
                        break;
                    case 999:
                        mTitle = "Αποτυχία Υποβολής Δήλωσης Προτίμησης";
                        mText = "Δεν έχετε επιλέξει τομέα";
                        mHeader = "modal-header-danger";
                        break;
                    case 998:
                        mTitle = "Αποτυχία Υποβολής Δήλωσης Προτίμησης";
                        mText = "Δεν έχετε επιλέξει ειδικότητα";
                        mHeader = "modal-header-danger";
                        break;
411
                    case 1001:
412
                        mTitle = "Αποτυχία Υποβολής Δήλωσης Προτίμησης";
413
414
415
416
                        mText = "Δεν έχετε αποδεχθεί τους όρους χρήσης";
                        mHeader = "modal-header-danger";
                        break;
                    case 1002:
417
                        mTitle = "Αποτυχία Υποβολής Δήλωσης Προτίμησης";
418
419
420
421
                        mText = "Ελέξτε τη φόρμα σας. Υπάρχουν λάθη - ελλείψεις που δεν επιτρέπουν την υποβολή.";
                        mHeader = "modal-header-danger";
                        break;
                    case 1003:
422
                        mTitle = "Αποτυχία Υποβολής Δήλωσης Προτίμησης";
423
424
425
                        mText = "Ελέξτε τη φόρμα σας. Η ημερομηνία γέννησης δεν είναι έγκυρη.";
                        mHeader = "modal-header-danger";
                        break;
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
                    case 1004:
                    case 1005:
                    case 1006:
                    case 1007:
                    case 1008:
                    case 1009:
                    case 1010:
                    case 1013:
                    case 1014:
                    case 1015:
                    case 1016:
                    case 1017:
                    case 1018:
                    case 1019:
                    case 1020:
                    case 1021:
                    case 1022:
                    case 1023:
                        mTitle = "Αποτυχία Υποβολής Δήλωσης Προτίμησης";
                        mText = "Παρακαλούμε ελέγξτε τα στοιχεία που υποβάλλετε. Υπάρχουν λάθη - ελλείψεις στο πεδίο \"" + errors[errorCode] + "\"που δεν επιτρέπουν την υποβολή.";
                        mHeader = "modal-header-danger";
                        break;
448
449
450
451
452
                    case 3002:
                        mTitle = "Αποτυχία Υποβολής Δήλωσης Προτίμησης";
                        mText = "Το σύστημα δεν δέχεται υποβολή δηλώσεων αυτή την περίοδο.";
                        mHeader = "modal-header-danger";
                        break;
453
454
                    case 8000:
                    case 8001:
455
                        mTitle = "Αποτυχία Υποβολής Δήλωσης Προτίμησης";
456
457
458
459
                        mText = "Προέκυψε σφάλμα κατά τη διάρκεια ελέγχου των στοιχείων φοίτησης σας. Παρακαλώ δοκιμάστε ξανά ή προσπαθήστε αργότερα. Εάν το πρόβλημα συνεχίσει να υφίσταται, επικοινωνήστε με την ομάδα υποστήριξης.";
                        mHeader = "modal-header-danger";
                        break;
                    case 8002:
460
                        mTitle = "Αποτυχία Υποβολής Δήλωσης Προτίμησης";
461
462
463
464
                        mText = "Τα στοιχεία φοίτησης που υποβάλλατε δεν επικυρώθηκαν. Παρακαλώ ελέγξτε τη φόρμα σας και προσπαθήστε ξανά. Εάν το θέμα συνεχίσει να υφίσταται, επικοινωνήστε με την ομάδα υποστήριξης.";
                        mHeader = "modal-header-danger";
                        break;
                    case 8003:
465
                        mTitle = "Αποτυχία Υποβολής Δήλωσης Προτίμησης";
466
467
468
                        mText = "Τα στοιχεία φοίτησης που υποβάλλατε δεν είναι έγκυρα. Παρακαλώ ελέγξτε τη φόρμα σας και προσπαθήστε ξανά. Εάν το θέμα συνεχίσει να υφίσταται, επικοινωνήστε με την ομάδα υποστήριξης.";
                        mHeader = "modal-header-danger";
                        break;
469
470
471
472
473
                    case 8004:
                        mTitle = "Αποτυχία Υποβολής Δήλωσης Προτίμησης";
                        mText = "Τα στοιχεία φοίτησης που υποβάλλατε δεν είναι έγκυρα. Παρακαλώ ελέγξτε τη φόρμα σας και προσπαθήστε ξανά. Ελέγξτε επίσης αν έχετε ήδη κάνει δήλωση για τον ίδιο μαθητή.";
                        mHeader = "modal-header-danger";
                        break;
474
                    default:
475
                        mTitle = "Αποτυχία Υποβολής Δήλωσης Προτίμησης";
476
477
478
479
480
481
482
483
                        mText = "Ελέξτε τη φόρμα σας. Υπάρχουν λάθη - ελλείψεις που δεν επιτρέπουν την υποβολή.";
                        mHeader = "modal-header-danger";
                }

                this.modalTitle.next(mTitle);
                this.modalText.next(mText);
                this.modalHeader.next(mHeader);
                this.showModal();
484
                (<any>$(".loading")).remove();
485
                this.showLoader.next(false);
486

487
488
            },
            error => {
489
                (<any>$(".loading")).remove();
490
                this.modalHeader.next("modal-header-danger");
491
492
                this.modalTitle.next("Υποβολή Δήλωσης Προτίμησης");
                this.modalText.next("Η υποβολή της δήλωσης προτίμησης απέτυχε. Παρακαλούμε προσπαθήστε πάλι και αν το πρόβλημα συνεχίσει να υφίσταται, επικοινωνήστε με την ομάδα υποστήριξης.");
493
494
                this.showModal();
                this.showLoader.next(false);
495
                console.log("Error HTTP POST Service");
496
            }
497
            );
498
499
500
501

    }

    public showModal(): void {
502
        (<any>$("#studentFormSentNotice")).modal("show");
503
504
505
    }

    public hideModal(): void {
506
        (<any>$("#studentFormSentNotice")).modal("hide");
507
        if (this.modalHeader.getValue() === "modal-header-success") {
508
            this.router.navigate(["/post-submit"]);
509
510
511
512
513
514
        }

    }

    public onHidden(): void {
        this.isModalShown.next(false);
515
        this.router.navigate(["/post-submit"]);
516
517
518
    }

    navigateBack() {
519
        this.router.navigate(["/student-application-form-main"]);
520
    }
521

522
}