director-view.ts 12 KB
Newer Older
1
import { Component, OnInit, OnDestroy, ElementRef, ViewChild} from "@angular/core";
Open Source Developer's avatar
Open Source Developer committed
2
3
4
5
6
import { Injectable } from "@angular/core";
import { AppSettings } from '../../app.settings';
import { HelperDataService } from '../../services/helper-data-service';
import {Observable} from "rxjs/Observable";
import {Http, Headers, RequestOptions} from '@angular/http';
Open Source Developer's avatar
tran    
Open Source Developer committed
7
import { NgRedux, select } from 'ng2-redux';
Open Source Developer's avatar
Open Source Developer committed
8
9
10
import { IAppState } from '../../store/store';
import {Router, ActivatedRoute, Params} from '@angular/router';
import { BehaviorSubject, Subscription } from 'rxjs/Rx';
Open Source Developer's avatar
transf    
Open Source Developer committed
11
import { ILoginInfo } from '../../store/logininfo/logininfo.types';
Open Source Developer's avatar
trans    
Open Source Developer committed
12

Open Source Developer's avatar
trans    
Open Source Developer committed
13
14
15
16
17
18
19
import {
    FormBuilder,
    FormGroup,
    FormControl,
    FormArray,
    Validators,
} from '@angular/forms';
Open Source Developer's avatar
Open Source Developer committed
20
21
22
@Component({
    selector: 'director-view',
    template: `
Open Source Developer's avatar
trans    
Open Source Developer committed
23
  <form [formGroup]="formGroup">
Open Source Developer's avatar
paging    
Open Source Developer committed
24
25
       

Open Source Developer's avatar
trans    
Open Source Developer committed
26
27
28
29
30
31
32
      <label for="taxi">Τάξη</label><br/>
      <div class="form-group">
            <select #txoption  class="form-control" (change)="verifyclass(txoption)" formControlName="taxi">
              <option value="1" >Α' Λυκείου</option>
              <option value="2" >Β' Λυκείου</option>
              <option value="3" >Γ' Λυκείου</option>
            </select>
33
      </div>
Open Source Developer's avatar
trans    
Open Source Developer committed
34
      <div class="form-group">
Open Source Developer's avatar
trans    
Open Source Developer committed
35
            <select #tmop class="form-control" *ngIf="(selectionBClass | async)" (change)="checkbclass(tmop,txoption)" formControlName="tomeas">
Open Source Developer's avatar
trans    
Open Source Developer committed
36
              <option *ngFor="let SectorSelection$  of StudentSelected$ | async; let i=index" [value] = "SectorSelection$.id"> {{SectorSelection$.sector_id}} </option>
Open Source Developer's avatar
trans    
Open Source Developer committed
37
38
39
            </select>
      </div>
      <div class="form-group">
Open Source Developer's avatar
trans    
Open Source Developer committed
40
41
            <select #spop class="form-control" *ngIf="(selectionCClass | async)" (change) ="checkcclass()" formControlName="specialit">
              <option *ngFor="let SpecialSelection$  of StudentSelectedSpecial$ | async; let i=index" [value] = "SpecialSelection$.id"> {{SpecialSelection$.specialty_id}} </option>
Open Source Developer's avatar
trans    
Open Source Developer committed
42
43
            </select>
      </div>
Open Source Developer's avatar
paging    
Open Source Developer committed
44
            <button type="button" class="btn-primary btn-sm pull-right" (click)="findstudent(txoption,1)">
Open Source Developer's avatar
trans    
Open Source Developer committed
45
46
                Αναζήτηση
             </button>
Open Source Developer's avatar
trans    
Open Source Developer committed
47
             <div *ngIf="(retrievedStudent | async)">
48
              <div *ngFor="let StudentDetails$  of StudentInfo$ | async; let i=index">
Open Source Developer's avatar
Open Source Developer committed
49
50
                <br>
                <br>
Open Source Developer's avatar
trans    
Open Source Developer committed
51
52
53
54
55
56
57
                 Όνομα:         {{StudentDetails$.name}} <br>
                 Επώνυμο:       {{StudentDetails$.studentsurname}}<br>
                 Όνομα Πατέρα:  {{StudentDetails$.fatherfirstname}}<br>
                 Επώνυμο Πατέρα:{{StudentDetails$.fathersurname}}<br>
                 Όνομα Μητέρας: {{StudentDetails$.motherfirstname}}<br>
                 Επώνυμο Μητέρας:{{StudentDetails$.mothersurname}}<br>
                 Ημερομηνία Γέννησης: {{StudentDetails$.birthdate}}<br>
58
59

                 <strong>Επιβεβαίωση Εγγραφής: </strong>
Open Source Developer's avatar
Open Source Developer committed
60
                 <input #cb class="pull-right" type="checkbox" name="{{ StudentDetails$.id }}" (change)="updateCheckedOptions(StudentDetails$.id, $event)" >
61

62
<!--             </div>  -->
Open Source Developer's avatar
trans    
Open Source Developer committed
63
             </div>
Open Source Developer's avatar
paging    
Open Source Developer committed
64
65
66
67
68
69
70
71
72
73
74
75
76
77

          <br>
          <br>
         <div class="form-group" class="row">
          Βρίσκεστε στη σελίδα:
          <div class="col-1">
           <input #pageno type="text" class="form-control" placeholder=".col-1" formControlName="pageno">
          </div> 
           απο  
           <div class="col-1">
           <input #maxpage type="text" class="form-control" placeholder=".col-1" formControlName="maxpage">
           </div>   
         </div>
 
Open Source Developer's avatar
trans    
Open Source Developer committed
78
79
80
            <button type="button" class="btn-primary btn-sm pull-right" (click)="confirmStudent()">
                 Επιβεβαίωση Εγγραφής
             </button>
Open Source Developer's avatar
paging    
Open Source Developer committed
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
             <br>
             <nav aria-label="pagination">
              <ul class="pagination justify-content-center">
                <li class="page-item " >
                  <button class="page-link" (click)="prevpage(txoption)">Προηγούμενη</button>
                </li>
                <li class="page-item">
                  <button class="page-link" (click) ="nextpage(txoption,maxpage) ">Επόμενη</button>
                </li>
              </ul>
              
            </nav>
     
       

Open Source Developer's avatar
Open Source Developer committed
96
97
98
   `
})

99
@Injectable() export default class DirectorView implements OnInit, OnDestroy {
Open Source Developer's avatar
Open Source Developer committed
100

Open Source Developer's avatar
trans    
Open Source Developer committed
101
    public formGroup: FormGroup;
Open Source Developer's avatar
Open Source Developer committed
102
103
    private StudentSelected$: BehaviorSubject<any>;
    private StudentSelectedSub: Subscription;
Open Source Developer's avatar
trans    
Open Source Developer committed
104
105
    private StudentInfo$: BehaviorSubject<any>;
    private StudentInfoSub: Subscription;
Open Source Developer's avatar
paging    
Open Source Developer committed
106
107
    private StudentsSize$: BehaviorSubject<any>;
    private StudentsSizeSub: Subscription;
Open Source Developer's avatar
trans    
Open Source Developer committed
108
109
    private StudentSelectedSpecial$: BehaviorSubject<any>;
    private StudentSelectedSpecialSub: Subscription;
Open Source Developer's avatar
trans    
Open Source Developer committed
110
    private retrievedStudent: BehaviorSubject<boolean>;
Open Source Developer's avatar
trans    
Open Source Developer committed
111
112
    private selectionBClass: BehaviorSubject<boolean>;
    private selectionCClass: BehaviorSubject<boolean>;
113
    private SchoolId = 147;
Open Source Developer's avatar
trans    
Open Source Developer committed
114
    private currentclass: Number;
115
    private saved: Array<number> = new Array();
Open Source Developer's avatar
paging    
Open Source Developer committed
116
117
118
119
    private limitdown = 0; 
    private limitup=  5;
    private pageno = 1;
    //private maxpage:Number;
120
121
122
123
124
125
126
127
128


    constructor(private fb: FormBuilder,
        private _hds: HelperDataService,
        private activatedRoute: ActivatedRoute,
        private router: Router) {
        this.StudentSelected$ = new BehaviorSubject([{}]);
        this.StudentSelectedSpecial$ = new BehaviorSubject([{}]);
        this.StudentInfo$ = new BehaviorSubject([{}]);
Open Source Developer's avatar
paging    
Open Source Developer committed
129
        this.StudentsSize$ = new BehaviorSubject({});
130
131
132
133
134
135
136
        this.retrievedStudent = new BehaviorSubject(false);
        this.selectionBClass = new BehaviorSubject(false);
        this.selectionCClass = new BehaviorSubject(false);
        this.formGroup = this.fb.group({
            tomeas: ['', []],
            taxi: ['', []],
            specialit: ['', []],
Open Source Developer's avatar
paging    
Open Source Developer committed
137
138
            maxpage:[{value: '', disabled: true}, []],
            pageno:[{value: '', disabled: true}, []],
139
        });
140

Open Source Developer's avatar
Open Source Developer committed
141
142
    }

143
    ngOnDestroy() {
Open Source Developer's avatar
Open Source Developer committed
144
145
        if (this.StudentSelectedSub)
            this.StudentSelectedSub.unsubscribe();
Open Source Developer's avatar
trans    
Open Source Developer committed
146
147
        if (this.StudentSelectedSpecialSub)
            this.StudentSelectedSpecialSub.unsubscribe();
Open Source Developer's avatar
trans    
Open Source Developer committed
148
149
150
        if (this.selectionBClass)
            this.selectionBClass.unsubscribe();
        if (this.selectionCClass)
151
            this.selectionCClass.unsubscribe();
152
        if (this.retrievedStudent)
Open Source Developer's avatar
Open Source Developer committed
153
            this.retrievedStudent.unsubscribe();
Open Source Developer's avatar
Open Source Developer committed
154
    }
155

Open Source Developer's avatar
Open Source Developer committed
156
157
158
159
160
    ngOnInit() {

    }


161
    verifyclass(txop) {
Open Source Developer's avatar
paging    
Open Source Developer committed
162
        this.pageno = 1;
163
164
165
166
        this.retrievedStudent.next(false);
        if (txop.value === "1") {
            this.selectionBClass.next(false);
            this.selectionCClass.next(false);
Open Source Developer's avatar
trans    
Open Source Developer committed
167

168
169
170
        }
        else if (txop.value === "2") {
            this.StudentSelectedSub = this._hds.getSectorPerSchool(this.SchoolId).subscribe(data => {
Open Source Developer's avatar
trans    
Open Source Developer committed
171
                this.selectionBClass.next(true);
Open Source Developer's avatar
trans    
Open Source Developer committed
172
                this.selectionCClass.next(false);
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
                this.StudentSelected$.next(data);

            },
                error => {
                    this.StudentSelected$.next([{}]);
                    console.log("Error Getting StudentSelectedSpecial");
                },
                () => console.log("Getting StudentSelectedSpecial"));
        }
        else if (txop.value === "3") {
            var sectorint = +this.formGroup.value.tomeas;
            console.log(sectorint, "test");
            if (this.formGroup.value.tomeas != '') {
                var sectorint = +this.formGroup.value.tomeas;

                this.StudentSelectedSpecialSub = this._hds.getSpecialityPerSchool(this.SchoolId, sectorint).subscribe(data => {
                    this.StudentSelectedSpecial$.next(data);
                },
                    error => {
                        this.StudentSelectedSpecial$.next([{}]);
                        console.log("Error Getting StudentSelectedSpecial");
                    },
                    () => console.log("Getting StudentSelectedSpecial"));
196
            }
197
198
199
200
201
202
203
204
205
206
207
208

            this.StudentSelectedSub = this._hds.getSectorPerSchool(this.SchoolId).subscribe(data => {
                this.StudentSelected$.next(data);
                this.selectionBClass.next(true);
                this.selectionCClass.next(true);
            },
                error => {
                    this.StudentSelected$.next([{}]);
                    console.log("Error Getting StudentSelected");
                },
                () => console.log("Getting StudentSelected"));
        }
Open Source Developer's avatar
trans    
Open Source Developer committed
209
210
    }

Open Source Developer's avatar
Open Source Developer committed
211

212
    checkbclass(tmop, txop) {
Open Source Developer's avatar
paging    
Open Source Developer committed
213
        this.pageno = 1;
Open Source Developer's avatar
trans    
Open Source Developer committed
214
215
        this.retrievedStudent.next(false);
        var sectorint = +this.formGroup.value.tomeas;
216
217
218
219
220
221
222
223
224
225
226
227
        console.log(sectorint, "tomeas");
        if (txop.value === "3") {
            //            this.StudentSelectedSpecial$ = new BehaviorSubject([{}]);
            this.StudentSelectedSpecialSub = this._hds.getSpecialityPerSchool(this.SchoolId, sectorint).subscribe(data => {
                this.StudentSelectedSpecial$.next(data);

            },
                error => {
                    this.StudentSelectedSpecial$.next([{}]);
                    console.log("Error Getting StudentSelectedSpecial");
                },
                () => console.log("Getting StudentSelectedSpecial"));
Open Source Developer's avatar
trans    
Open Source Developer committed
228
229
230
        }
    }

Open Source Developer's avatar
paging    
Open Source Developer committed
231
    findstudent(txop, pageno) {
232

Open Source Developer's avatar
paging    
Open Source Developer committed
233
        var tot_pages: Number;
234
235
236
237
238
239
240
241
242
243
        var sectorint = +this.formGroup.value.tomeas;
        if (txop.value === "1") {
            this.currentclass = 1;
        }
        else if (txop.value === "2") {
            this.currentclass = 2;
        }
        else if (txop.value === "3") {
            this.currentclass = 3;
        }
244

Open Source Developer's avatar
paging    
Open Source Developer committed
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
         this.formGroup.get('pageno').setValue(this.pageno); 
         if (this.pageno == 1){
            console.log(this.SchoolId, sectorint, this.currentclass,"test");            
            this.StudentsSizeSub = this._hds.getStudentPerSchool(this.SchoolId, sectorint, this.currentclass, 0, 0).subscribe(x => {
                this.StudentsSize$.next(x);
                tot_pages = x.id /5;
                if (x.id%5 >0)
                {
                    tot_pages = (x.id - (x.id%5))/5 +1;
                }  
                this.formGroup.get('maxpage').setValue(tot_pages); 
                });

        }            
     
260
261
        //            this.StudentInfo$ = new BehaviorSubject([{}]);
        //            this.StudentInfoSub = this._hds.getStudentPerSchool(this.SchoolId, sectorint, this.currentclass).subscribe(this.StudentInfo$);
Open Source Developer's avatar
paging    
Open Source Developer committed
262
        this.StudentInfoSub = this._hds.getStudentPerSchool(this.SchoolId, sectorint, this.currentclass, this.limitdown, this.limitup).subscribe(data => {
263
264
265
266
267
268
269
270
            this.StudentInfo$.next(data);
            this.retrievedStudent.next(true);
        },
            error => {
                this.StudentInfo$.next([{}]);
                console.log("Error Getting Students");
            },
            () => console.log("Getting Students"));
271

Open Source Developer's avatar
trans    
Open Source Developer committed
272
273
    }

274
    updateCheckedOptions(id, event) {
Open Source Developer's avatar
trans    
Open Source Developer committed
275

276
        let i = this.saved.length;
Open Source Developer's avatar
trans    
Open Source Developer committed
277

278

279
280
281
282
283
284
285
286
287
288
        if (event.target.checked === false) {
            var count = this.saved.length;
            for (var j = 0; j < count; j++) {
                if (this.saved[j] === id) {
                    this.saved.splice(j, 1);
                }
            }
        }
        else {
            this.saved[i] = id;
Open Source Developer's avatar
trans    
Open Source Developer committed
289
290
        }

291
    }
Open Source Developer's avatar
trans    
Open Source Developer committed
292

293
294
295
    confirmStudent() {
        this._hds.saveConfirmStudents(this.saved);
    }
Open Source Developer's avatar
trans    
Open Source Developer committed
296

297
    checkcclass() {
Open Source Developer's avatar
paging    
Open Source Developer committed
298
        this.pageno = 1;
299
300
        this.retrievedStudent.next(false);
    }
Open Source Developer's avatar
trans    
Open Source Developer committed
301

Open Source Developer's avatar
paging    
Open Source Developer committed
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
    nextpage(txop, maxpage){
     console.log(maxpage.value);   
     if (this.pageno < maxpage.value)
      {
           this.pageno = this.pageno+1;
           this.limitdown = (this.pageno-1) * 5 ;
           this.limitup = this.pageno * 5;
           this.findstudent(txop, this.pageno)
       }
    }

    prevpage(txop){
       console.log(this.pageno,"pageno");
       if (this.pageno > 1)
       {
           this.pageno = this.pageno-1;
           this.limitdown = (this.pageno-1) * 5 ;
           this.limitup = this.pageno * 5;
           this.findstudent(txop, this.pageno)
       }

    }


326
}