|
@@ -2,6 +2,7 @@ import { Injectable } from '@angular/core';
|
|
|
import { DataProvider } from './data-provider';
|
|
|
import { OdooProvider } from './odoo-provider';
|
|
|
import { NetworkProvider } from './network-provider'
|
|
|
+import * as Async from 'async-each';
|
|
|
|
|
|
@Injectable()
|
|
|
export class SyncProvider {
|
|
@@ -9,41 +10,94 @@ export class SyncProvider {
|
|
|
constructor(
|
|
|
public dataProvider: DataProvider,
|
|
|
public odooProvider: OdooProvider
|
|
|
- ) { }
|
|
|
+ ) {
|
|
|
+ console.log(Async);
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
*
|
|
|
*/
|
|
|
doSync(): Promise<any> {
|
|
|
return new Promise((resolve, reject) => {
|
|
|
- // this.getProductsForUpdate().then(p => {
|
|
|
- // console.log(p);
|
|
|
+ // this.odooProvider.get("products").subscribe(data => {
|
|
|
+
|
|
|
+ // data.forEach(item => {
|
|
|
+ // this.dataProvider.save("product", item);
|
|
|
+ // });
|
|
|
+
|
|
|
// resolve();
|
|
|
- // }).catch(e => {
|
|
|
- // console.log(e);
|
|
|
- // reject(e);
|
|
|
+ // }, err => {
|
|
|
+ // reject();
|
|
|
// });
|
|
|
- this.odooProvider.get("products").subscribe(data => {
|
|
|
- console.log(data);
|
|
|
+ Promise.all([
|
|
|
+ this.pushCreatedProducts()
|
|
|
+ ]).then(r => {
|
|
|
+ console.log(r);
|
|
|
resolve();
|
|
|
- }, err => {
|
|
|
- reject();
|
|
|
- });
|
|
|
+ }).catch(e => {
|
|
|
+ console.log(e);
|
|
|
+ reject(e);
|
|
|
+ });
|
|
|
});
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
*
|
|
|
*/
|
|
|
- private getProductsForUpdate(): Promise<any> {
|
|
|
+ private pushCreatedProducts(): any {
|
|
|
+ this.getCreatedProducts().then(p => {
|
|
|
+ return this.odooProvider.post("products", p);
|
|
|
+
|
|
|
+ }).then(p => {
|
|
|
+
|
|
|
+ console.log(p);
|
|
|
+
|
|
|
+ return Promise.resolve();
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ *
|
|
|
+ */
|
|
|
+ private getCreatedProducts(): Promise<any> {
|
|
|
return new Promise((resolve, reject) => {
|
|
|
this.dataProvider.getAll("product").then(r => {
|
|
|
resolve(r.products.filter(item => {
|
|
|
- return item;
|
|
|
+ return item.doc_state === "created";
|
|
|
}));
|
|
|
}).catch(e => {
|
|
|
reject(e);
|
|
|
});
|
|
|
});
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ *
|
|
|
+ */
|
|
|
+ private getUpdatedProducts(): Promise<any> {
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
+ this.dataProvider.getAll("product").then(r => {
|
|
|
+ resolve(r.products.filter(item => {
|
|
|
+ return item.doc_state === "updated" && item.remote_id != 0;
|
|
|
+ }));
|
|
|
+ }).catch(e => {
|
|
|
+ reject(e);
|
|
|
+ });
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ *
|
|
|
+ */
|
|
|
+ private getDeletedProducts(): Promise<any> {
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
+ this.dataProvider.getAll("product").then(r => {
|
|
|
+ resolve(r.products.filter(item => {
|
|
|
+ return item.doc_state === "deleted";
|
|
|
+ }));
|
|
|
+ }).catch(e => {
|
|
|
+ reject(e);
|
|
|
+ });
|
|
|
+ });
|
|
|
+ }
|
|
|
}
|