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

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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. resolve();
  21. }).catch(e => {
  22. reject(e);
  23. });
  24. });
  25. }
  26. /**
  27. *
  28. */
  29. private storeLines(lines: Array<any>): Promise<any> {
  30. return new Promise((reject, resolve) => {
  31. this.dataProvider.deleteAll('product_attribute_line').then(() => {
  32. return;
  33. }).then(() => {
  34. return this.dataProvider.save('product_attribute_line', lines.map(item => {
  35. item.remote_id = item.id;
  36. item.doc_state = "sync";
  37. delete item.id;
  38. return item;
  39. }));
  40. }).then(() => {
  41. resolve();
  42. }).catch(e => {
  43. reject(e);
  44. });
  45. });
  46. }
  47. }