helper-data-service.ts 11.8 KB
Newer Older
1
import {Http, Headers, RequestOptions} from '@angular/http';
2
3
4
5
import {Injectable} from '@angular/core';
import {Observable} from "rxjs/Observable";
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
13
import { NgRedux, select } from 'ng2-redux';
import { IAppState } from '../store/store';
import { ILoginInfo } from '../store/logininfo/logininfo.types';
14
15
16
17
18

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

@Injectable()
export class HelperDataService {
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

    private authToken: string;
    private loginInfo$: Observable<ILoginInfo>;

    constructor(
        private http: Http,
        private _ngRedux: NgRedux<IAppState>) {
            this.loginInfo$ = this._ngRedux.select(state => {
                if (state.loginInfo.size > 0) {
                    state.loginInfo.reduce(({}, loginInfoToken) => {
                        this.authToken = loginInfoToken.auth_token;
                        return loginInfoToken;
                    }, {});
                }
                return state.loginInfo;
            });

36
    };
37
38

    createAuthorizationHeader(headers: Headers) {
39
        headers.append('Authorization', 'Basic ' + btoa(this.authToken + ':' + this.authToken));
40
41
    }

42
    getCourseFields() {
43
44
45
46

        this.loginInfo$.forEach(loginInfoToken => {
            this.authToken = loginInfoToken.get(0).auth_token;
        });
47
48
49
        let headers = new Headers({
            //"Authorization": "Basic cmVzdHVzZXI6czNjckV0MFAwdWwwJA==", // encoded user:pass
            // "Authorization": "Basic bmthdHNhb3Vub3M6emVtcmFpbWU=",
50

51
52
53
54
            "Content-Type": "application/json",
            // "Content-Type": "text/plain",  // try to skip preflight
            //"X-CSRF-Token": "hVtACDJjFRSyE4bgGJENHbXY0B9yNhF71Fw-cYHSDNY"
            //"X-CSRF-Token": "fj1QtF_Z_p6kE19EdCnN08zoSjVfcT4Up-ciW6I0IG8"
55
56
57
            "X-CSRF-Token": "EHu964c7gN7M399UfHiHHv06x1Tx5cl-P-9ZyMdmGbw",
//            "X-oauth-enabled": "true",
//            "X-Auth-Token": this.authToken
58
        });
59
        this.createAuthorizationHeader(headers);
60
        let options = new RequestOptions({ headers: headers });
61
        return new Promise((resolve, reject) => {
62
            this.http.get(`${AppSettings.API_ENDPOINT}/coursefields/list`, options)
63
64
65
66
67
68
69
70
            .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");
            },
71
            () => console.log("Course Fields Received"));//run this code in all cases); */
72
73
        });
    };
74

75
    getSectorFields() {
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
        this.loginInfo$.forEach(loginInfoToken => {
            this.authToken = loginInfoToken.get(0).auth_token;
        });
        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",
//            "X-oauth-enabled": "true",
//            "X-Auth-Token": this.authToken
        });
        this.createAuthorizationHeader(headers);
        let options = new RequestOptions({ headers: headers });
92
        return new Promise((resolve, reject) => {
93
            this.http.get(`${AppSettings.API_ENDPOINT}/sectorfields/list`, options)
94
95
96
97
98
99
100
101
102
103
104
105
            .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); */
        });
    };

106
    getRegionsWithSchools(classActive,courseActive) {
107
108
109
        this.loginInfo$.forEach(loginInfoToken => {
            this.authToken = loginInfoToken.get(0).auth_token;
        });
110
111
112
113
114
115
116
117
        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",
118
119
//            "X-oauth-enabled": "true",
//            "X-Auth-Token": this.authToken
120
        });
121
        this.createAuthorizationHeader(headers);
122
        let options = new RequestOptions({ headers: headers });
123
        return new Promise((resolve, reject) => {
124
            let getConnectionString = null;
125
126
127

            //if (courseActive === -1)
            if (classActive === 1)
128
              getConnectionString = `${AppSettings.API_ENDPOINT}/regions/list`;
129
130
131
              else if (classActive === 2)
                  getConnectionString = `${AppSettings.API_ENDPOINT}/sectorsperschool/list?sector_id=${courseActive}`;
            else if (classActive === 3)
132
133
              getConnectionString = `${AppSettings.API_ENDPOINT}/coursesperschool/list?course_id=${courseActive}`;

134
            this.http.get(getConnectionString, options)
135
136
137
138
139
140
141
142
143
                .map(response => response.json())
                .subscribe(data => {
                    resolve(this.transformRegionSchoolsSchema(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); */
144
145
146
        });
    };

147
    getSectorsWithCourses() {
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
        this.loginInfo$.forEach(loginInfoToken => {
            this.authToken = loginInfoToken.get(0).auth_token;
        });
        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",
//            "X-oauth-enabled": "true",
//            "X-Auth-Token": this.authToken
        });
        this.createAuthorizationHeader(headers);
        let options = new RequestOptions({ headers: headers });
164
        return new Promise((resolve, reject) => {
165
            this.http.get(`${AppSettings.API_ENDPOINT}/coursesectorfields/list`, options)
166
167
168
169
170
171
172
173
174
175
176
177
            .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); */
        });
    };

178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
    transformRegionSchoolsSchema(regionSchools: any) {
        let rsa = Array<IRegion>();
        let trackRegionId: string;
        let trackIndex: number;

        trackRegionId = "";
        trackIndex = -1;

        let j=0;
        regionSchools.forEach(regionSchool => {
            if (trackRegionId !== regionSchool.region_id) {
                trackIndex++;
                rsa.push(<IRegion>{'region_id': regionSchool.region_id, 'region_name': regionSchool.region_name, 'epals': Array<IRegionSchool>()});
                trackRegionId = regionSchool.region_id;
            }
193
            rsa[trackIndex].epals.push(<IRegionSchool>{'epal_id': regionSchool.epal_id, 'epal_name': regionSchool.epal_name, 'globalIndex': j, 'selected': false, 'order_id': 0});
194
195
196
197
198
            j++;
        });
        return rsa;
    }

199
200
201
202
203
204
205
206
207
208
209
210
    transformSectorCoursesSchema(sectorCourses: any) {
        let rsa = Array<ISector>();
        let trackSectorId: string;
        let trackIndex: number;

        trackSectorId = "";
        trackIndex = -1;

        let j=0;
        sectorCourses.forEach(sectorCourse => {
            if (trackSectorId !== sectorCourse.sector_id) {
                trackIndex++;
211
                rsa.push(<ISector>{'sector_id': sectorCourse.sector_id, 'sector_name': sectorCourse.sector_name, 'sector_selected': false, 'courses': Array<ISectorCourse>()});
212
213
214
215
216
217
218
219
                trackSectorId = sectorCourse.sector_id;
            }
            rsa[trackIndex].courses.push(<ISectorCourse>{'course_id': sectorCourse.course_id, 'course_name': sectorCourse.course_name, 'globalIndex': j, 'selected': false});
            j++;
        });
        return rsa;
    }

Open Source Developer's avatar
Open Source Developer committed
220
221
222
223
224
225
226
227


    getCurrentUser() {
        return new Promise((resolve, reject) => {
            this.http.get(`${AppSettings.API_ENDPOINT}/epal/curuser`)
            .map(response => response.json())
            .subscribe(data => {
                resolve(data);
228
            },
Open Source Developer's avatar
Open Source Developer committed
229
            error => {
230
                console.log("Error HTTP GET Service");
Open Source Developer's avatar
Open Source Developer committed
231
232
233
234
235
236
                reject("Error HTTP GET Service");
            },
            () => console.log("Course Fields Received"));
        });
    };

237
238
239
240
241
242
243
    signOut() {
        this.loginInfo$.forEach(loginInfoToken => {
            this.authToken = loginInfoToken.get(0).auth_token;
        });
        let headers = new Headers({
            //"Authorization": "Basic cmVzdHVzZXI6czNjckV0MFAwdWwwJA==", // encoded user:pass
            // "Authorization": "Basic bmthdHNhb3Vub3M6emVtcmFpbWU=",
Open Source Developer's avatar
Open Source Developer committed
244

245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
            "Content-Type": "application/json",
            "Accept": "*/*",
            "Access-Control-Allow-Credentials": "true",
            // "Content-Type": "text/plain",  // try to skip preflight
            //"X-CSRF-Token": "hVtACDJjFRSyE4bgGJENHbXY0B9yNhF71Fw-cYHSDNY"
            //"X-CSRF-Token": "fj1QtF_Z_p6kE19EdCnN08zoSjVfcT4Up-ciW6I0IG8"
            "X-CSRF-Token": "EoAZ0APpIbbewK5MNzRrCFkvEeZZoGQsBslWFTrZ8bI",
//            "X-oauth-enabled": "true",
//            "X-Auth-Token": this.authToken
        });
        this.createAuthorizationHeader(headers);
        let options = new RequestOptions({ headers: headers, withCredentials: true });
        return new Promise((resolve, reject) => {
            this.http.post(`${AppSettings.API_ENDPOINT}/oauth/logout`, {}, options)
            .map(response => response)
            .subscribe(data => {
                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); */
        });
    }
Open Source Developer's avatar
Open Source Developer committed
270

271
}