85 lines
2 KiB
TypeScript
85 lines
2 KiB
TypeScript
|
import { Injectable } from '@angular/core';
|
||
|
import { Subject, BehaviorSubject, Observable } from 'rxjs';
|
||
|
import { HttpClient, HttpParams, HttpHeaders } from '@angular/common/http';
|
||
|
import { Order } from './order/order.model';
|
||
|
|
||
|
@Injectable({
|
||
|
providedIn: 'root'
|
||
|
})
|
||
|
export class ReceiptService {
|
||
|
beUrl = 'http://localhost:3000/';
|
||
|
private dataStore: {order: Order, owner: Owner } = {
|
||
|
owner: {
|
||
|
_id: '',
|
||
|
name: '',
|
||
|
address: '',
|
||
|
currency: 'usd',
|
||
|
tax: false,
|
||
|
taxValue: 0,
|
||
|
vat: false,
|
||
|
vatValue: 0,
|
||
|
first: '',
|
||
|
last: '',
|
||
|
email: '',
|
||
|
street: '',
|
||
|
city: '',
|
||
|
state: '',
|
||
|
postal: '',
|
||
|
phone: '',
|
||
|
paid: false,
|
||
|
website: '',
|
||
|
country: '',
|
||
|
zats: false
|
||
|
},
|
||
|
order: {
|
||
|
address: '',
|
||
|
session: '',
|
||
|
timestamp: '',
|
||
|
closed: false,
|
||
|
currency: '',
|
||
|
price: 0,
|
||
|
total: 0,
|
||
|
totalZec: 0,
|
||
|
lines: [
|
||
|
{
|
||
|
qty: 1,
|
||
|
name: '',
|
||
|
cost:0
|
||
|
}
|
||
|
]
|
||
|
}
|
||
|
};
|
||
|
private _orderUpdated: BehaviorSubject<Order> = new BehaviorSubject(this.dataStore.order);
|
||
|
public readonly orderUpdate: Observable<Order> = this._orderUpdated.asObservable();
|
||
|
public ownerUpdate: Observable<Owner>;
|
||
|
private apiKey = 'Le2adeic8Thah4Aeng4daem6i';
|
||
|
private reqHeaders: HttpHeaders;
|
||
|
|
||
|
constructor(
|
||
|
private http: HttpClient,
|
||
|
public userService: UserService
|
||
|
) {
|
||
|
this.reqHeaders = new HttpHeaders().set('Authorization', this.apiKey);
|
||
|
this.ownerUpdate = userService.ownerUpdate;
|
||
|
this.ownerUpdate.subscribe((owner) => {
|
||
|
this.dataStore.owner = owner;
|
||
|
});
|
||
|
}
|
||
|
|
||
|
getOrderById(id:string) {
|
||
|
const params = new HttpParams().append('id', id);
|
||
|
let obs = this.http.get<{message: string, order: any}>(this.beUrl+'api/order', { headers:this.reqHeaders, params:params, observe: 'response'});
|
||
|
|
||
|
obs.subscribe((OrderDataResponse) => {
|
||
|
if (OrderDataResponse.status == 200) {
|
||
|
this.dataStore.order = OrderDataResponse.body!.order;
|
||
|
this._orderUpdated.next(Object.assign({}, this.dataStore).order);
|
||
|
} else {
|
||
|
console.log('No order found');
|
||
|
}
|
||
|
});
|
||
|
|
||
|
return obs;
|
||
|
}
|
||
|
}
|