confirmacion-carrito.component.ts 2.49 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: string) {

    if (medioPago == 'electronico') {

      this.verQR = true;
    }

    this.subscribePago = this.productoService.pagar(medioPago)
      .subscribe(() => {

        clearTimeout(this.timerReposo);

        if (medioPago == 'efectivo') {

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

          this.compraConQRfinalizada = true;
        }

        setTimeout(() => {

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

}