/*
 * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
 * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
 */
package com.arrebol.taxiservicios.beans.report;

import com.arrebol.taxiservicios.beans.TaxiGenericBean;
import com.arrebol.taxiservicios.controller.spa.CabinasController;
import com.arrebol.taxiservicios.controller.spa.CatalogoProductosController;
import com.arrebol.taxiservicios.controller.spa.VentasBeanController;
import com.arrebol.taxiservicios.model.enums.GenericEnumType;
import com.arrebol.taxiservicios.model.enums.TipoProductoSpa;
import com.arrebol.taxiservicios.model.spa.CatalogoProductos;
import com.arrebol.taxiservicios.model.spa.Pagos;
import com.arrebol.taxiservicios.model.spa.Ventas;
import java.io.Serializable;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.view.ViewScoped;
import javax.inject.Named;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

/**
 *
 * @author Crov
 */
@Named("reportPagosSpa")
@ViewScoped
public class ReportPagosSpa extends TaxiGenericBean implements Serializable {

    private static final long serialVersionUID = -7284027390656669184L;
    final Logger logger = LogManager.getLogger(getClass());

    private CatalogoProductosController catalogoProductosController;
    private VentasBeanController ventasBeanController;

    private List<CatalogoProductos> listCatalogoProductos;
    private String selectProducto;
    private List<Ventas> listVentas;
    private List<Pagos> listPagos;
    private Pagos selectPago;
    private Ventas selectVenta;
    private Double totalCobrado;
    private Date fechaInicial;
    private Date fechaFinal;

    @PostConstruct
    public void init() {
        logger.info("Start  init()");
        try {
            setCatalogoProductosController(new CatalogoProductosController());
            setListCatalogoProductos(getCatalogoProductosController().fillCatalogoProductosByLocationAndTipoProducto(getLoggedUser().getLocation(), TipoProductoSpa.PAQUETE));

            Calendar start = Calendar.getInstance();
            start.setTime(new Date());
            start.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
            Calendar end = Calendar.getInstance();
            end.setTime(new Date());
            end.set(Calendar.DAY_OF_WEEK, 7);
            setFechaInicial(start.getTime());
            setFechaFinal(end.getTime());

        } catch (Exception e) {
            logger.error("init(): ", e);
        }
    }

    public void cargarPagos() {
        logger.info("cargarPagos()");
        try {
            setVentasBeanController(new VentasBeanController());
            Double total = 0.0;            
            setListPagos(getVentasBeanController().fillPagosByEstatusAndFechasAndProducto(GenericEnumType.ENABLED, getFechaInicial(), getFechaFinal(), getSelectProducto()));            
            for (Pagos pago : getListPagos()) {
                total = total + pago.getPago();
            }
            setTotalCobrado(total);
        } catch (Exception e) {
            logger.error("Ocurrió un error al cagar los pagos " + e);
        }
    }

    public CatalogoProductosController getCatalogoProductosController() {
        return catalogoProductosController;
    }

    public void setCatalogoProductosController(CatalogoProductosController catalogoProductosController) {
        this.catalogoProductosController = catalogoProductosController;
    }

    public VentasBeanController getVentasBeanController() {
        return ventasBeanController;
    }

    public void setVentasBeanController(VentasBeanController ventasBeanController) {
        this.ventasBeanController = ventasBeanController;
    }

    public List<CatalogoProductos> getListCatalogoProductos() {
        return listCatalogoProductos;
    }

    public void setListCatalogoProductos(List<CatalogoProductos> listCatalogoProductos) {
        this.listCatalogoProductos = listCatalogoProductos;
    }

    public String getSelectProducto() {
        return selectProducto;
    }

    public void setSelectProducto(String selectProducto) {
        this.selectProducto = selectProducto;
    }

    public List<Ventas> getListVentas() {
        return listVentas;
    }

    public void setListVentas(List<Ventas> listVentas) {
        this.listVentas = listVentas;
    }

    public Ventas getSelectVenta() {
        return selectVenta;
    }

    public void setSelectVenta(Ventas selectVenta) {
        this.selectVenta = selectVenta;
    }

    public Double getTotalCobrado() {
        return totalCobrado;
    }

    public void setTotalCobrado(Double totalCobrado) {
        this.totalCobrado = totalCobrado;
    }

    public Date getFechaInicial() {
        return fechaInicial;
    }

    public void setFechaInicial(Date fechaInicial) {
        this.fechaInicial = fechaInicial;
    }

    public Date getFechaFinal() {
        return fechaFinal;
    }

    public void setFechaFinal(Date fechaFinal) {
        this.fechaFinal = fechaFinal;
    }

    public List<Pagos> getListPagos() {
        return listPagos;
    }

    public void setListPagos(List<Pagos> listPagos) {
        this.listPagos = listPagos;
    }

    public Pagos getSelectPago() {
        return selectPago;
    }

    public void setSelectPago(Pagos selectPago) {
        this.selectPago = selectPago;
    }

}
