popover-sinonimos.component.ts 2.24 KB
import { Component, OnInit, Input, EventEmitter, Output } from '@angular/core';
import { PopoverDirective } from 'ngx-bootstrap';
import { Producto } from 'src/app/wrappers/producto';
import { Sinonimo } from 'src/app/wrappers/sinonimo';
import { ProductoService } from 'src/app/services/producto.service';

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

  //Directiva del popover, para poder cerrarlo desde este componente
  @Input() popover: PopoverDirective;
  @Input() popoverContent: Sinonimo[];
  @Output() productosPersonalizados = new EventEmitter<Producto[]>();
  // sinonimo: Sinonimo;

  private cantidadRestanteSinonimos: number[] = [];

  constructor(private productoService: ProductoService) { }

  ngOnInit() {

    this.popoverContent.forEach(sinonimo => {

      this.cantidadRestanteSinonimos.push(0);

      sinonimo.productos.forEach((producto, index) => {

        if (producto.cantidad) {
          sinonimo.productos.splice(index, 1);
          sinonimo.productos.splice(0, 0, producto);
        } else {
          producto.cantidad = 0;
        }

      })
    })
  }

  continuar() {

    //Si aún quedan articulos que agregar no deja continuar.
    for (let i = 0; i < this.cantidadRestanteSinonimos.length; i++) {

      if (this.cantidadRestanteSinonimos[i] > 0) return;
    }

    var productosAenviar: Producto[] = [];

    this.popoverContent.forEach(sinonimo => {

      sinonimo.productos.forEach(producto => {

        if (producto.cantidad > 0) {
          producto.idSinonimo = sinonimo.ID_SIN;
          productosAenviar.push(producto);
        }
      })

    })

    this.productosPersonalizados.emit(productosAenviar);
    this.popover.hide();
  }

  sumarCantidad(producto: Producto, i: number) {

    if (this.cantidadRestanteSinonimos[i] === 0) return;
    producto.cantidad++;
    this.cantidadRestanteSinonimos[i]--;
  }

  restarCantidad(producto: Producto, i: number) {

    if (this.cantidadRestanteSinonimos[i] === this.popoverContent[i].cantidad) return;
    if (producto.cantidad === 0) return;
    producto.cantidad--;
    this.cantidadRestanteSinonimos[i]++;
  }

}