Browse Source

construyendo sincronizador de datos para el modulo de productos

robert2206 8 years ago
parent
commit
c1a52876fb

+ 1 - 1
src/pages/settings/settings.html

@@ -21,7 +21,7 @@
 
         <ion-item>
             <ion-label>Página por defecto</ion-label>
-            <ion-select [ngModel]="initialPage" (ngModelChange)="changeInitialPage($event)">
+            <ion-select [ngModel]="startPage" (ngModelChange)="changeStartPage($event)">
                 <ion-option value="0">Saludo</ion-option>
                 <ion-option value="1">Gráfico 1</ion-option>
                 <ion-option value="2">Gráfico 2</ion-option>

+ 1 - 1
src/pages/settings/settings.ts

@@ -36,7 +36,7 @@ export class SettingsPage {
     /**
      *
      */
-    changeInitialPage(e: any) {
+    changeStartPage(e: any) {
         this.preferencesProvider.setStartPage(e);
     }
 

+ 46 - 2
src/providers/odoo-provider.ts

@@ -1,16 +1,44 @@
 import { Injectable } from '@angular/core';
 import { Http, Headers, Response, RequestOptions } from '@angular/http';
+import { Observable } from 'rxjs/Observable';
+import { PreferencesProvider } from './preferences-provider';
+
+import 'rxjs/add/operator/map';
+import 'rxjs/add/operator/catch';
+import 'rxjs/add/observable/throw'
 
 @Injectable()
 export class OdooProvider {
 
-    constructor() { }
+    url: string;
+
+    constructor(
+        public http: Http,
+        public preferencesProvider: PreferencesProvider
+    ) {
+        this.url = preferencesProvider.getHost();
+        this.normalizeUrl();
+    }
+
+    /**
+     *
+     */
+    private normalizeUrl(): void {
+        this.url = (this.url.startsWith('http://') ? this.url : 'http://' + this.url) + '/api/';
+    }
     
     /**
      *
      */
-    get(resource: string) {
+    get(resource: string): Observable<Response> {
+        this.url = this.url + resource;
 
+        let headers = new Headers({
+            'Authorization': 'JWT ' + this.preferencesProvider.getToken()
+        });
+        let options = new RequestOptions({ headers: headers });
+
+        return this.http.get(this.url, options).map(this.extractData).catch(this.handleError);
     }
 
     /**
@@ -26,4 +54,20 @@ export class OdooProvider {
     delete(resource: string, data: Array<any>) {
 
     }
+
+    /**
+     *
+     */
+    private extractData(response: Response): any {
+        return response.json();
+    }
+
+    /**
+     *
+     */
+    private handleError(error: any) {
+         let msg = error._body;
+
+        return Observable.throw(msg);
+    }
 }

+ 13 - 7
src/providers/sync-provider.ts

@@ -7,8 +7,8 @@ import { NetworkProvider } from './network-provider'
 export class SyncProvider {
 
     constructor(
-        private dataProvider: DataProvider,
-        private odooProvider: OdooProvider
+        public dataProvider: DataProvider,
+        public odooProvider: OdooProvider
     ) { }
 
     /**
@@ -16,12 +16,18 @@ export class SyncProvider {
      */
     doSync(): Promise<any> {
         return new Promise((resolve, reject) => {
-            this.getProductsForUpdate().then(p => {
-                console.log(p);
+            // this.getProductsForUpdate().then(p => {
+            //     console.log(p);
+            //     resolve();
+            // }).catch(e => {
+            //     console.log(e);
+            //     reject(e);
+            // });
+            this.odooProvider.get("products").subscribe(data => {
+                console.log(data);
                 resolve();
-            }).catch(e => {
-                console.log(e);
-                reject(e);
+            }, err => {
+                reject();
             });
         });
     }

+ 2 - 0
src/providers/token-service.ts

@@ -27,7 +27,9 @@ export class TokenService {
     getToken(): Promise<any> {
         return new Promise((resolve, reject) => {
             this.getTokenFromServer().subscribe(data => {
+                this.preferencesProvider.setHost(this.url);
                 this.preferencesProvider.setToken(data.value);
+
                 resolve(data.value);
             }, err => {
                 reject(err);