import {Injectable} from '@angular/core'; import { ApiProvider } from './api/api.provider'; import 'rxjs/add/operator/map'; import {Observable} from 'rxjs/Observable'; import { Subject } from 'rxjs/Subject'; import { CartsProvider } from './cart/cart.provider'; @Injectable() export class SampleService { testObservable: Observable ; testNumber: number = 0; obTest: Subject; // currentCart:any; // cartObservabol: Subject; // carts: any; constructor( public apiProvider: ApiProvider, public cartprovider: CartsProvider) { // this.testNumber =0; this.testObservable = Observable.create(this.testNumber); this.obTest = > new Subject(); // this.obTest = new Subject(); // this.obTest = new // cart // this.carts = {}; // this.currentCart = this.emptyCart(); // this.cartObservabol = > new Subject(); } ///////// playing with Observable increase() { this.testNumber++; this.obTest.next(this.testNumber); } decrease() { this.testNumber--; this.obTest.next(this.testNumber); } getcurrentNumber() { // return Observable.create(observer => {observer.next(this.testNumber); observer.complete();}) this.obTest.next(this.testNumber); return this.obTest.asObservable(); } initCurrentNumber() { this.obTest.next(this.testNumber); } ///////// ///////// playing with cart // getCurrentCart(){ // //this.currentCart = this.carts[id]; // // if (!this.carts[id]) { //we don't have an active cart stored // // //So, let's create a new one and store it in our cache // // this.carts[id] = this.currentCart; // // } // this.cartObservabol.next(this.currentCart); // return this.cartObservabol.asObservable(); // } // // createCart(){ // this.cartprovider.create().then( // (result) => // { // this.carts[result._id] = result; // // this.setCurrentCart (response.id); // this.cartState(result) // } // ); // // } // // addItem(cartId, product){ // this.cartprovider.addItem(cartId, product).then( // (result) => // { // this.carts[result._id] = result; // this.cartState(result) // } // ); // } // // // load? // retrieve(cartId) { // this.cartprovider.retrieve(cartId).then(result => // { // this.carts[result._id] = result; // // this.setCurrentCart (response.id); // this.cartState(result); // } // ); // } // // cartState(result){ // this.currentCart = result; // // if (!this.carts[this.currentCart._id]) { //we don't have an active cart stored // //So, let's create a new one and store it in our cache // this.carts[this.currentCart._id] = this.currentCart; // } // // this.cartObservabol.next(this.currentCart); // } // // // emptyCart(tenantId?, storeId?) { // return { // '__v': '', // 'userId': '', // 'storeId': storeId, // 'tenantId': tenantId, // '_id': '', // 'created': '', // 'status': '', // 'items': [], // 'numItems': 0, // 'total': 0 // }; // } // // // getDetails (cartId) { // //var cart = carts.$getRecord(cartId); // var cart = {}; // if (!this.carts[cartId]) { //we don't have an active cart stored // //So, let's create a new one and store it in our cache // cart = this.emptyCart(); // this.carts[cartId] = cart; // } // else { // cart = this.carts[cartId]; // } // // @todo: we should ask the APIs to recalculate... // // cart.total = 0; // // angular.forEach(cart.items, function (value, key) { // // cart.total += value.price * value.quantity; // // }); // return cart; // } // // // exists, empty first? // setCurrentCart (id) { // var cart = this.getDetails(id); // this.currentCart = {}; // for (var item in cart) { // if (cart.hasOwnProperty(item)) { // this.currentCart[item] = cart[item]; // } // } // this.cartObservabol.next(this.currentCart); // console.log(this.carts); // } ///////// createCalendar() { let payload = {}; let promise = new Promise( (resolve, reject) => { this.apiProvider.api('POST', '/v1/calendar', payload) // new ApiProvider(http).api('POST', '/v1/cart/', payload) .then((response: any) => { if (response.id) { // carts[response.id] = response; // setCurrentCart (response.id); // deferred.resolve(currentCart); } else { reject('Error cart#1'); } }, (err) => { // @todo: We should check for errors ?!? reject(err); }); }); return promise; } retrieveCalendar(tenantId: string, storeId: string) { let payload: any; // if (uri === ' ') { // uri = '/v1/customer/'; // } if (storeId) { payload = { store_id: storeId }; } let promise: any = new Promise( (resolve, reject) => { if (tenantId) { payload.tenant_id = tenantId; this.apiProvider.api('GET', '/v1/calendars', payload) .then((response) => { resolve(response); }, (response) => { reject(response); }); } else { reject(); } }); return promise; } retrieveCalendarsDetails(tenantId: string, storeId: string, calendarId: string) { let payload: any; // if (uri === ' ') { // uri = '/v1/customer/'; // } if (storeId) { payload = { store_id: storeId }; } let promise: any = new Promise( (resolve, reject) => { if (tenantId) { payload.tenant_id = tenantId; this.apiProvider.api('GET', '/v1/calendar/' + calendarId, payload) .then((response) => { resolve(response); }, (response) => { reject(response); }); } else { reject(); } }); return promise; } createEvent(calendarId: string, eventDetails: any ) { let payload = eventDetails; let promise = new Promise((resolve, reject) => { this.apiProvider.api('POST', '/v1/calendar/' + calendarId, payload) .then((response: any) => { if (response.id) { // carts[response.id] = response; // setCurrentCart (response.id); resolve(response); // ?? } else { reject(); } }, (err) => { // catch error // @todo: We should check for errors ?!? reject(err); }); }); return promise; } } // // addItem(cartId, product) { // // //@todo: checks that minimum requested parameters are in // // // // //@todo: should we check the cart id? // // var cart = getDetails(cartId); // // // // /*jshint camelcase: false */ // // //add mandatory fields taken from the cart // // product.store_id = cart.store_id; // // product.tenant_id = cart.tenant_id; // // /*jshint camelcase: true */ // // // // // uncom below // let payload = product; // var promise = new Promise((resolve, reject) => { // this.apiProvider.api('POST', '/v1/cart/' + cartId, payload) // .then((response) => { // if (response.id) { // // carts[response.id] = response; // // setCurrentCart (response.id); // resolve(response); //?? // } else { // reject(); // } // }, (err) => { //catch error // //@todo: We should check for errors ?!? // reject(err); // }); // }); // // return promise; // } // // create(tenantId, storeId, customerId) { // // //retrieve(cartId, tenantId, storeId) { // retrieve(cartId) { // // var payload = {}; // // var promise = new Promise((resolve, reject) => { // this.apiProvider.api('GET', '/v1/cart/' + cartId, payload) // .then((response) => { // if (response.id) { // // carts[response.id] = response; // // setCurrentCart (response.id); // resolve(response); //?? // } else { // reject(); // } // }, (err) => { //catch error // //@todo: We should check for errors ?!? // reject(err); // }); // }); // // return promise; // // var payload = {}; // // /*jshint camelcase: false */ // // payload = { // // tenant_id: tenantId // // }; // // if (storeId) { // // payload.store_id = storeId; // // } // // /*jshint camelcase: true */ // // // // var deferred = $q.defer(); // // oxlApi.api('GET', '/v4/cart/' + cartId, payload) // // .then(function(response){ // // if (response.id) { // // carts[response.id] = response; // // setCurrentCart (response.id); // // deferred.resolve(currentCart); // // } else { // // deferred.reject(); // // } // // }, function (err) { // // //@todo: We should check for errors ?!? // // deferred.reject(err); // // }); // // return deferred.promise; // // // } // // // testfunction(){ // console.log("i'm here"); // }