zgo/src/app/order/order.component.ts

125 lines
3.2 KiB
TypeScript

import { Component, OnInit } from '@angular/core';
import { MatDialog, MatDialogConfig} from '@angular/material/dialog';
import { Observable } from 'rxjs';
import { Order } from './order.model';
import { FullnodeService } from '../fullnode.service';
import { UserService } from '../user.service';
import { OrderService } from './order.service';
import { CancelComponent } from '../cancel/cancel.component';
import { CheckoutComponent} from '../checkout/checkout.component';
import { ReceiptQRComponent} from '../receipt-qr/receipt-qr.component';
@Component({
selector: 'app-order',
templateUrl: './order.component.html',
styleUrls: ['./order.component.css']
})
export class OrderComponent implements OnInit{
public order: Order = {
address: '',
session: '',
timestamp: '',
closed: false,
currency: '',
price:0,
total:0,
totalZec: 0,
lines: [
{
qty: 1,
name: '',
cost: 0
}
]
};
public price: number = 1;
public total: number = 0;
public orderUpdate: Observable<Order>;
public priceUpdate: Observable<number>;
public totalUpdate: Observable<number>;
constructor(
public fullnodeService: FullnodeService,
public orderService: OrderService,
private dialog: MatDialog
) {
this.priceUpdate = fullnodeService.priceUpdate;
this.priceUpdate.subscribe((price) => {
this.price = price;
});
this.orderUpdate = orderService.orderUpdate;
this.orderUpdate.subscribe((order) => {
this.order = order;
});
this.totalUpdate = orderService.totalUpdate;
this.totalUpdate.subscribe((total) => {
this.total = total;
});
}
ngOnInit() {
}
cancelOrder() {
const dialogConfig = new MatDialogConfig();
dialogConfig.disableClose = true;
dialogConfig.autoFocus = true;
dialogConfig.data = {title: 'Cancel Order?', msg: 'Are you sure you want to cancel the order?'};
const dialogRef = this.dialog.open(CancelComponent, dialogConfig);
dialogRef.afterClosed().subscribe((val) => {
if (val) {
console.log('Canceling');
this.orderService.cancelOrder(this.order._id!).subscribe((response) => {
this.orderService.getOrder();
});;
} else {
console.log('Returning to page');
}
this.orderService.getOrder();
});
}
checkout() {
var zec = this.total/this.price;
this.order.totalZec = parseFloat(zec.toFixed(6));
const dialogConfig = new MatDialogConfig();
dialogConfig.disableClose = true;
dialogConfig.autoFocus = true;
dialogConfig.data = {
totalZec: this.order.totalZec,
addr: this.order.address,
orderId: this.order._id
};
const dialogRef = this.dialog.open(CheckoutComponent, dialogConfig);
dialogRef.afterClosed().subscribe((val) => {
if (val) {
const dialogConfig2 = new MatDialogConfig();
dialogConfig2.disableClose = true;
dialogConfig2.autoFocus = true;
dialogConfig2.data = {
order: this.order._id
};
console.log('Payment confirmed!');
this.orderService.closeOrder();
const dialogRef2 = this.dialog.open(ReceiptQRComponent, dialogConfig2);
dialogRef2.afterClosed().subscribe( val => {
if (val) {
console.log('Receipt closed.');
}
});
} else {
console.log('Returning to order');
}
});
}
getCurrency(){
return this.order.currency.toUpperCase();
}
}