product-attribute-line-sync-provider.ts 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import { Injectable } from '@angular/core';
  2. import { DataProvider } from '../data-provider';
  3. import { OdooProvider } from '../odoo-provider';
  4. @Injectable()
  5. export class ProductAttributeLineSyncProvider {
  6. constructor(
  7. public dataProvider: DataProvider,
  8. public odooProvider: OdooProvider
  9. ) { }
  10. /**
  11. *
  12. */
  13. doSync(): Promise<any> {
  14. return new Promise((reject, resolve) => {
  15. this.odooProvider.get('product_attribute_line').then(lines => {
  16. return lines;
  17. }).then(lines => {
  18. return this.storeLines(lines);
  19. }).then(() => {
  20. console.log('product_attribute_line: product attribute lines downloaded');
  21. resolve();
  22. }).catch(e => {
  23. reject(e);
  24. });
  25. });
  26. }
  27. /**
  28. *
  29. */
  30. private storeLines(lines: Array<any>): Promise<any> {
  31. return new Promise((reject, resolve) => {
  32. this.dataProvider.deleteAll(DataProvider.DOCS.PRODUCT_ATTRIBUTE_LINE).then(() => {
  33. return;
  34. }).then(() => {
  35. return this.dataProvider.save(DataProvider.DOCS.PRODUCT_ATTRIBUTE_LINE, lines.map(item => {
  36. item.remote_id = item.id;
  37. item.doc_state = "sync";
  38. delete item.id;
  39. return item;
  40. }));
  41. }).then(() => {
  42. resolve();
  43. }).catch(e => {
  44. reject(e);
  45. });
  46. });
  47. }
  48. }