/*
 * 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.spa;

import com.arrebol.taxiservicios.beans.TaxiGenericBean;
import com.arrebol.taxiservicios.controller.spa.CabinasController;
import com.arrebol.taxiservicios.model.enums.GenericEnumType;
import com.arrebol.taxiservicios.model.spa.Cabinas;
import java.io.Serializable;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.view.ViewScoped;
import javax.inject.Named;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

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

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

    private CabinasController cabinasController;

    private List<Cabinas> listCabinas;
    private Cabinas selectCabinas;
    private String nombre;
    private String descripcion;
    private String codigo;

    @PostConstruct
    public void init() {
        logger.info("Start  init()");
        try {
            setCabinasController(new CabinasController());
            setListCabinas(getCabinasController().fillCabinasByLocation(getLoggedUser().getLocation()));
        } catch (Exception e) {
            logger.error("init(): ", e);
        }
    }

    public void addCabinas() {
        logger.info("addProducto");
        try {
            setCabinasController(new CabinasController());
            Cabinas cabina = new Cabinas();
            cabina.setNombre(getNombre());
            cabina.setDescripcion(getDescripcion());
            cabina.setCodigo(getCodigo());
            cabina.setEstatusActivo(GenericEnumType.ENABLED);
            cabina.setLocation(getLoggedUser().getLocation());
            getCabinasController().addCabina(cabina, getLoggedUser(), true);
            getListCabinas().add(cabina);
            showMessage(FacesMessage.SEVERITY_INFO, "La cabina agregado", "La cabina se agregó correctamente");
        } catch (Exception e) {
            showMessage(FacesMessage.SEVERITY_ERROR, "Error", "Ocurrió un error al agregar la cabina");
            logger.error("addProducto(): " + e);
        }
    }

    public void updateCabinas() {
        logger.info("updateCabinas");
        try {
            setCabinasController(new CabinasController());
            getSelectCabinas().setNombre(getNombre());
            getSelectCabinas().setDescripcion(getDescripcion());
            getSelectCabinas().setCodigo(getCodigo());
            getCabinasController().addCabina(getSelectCabinas(), getLoggedUser(), false);
            setListCabinas(getCabinasController().fillCabinasByLocation(getLoggedUser().getLocation()));
            clearSelected();
            showMessage(FacesMessage.SEVERITY_INFO, "La cabina actualizado", "La cabina se actualizo correctamente");
        } catch (Exception e) {
            showMessage(FacesMessage.SEVERITY_ERROR, "Error", "Ocurrió un error al agregar la cabina");
            logger.error("updateCabinas(): " + e);
        }
    }

    public void updatedForm() {
        setDescripcion(getSelectCabinas().getDescripcion());
        setNombre(getSelectCabinas().getNombre());
        setCodigo(getSelectCabinas().getCodigo());
        logger.info("updatedForm");
    }

    public void deleteCabinasPredefinido() {
        logger.info("deleteCabinasPredefinido");
        try {
            setCabinasController(new CabinasController());
            getSelectCabinas().setEstatusActivo(GenericEnumType.DISABLED);
            getCabinasController().addCabina(getSelectCabinas(), getLoggedUser(), false);
            getListCabinas().remove(getSelectCabinas());
            clearSelected();
            showMessage(FacesMessage.SEVERITY_INFO, "Cabina eliminada", "la cabina se eliminó correctamente");
        } catch (Exception e) {
            showMessage(FacesMessage.SEVERITY_FATAL, "Error", "Ocurrió un error al eliminar la cabina");
            logger.error("deleteCabinasPredefinido(): " + e);
        }
    }

    public void clearSelected() {
        setSelectCabinas(null);
        setNombre(null);
        setDescripcion(null);
        setCodigo(null);
    }

    public List<Cabinas> getListCabinas() {
        return listCabinas;
    }

    public void setListCabinas(List<Cabinas> listCabinas) {
        this.listCabinas = listCabinas;
    }

    public Cabinas getSelectCabinas() {
        return selectCabinas;
    }

    public void setSelectCabinas(Cabinas selectCabinas) {
        this.selectCabinas = selectCabinas;
    }

    public CabinasController getCabinasController() {
        return cabinasController;
    }

    public void setCabinasController(CabinasController cabinasController) {
        this.cabinasController = cabinasController;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public String getCodigo() {
        return codigo;
    }

    public void setCodigo(String codigo) {
        this.codigo = codigo;
    }

}
