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; public priceUpdate: Observable; public totalUpdate: Observable; 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(); } }