/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.cosmodas.usuarios;

import com.cosmodas.FacadeCosmos.SucursalesFacadeLocal;
import com.cosmodas.FacadeCosmos.WcGruposUsuariosFacadeLocal;
import com.cosmodas.FacadeCosmos.WcUsuariosFacadeLocal;
import com.cosmodas.EntCosmos.Sucursales;
import com.cosmodas.EntCosmos.WcGruposUsuarios;
import com.cosmodas.EntCosmos.WcUsuarios;
import com.cosmodas.emcripte.StringMD;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Formatter;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;

/**
 * @author obper
 */
@Named
@ManagedBean
@javax.faces.view.ViewScoped

public class busuarios implements Serializable {

    @EJB
    WcUsuariosFacadeLocal ufon;
    @EJB
    WcGruposUsuariosFacadeLocal grpfl;
    @EJB
    SucursalesFacadeLocal sfl;

    private List<WcUsuarios> usuarios;
    @Inject
    private WcUsuarios usuarioNuevo, usuarioEdit;
    private List<WcGruposUsuarios> grupos;
    private List<Sucursales> sucursales;
    private String nuevaContrasena, ultimoUsuario;


    public String getUltimoUsuario() {
        return ultimoUsuario;
    }

    public void setUltimoUsuario(String ultimoUsuario) {
        this.ultimoUsuario = ultimoUsuario;
    }

    public List<WcGruposUsuarios> getGrupos() {
        return grupos;
    }

    public void setGrupos(List<WcGruposUsuarios> grupos) {
        this.grupos = grupos;
    }

    public String getNuevaContrasena() {
        return nuevaContrasena;
    }

    public void setNuevaContrasena(String nuevaContrasena) {
        String passMD5 = StringMD.getStringMessageDigest(nuevaContrasena, StringMD.MD5);
        this.nuevaContrasena = passMD5;
    }

    public List<WcUsuarios> getUsuarios() {
        return usuarios;
    }

    public void setUsuarios(List<WcUsuarios> usuarios) {
        this.usuarios = usuarios;
    }

    public WcUsuarios getUsuarioNuevo() {
        return usuarioNuevo;
    }

    public void setUsuarioNuevo(WcUsuarios usuarioNuevo) {
        this.usuarioNuevo = usuarioNuevo;
    }

    public WcUsuarios getUsuarioEdit() {
        return usuarioEdit;
    }

    public void setUsuarioEdit(WcUsuarios usuarioEdit) {
        this.usuarioEdit = usuarioEdit;
    }

    public List<Sucursales> getSucursales() {
        return sucursales;
    }

    public void setSucursales(List<Sucursales> sucursales) {
        this.sucursales = sucursales;
    }


    public void guardarUsuario(WcUsuarios user) {

        Integer nuevoId = 0;
        nuevoId = Integer.parseInt(ufon.maxUser()) + 1;
        Formatter fmt = new Formatter();
        String idNuevoUsuario = fmt.format("%03d", nuevoId).toString();

        user.setUsuarioCodigo(idNuevoUsuario);
        user.setContrasenia(StringMD.getStringMessageDigest(nuevaContrasena, StringMD.MD5));

        ufon.create(user);
        FacesContext.getCurrentInstance().addMessage("Nuevo Usuario", new FacesMessage("Usuario Agregado"));
        this.nuevaContrasena = "";
        this.usuarioNuevo = new WcUsuarios();
    }

    public void cambiarContrasenia(WcUsuarios user) {
        user.setContrasenia(nuevaContrasena);
        ufon.edit(getUsuarioEdit());
        FacesContext.getCurrentInstance().addMessage("Contraseña", new FacesMessage("Contraseña modificada"));
        this.nuevaContrasena = "";
        this.usuarioEdit = new WcUsuarios();
    }

    public void editarUsuario(WcUsuarios user) {
        ufon.edit(user);
        FacesContext.getCurrentInstance().addMessage("Contraseña", new FacesMessage("Contraseña modificada"));
        this.usuarioEdit = new WcUsuarios();
    }

    @PostConstruct
    public void init() {
        usuarios = new ArrayList<>();
        usuarios = ufon.findAll();
        grupos = grpfl.findAll();
        sucursales = sfl.findAll();
    }

    public busuarios() {
    }

}
