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
}