/*
 * 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.Datatable;
import com.arrebol.taxiservicios.beans.TaxiGenericBean;
import com.arrebol.taxiservicios.model.core.Person;
import com.arrebol.taxiservicios.model.enums.GenericEnumType;
import com.arrebol.taxiservicios.model.enums.PersonType;
import com.arrebol.taxiservicios.model.view.PersonListView;
import java.io.Serializable;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
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;
import org.primefaces.event.ReorderEvent;
import org.primefaces.event.RowEditEvent;

/**
 *
 * @author Usuario
 */
@Named("clienteBean")
@ViewScoped
public class ClienteBean extends TaxiGenericBean implements Serializable, Datatable {

    //Variables del Bean
    private List<PersonListView> clientesBuscar;
    private String clienteSeleccionado;
    private Date fechaHoy;
    private Person clienteParaConsultar;
   
    final Logger logger = LogManager.getLogger(ClienteBean.class);

    //Inicializacion del proyecto
    @PostConstruct
    public void init() {
        try {
            fechaHoy = new Date();
            loadBundlePropertyFile();
        } catch (Exception e) {
            logger.error("CobranzaBean init", e);
        }
    }
    
    
        public String validarColor(GenericEnumType valorComparar, Date fechaPagar) {
        if (valorComparar.equals(GenericEnumType.ENABLED)) {
            return "datatableRowGreen";
        } else if (fechaPagar.before(fechaHoy)) {
            Calendar fechaPagarCalendar = Calendar.getInstance();
            fechaPagarCalendar.setTime(fechaPagar);
            Calendar fechaHoyCalendar = Calendar.getInstance();
            fechaHoyCalendar.setTime(fechaHoy);
            long diferenciaEnMilisegundos = fechaPagarCalendar.getTimeInMillis() - fechaHoyCalendar.getTimeInMillis();
            long diferenciaEnDias = diferenciaEnMilisegundos / (24 * 60 * 60 * 1000);
            System.out.println("La diferencia entre las fechas es de " + diferenciaEnDias + " días.");
            if(diferenciaEnDias >=5 && diferenciaEnDias <=0){
                return "datatableRowLittle";
            }else if (diferenciaEnDias == 0){
                return "datatableRowLittle";
            }else{
                return "datatableRowEmpty";
            }
        } else if (fechaPagar.after(fechaHoy)){
            Calendar fechaPagarCalendar = Calendar.getInstance();
            fechaPagarCalendar.setTime(fechaPagar);
            Calendar fechaHoyCalendar = Calendar.getInstance();
            fechaHoyCalendar.setTime(fechaHoy);
            long diferenciaEnMilisegundos = fechaPagarCalendar.getTimeInMillis() - fechaHoyCalendar.getTimeInMillis();
            long diferenciaEnDias = diferenciaEnMilisegundos / (24 * 60 * 60 * 1000);
            if(diferenciaEnDias <=5 && diferenciaEnDias >=0){
                return "datatableRowLittle";
            }else if (diferenciaEnDias > 5 ){
                return "";
            }else{
                return "datatableRowEmpty";
            }
        }
        return "";
    }
        
    public String validarColorAbono(GenericEnumType estatus, Date fechaPagar) {
            Date hoy = new Date();

            // Crea un formato para establecer la hora, minutos y segundos en 00:00:00
           SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
           try {
               fechaPagar = sdf.parse(sdf.format(fechaPagar));
               hoy = sdf.parse(sdf.format(hoy));
           } catch (ParseException e) {

           }

           // Calcula la diferencia en días
           long diferenciaEnMillis = fechaPagar.getTime() - hoy.getTime();
           long diferenciaEnDias = diferenciaEnMillis / (24 * 60 * 60 * 1000);
           
           if (estatus==null) {
               return "";           
           }else if (estatus.equals(GenericEnumType.ENABLED)) {
               return "rowGreen";
           } else if (estatus.equals(GenericEnumType.INCOMPLETE)) {
              return "rowYellow";
           } else if (fechaPagar.before(hoy)) {
               return "rowRed";
           }else if(diferenciaEnDias > 0 && diferenciaEnDias<=3){
              return "rowOrange";                         
           }else{
               return "";      
           }
      }

    public List<PersonListView> getClientesBuscar() {
        return clientesBuscar;
    }

    public void setClientesBuscar(List<PersonListView> clienteBuscar) {
        this.clientesBuscar = clienteBuscar;
    }

   

    public String getClienteSeleccionado() {
        return clienteSeleccionado;
    }

    public void setClienteSeleccionado(String clienteSeleccionado) {
        this.clienteSeleccionado = clienteSeleccionado;
    }

    public Person getClienteParaConsultar() {
        return clienteParaConsultar;
    }

    public void setClienteParaConsultar(Person clienteParaConsultar) {
        this.clienteParaConsultar = clienteParaConsultar;
    }

    public Date getFechaHoy() {
        return fechaHoy;
    }

    public void setFechaHoy(Date fechaHoy) {
        this.fechaHoy = fechaHoy;
    }

    @Override
    public void editRow(RowEditEvent event) {
        throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
    }

    @Override
    public void onRowCancel(RowEditEvent event) {
        throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
    }

    @Override
    public void onRowReorder(ReorderEvent event) {
        throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
    }

    @Override
    public void addRow() {
        throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
    }

    @Override
    public void deleteRow() {
        throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
    }

}
