import { Injectable } from '@angular/core'; import { Store } from './store'; import { ApiProvider } from '../../services/api/api.provider'; import 'rxjs/add/operator/map'; import * as _ from 'lodash'; @Injectable() export class StoreProvider { stores: Store[]; // currentBeacon: Store; constructor(public apiProvider: ApiProvider) { } create(storeParameters: any ) { // TODO REMOVE let payload = storeParameters; let promise = new Promise((resolve, reject) => { this.apiProvider.api('POST', `/v1/store` , payload) .then((response: any) => { if (response.id) { // cast to class? resolve(response); // } else { reject(); } }, (err) => { // catch error // @todo: We should check for errors ?!? reject(err); }); }); return promise; } retrieve(storeId: string) { let payload: any = {}; let promise = new Promise((resolve, reject) => { this.apiProvider.api('GET', `/v1/store/${storeId}`, payload) .then((response: any) => { if (response.id){ console.log(this.stores); resolve(Store.fromJson(response)); }else { reject(); } // }, (err) => { // catch error // // @todo: We should check for errors ?!? // reject(err); //` } }) .catch((err)=> reject(err)); }); return promise; } // this works because on app.module level there is an initial retrievebytenant call retrieveByTenant(tenantId: string) { let payload: any = {}; payload.tenantId = tenantId; let promise = new Promise((resolve, reject) => { if ( _.isUndefined(this.stores) ) { this.apiProvider.api('GET', `/v1/stores`, payload) .then((response: any) => { this.stores = _.map((_.values(response)), Store.fromJson); console.log(this.stores); resolve(this.stores); }, (err) => { // catch error // @todo: We should check for errors ?!? reject(err); }); } else resolve(this.stores); }); return promise; } retrieveByLocation(tenantId: string, coords: any, radius: number ) { let payload: any = {}; payload.tenantId = tenantId; payload.radius = radius; payload.coords = coords; let promise = new Promise((resolve, reject) => { this.apiProvider.api('GET', `/v1/stores`, payload) .then((response: any) => { this.stores = _.map((_.values(response)), Store.fromJson); console.log(this.stores); resolve(this.stores); // ?? }, (err) => { // catch error // @todo: We should check for errors ?!? reject(err); }); }); return promise; } // TestByTennat() { let payload: any = {}; payload.tenantId = '57b540a3d4c62844f361a893'; let promise = new Promise((resolve, reject) => { this.apiProvider.api('GET', `/v1/stores`, payload) .then((response: any) => { this.stores = _.map((_.values(response)), Store.fromJson); console.log(this.stores); resolve(this.stores); }, (err) => { reject(err); }); }); return promise; } TestByLocation(tenantId: string, coords: any, radius: number ) { let payload: any = {}; payload.tenantId = tenantId; payload.radius = radius; payload.coords = coords; let promise = new Promise((resolve, reject) => { this.apiProvider.api('GET', `/v1/stores`, payload) .then((response: any) => { this.stores = _.map((_.values(response)), Store.fromJson); console.log(this.stores); resolve(this.stores); // ?? }, (err) => { // catch error // @todo: We should check for errors ?!? reject(err); }); }); return promise; } }