helper-data-service.ts 39.3 KB
Newer Older
1
import {Http, Headers, RequestOptions} from '@angular/http';
2 3
import {Injectable, OnInit, OnDestroy} from '@angular/core';
import {BehaviorSubject} from "rxjs/Rx";
4 5
import 'rxjs/add/operator/map';
import { ICourseField } from '../store/coursefields/coursefields.types';
6
import { ISectorField } from '../store/sectorfields/sectorfields.types';
7
import { IRegion, IRegions, IRegionSchool } from '../store/regionschools/regionschools.types';
8
import { ISector, ISectors, ISectorCourse } from '../store/sectorcourses/sectorcourses.types';
Open Source Developer's avatar
Open Source Developer committed
9
//import { IClassField } from '../store/classfields/classfields.types';
10
import { AppSettings } from '../app.settings';
11 12
import { NgRedux, select } from 'ng2-redux';
import { IAppState } from '../store/store';
13
import { ILoginInfo, ILoginInfoToken } from '../store/logininfo/logininfo.types';
14
import { LOGININFO_INITIAL_STATE } from '../store/logininfo/logininfo.initial-state';
15
import { SCHOOL_ROLE, STUDENT_ROLE, PDE_ROLE, DIDE_ROLE, MINISTRY_ROLE } from '../constants';
16 17
import { CookieService } from 'ngx-cookie';

18 19 20 21

const HEADER = { headers: new Headers({ 'Content-Type': 'application/json' }) };

@Injectable()
22
export class HelperDataService implements OnInit, OnDestroy {
23 24

    private authToken: string;
25
    private authRole: string;
26 27
    private minedu_userName: string;
    private minedu_userPassword: string;
28
    private loginInfo$: BehaviorSubject<ILoginInfo>;
29 30 31

    constructor(
        private http: Http,
32 33
        private _ngRedux: NgRedux<IAppState>,
        private _cookieService:CookieService) {
34
        this.loginInfo$ = new BehaviorSubject(LOGININFO_INITIAL_STATE);
35

36

37
    };
38

39 40 41 42 43 44
    ngOnInit() {
        this._ngRedux.select(state => {
            if (state.loginInfo.size > 0) {
                state.loginInfo.reduce(({}, loginInfoToken) => {
                    this.authToken = loginInfoToken.auth_token;
                    this.authRole = loginInfoToken.auth_role;
45 46
                    //this.minedu_userName = loginInfoToken.minedu_username;
                    //this.minedu_userPassword = loginInfoToken.minedu_userpassword;
47 48 49
                    console.log("Auth details..");
                    console.log(this.authToken);
                    console.log(this.authRole);
50 51 52 53 54
                    return loginInfoToken;
                }, {});
            }
            return state.loginInfo;
        }).subscribe(this.loginInfo$);
55

56 57 58 59 60
    }

    ngOnDestroy() {
        this.loginInfo$.unsubscribe();
    }
61

62
    createAuthorizationHeader(headers: Headers) {
63
        headers.append('Authorization', 'Basic ' + btoa(this.authToken + ':' + this.authToken));
64 65
    }

66 67 68 69
    createMinistryAuthorizationHeader(headers: Headers, username: string, passwd: string) {
        headers.append('Authorization', 'Basic ' + btoa(username + ':' + passwd));
    }

70
    getEpalUserData() {
71
        this.loginInfo$.getValue().forEach(loginInfoToken => {
72 73
            this.authToken = loginInfoToken.auth_token;
            this.authRole = loginInfoToken.auth_role;
74 75 76 77 78 79 80 81 82 83
        });
        let headers = new Headers({
            "Content-Type": "application/json",
        });
        this.createAuthorizationHeader(headers);
        let options = new RequestOptions({ headers: headers });
        return this.http.get(`${AppSettings.API_ENDPOINT}/epal/userdata`, options)
            .map(response => response.json());
    };

84
    sendVerificationCode(email) {
85
        this.loginInfo$.getValue().forEach(loginInfoToken => {
86 87
            this.authToken = loginInfoToken.auth_token;
            this.authRole = loginInfoToken.auth_role;
88 89
        });
        let headers = new Headers({
90 91 92
            "Content-Type": "application/json",
            //            "Accept": "*/*",
            //            "Access-Control-Allow-Credentials": "true",
93 94
        });
        this.createAuthorizationHeader(headers);
95
        //        let options = new RequestOptions({ headers: headers, withCredentials: true });
96 97
        let options = new RequestOptions({ headers: headers });
        return new Promise((resolve, reject) => {
98 99 100 101 102 103 104 105 106 107
            this.http.post(`${AppSettings.API_ENDPOINT}/epal/user/sendvercode`, { userEmail: email }, options)
                .map(response => response.json())
                .subscribe(data => {
                    resolve(data);
                }, // put the data returned from the server in our variable
                error => {
                    console.log("Error Sending Verification Code"); // in case of failure show this message
                    reject("Error Sending Verification Code");
                },
                () => console.log("Sending Verification Code"));//run this code in all cases); */
108 109 110 111
        });
    }

    verifyVerificationCode(verificationCode) {
112
        this.loginInfo$.getValue().forEach(loginInfoToken => {
113 114
            this.authToken = loginInfoToken.auth_token;
            this.authRole = loginInfoToken.auth_role;
115 116
        });
        let headers = new Headers({
117 118 119
            "Content-Type": "application/json",
            //            "Accept": "*/*",
            //            "Access-Control-Allow-Credentials": "true",
120 121
        });
        this.createAuthorizationHeader(headers);
122
        //        let options = new RequestOptions({ headers: headers, withCredentials: true });
123 124
        let options = new RequestOptions({ headers: headers });
        return new Promise((resolve, reject) => {
125 126 127 128 129 130 131 132 133 134
            this.http.post(`${AppSettings.API_ENDPOINT}/epal/user/verifyvercode`, { verificationCode: verificationCode }, options)
                .map(response => response.json())
                .subscribe(data => {
                    resolve(<any>data);
                }, // put the data returned from the server in our variable
                error => {
                    console.log("Error Verifying Verification Code"); // in case of failure show this message
                    reject("Error Verifying Verification Code");
                },
                () => console.log("Verifying Verification Code"));//run this code in all cases); */
135 136 137
        });
    }

138
    saveProfile(userProfile) {
139
        this.loginInfo$.getValue().forEach(loginInfoToken => {
140 141
            this.authToken = loginInfoToken.auth_token;
            this.authRole = loginInfoToken.auth_role;
142 143
        });
        let headers = new Headers({
144
            "Content-Type": "application/json",
145 146 147 148
        });
        this.createAuthorizationHeader(headers);
        let options = new RequestOptions({ headers: headers });
        return new Promise((resolve, reject) => {
149 150 151 152 153 154 155 156 157 158
            this.http.post(`${AppSettings.API_ENDPOINT}/epal/user/save`, { userProfile: userProfile }, options)
                .map(response => response.json())
                .subscribe(data => {
                    resolve(data);
                },
                error => {
                    console.log("Error Saving Profile");
                    reject("Error Saving Profile");
                },
                () => console.log("Saving Profile"));
159 160 161
        });
    }

162
    getCourseFields() {
163

164
        this.loginInfo$.getValue().forEach(loginInfoToken => {
165 166
            this.authToken = loginInfoToken.auth_token;
            this.authRole = loginInfoToken.auth_role;
167
        });
168 169 170
        let headers = new Headers({
            //"Authorization": "Basic cmVzdHVzZXI6czNjckV0MFAwdWwwJA==", // encoded user:pass
            // "Authorization": "Basic bmthdHNhb3Vub3M6emVtcmFpbWU=",
171

172 173 174 175
            "Content-Type": "application/json",
            // "Content-Type": "text/plain",  // try to skip preflight
            //"X-CSRF-Token": "hVtACDJjFRSyE4bgGJENHbXY0B9yNhF71Fw-cYHSDNY"
            //"X-CSRF-Token": "fj1QtF_Z_p6kE19EdCnN08zoSjVfcT4Up-ciW6I0IG8"
176
            "X-CSRF-Token": "EHu964c7gN7M399UfHiHHv06x1Tx5cl-P-9ZyMdmGbw",
177 178
            //            "X-oauth-enabled": "true",
            //            "X-Auth-Token": this.authToken
179
        });
180
        this.createAuthorizationHeader(headers);
181
        let options = new RequestOptions({ headers: headers });
182
        return new Promise((resolve, reject) => {
183
            this.http.get(`${AppSettings.API_ENDPOINT}/coursefields/list`, options)
184 185 186 187 188 189 190 191 192
                .map(response => <ICourseField[]>response.json())
                .subscribe(data => {
                    resolve(data);
                }, // put the data returned from the server in our variable
                error => {
                    console.log("Error HTTP GET Service"); // in case of failure show this message
                    reject("Error HTTP GET Service");
                },
                () => console.log("Course Fields Received"));//run this code in all cases); */
193 194
        });
    };
195

196
    getSectorFields() {
197
        this.loginInfo$.getValue().forEach(loginInfoToken => {
198 199
            this.authToken = loginInfoToken.auth_token;
            this.authRole = loginInfoToken.auth_role;
200 201 202 203 204 205 206 207 208
        });
        let headers = new Headers({
            //"Authorization": "Basic cmVzdHVzZXI6czNjckV0MFAwdWwwJA==", // encoded user:pass
            // "Authorization": "Basic bmthdHNhb3Vub3M6emVtcmFpbWU=",
            "Content-Type": "application/json",
            // "Content-Type": "text/plain",  // try to skip preflight
            //"X-CSRF-Token": "hVtACDJjFRSyE4bgGJENHbXY0B9yNhF71Fw-cYHSDNY"
            //"X-CSRF-Token": "fj1QtF_Z_p6kE19EdCnN08zoSjVfcT4Up-ciW6I0IG8"
            "X-CSRF-Token": "LU92FaWYfImfZxfldkF5eVnssdHoV7Aa9fg8K1bWYUc",
209 210
            //            "X-oauth-enabled": "true",
            //            "X-Auth-Token": this.authToken
211 212 213
        });
        this.createAuthorizationHeader(headers);
        let options = new RequestOptions({ headers: headers });
214
        return new Promise((resolve, reject) => {
215
            this.http.get(`${AppSettings.API_ENDPOINT}/sectorfields/list`, options)
216 217 218 219 220 221 222 223 224
                .map(response => <ISectorField[]>response.json())
                .subscribe(data => {
                    resolve(data);
                }, // put the data returned from the server in our variable
                error => {
                    console.log("Error HTTP GET Service"); // in case of failure show this message
                    reject("Error HTTP GET Service");
                },
                () => console.log("Sector Fields Received"));//run this code in all cases); */
225 226 227
        });
    };

228
    getRegionsWithSchools(classActive, courseActive) {
229
        this.loginInfo$.getValue().forEach(loginInfoToken => {
230 231
            this.authToken = loginInfoToken.auth_token;
            this.authRole = loginInfoToken.auth_role;
232
        });
233 234 235 236 237 238 239 240
        let headers = new Headers({
            //"Authorization": "Basic cmVzdHVzZXI6czNjckV0MFAwdWwwJA==", // encoded user:pass
            // "Authorization": "Basic bmthdHNhb3Vub3M6emVtcmFpbWU=",
            "Content-Type": "application/json",
            // "Content-Type": "text/plain",  // try to skip preflight
            //"X-CSRF-Token": "hVtACDJjFRSyE4bgGJENHbXY0B9yNhF71Fw-cYHSDNY"
            //"X-CSRF-Token": "fj1QtF_Z_p6kE19EdCnN08zoSjVfcT4Up-ciW6I0IG8"
            "X-CSRF-Token": "LU92FaWYfImfZxfldkF5eVnssdHoV7Aa9fg8K1bWYUc",
241 242
            //            "X-oauth-enabled": "true",
            //            "X-Auth-Token": this.authToken
243
        });
244
        this.createAuthorizationHeader(headers);
245
        let options = new RequestOptions({ headers: headers });
246
        return new Promise((resolve, reject) => {
247
            let getConnectionString = null;
248

249 250 251 252 253 254
            console.log("Class:");
            console.log(classActive);

            console.log("Course:");
            console.log(courseActive);

255
            if (classActive === 1)
256 257 258
                getConnectionString = `${AppSettings.API_ENDPOINT}/regions/list`;
            else if (classActive === 2)
                getConnectionString = `${AppSettings.API_ENDPOINT}/sectorsperschool/list?sector_id=${courseActive}`;
259
            else if (classActive === 3)
260
                getConnectionString = `${AppSettings.API_ENDPOINT}/coursesperschool/list?course_id=${courseActive}`;
261 262 263 264 265
            else if (classActive === 4)
                getConnectionString = `${AppSettings.API_ENDPOINT}/coursesperschool_night/list?course_id=${courseActive}`;

            console.log("Path:");
            console.log(getConnectionString);
266

267
            this.http.get(getConnectionString, options)
268 269 270 271 272
                .map(response => response.json())
                .subscribe(data => {
                    resolve(this.transformRegionSchoolsSchema(data));
                }, // put the data returned from the server in our variable
                error => {
273
                    console.log("Error HTTP GET Service in getRegionsWithSchools method"); // in case of failure show this message
274 275 276
                    reject("Error HTTP GET Service");
                },
                () => console.log("region schools service"));//run this code in all cases); */
277 278 279
        });
    };

280
    getSectorsWithCourses() {
281
        this.loginInfo$.getValue().forEach(loginInfoToken => {
282 283
            this.authToken = loginInfoToken.auth_token;
            this.authRole = loginInfoToken.auth_role;
284 285 286 287 288 289 290 291 292
        });
        let headers = new Headers({
            //"Authorization": "Basic cmVzdHVzZXI6czNjckV0MFAwdWwwJA==", // encoded user:pass
            // "Authorization": "Basic bmthdHNhb3Vub3M6emVtcmFpbWU=",
            "Content-Type": "application/json",
            // "Content-Type": "text/plain",  // try to skip preflight
            //"X-CSRF-Token": "hVtACDJjFRSyE4bgGJENHbXY0B9yNhF71Fw-cYHSDNY"
            //"X-CSRF-Token": "fj1QtF_Z_p6kE19EdCnN08zoSjVfcT4Up-ciW6I0IG8"
            "X-CSRF-Token": "LU92FaWYfImfZxfldkF5eVnssdHoV7Aa9fg8K1bWYUc",
293 294
            //            "X-oauth-enabled": "true",
            //            "X-Auth-Token": this.authToken
295 296 297
        });
        this.createAuthorizationHeader(headers);
        let options = new RequestOptions({ headers: headers });
298
        return new Promise((resolve, reject) => {
299
            this.http.get(`${AppSettings.API_ENDPOINT}/coursesectorfields/list`, options)
300 301 302 303 304 305 306 307 308
                .map(response => response.json())
                .subscribe(data => {
                    resolve(this.transformSectorCoursesSchema(data));
                }, // put the data returned from the server in our variable
                error => {
                    console.log("Error HTTP GET Service"); // in case of failure show this message
                    reject("Error HTTP GET Service");
                },
                () => console.log("region schools service"));//run this code in all cases); */
309 310 311
        });
    };

312 313 314 315 316 317 318 319
    transformRegionSchoolsSchema(regionSchools: any) {
        let rsa = Array<IRegion>();
        let trackRegionId: string;
        let trackIndex: number;

        trackRegionId = "";
        trackIndex = -1;

320
        let j = 0;
321 322 323
        regionSchools.forEach(regionSchool => {
            if (trackRegionId !== regionSchool.region_id) {
                trackIndex++;
324
                rsa.push(<IRegion>{ 'region_id': regionSchool.region_id, 'region_name': regionSchool.region_name, 'epals': Array<IRegionSchool>() });
325 326
                trackRegionId = regionSchool.region_id;
            }
327
            rsa[trackIndex].epals.push(<IRegionSchool>{ 'epal_id': regionSchool.epal_id, 'epal_name': regionSchool.epal_name, 'epal_special_case': regionSchool.epal_special_case, 'globalIndex': j, 'selected': false, 'order_id': 0 });
328 329 330 331 332
            j++;
        });
        return rsa;
    }

333 334 335 336 337 338 339 340
    transformSectorCoursesSchema(sectorCourses: any) {
        let rsa = Array<ISector>();
        let trackSectorId: string;
        let trackIndex: number;

        trackSectorId = "";
        trackIndex = -1;

341
        let j = 0;
342 343 344
        sectorCourses.forEach(sectorCourse => {
            if (trackSectorId !== sectorCourse.sector_id) {
                trackIndex++;
345
                rsa.push(<ISector>{ 'sector_id': sectorCourse.sector_id, 'sector_name': sectorCourse.sector_name, 'sector_selected': false, 'courses': Array<ISectorCourse>() });
346 347
                trackSectorId = sectorCourse.sector_id;
            }
348
            rsa[trackIndex].courses.push(<ISectorCourse>{ 'course_id': sectorCourse.course_id, 'course_name': sectorCourse.course_name, 'globalIndex': j, 'selected': false });
349 350 351 352 353
            j++;
        });
        return rsa;
    }

354
    getCriteria() {
355

356
        this.loginInfo$.getValue().forEach(loginInfoToken => {
357 358
            this.authToken = loginInfoToken.auth_token;
            this.authRole = loginInfoToken.auth_role;
359 360 361 362 363 364 365 366 367
        });
        let headers = new Headers({
            "Content-Type": "application/json",
            "X-CSRF-Token": "LU92FaWYfImfZxfldkF5eVnssdHoV7Aa9fg8K1bWYUc",
        });
        this.createAuthorizationHeader(headers);
        let options = new RequestOptions({ headers: headers });
        return new Promise((resolve, reject) => {
            this.http.get(`${AppSettings.API_ENDPOINT}/criteria/list`, options)
368 369 370 371 372 373 374 375 376 377
                //this.http.get(`${AppSettings.API_ENDPOINT}/criteria/list?category=${category}`, options)
                .map(response => <ISectorField[]>response.json())
                .subscribe(data => {
                    resolve(data);
                }, // put the data returned from the server in our variable
                error => {
                    console.log("Error HTTP GET Service"); // in case of failure show this message
                    reject("Error HTTP GET Service");
                },
                () => console.log("Sector Fields Received"));//run this code in all cases); */
378 379
        });
    };
Open Source Developer's avatar
Open Source Developer committed
380

381
    getCurrentUser(oauthtoken, oauthrole) {
Open Source Developer's avatar
Open Source Developer committed
382 383

        this.authToken = oauthtoken;
384
        this.authRole = oauthrole;
385 386 387

        //console.log("MIPOS");

Open Source Developer's avatar
Open Source Developer committed
388
        let headers = new Headers({
389 390
//             "Authorization": "Basic " + btoa(this.authToken + ':' + this.authToken),
    //        "Authorization": "Basic cmVzdHVzZXI6czNjckV0MFAwdWwwJA==", // encoded user:pass
Open Source Developer's avatar
Open Source Developer committed
391
            // "Authorization": "Basic bmthdHNhb3Vub3M6emVtcmFpbWU=",
392
//            "Authorization": "Basic " + "aGFyaXNwOmhhcmlzcGFzcw==",
Open Source Developer's avatar
Open Source Developer committed
393
            "Content-Type": "application/json",
394
            "Access-Control-Allow-Credentials": "true",
Open Source Developer's avatar
Open Source Developer committed
395 396 397
            // "Content-Type": "text/plain",  // try to skip preflight
            //"X-CSRF-Token": "hVtACDJjFRSyE4bgGJENHbXY0B9yNhF71Fw-cYHSDNY"
            //"X-CSRF-Token": "fj1QtF_Z_p6kE19EdCnN08zoSjVfcT4Up-ciW6I0IG8"
398
        //    "X-CSRF-Token": "LU92FaWYfImfZxfldkF5eVnssdHoV7Aa9fg8K1bWYUc",
399 400
            //            "X-oauth-enabled": "true",
            //            "X-Auth-Token": this.authToken
Open Source Developer's avatar
Open Source Developer committed
401 402 403
        });
        this.createAuthorizationHeader(headers);
        let options = new RequestOptions({ headers: headers });
404
        return new Promise((resolve, reject) => {
Open Source Developer's avatar
Open Source Developer committed
405
            this.http.get(`${AppSettings.API_ENDPOINT}/epal/curuser`, options)
406 407 408 409 410 411 412 413 414
                .map(response => response.json())
                .subscribe(data => {
                    resolve(this.transformUserSchema(data, oauthtoken, oauthrole));
                }, // put the data returned from the server in our variable
                error => {
                    console.log("Error HTTP GET Service"); // in case of failure show this message
                    reject("Error HTTP GET Service");
                },
                () => console.log("UserName Received"));
Open Source Developer's avatar
Open Source Developer committed
415
        });
416
    }
Open Source Developer's avatar
Open Source Developer committed
417

418 419 420 421 422 423
    setMineduCurrentUser(minedu_username, minedu_pwd, role) {
        this.minedu_userName = minedu_username;
        this.minedu_userPassword = minedu_pwd;
        this.authRole = role;
      }

Open Source Developer's avatar
Open Source Developer committed
424

425
    transformUserSchema(userlogin: any, oauthtoken: string, oauthrole: string) {
426
        let rsa = Array<ILoginInfoToken>();
427

428
        rsa.push(<ILoginInfoToken>{ 'auth_token': oauthtoken, 'auth_role': oauthrole, 'cu_name': userlogin.name });
429
        return rsa;
430

431
    }
Open Source Developer's avatar
Open Source Developer committed
432

433
    signOut() {
434
        //loginInfo$ take values only in case getCurrentUser (epal module) has been used ...WHY? TO BE CHECKED..
435
        this.loginInfo$.getValue().forEach(loginInfoToken => {
436 437
            this.authToken = loginInfoToken.auth_token;
            this.authRole = loginInfoToken.auth_role;
438
        });
439

440
        let headers = new Headers({
441
            "Content-Type": "application/json",
442

443
        });
444

445
        if (this.authRole === MINISTRY_ROLE)
446 447 448
          this.createMinistryAuthorizationHeader(headers, this.minedu_userName, this.minedu_userPassword);
        else
          this.createAuthorizationHeader(headers);
449
        let options = new RequestOptions({ headers: headers, withCredentials: true });
450
        let logoutRoute = '/oauth/logout';
451
        if (this.authRole === SCHOOL_ROLE || this.authRole === PDE_ROLE || this.authRole === DIDE_ROLE) {
452
          logoutRoute = '/cas/logout';
453 454 455 456 457 458 459 460 461 462 463 464 465 466 467

          return new Promise((resolve, reject) => {
              this.http.get(`${AppSettings.API_ENDPOINT}${logoutRoute}${AppSettings.API_ENDPOINT_PARAMS}`, options)
                  .map(response => response)
                  .subscribe(data => {
                      this._cookieService.removeAll();
                      resolve(data);
                  }, // put the data returned from the server in our variable
                  error => {
                      console.log("Error Logout"); // in case of failure show this message
                      reject("Error Logout");
                  },
                  () => console.log("Logging out"));//run this code in all cases); */
          });
        }
468
        else if (this.authRole === MINISTRY_ROLE)
469
          logoutRoute = '/ministry/logout';
470

471
        return new Promise((resolve, reject) => {
472
            this.http.post(`${AppSettings.API_ENDPOINT}${logoutRoute}${AppSettings.API_ENDPOINT_PARAMS}`, {}, options)
473 474
                .map(response => response)
                .subscribe(data => {
475
                    this._cookieService.removeAll();
476 477 478 479 480 481 482
                    resolve(data);
                }, // put the data returned from the server in our variable
                error => {
                    console.log("Error Logout"); // in case of failure show this message
                    reject("Error Logout");
                },
                () => console.log("Logging out"));//run this code in all cases); */
483 484
        });
    }
Open Source Developer's avatar
Open Source Developer committed
485 486


Open Source Developer's avatar
Open Source Developer committed
487 488


Open Source Developer's avatar
tranfer  
Open Source Developer committed
489
    getSubmittedPreviw() {
Open Source Developer's avatar
Open Source Developer committed
490

491

492
        this.loginInfo$.getValue().forEach(loginInfoToken => {
493 494
            this.authToken = loginInfoToken.auth_token;
            this.authRole = loginInfoToken.auth_role;
Open Source Developer's avatar
Open Source Developer committed
495 496 497 498 499 500
        });
        let headers = new Headers({
            "Content-Type": "application/json",
        });
        this.createAuthorizationHeader(headers);
        let options = new RequestOptions({ headers: headers });
501
        return this.http.get(`${AppSettings.API_ENDPOINT}/epal/subapplic`, options)
Open Source Developer's avatar
Open Source Developer committed
502
            .map(response => response.json());
Open Source Developer's avatar
Open Source Developer committed
503
    }
Open Source Developer's avatar
Open Source Developer committed
504

Open Source Developer's avatar
tranfer  
Open Source Developer committed
505

506 507 508
    getStudentDetails(headerid) {
        let headerIdNew = headerid.toString();
        this.loginInfo$.getValue().forEach(loginInfoToken => {
509 510
            this.authToken = loginInfoToken.auth_token;
            this.authRole = loginInfoToken.auth_role;
511
        });
Open Source Developer's avatar
Open Source Developer committed
512 513 514 515 516
        let headers = new Headers({
            "Content-Type": "application/json",
        });
        this.createAuthorizationHeader(headers);
        let options = new RequestOptions({ headers: headers });
517
        return this.http.get(`${AppSettings.API_ENDPOINT}/epal/student/` + headerIdNew, options)
Open Source Developer's avatar
Open Source Developer committed
518
            .map(response => response.json());
519
    }
Open Source Developer's avatar
Open Source Developer committed
520 521


522 523 524
    getEpalchosen(headerid) {
        let headerIdNew = headerid.toString();
        this.loginInfo$.getValue().forEach(loginInfoToken => {
525 526
            this.authToken = loginInfoToken.auth_token;
            this.authRole = loginInfoToken.auth_role;
527
        });
Open Source Developer's avatar
Open Source Developer committed
528 529 530 531 532
        let headers = new Headers({
            "Content-Type": "application/json",
        });
        this.createAuthorizationHeader(headers);
        let options = new RequestOptions({ headers: headers });
533
        return this.http.get(`${AppSettings.API_ENDPOINT}/epal/epalchosen/` + headerIdNew, options)
Open Source Developer's avatar
Open Source Developer committed
534
            .map(response => response.json());
535
    }
Open Source Developer's avatar
tranfer  
Open Source Developer committed
536 537


538 539 540
    getSectorPerSchool(SchoolId) {
        let SchoolIdNew = SchoolId.toString();
        this.loginInfo$.getValue().forEach(loginInfoToken => {
541 542
            this.authToken = loginInfoToken.auth_token;
            this.authRole = loginInfoToken.auth_role;
543
        });
Open Source Developer's avatar
transf  
Open Source Developer committed
544 545 546 547 548
        let headers = new Headers({
            "Content-Type": "application/json",
        });
        this.createAuthorizationHeader(headers);
        let options = new RequestOptions({ headers: headers });
549
        return this.http.get(`${AppSettings.API_ENDPOINT}/epal/sectorperSchool/` + SchoolIdNew, options)
Open Source Developer's avatar
transf  
Open Source Developer committed
550
            .map(response => response.json());
551
    }
Open Source Developer's avatar
transf  
Open Source Developer committed
552

553 554 555 556
    getSpecialityPerSchool(SchoolId, SectorId) {
        let SchoolIdNew = SchoolId.toString();
        let SectorIdNew = SectorId.toString();
        this.loginInfo$.getValue().forEach(loginInfoToken => {
557 558
            this.authToken = loginInfoToken.auth_token;
            this.authRole = loginInfoToken.auth_role;
559
        });
Open Source Developer's avatar
trans  
Open Source Developer committed
560 561 562 563 564
        let headers = new Headers({
            "Content-Type": "application/json",
        });
        this.createAuthorizationHeader(headers);
        let options = new RequestOptions({ headers: headers });
565
        return this.http.get(`${AppSettings.API_ENDPOINT}/epal/specialityperSchool/` + SchoolIdNew + '/' + SectorIdNew, options)
Open Source Developer's avatar
trans  
Open Source Developer committed
566
            .map(response => response.json());
567
    }
Open Source Developer's avatar
trans  
Open Source Developer committed
568 569 570



Open Source Developer's avatar
paging  
Open Source Developer committed
571
    getStudentPerSchool(SchoolId, SelectId, classId, limitdown, limitup) {
572 573
        let SchoolIdNew = SchoolId.toString();
        let SelectIdNew = SelectId.toString();
574 575


576
        this.loginInfo$.getValue().forEach(loginInfoToken => {
577 578
            this.authToken = loginInfoToken.auth_token;
            this.authRole = loginInfoToken.auth_role;
579
        });
580

Open Source Developer's avatar
trans  
Open Source Developer committed
581 582 583 584 585
        let headers = new Headers({
            "Content-Type": "application/json",
        });
        this.createAuthorizationHeader(headers);
        let options = new RequestOptions({ headers: headers });
Open Source Developer's avatar
paging  
Open Source Developer committed
586
        return this.http.get(`${AppSettings.API_ENDPOINT}/epal/studentperSchool/` + SchoolIdNew + '/' + SelectIdNew + '/' + classId + '/' + limitdown + '/' + limitup, options)
Open Source Developer's avatar
trans  
Open Source Developer committed
587
            .map(response => response.json());
588
    }
Open Source Developer's avatar
trans  
Open Source Developer committed
589

Open Source Developer's avatar
transf  
Open Source Developer committed
590 591


Open Source Developer's avatar
trans  
Open Source Developer committed
592
    saveConfirmStudents(students, type) {
593
        this.loginInfo$.getValue().forEach(loginInfoToken => {
594 595
            this.authToken = loginInfoToken.auth_token;
            this.authRole = loginInfoToken.auth_role;
Open Source Developer's avatar
trans  
Open Source Developer committed
596 597
        });
        let headers = new Headers({
598
            "Content-Type": "application/json",
Open Source Developer's avatar
trans  
Open Source Developer committed
599 600 601 602
        });
        this.createAuthorizationHeader(headers);
        let options = new RequestOptions({ headers: headers });
        return new Promise((resolve, reject) => {
Open Source Developer's avatar
trans  
Open Source Developer committed
603
            this.http.post(`${AppSettings.API_ENDPOINT}/epal/confirmstudent`, { students, type}, options)
604 605 606 607 608 609 610 611 612
                .map(response => response.json())
                .subscribe(data => {
                    resolve(data);
                },
                error => {
                    console.log("Error Saving Profile");
                    reject("Error Saving Profile");
                },
                () => console.log("Saving Profile"));
Open Source Developer's avatar
trans  
Open Source Developer committed
613 614
        });

615
    }
Open Source Developer's avatar
trans  
Open Source Developer committed
616 617


Open Source Developer's avatar
Open Source Developer committed
618

619
    saveCapacity(taxi, tomeas, specialit, capacity, schoolid) {
Open Source Developer's avatar
Open Source Developer committed
620

621
        this.loginInfo$.getValue().forEach(loginInfoToken => {
622 623
            this.authToken = loginInfoToken.auth_token;
            this.authRole = loginInfoToken.auth_role;
Open Source Developer's avatar
Open Source Developer committed
624 625
        });
        let headers = new Headers({
626
            "Content-Type": "application/json",
Open Source Developer's avatar
Open Source Developer committed
627 628 629 630
        });
        this.createAuthorizationHeader(headers);
        let options = new RequestOptions({ headers: headers });
        return new Promise((resolve, reject) => {
631 632 633 634 635 636 637 638 639 640
            this.http.post(`${AppSettings.API_ENDPOINT}/epal/savecapacity/` + taxi + '/' + tomeas + '/' + specialit + '/' + schoolid, { capacity }, options)
                .map(response => response.json())
                .subscribe(data => {
                    resolve(data);
                },
                error => {
                    console.log("Error Saving Capacity");
                    reject("Error Saving Capacity");
                },
                () => console.log("Saving Capacity"));
Open Source Developer's avatar
Open Source Developer committed
641 642
        });

643
    }
Open Source Developer's avatar
Open Source Developer committed
644

645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669
    sendMinisrtyCredentials(username, userpassword) {

        let headers = new Headers({
            "Content-Type": "application/json",
            //"Accept": "*/*",
            //"Access-Control-Allow-Credentials": "true",
            //"X-CSRF-Token": "..."
            //"Authorization": "Basic " + btoa("..."),
        });
        this.createMinistryAuthorizationHeader(headers, username, userpassword);
        let options = new RequestOptions({ headers: headers });
        return new Promise((resolve, reject) => {
            this.http.post(`${AppSettings.API_ENDPOINT}/ministry/login`,  {username: username, userpassword: userpassword}, options)
                .map(response => response.json())
                .subscribe(data => {
                    resolve(data);
                },
                error => {
                    reject("Error Sending Ministry Credentials");
                },
                () => console.log(""));
        });

    }

670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695
    makeDistribution(username, userpassword) {

        let headers = new Headers({
            "Content-Type": "application/json",
        });

        this.createMinistryAuthorizationHeader(headers, username, userpassword );
        let options = new RequestOptions({ headers: headers });

        //return this.http.get(`${AppSettings.API_ENDPOINT}/epal/distribution/` , options)
        //    .map(response => response.json());

        return new Promise((resolve, reject) => {
            this.http.post(`${AppSettings.API_ENDPOINT}/epal/distribution`, {username: username, userpassword: userpassword}, options)
                .map(response => response.json())
                .subscribe(data => {
                    resolve(data);
                },
                error => {
                    reject("Error POST in makeDistribution");
                },
                () => console.log(""));
        });

    }

696

697
    makeReport(username, userpassword, routepath, regionsel, adminsel, schsel, clsel, secsel, coursel) {
698

699 700
        //console.log("Service..Nikos..");
        //console.log(regionsel);
701

702 703 704 705 706 707 708
        let headers = new Headers({
            "Content-Type": "application/json",
        });

        this.createMinistryAuthorizationHeader(headers, username, userpassword );
        let options = new RequestOptions({ headers: headers });

709 710 711 712 713 714 715 716 717 718 719 720 721
        if (routepath == "/ministry/general-report/") {
            return this.http.get(`${AppSettings.API_ENDPOINT}` + routepath  , options)
                .map(response => response.json());
        }
        else if (routepath == "/ministry/report-completeness/") {
          return this.http.get(`${AppSettings.API_ENDPOINT}` + routepath + regionsel + "/" + adminsel + "/"  + schsel  , options)
                .map(response => response.json());
        }
        else if (routepath == "/ministry/report-all-stat/"){
            return this.http.get(`${AppSettings.API_ENDPOINT}` + routepath + regionsel + "/" + adminsel + "/"  + schsel + "/"  +
                                  clsel + "/"  + secsel + "/"  + coursel , options)
                .map(response => response.json());
          }
722 723 724 725 726 727 728
          else if (routepath == "/ministry/report-no-capacity/"){
              let capacityFilter = 0;
              if (regionsel)
                capacityFilter = 1;
              return this.http.get(`${AppSettings.API_ENDPOINT}` + routepath + capacityFilter, options)
                  .map(response => response.json());
            }
729 730 731

    }

732
    informUnlocatedStudents(username, userpassword, unallocated) {
733 734 735 736 737 738

      let headers = new Headers({
          "Content-Type": "application/json",
      });
      this.createMinistryAuthorizationHeader(headers, username, userpassword );
      let options = new RequestOptions({ headers: headers });
739 740 741 742 743 744
      let route="";
      if (unallocated == true)
        route = "ministry/send-unallocated-massive-mail";
      else
        route = "ministry/send-located-massive-mail";
      return this.http.get(`${AppSettings.API_ENDPOINT}/` + route , options)
745 746 747
          .map(response => response.json());
    }

Open Source Developer's avatar
Open Source Developer committed
748

Open Source Developer's avatar
trans  
Open Source Developer committed
749 750
    getSchoolPerPerfecture(PerfectureId) {
        console.log(PerfectureId,"a");
751 752
        //let PerfectureIdNew = PerfectureId.toString();
        let PerfectureIdNew = PerfectureId;
Open Source Developer's avatar
trans  
Open Source Developer committed
753 754 755 756 757 758 759 760 761 762 763 764 765

        this.loginInfo$.getValue().forEach(loginInfoToken => {
            this.authToken = loginInfoToken.auth_token;
            this.authRole = loginInfoToken.auth_role;
        });
        console.log("authToken=" + this.authToken);
        console.log("authRole=" + this.authRole);

        let headers = new Headers({
            "Content-Type": "application/json",
        });
        this.createAuthorizationHeader(headers);
        let options = new RequestOptions({ headers: headers });
Open Source Developer's avatar
trans  
Open Source Developer committed
766
        return this.http.get(`${AppSettings.API_ENDPOINT}/epal/ScoolperPerf/` + PerfectureIdNew , options)
Open Source Developer's avatar
trans  
Open Source Developer committed
767 768 769
            .map(response => response.json());
    }

Open Source Developer's avatar
trans  
Open Source Developer committed
770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790
    getCoursePerPerfecture(PerfectureId){
        console.log(PerfectureId,"a");
        let PerfectureIdNew = PerfectureId.toString();


        this.loginInfo$.getValue().forEach(loginInfoToken => {
            this.authToken = loginInfoToken.auth_token;
            this.authRole = loginInfoToken.auth_role;
        });
        console.log("authToken=" + this.authToken);
        console.log("authRole=" + this.authRole);

        let headers = new Headers({
            "Content-Type": "application/json",
        });
        this.createAuthorizationHeader(headers);
        let options = new RequestOptions({ headers: headers });
        return this.http.get(`${AppSettings.API_ENDPOINT}/epal/CoursesperSch/` + PerfectureIdNew , options)
            .map(response => response.json());
}

791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854
getRegions(username, userpassword)  {

  let headers = new Headers({
      "Content-Type": "application/json",
  });

  this.createMinistryAuthorizationHeader(headers, username, userpassword );
  let options = new RequestOptions({ headers: headers });

  //return this.http.get(`${AppSettings.API_ENDPOINT}` + routepath , options)
  //    .map(response => response.json());
  return this.http.get(`${AppSettings.API_ENDPOINT}/regionfields/list`  , options)
      .map(response => response.json());

}

getAdminAreas(username, userpassword, regionid)  {

  let headers = new Headers({
      "Content-Type": "application/json",
  });

  this.createMinistryAuthorizationHeader(headers, username, userpassword );
  let options = new RequestOptions({ headers: headers });

  //return this.http.get(`${AppSettings.API_ENDPOINT}` + routepath , options)
  //    .map(response => response.json());

  console.log("Test");
  console.log(`${AppSettings.API_ENDPOINT}/adminfields/list/?region=` + regionid);
  return this.http.get(`${AppSettings.API_ENDPOINT}/adminfields/list/?region=` + regionid  , options)
      .map(response => response.json());
}

getSchoolsPerRegion(username, userpassword, regionid)  {

  let headers = new Headers({
      "Content-Type": "application/json",
  });

  this.createMinistryAuthorizationHeader(headers, username, userpassword );
  let options = new RequestOptions({ headers: headers });

  console.log("Test2");
  console.log(`${AppSettings.API_ENDPOINT}/schoolfields_per_region/list/?region=` + regionid);
  return this.http.get(`${AppSettings.API_ENDPOINT}/schoolfields_per_region/list/?region=` + regionid  , options)
      .map(response => response.json());
}

getSchoolsPerAdminArea(username, userpassword, adminid)  {

  let headers = new Headers({
      "Content-Type": "application/json",
  });

  this.createMinistryAuthorizationHeader(headers, username, userpassword );
  let options = new RequestOptions({ headers: headers });

  console.log("Test3");
  console.log(`${AppSettings.API_ENDPOINT}/schoolfields_per_admin/list/?adminarea=` + adminid);
  return this.http.get(`${AppSettings.API_ENDPOINT}/schoolfields_per_admin/list/?adminarea=` + adminid  , options)
      .map(response => response.json());
}

855 856 857 858 859 860 861 862 863 864 865 866 867 868 869

getUserRegistryNo(username, userpassword)  {

  let headers = new Headers({
      "Content-Type": "application/json",
  });

  this.createMinistryAuthorizationHeader(headers, username, userpassword );
  let options = new RequestOptions({ headers: headers });

  //console.log("Test");
  return this.http.get(`${AppSettings.API_ENDPOINT}/ministry/retrieve-registry-id`  , options)
      .map(response => response.json());
}

870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895
retrieveAdminSettings(username, userpassword)  {

  let headers = new Headers({
      "Content-Type": "application/json",
  });

  this.createMinistryAuthorizationHeader(headers, username, userpassword );
  let options = new RequestOptions({ headers: headers });

  return this.http.get(`${AppSettings.API_ENDPOINT}/ministry/retrieve-settings`  , options)
      .map(response => response.json());
}

storeAdminSettings(username, userpassword, capac, dirview, applogin)  {

  let headers = new Headers({
      "Content-Type": "application/json",
  });

  this.createMinistryAuthorizationHeader(headers, username, userpassword );
  let options = new RequestOptions({ headers: headers });

  return this.http.get(`${AppSettings.API_ENDPOINT}/ministry/store-settings/` + Number(capac) + "/" + Number(dirview) + "/" + Number(applogin)  , options)
      .map(response => response.json());
}

896 897


898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925
getSectors(username, userpassword, classid)  {

  let headers = new Headers({
      "Content-Type": "application/json",
  });

  this.createMinistryAuthorizationHeader(headers, username, userpassword );
  let options = new RequestOptions({ headers: headers });

  console.log("Test");
  console.log(`${AppSettings.API_ENDPOINT}/sectorfields/list`);
  return this.http.get(`${AppSettings.API_ENDPOINT}/sectorfields/list` , options)
      .map(response => response.json());
}

getCourses(username, userpassword, sectorid)  {

  let headers = new Headers({
      "Content-Type": "application/json",
  });

  this.createMinistryAuthorizationHeader(headers, username, userpassword );
  let options = new RequestOptions({ headers: headers });

  return this.http.get(`${AppSettings.API_ENDPOINT}/coursefields/list/?sector_id=` + sectorid , options)
      .map(response => response.json());
}

Open Source Developer's avatar
trans  
Open Source Developer committed
926

Open Source Developer's avatar
Open Source Developer committed
927

Open Source Developer's avatar
trans  
Open Source Developer committed
928 929 930 931 932 933 934 935 936 937 938 939 940 941 942
    getCritiria(headerid, type) {
        let headerIdNew = headerid.toString();
        this.loginInfo$.getValue().forEach(loginInfoToken => {
            this.authToken = loginInfoToken.auth_token;
            this.authRole = loginInfoToken.auth_role;
        });
        let headers = new Headers({
            "Content-Type": "application/json",
        });
        this.createAuthorizationHeader(headers);
        let options = new RequestOptions({ headers: headers });
        return this.http.get(`