sidebar.component.ts 2.06 KB
import { Component, OnInit } from '@angular/core';
import { Producto } from 'src/app/wrappers/producto';
import { appSettings } from 'src/etc/AppSettings';
import { ProductoService } from 'src/app/services/producto.service';
import { Router } from '@angular/router';

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

  private cantTotal: number = 0;
  private cantMin: number = 1;
  private cantMax: number = 50;
  private total: number = 0;
  private apiUrl: string = appSettings.apiUrl;

  public productosCarrito: Producto[] = [];

  constructor(
    private productoService: ProductoService,
    private router: Router) {
    this.router.routeReuseStrategy.shouldReuseRoute = function () {
      return false;
    }
  }

  ngOnInit() {

    this.productosCarrito = this.productoService.productos;
  }

  getCantidadProductos() {

    var cantTotalAux = 0;
    this.productosCarrito.forEach(producto => {

      cantTotalAux += producto.cantidad;
    });
    this.cantTotal = cantTotalAux;

    return this.cantTotal;
  }

  getTotal() {

    var subTotal = 0;
    for (let i = 0; i < this.productosCarrito.length; i++) {
      subTotal = subTotal + (this.productosCarrito[i].PreVen * this.productosCarrito[i].cantidad);
    }
    return this.total = subTotal;
  }

  aumentarCantidad(producto: Producto) {

    if (producto.cantidad < this.cantMax) {
      producto.cantidad++;
      this.cantTotal++
    }
  }

  restarCantidad(producto: Producto) {

    if (producto.cantidad > this.cantMin) {
      producto.cantidad--;
      this.cantTotal--;
    }
  }

  deleteProducto(producto: Producto, index: number) {

    this.cantTotal -= producto.cantidad;
    this.total -= producto.PreVen * producto.cantidad;
    this.productosCarrito.reverse().splice(index, 1);
    return;
  }

  personalizarPromo(producto: Producto, index) {

    this.productoService.productoAcargar = producto;
    this.deleteProducto(producto, index);
    this.router.navigate(['inicio']);
  }

}