director-view.ts 25.8 KB
Newer Older
Open Source Developer's avatar
Open Source Developer committed
1
import { Component, OnInit, OnDestroy, ElementRef, ViewChild} from "@angular/core";
Open Source Developer's avatar
Open Source Developer committed
2
import { Injectable } from "@angular/core";
3
4
import { AppSettings } from "../../app.settings";
import { HelperDataService } from "../../services/helper-data-service";
Open Source Developer's avatar
Open Source Developer committed
5
import {Observable} from "rxjs/Observable";
6
7
8
9
10
11
12
13
import {Http, Headers, RequestOptions} from "@angular/http";
import { NgRedux, select } from "@angular-redux/store";
import { IAppState } from "../../store/store";
import {Router, ActivatedRoute, Params} from "@angular/router";
import { BehaviorSubject, Subscription } from "rxjs/Rx";
import { VALID_CAPACITY_PATTERN} from "../../constants";
import {maxValue} from "../../constants";
import {minValue} from "../../constants";
Open Source Developer's avatar
trans    
Open Source Developer committed
14
15
16
17
18
19
import {
    FormBuilder,
    FormGroup,
    FormControl,
    FormArray,
    Validators,
20
} from "@angular/forms";
Open Source Developer's avatar
Open Source Developer committed
21
@Component({
22
    selector: "director-classcapacity",
Open Source Developer's avatar
Open Source Developer committed
23
    template: `
Open Source Developer's avatar
delete    
Open Source Developer committed
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63


      <div id="applicationDeleteConfirm" (onHidden)="onHidden()" class="modal" tabindex="-1" role="dialog" aria-hidden="true" data-backdrop="static" data-keyboard="false">
      <div class="modal-dialog modal-lg">
        <div class="modal-content">
          <div class="modal-header modal-header-danger">
              <h3 class="modal-title pull-left"><i class="fa fa-close"></i>&nbsp;&nbsp;Διαγραφή Δήλωσης Προτίμησης ΕΠΑΛ</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>Επιλέξατε να διαγράψετε τη δήλωση προτίμησης ΕΠΑΛ. Παρακαλούμε επιλέξτε Επιβεβαίωση</p>
          </div>
          <div class="modal-footer">
            <button type="button" class="btn btn-default pull-left" data-dismiss="modal" (click)="hideConfirmModal()">Ακύρωση</button>
            <button type="button" class="btn btn-default pull-left" data-dismiss="modal" (click)="deleteApplicationDo()">Επιβεβαίωση</button>
          </div>
        </div>
      </div>
    </div>

    <div id="applicationDeleteError" (onHidden)="onHidden()" class="modal" tabindex="-1" role="dialog" aria-hidden="true" data-backdrop="static" data-keyboard="false">
      <div class="modal-dialog modal-lg">
        <div class="modal-content">
          <div class="modal-header modal-header-danger">
              <h3 class="modal-title pull-left"><i class="fa fa-ban"></i>&nbsp;&nbsp;Αποτυχία Διαγραφής Δήλωσης Προτίμησης ΕΠΑΛ</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>Η δήλωσή δεν διαγράφηκε. Δεν μπορείτε να διαγράψετε τη δήλωσή μαθητή εαν έχετε κάνει την επιβεβαίωση εγγραφής.</p>
          </div>
          <div class="modal-footer">
            <button type="button" class="btn btn-default pull-right" data-dismiss="modal" (click)="hideErrorModal()">Κλείσιμο</button>
          </div>
        </div>
      </div>
    </div>
Open Source Developer's avatar
Open Source Developer committed
64
    <div class = "loading" *ngIf="(showLoader | async) === true"></div>
65
    <div style="min-height: 500px;">
Open Source Developer's avatar
Open Source Developer committed
66
67
    <form [formGroup]="formGroup">

Open Source Developer's avatar
bugs    
Open Source Developer committed
68
69
       <p style="margin-top: 20px; line-height: 2em;"> H παρακάτω λίστα διαμορφώνει τη δυναμική του σχολείου σας σε τμήματα με κριτήριο τον αριθμό των διαθεσίμων αιθουσών.  </p>
       <p style="margin-top: 20px; line-height: 2em;"> Παρακαλείστε να καταγράψετε τον αριθμό των τμημάτων ανά τάξη, τομέα και ειδικότητα.  </p>
70

71
72
73
      <div class="row">
         <div class="col-md-10" style="font-weight: bold;"> Τα τμήματα του σχολείου σας.</div>
         <div class="col-md-2" style="font-weight: bold;"> <span class="pull-right" style="text-align: right; padding-right: 2px;">Αριθμός Μαθητών</span></div>
Open Source Developer's avatar
Open Source Developer committed
74
      </div>
Open Source Developer's avatar
Open Source Developer committed
75
      <div *ngFor="let CoursesPerSchools$  of CoursesPerSchool$ | async; let i=index; let isOdd=odd; let isEven=even" >
76
77
78
                <li class="list-group-item isclickable" (click)="setActive(i)"
                (click)="findstudent(CoursesPerSchools$.class, CoursesPerSchools$.newsector, CoursesPerSchools$.newspecialit)"
                [class.changelistcolor]= "CoursesPerSchools$.size < CoursesPerSchools$.limitdown"
Open Source Developer's avatar
Open Source Developer committed
79
                [class.oddout]="isOdd" [class.evenout]="isEven"  [class.selectedout]="courseActive === i" >
80
81
82
83
                <div class="row"  style="line-height: 2em;">
                  <div class="col-md-10" style="font-weight: bold;" >{{CoursesPerSchools$.taxi}}</div>
                  <div class="col-md-2" style="font-weight: bold;" ><span class="pull-right" style="text-align: right; padding-right: 2px;">{{CoursesPerSchools$.size}}</span></div>
                </div>
Open Source Developer's avatar
Open Source Developer committed
84
                </li>
85

Open Source Developer's avatar
Open Source Developer committed
86
               <div [hidden]="courseActive !== i" *ngIf="(retrievedStudent | async)">
87
88
                 <div *ngFor="let StudentDetails$  of StudentInfo$ | async; let j=index; let isOdd=odd; let isEven=even" class="row list-group-item isclickable"
                 [class.selectedappout]="StudentActive === j"
Open Source Developer's avatar
Open Source Developer committed
89
                 [class.confirmed]="StudentDetails$.checkstatus === '1'"
90
                 [class.notconfirmed]="StudentDetails$.checkstatus === '0'"
Open Source Developer's avatar
Open Source Developer committed
91
92
                 [class.notchecked]="(StudentDetails$.checkstatus !== '1') && (StudentDetails$.checkstatus !== '0')"
                 [class.oddout]="isOdd" [class.evenout]="isEven" style="margin: 0px 2px 0px 2px;">
93
94
                    <div class="col-md-5" style="font-size: 0.8em; font-weight: bold;" (click) ="setActiveStudent(j)" >{{StudentDetails$.studentsurname}}</div>
                    <div class="col-md-5" style="font-size: 0.8em; font-weight: bold;" (click) ="setActiveStudent(j)">{{StudentDetails$.name}}</div>
Open Source Developer's avatar
delete    
Open Source Developer committed
95
96
                    <div class="col-md-2" style="font-size: 1.5em; font-weight: bold;"><i class="fa fa-trash isclickable" (click)="deleteApplication(StudentDetails$.id, CoursesPerSchools$.class, CoursesPerSchools$.newsector, CoursesPerSchools$.newspecialit)"></i></div>

97
                    <div [hidden]="StudentActive !== j" class="col-md-2 pull-right" style="color: black;" > <span aria-hidden="true"><button type="button" class="btn-primary btn-sm pull-right" (click) ="setActiveStudentnew(j)">Κλείσιμο</button></span>  </div>
Open Source Developer's avatar
paging    
Open Source Developer committed
98

Open Source Developer's avatar
Open Source Developer committed
99
100
                    <div style="width: 100%; color: #000000;">
                    <div [hidden]="StudentActive !== j"  style="margin: 20px 10px 10px 10px;">
101

102
                     <p style="margin-top: 10px; margin-bottom: 5px; line-height: 2em;"> Παρακαλούμε, αφού γίνει ο έλεγχος των στοιχείων του μαθητή επιβεβαιώστε τη δυνατότητα εγγραφής του.</p>
103
104

                     <div class="row" style="margin-bottom: 20px;">
105
106
                     <div class="col-md-8">&nbsp;</div>
                     <div class="col-md-4">
Open Source Developer's avatar
trans    
Open Source Developer committed
107
                      <strong><label>Επιβεβαίωση Εγγραφής:</label> </strong>
108
                      <select class="form-control pull-right" #cb name="{{StudentDetails$.id}}" (change)="confirmStudent(StudentDetails$.id, cb, j)">
109
110
                          <option value="1" [selected]="StudentDetails$.checkstatus === '1' ">Ναι</option>
                          <option value="2" [selected]="StudentDetails$.checkstatus === '0' ">Όχι</option>
111
                          <option value="3" [selected]="StudentDetails$.checkstatus != '0' && StudentDetails$.checkstatus != '1'">Δεν ελέγχθηκε</option>
Open Source Developer's avatar
trans    
Open Source Developer committed
112
                      </select>
113
114
115
                      </div>
                     </div>

116
117
118
119
120
121
                     <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">{{StudentDetails$.id}}</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">{{StudentDetails$.created}}</div>
                     </div>
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143

                       <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">{{StudentDetails$.guardian_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">{{StudentDetails$.guardian_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">{{ StudentDetails$.guardian_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">{{ StudentDetails$.guardian_mothername }}</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">{{StudentDetails$.regionaddress}}</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">{{StudentDetails$.regiontk}} - {{StudentDetails$.regionarea}}</div>
                       </div>
144
145
146
147

                       <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>
148
149
150
151
152
153
154
155
156
157
158
159
160
161
                       <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">{{StudentDetails$.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">{{StudentDetails$.studentsurname}}</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">{{StudentDetails$.fatherfirstname}}</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">{{StudentDetails$.motherfirstname}}</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>
162
163
164
                           <div class="col-md-3" style="font-size: 0.8em; font-weight: bold">{{StudentDetails$.birthdate}}</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">{{StudentDetails$.telnum}}</div>
165
166
167
168
169
                       </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">{{StudentDetails$.lastschool_schoolname}}</div>
170
171
                           <div class="col-md-3" style="font-size: 0.8em;">Σχολικό έτος τελευταίας φοίτησης</div>
                           <div class="col-md-3" style="font-size: 0.8em; font-weight: bold">{{StudentDetails$.lastschool_schoolyear}}</div>
172
                       </div>
173
                       <div class="row oddin" style="margin: 0px 2px 0px 2px; line-height: 2em;">
174
                           <div class="col-md-3" style="font-size: 0.8em;">Τάξη τελευταίας φοίτησης</div>
175
176
177
178
179
180
181
182
183
184
                           <div *ngIf="StudentDetails$.lastschool_class === '1'" class="col-md-9" style="font-size: 0.8em; font-weight: bold">Α</div>
                           <div *ngIf="StudentDetails$.lastschool_class === '2'" class="col-md-9" style="font-size: 0.8em; font-weight: bold">Β</div>
                           <div *ngIf="StudentDetails$.lastschool_class === '3'" class="col-md-9" style="font-size: 0.8em; font-weight: bold">Γ</div>
                           <div *ngIf="StudentDetails$.lastschool_class === '4'" class="col-md-9" style="font-size: 0.8em; font-weight: bold">Δ</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-9" style="font-size: 0.8em; font-weight: bold">{{ StudentDetails$.relationtostudent }}</div>
                       </div>
                       <div class="row oddin" style="margin: 0px 2px 0px 2px; line-height: 2em;">
185
                           <div class="col-md-3" style="font-size: 0.8em;">Τάξη φοίτησης για το νέο σχολικό έτος</div>
186
187
188
189
                           <div *ngIf="StudentDetails$.currentclass === '1'" class="col-md-9" style="font-size: 0.8em; font-weight: bold">Α</div>
                           <div *ngIf="StudentDetails$.currentclass === '2'" class="col-md-9" style="font-size: 0.8em; font-weight: bold">Β</div>
                           <div *ngIf="StudentDetails$.currentclass === '3'" class="col-md-9" style="font-size: 0.8em; font-weight: bold">Γ</div>
                           <div *ngIf="StudentDetails$.currentclass === '4'" class="col-md-9" style="font-size: 0.8em; font-weight: bold">Δ</div>
190
191
                       </div>
                       <div *ngIf="StudentDetails$.currentclass === '2'" class="row oddin" style="margin: 0px 2px 0px 2px; line-height: 2em;">
192
193
                           <div class="col-md-3" style="font-size: 0.8em;">Τομέας φοίτησης για το νέο σχολικό έτος</div>
                           <div class="col-md-9" style="font-size: 0.8em; font-weight: bold">{{StudentDetails$.currentsector}}</div>
194
195
                       </div>
                       <div *ngIf="StudentDetails$.currentclass === '3' || StudentDetails$.currentclass === '4'" class="row oddin" style="margin: 0px 2px 0px 2px; line-height: 2em;">
196
197
                           <div class="col-md-3" style="font-size: 0.8em;">Ειδικότητα φοίτησης για το νέο σχολικό έτος</div>
                           <div class="col-md-9" style="font-size: 0.8em; font-weight: bold">{{StudentDetails$.currentcourse}}</div>
198
                       </div>
Open Source Developer's avatar
trans    
Open Source Developer committed
199

Open Source Developer's avatar
trans    
Open Source Developer committed
200
                 </div>
201
                 </div>
202

203

Open Source Developer's avatar
Open Source Developer committed
204
205
206
207
208
209
210
211
212
213
214
                 </div>
               </div>
       </div>
      </form>
      </div>


  <div id="checksaved" (onHidden)="onHidden('#checksaved')"
    class="modal fade" tabindex="-1" role="dialog" aria-hidden="true">
      <div class="modal-dialog modal-lg">
        <div class="modal-content">
Open Source Developer's avatar
others    
Open Source Developer committed
215
          <div class="modal-header modal-header-success">
Open Source Developer's avatar
Open Source Developer committed
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
            <h3 class="modal-title pull-left"><i class="fa fa-check-square-o"></i>&nbsp;&nbsp;Η επιλογή σας έχει αποθηκευτεί</h3>
            <button type="button" class="close pull-right" aria-label="Close" (click)="hideModal('#checksaved')">
              <span aria-hidden="true"><i class="fa fa-times"></i></span>
            </button>
          </div>
          <div class="modal-body">
            <p>Η επιλογή σας έχει αποθηκευτεί</p>
          </div>
          <div class="modal-footer">
            <button type="button" class="btn btn-default pull-left" data-dismiss="modal">Κλείσιμο</button>
          </div>
        </div>
      </div>
    </div>


<div id="dangermodal" (onHidden)="onHidden('#dangermodal')"
    class="modal fade" tabindex="-1" role="dialog" aria-hidden="true">
      <div class="modal-dialog modal-lg">
        <div class="modal-content">
          <div class="modal-header modal-header-danger">
Open Source Developer's avatar
others    
Open Source Developer committed
237
            <h3 class="modal-title pull-left"><i class="fa fa-ban"></i>&nbsp;&nbsp;Η επιλογή σας δεν έχει αποθηκευτεί</h3>
Open Source Developer's avatar
Open Source Developer committed
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
            <button type="button" class="close pull-right" aria-label="Close" (click)="hideModal('#dangermodal')">
              <span aria-hidden="true"><i class="fa fa-times"></i></span>
            </button>
          </div>
          <div class="modal-body">
            <p>Παρακαλώ προσπαθήστε ξανα!</p>
          </div>
          <div class="modal-footer">
            <button type="button" class="btn btn-default pull-left" data-dismiss="modal">Κλείσιμο</button>
          </div>
        </div>
      </div>
    </div>


    <div id="emptyselection" (onHidden)="onHidden('#emptyselection')"
    class="modal fade" tabindex="-1" role="dialog" aria-hidden="true">
      <div class="modal-dialog modal-lg">
        <div class="modal-content">
          <div class="modal-header modal-header-danger">
Open Source Developer's avatar
others    
Open Source Developer committed
258
            <h3 class="modal-title pull-left"><i class="fa fa-ban"></i>&nbsp;&nbsp;Δεν υπάρχουν μαθητές</h3>
Open Source Developer's avatar
Open Source Developer committed
259
260
261
262
263
264
265
266
267
268
269
270
271
            <button type="button" class="close pull-right" aria-label="Close" (click)="hideModal('#emptyselection')">
              <span aria-hidden="true"><i class="fa fa-times"></i></span>
            </button>
          </div>
          <div class="modal-body">
            <p>Δεν υπάρχουν μαθητές με δήλωση προτίμησης το συγκεκριμένο τμήμα του σχολείου σας!</p>
          </div>
          <div class="modal-footer">
            <button type="button" class="btn btn-default pull-left" data-dismiss="modal">Κλείσιμο</button>
          </div>
        </div>
      </div>
    </div>
Open Source Developer's avatar
Open Source Developer committed
272
273
274
   `
})

Open Source Developer's avatar
Open Source Developer committed
275
@Injectable() export default class DirectorClassCapacity implements OnInit, OnDestroy {
Open Source Developer's avatar
Open Source Developer committed
276

277
    private formGroup: FormGroup;
Open Source Developer's avatar
Open Source Developer committed
278
279
280

    private CoursesPerSchool$: BehaviorSubject<any>;
    private CoursesPerSchoolSub: Subscription;
Open Source Developer's avatar
trans    
Open Source Developer committed
281
282
    private StudentInfo$: BehaviorSubject<any>;
    private StudentInfoSub: Subscription;
Open Source Developer's avatar
Open Source Developer committed
283
    private retrievedStudent: BehaviorSubject<boolean>;
Open Source Developer's avatar
Open Source Developer committed
284
285
    private SavedStudentsSub: Subscription;
    private SavedStudents$: BehaviorSubject<any>;
Open Source Developer's avatar
Open Source Developer committed
286
287
288
289
    private courseActive = <number>-1;
    private StudentActive = <number>-1;
    private showLoader: BehaviorSubject<boolean>;
    private opened;
Open Source Developer's avatar
delete    
Open Source Developer committed
290
    private applicationId = <number>0;
291
    private taxi = <number>0;
Open Source Developer's avatar
delete    
Open Source Developer committed
292
    private sector = <number>0;
293
    private special = <number>0;
294

295
296
297
    constructor(private fb: FormBuilder,
        private _hds: HelperDataService,
        private activatedRoute: ActivatedRoute,
Open Source Developer's avatar
Open Source Developer committed
298
299
300
301
302
303
304
305
        private router: Router) {

        this.CoursesPerSchool$ = new BehaviorSubject([{}]);
        this.showLoader = new BehaviorSubject(false);
        this.StudentInfo$ = new BehaviorSubject([{}]);
        this.retrievedStudent = new BehaviorSubject(false);
        this.SavedStudents$ = new BehaviorSubject({});
        this.opened = false;
306
        this.formGroup = this.fb.group({
Open Source Developer's avatar
Open Source Developer committed
307

308
        });
309

Open Source Developer's avatar
Open Source Developer committed
310
    }
311

Open Source Developer's avatar
delete    
Open Source Developer committed
312
    public showConfirmModal(): void {
313
        (<any>$("#applicationDeleteConfirm")).modal("show");
Open Source Developer's avatar
delete    
Open Source Developer committed
314
315
316
    }

    public showErrorModal(): void {
317
        (<any>$("#applicationDeleteError")).modal("show");
Open Source Developer's avatar
delete    
Open Source Developer committed
318
319
320
    }

    public hideConfirmModal(): void {
321
        (<any>$("#applicationDeleteConfirm")).modal("hide");
Open Source Developer's avatar
delete    
Open Source Developer committed
322
323
    }
    public hideErrorModal(): void {
324
        (<any>$("#applicationDeleteError")).modal("hide");
Open Source Developer's avatar
delete    
Open Source Developer committed
325
326
    }

327
    public showModal(popupMsgId): void {
328
        (<any>$(popupMsgId)).modal("show");
Open Source Developer's avatar
Open Source Developer committed
329
    }
Open Source Developer's avatar
trans    
Open Source Developer committed
330

331
    public hideModal(popupMsgId): void {
332

333
        (<any>$(popupMsgId)).modal("hide");
Open Source Developer's avatar
Open Source Developer committed
334
    }
Open Source Developer's avatar
Open Source Developer committed
335

336
    public onHidden(popupMsgId): void {
337

338
    }
Open Source Developer's avatar
trans    
Open Source Developer committed
339

Open Source Developer's avatar
Open Source Developer committed
340
    ngOnDestroy() {
341
342
        (<any>$("#applicationDeleteConfirm")).remove();
        (<any>$("#applicationDeleteError")).remove();
Open Source Developer's avatar
Open Source Developer committed
343
    }
344

Open Source Developer's avatar
Open Source Developer committed
345
    ngOnInit() {
346
347
348
349
350
        (<any>$("#checksaved")).appendTo("body");
        (<any>$("#dangermodal")).appendTo("body");
        (<any>$("#emptyselection")).appendTo("body");
        (<any>$("#applicationDeleteConfirm")).appendTo("body");
        (<any>$("#applicationDeleteError")).appendTo("body");
351
352
353
354
355
356
357
358
359
        this.showLoader.next(true);
        this.CoursesPerSchoolSub = this._hds.FindCoursesPerSchool().subscribe(x => {
            this.CoursesPerSchool$.next(x);
            this.showLoader.next(false);
        },
            error => {
                this.CoursesPerSchool$.next([{}]);
                console.log("Error Getting courses perSchool");
                this.showLoader.next(false);
360
            });
Open Source Developer's avatar
Open Source Developer committed
361
    }
362

363
364
365
366
367
368
369
370
371
    findstudent(taxi, sector, special) {
        this.showLoader.next(true);
        this.retrievedStudent.next(false);
        this.StudentInfoSub = this._hds.getStudentPerSchool(taxi, sector, special)
            .subscribe(data => {
                this.StudentInfo$.next(data);
                this.retrievedStudent.next(true);
                this.showLoader.next(false);
            },
Open Source Developer's avatar
Open Source Developer committed
372
            error => {
373
374
375
376
                this.StudentInfo$.next([{}]);
                console.log("Error Getting Students");
                this.showLoader.next(false);
                this.showModal("#emptyselection");
377
            });
378

Open Source Developer's avatar
trans    
Open Source Developer committed
379
380
    }

381
382
    setActive(ind) {
        this.StudentActive = -1;
383
        if (this.courseActive === ind) {
384
385
386
            ind = -1;
        }
        this.courseActive = ind;
Open Source Developer's avatar
Open Source Developer committed
387
    }
388

389
390
    setActiveStudent(ind) {
        this.opened = true;
391
        if (this.StudentActive === ind) {
392
393
394
395
            ind = -1;
        }
        this.StudentActive = ind;
    }
396

397
398
    setActiveStudentnew(ind) {
        this.opened = false;
399
        if (this.StudentActive === ind) {
400
401
402
403
            ind = -1;
        }
        this.StudentActive = ind;
    }
404

405
    confirmStudent(student, cb, ind) {
406
407
408
409
410
411
        let rtype;
        if (cb.value === 1)
            rtype = "1";
        if (cb.value === 2)
            rtype = "0";
        if (cb.value === 3)
412
            rtype = null;
413
        let type = cb.value;
Open Source Developer's avatar
Open Source Developer committed
414
        this.showLoader.next(true);
Open Source Developer's avatar
trans    
Open Source Developer committed
415

416
417
        let std = this.StudentInfo$.getValue();
        std[ind].checkstatus = rtype;
Open Source Developer's avatar
Open Source Developer committed
418

Open Source Developer's avatar
Open Source Developer committed
419
        this.SavedStudentsSub = this._hds.saveConfirmStudents(student, type).subscribe(data => {
Open Source Developer's avatar
Open Source Developer committed
420
            this.SavedStudents$.next(data);
Open Source Developer's avatar
Open Source Developer committed
421
422
            this.StudentInfo$.next(std);
            this.showLoader.next(false);
423
            this.showModal("#checksaved");
Open Source Developer's avatar
Open Source Developer committed
424
425
426
427
        },
            error => {
                this.SavedStudents$.next([{}]);
                console.log("Error saving Students");
Open Source Developer's avatar
Open Source Developer committed
428
429
                this.showLoader.next(false);
                this.showModal("#dangermodal");
430
            });
Open Source Developer's avatar
paging    
Open Source Developer committed
431
    }
432

433
434
    deleteApplication(appId: number, taxi, sector, special): void {

Open Source Developer's avatar
delete    
Open Source Developer committed
435
436
437
438
439
440
441
        this.applicationId = appId;
        this.taxi = taxi;
        this.sector = sector;
        this.special = special;
        this.showConfirmModal();
    }

442
443
    deleteApplicationDo(): void {

Open Source Developer's avatar
delete    
Open Source Developer committed
444
445
446
        this.hideConfirmModal();
        this.showLoader.next(true);
        this._hds.deleteApplicationforDirector(this.applicationId).then(data => {
447
448
            this.StudentInfoSub.unsubscribe();
            this.CoursesPerSchoolSub.unsubscribe();
Open Source Developer's avatar
delete    
Open Source Developer committed
449
            this.showLoader.next(false);
450
            this.StudentActive = -1;
Open Source Developer's avatar
delete    
Open Source Developer committed
451

452
453
            this.CoursesPerSchoolSub = this._hds.FindCoursesPerSchool().subscribe(x => {
                this.CoursesPerSchool$.next(x);
Open Source Developer's avatar
delete    
Open Source Developer committed
454
                this.showLoader.next(false);
Open Source Developer's avatar
delete    
Open Source Developer committed
455
456

            },
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
                error => {
                    this.CoursesPerSchool$.next([{}]);
                    console.log("Error Getting courses perSchool");
                    this.showLoader.next(false);
                });
            this.StudentInfoSub = this._hds.getStudentPerSchool(this.taxi, this.sector, this.special)
                .subscribe(data => {
                    this.StudentInfo$.next(data);
                    this.retrievedStudent.next(true);
                    this.showLoader.next(false);
                },
                error => {
                    this.StudentInfo$.next([{}]);
                    console.log("Error Getting Students");
                    this.showLoader.next(false);
                    this.showModal("#emptyselection");
                });
Open Source Developer's avatar
delete    
Open Source Developer committed
474
475
476
477
478
        }).catch(err => {
            this.showErrorModal();
            this.showLoader.next(false);
        });
    }
479
}