confirmacion-carrito.component.ts 2.63 KB
import { Component, OnInit, OnDestroy } from '@angular/core';
import { appSettings } from 'src/etc/AppSettings';
import { Location } from '@angular/common';
import { ProductoService } from 'src/app/services/producto.service';
import { Producto } from 'src/app/wrappers/producto';
import { Router } from '@angular/router';
import { Subscription } from 'rxjs';

@Component({
  selector: 'app-confirmacion-carrito',
  templateUrl: './confirmacion-carrito.component.html',
  styleUrls: ['./confirmacion-carrito.component.scss']
})
export class ConfirmacionCarritoComponent implements OnInit, OnDestroy {

  private productos: Producto[] = [];
  private total: number = 0;
  private apiImagenes: string = appSettings.apiImagenes;
  private timerReposo: any;
  private compraConEfectivofinalizada: boolean = false;
  private compraConQRfinalizada: boolean = false;
  private verQR: boolean = false;
  private subscribePago: Subscription;

  constructor(
    private location: Location,
    private productoService: ProductoService,
    private router: Router
  ) { }

  ngOnInit() {

    this.timerReposo = setTimeout(() => {

      this.router.navigate(['cancelar-compra']);
    }, 90000)
    this.productos = this.productoService.productos;
  }

  ngOnDestroy() {

    this.subscribePago.unsubscribe();
    clearTimeout(this.timerReposo);
  }

  volverPreviousPage() {

    this.subscribePago.unsubscribe();

    if (this.verQR) {
      this.verQR = !this.verQR;
      return;
    }

    this.location.back();
  }

  getTotal() {

    var subTotal = 0;
    this.productos.forEach(producto => {

      subTotal = subTotal + (producto.PreVen * producto.cantidad);
    });
    return this.total = subTotal;
  }

  reiniciarTimer() {

    clearTimeout(this.timerReposo);
    this.timerReposo = setTimeout(() => {

      this.router.navigate(['cancelar-compra']);
    }, 90000)
  }

  //#region METODOS PARA LA FORMA DE PAGO
  pagar(medioPago: number) {

    if (medioPago === 9) {

      this.verQR = true;
    }

    this.productoService.getClienteById(-1)
      .subscribe(cliente => {
        this.subscribePago = this.productoService.pagar(medioPago, cliente)
          .subscribe(() => {

            clearTimeout(this.timerReposo);

            if (medioPago === 1) {

              this.compraConEfectivofinalizada = true;
            } else if (medioPago === 9) {

              this.compraConQRfinalizada = true;
            }

            setTimeout(() => {

              this.router.navigate(['mensaje-final']);
            }, 10000);
          }, err => {
            console.log(err);
            alert('algo salió mal');
          })
      }, console.error)
  }
  //#endregion

}