director-view.ts 17.8 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
trans  
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 48
             <br>
             <br>
Open Source Developer's avatar
trans  
Open Source Developer committed
49 50 51 52
              <ul class="list-group main-view">
              <div *ngIf="(retrievedStudent | async)">

               <div *ngFor="let StudentDetails$  of StudentInfo$ | async; let i=index; let isOdd=odd; let isEven=even"  >
Open Source Developer's avatar
trans  
Open Source Developer committed
53 54 55
                 <li class="list-group-item isclickable" [class.oddout]="isOdd" [class.evenout]="isEven" (click)="setActiveUser(StudentDetails$.i)"
                  [class.selectedout]="userActive === StudentDetails$.i" [class.confirmed]="StudentDetails$.checkstatus === '1'"
                  [class.notconfirmed]="StudentDetails$.checkstatus === '0'" [class.notchecked]="(StudentDetails$.checkstatus !== '1') && (StudentDetails$.checkstatus !== '0')">
Open Source Developer's avatar
trans  
Open Source Developer committed
56 57
                  <h5> {{StudentDetails$.name}}&nbsp;{{StudentDetails$.name}} </h5>
                </li>
58

Open Source Developer's avatar
trans  
Open Source Developer committed
59 60 61 62 63 64 65 66 67 68 69 70
                    <div [hidden]="userActive !== StudentDetails$.i" >
                     <p style="margin-top: 20px; line-height: 2em;"> Παρακαλώ αφού γίνει ο έλεγχος των στοιχείων του μαθητή επιβεβαιώστε τη δυνατότητα εγγραφής του.</p>
                      <strong><label>Επιβεβαίωση Εγγραφής:</label> </strong>
                      <select #cb name="{{StudentDetails$.id}}" (change)="updateCheckedOptions(StudentDetails$.id, cb)" >
                          <option value=1>Ναι</option>
                          <option value=2>Όχι</option>
                          <option value=3 selected></option>
                      </select>
                      <button type="button" class="btn-primary btn-sm pull-right" (click)="confirmStudent()">
                           Επιβεβαίωση Εγγραφής
                       </button>

Open Source Developer's avatar
trans  
Open Source Developer committed
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
                      <table>
                        <tr><td>
                          <div class="form-group" *ngIf="StudentDetails$.relationtostudent === 'Μαθητής' ">
                            <label for="guardianfirstname">Όνομα κηδεμόνα</label><p class="form-control" id="guardianfirstname" style="border:1px solid #eceeef;">{{StudentDetails$.guardianfirstname}} </p> 
                          </div>
                        </td>
                        <td>
                         <div class="form-group" *ngIf="StudentDetails$.relationtostudent === 'Μαθητής' ">
                            <label for="guardiansurname">Επώνυμο κηδεμόνα</label><p class="form-control" id="guardiansurname" style="border:1px solid #eceeef;">{{StudentDetails$.guardiansurname}} </p> 
                          </div>
                        </td></tr>
                      </table>
                      <div class="form-group"><label for="name">Όνομα μαθητή</label> <p class="form-control" id="name" style="border:1px solid #eceeef;">    {{StudentDetails$.name}} </p> </div>
                      <div><label for="studentsurname">Επώνυμο μαθητή</label> <p class="form-control" id = "studentsurname" style="border:1px solid #eceeef;"> {{StudentDetails$.studentsurname}} </p></div>
                      <div><label for="fatherfirstname">Όνομα Πατέρα</label> <p class="form-control" id = "fatherfirstname" style="border:1px solid #eceeef;"> {{StudentDetails$.fatherfirstname}} </p></div>
                      <div><label for="fathersurname">Επώνυμο Πατέρα</label> <p class="form-control" id = "fathersurname" style="border:1px solid #eceeef;"> {{StudentDetails$.fathersurname}} </p></div>
                      <div><label for="motherfirstname">Όνομα Μητέρας</label> <p class="form-control" id = "motherfirstname" style="border:1px solid #eceeef;"> {{StudentDetails$.motherfirstname}} </p></div>
                      <div><label for="mothersurname">Επώνυμο Μητέρας</label> <p class="form-control" id = "mothersurname" style="border:1px solid #eceeef;"> {{StudentDetails$.mothersurname}} </p></div>                
                      <div><label for="birthdate">Ημερομηνία Γέννησης</label> <p class="form-control" id = "birthdate" style="border:1px solid #eceeef;"> {{StudentDetails$.birthdate}} </p></div>                


                      <table>
                              <tr>
                                  <td>
                                      <div class="form-group">
                                          <label for="regionaddress">Διεύθυνση κατοικίας</label><p class="form-control" id = "regionaddress" style="border:1px solid #eceeef;"> {{StudentDetails$.regionaddress}} </p>
                                      </div>
                                  </td>
                                  <td>
                                      <div class="form-group">
                                          <label for="regiontk">TK </label><p class="form-control" id = "regiontk" style="border:1px solid #eceeef;"> {{StudentDetails$.regiontk}} </p>
                                      </div>
                                  </td>
                                  <td>
                                      <div class="form-group">
                                          <label for="regionarea">Πόλη/Περιοχή</label><p class="form-control" id = "regionarea" style="border:1px solid #eceeef;"> {{StudentDetails$.regionarea}} </p>
                                      </div>
                                  </td>
                             </tr>
                      </table>
                      <div><label for="certificatetype">Τύπος απολυτηρίου</label> <p class="form-control" id = "certificatetype" style="border:1px solid #eceeef;"> {{StudentDetails$.certificatetype}} </p></div>                
                      <div><label for="telnum">Τηλέφωνο επικοινωνίας</label> <p class="form-control" id = "telnum" style="border:1px solid #eceeef;"> {{StudentDetails$.telnum}} </p></div>                
                      <div><label for="relationtostudent">Η αίτηση γίνεται από</label> <p class="form-control" id = "relationtostudent" style="border:1px solid #eceeef;"> {{StudentDetails$.relationtostudent}} </p></div>                 
                 </div>
115
<!--             </div>  -->
Open Source Developer's avatar
trans  
Open Source Developer committed
116
             </div>
Open Source Developer's avatar
paging  
Open Source Developer committed
117 118 119 120 121 122 123 124 125 126 127 128 129

          <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
130

Open Source Developer's avatar
paging  
Open Source Developer committed
131 132 133 134 135 136 137 138 139 140 141 142 143 144 145
             <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
146 147 148
   `
})

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

Open Source Developer's avatar
trans  
Open Source Developer committed
151
    public formGroup: FormGroup;
Open Source Developer's avatar
Open Source Developer committed
152 153
    private StudentSelected$: BehaviorSubject<any>;
    private StudentSelectedSub: Subscription;
Open Source Developer's avatar
trans  
Open Source Developer committed
154 155
    private StudentInfo$: BehaviorSubject<any>;
    private StudentInfoSub: Subscription;
Open Source Developer's avatar
paging  
Open Source Developer committed
156 157
    private StudentsSize$: BehaviorSubject<any>;
    private StudentsSizeSub: Subscription;
Open Source Developer's avatar
trans  
Open Source Developer committed
158 159
    private StudentSelectedSpecial$: BehaviorSubject<any>;
    private StudentSelectedSpecialSub: Subscription;
Open Source Developer's avatar
trans  
Open Source Developer committed
160 161
    private SubmitedDetails$: BehaviorSubject<any>;
    private SubmitedDetailsSub: Subscription;
Open Source Developer's avatar
trans  
Open Source Developer committed
162
    private retrievedStudent: BehaviorSubject<boolean>;
Open Source Developer's avatar
trans  
Open Source Developer committed
163 164
    private selectionBClass: BehaviorSubject<boolean>;
    private selectionCClass: BehaviorSubject<boolean>;
165
    private SchoolId = 147;
Open Source Developer's avatar
trans  
Open Source Developer committed
166
    private currentclass: Number;
167
    private saved: Array<number> = new Array();
Open Source Developer's avatar
paging  
Open Source Developer committed
168
    private limitdown = 0; 
Open Source Developer's avatar
trans  
Open Source Developer committed
169
    private limitup=  25;
Open Source Developer's avatar
paging  
Open Source Developer committed
170
    private pageno = 1;
Open Source Developer's avatar
trans  
Open Source Developer committed
171
    private userActive = <number>-1;
Open Source Developer's avatar
trans  
Open Source Developer committed
172
    private type: Number;
173 174 175 176 177 178 179 180 181


    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
182
        this.StudentsSize$ = new BehaviorSubject({});
Open Source Developer's avatar
trans  
Open Source Developer committed
183
        this.SubmitedDetails$ = new BehaviorSubject([{}]);
184 185 186 187 188 189 190
        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
191 192
            maxpage:[{value: '', disabled: true}, []],
            pageno:[{value: '', disabled: true}, []],
193
        });
194

Open Source Developer's avatar
Open Source Developer committed
195 196
    }

197
    ngOnDestroy() {
Open Source Developer's avatar
Open Source Developer committed
198 199
        if (this.StudentSelectedSub)
            this.StudentSelectedSub.unsubscribe();
Open Source Developer's avatar
trans  
Open Source Developer committed
200 201
        if (this.StudentSelectedSpecialSub)
            this.StudentSelectedSpecialSub.unsubscribe();
Open Source Developer's avatar
trans  
Open Source Developer committed
202 203 204
        if (this.selectionBClass)
            this.selectionBClass.unsubscribe();
        if (this.selectionCClass)
205
            this.selectionCClass.unsubscribe();
206
        if (this.retrievedStudent)
Open Source Developer's avatar
Open Source Developer committed
207
            this.retrievedStudent.unsubscribe();
Open Source Developer's avatar
trans  
Open Source Developer committed
208 209 210
        if (this.SubmitedDetailsSub)
            this.SubmitedDetailsSub.unsubscribe();
        
Open Source Developer's avatar
Open Source Developer committed
211
    }
212

Open Source Developer's avatar
Open Source Developer committed
213 214 215 216 217
    ngOnInit() {

    }


218
    verifyclass(txop) {
Open Source Developer's avatar
paging  
Open Source Developer committed
219
        this.pageno = 1;
220 221 222 223
        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
224

225 226 227
        }
        else if (txop.value === "2") {
            this.StudentSelectedSub = this._hds.getSectorPerSchool(this.SchoolId).subscribe(data => {
Open Source Developer's avatar
trans  
Open Source Developer committed
228
                this.selectionBClass.next(true);
Open Source Developer's avatar
trans  
Open Source Developer committed
229
                this.selectionCClass.next(false);
230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252
                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"));
253
            }
254 255 256 257 258 259 260 261 262 263 264 265

            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
266 267
    }

Open Source Developer's avatar
Open Source Developer committed
268

269
    checkbclass(tmop, txop) {
Open Source Developer's avatar
paging  
Open Source Developer committed
270
        this.pageno = 1;
Open Source Developer's avatar
trans  
Open Source Developer committed
271 272
        this.retrievedStudent.next(false);
        var sectorint = +this.formGroup.value.tomeas;
273 274 275 276 277 278 279 280 281 282 283 284
        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
285 286 287
        }
    }

Open Source Developer's avatar
paging  
Open Source Developer committed
288
    findstudent(txop, pageno) {
289

Open Source Developer's avatar
paging  
Open Source Developer committed
290
        var tot_pages: Number;
291 292 293 294 295 296 297 298 299 300
        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;
        }
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
         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); 
                });

        }            
     
317 318
        //            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
319
        this.StudentInfoSub = this._hds.getStudentPerSchool(this.SchoolId, sectorint, this.currentclass, this.limitdown, this.limitup).subscribe(data => {
320 321 322 323 324 325 326 327
            this.StudentInfo$.next(data);
            this.retrievedStudent.next(true);
        },
            error => {
                this.StudentInfo$.next([{}]);
                console.log("Error Getting Students");
            },
            () => console.log("Getting Students"));
328

Open Source Developer's avatar
trans  
Open Source Developer committed
329 330
    }

Open Source Developer's avatar
trans  
Open Source Developer committed
331
    updateCheckedOptions(id, cbvalue) {
Open Source Developer's avatar
trans  
Open Source Developer committed
332

333
        let i = this.saved.length;
Open Source Developer's avatar
trans  
Open Source Developer committed
334
        console.log(cbvalue.value,"aaaaa");
Open Source Developer's avatar
trans  
Open Source Developer committed
335

Open Source Developer's avatar
trans  
Open Source Developer committed
336 337 338 339
        if (cbvalue.value === '1') {
           this.saved[i] = id;
           this.type = 1;
           console.log("ok")
340
        }
Open Source Developer's avatar
trans  
Open Source Developer committed
341
        else if (cbvalue.value === '2') {
342
            this.saved[i] = id;
Open Source Developer's avatar
trans  
Open Source Developer committed
343 344 345 346 347 348 349 350 351 352 353
            this.type = 2;
            //var count = this.saved.length;
            //for (var j = 0; j < count; j++) {
            //    if (this.saved[j] === id) {
            //        this.saved.splice(j, 1);
            //    }
            
           console.log("not confirmed")
        }
        else if (cbvalue.value === '3') {
           
Open Source Developer's avatar
trans  
Open Source Developer committed
354
        }
355
    }
Open Source Developer's avatar
trans  
Open Source Developer committed
356

Open Source Developer's avatar
trans  
Open Source Developer committed
357 358


359
    confirmStudent() {
Open Source Developer's avatar
trans  
Open Source Developer committed
360
        this._hds.saveConfirmStudents(this.saved, this.type);
Open Source Developer's avatar
trans  
Open Source Developer committed
361
        
362
    }
Open Source Developer's avatar
trans  
Open Source Developer committed
363

364
    checkcclass() {
Open Source Developer's avatar
paging  
Open Source Developer committed
365
        this.pageno = 1;
366 367
        this.retrievedStudent.next(false);
    }
Open Source Developer's avatar
trans  
Open Source Developer committed
368

Open Source Developer's avatar
paging  
Open Source Developer committed
369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392
    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)
       }

    }


Open Source Developer's avatar
trans  
Open Source Developer committed
393 394 395 396 397 398 399 400 401 402 403 404 405 406 407

  setActiveUser(ind) 
  {
      ind = +ind;
      console.log(this.userActive,"RA",ind);
      if (ind === this.userActive){
        ind = -1;
      }
      ind--;
      this.userActive = ind+1 ;
      

   }


408
}