confirmacion-carrito.component.ts 3.08 KB
import { Component, OnInit, OnDestroy } from '@angular/core';
import { APP_SETTINGS } 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';
import { BsModalService } from 'ngx-bootstrap';
import { PagoConTarjetaComponent } from '../pago-con-tarjeta/pago-con-tarjeta.component';

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

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

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

  ngOnInit() {

    this.timerReposo = setTimeout(() => {

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

  ngOnDestroy() {

    if (this.subscribePago !== undefined) {
      this.subscribePago.unsubscribe();
    }
    clearTimeout(this.timerReposo);
  }

  volverPreviousPage() {

    if (this.subscribePago !== undefined) {
      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) {

    this.verQR = medioPago === 9 ? true : false;
    let dataPago = {
      medioPago: medioPago,
      pedidoAnombreDe: this.pedidoAnombreDe
    }
    this.subscribePago = this.productoService.pagar(dataPago)
      .subscribe((res: any) => {

        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.error(err);
        alert('Algo salió mal');
      })
  }
  //#endregion

  abrirPagoConTarjeta() {

    this.modalService.show(PagoConTarjetaComponent, {
      class: 'modal-lg',
      ignoreBackdropClick: true,
      initialState: { importeTotal: this.total },
    });
  }
}