/*===========================================================================================================================
* Instituto Costarricense de Acueductos y Alcantarillados. - 2015
* Formularios para Proyectos de Inversión
* Nombre de la Pantalla: wfrUsuario.aspx
*
* Explicación de los contenidos del archivo
*===========================================================================================================================
* HISTORIAL
*
* PERSONA DIA – MES - AÑO DESCRIPCIÓN
* Esteban Gutierrez Rapso 02 – 11 - 2016 Se inicia con el diseño de la pagina
* …………………………………………………………
* …………………………………………………………
*===========================================================================================================================
* Derechos Reservados (C) 2016 AyA.
* ESTE CÓDIGO ES PROVEÍDO “TAL CUAL ES” SIN GARANTÍA ALGUNA
* DE NINGÚN TIPO, SEA IMPLICITA O EXPLICITA.
* NO SE PERMITE SU REPRODUCCIÓN PARCIAL O TOTAL, NI SU COMERCIALIZACIÓN
*===========================================================================================================================
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using AyABL;
using AyABL.AUT.Autenticacion;
using AyADAL;
using AyABL.RCS;
using AyABL.ADM;
using AyABL.SEG;
public partial class webforms_SEG_wfrUsuario : General
{
#region Inicializar Formulario (R0)
override protected void OnInit(EventArgs e) //M0
{
try
{
base.OnInit(e);
InicializarFormulario();
}
catch (Exception ex)
{
MensajeError("Error en R0M0", ex);
}
}
private void InicializarFormulario() //M1
{
try
{
Response.Cache.SetCacheability(HttpCacheability.NoCache);
construirGridView();
construirGridUsuariosAD();
Javascript.CheckAllGridViewItems(Page);
cuwBusquedaList.Buscar += new _controlesusuario_Estandar_cuwBusquedaList.SearchEvent(Buscar);
}
catch (Exception ex)
{
MensajeError("Error en R0M1", ex);
}
}
#endregion
#region Variables (R1)
GridView grvListaDatosTemp, grvUsuariosADTemp;
AutenticacionBL objAutenticacionBL;
DependenciaBL objDependenciaBL;
UsuarioBL objUsuarioBL;
RolBL objRolBL;
ArrayList arlCondicionesBuscador = new ArrayList();
#endregion
#region Eventos Formulario (R2)
protected void Page_Load(object sender, EventArgs e) //M0
{
try
{
if ((!IsPostBack) && (Session.Count > 0))
{
llenarGridView(true);
mostrarFilaTabla(1);
llenarDDLRol();
llenarDDLDependencia();
ComandosxMenu();
}
}
catch (Exception ex)
{
MensajeError("Error en R2M0", ex);
}
}
#endregion
#region Eventos Controles Web (R3)
///
/// Metodo que se utiliza para extraer información del registro de la base de datos y ser mostrado en el acordeon de Controles
///
///
///
protected void grvListaDatos_RowCommand(object sender, GridViewCommandEventArgs e) //M0
{
try
{
if (e.CommandName == "editar")
{
int i = Convert.ToInt32(e.CommandArgument);
GridViewRow selectedRow = grvListaDatos.Rows[i];
int intPkUsuario = Convert.ToInt32(selectedRow.Cells[2].Text);
ViewState["PkUsuario"] = intPkUsuario;
ViewState["MODO"] = "Modifica";
mostrarFilaTabla(3);
mostrarDatos(intPkUsuario);
}
}
catch (Exception ex)
{
MensajeError("Error en R3M0", ex);
}
}
///
/// Pagina el listado de usuarios del sistema
///
///
///
protected void grvListaDatos_PageIndexChanging(object sender, GridViewPageEventArgs e) //M1
{
try
{
grvListaDatos.PageIndex = e.NewPageIndex;
llenarGridView(true);
}
catch (Exception ex)
{
MensajeError("Error en R3M1", ex);
}
}
///
///Activar el botón de Refrescar
///
///
///
protected void btnRefrescar_Click(object sender, System.Web.UI.ImageClickEventArgs e) //M2
{
try
{
llenarGridView(true);
}
catch (Exception ex)
{
MensajeError("Error en R3M2", ex);
}
}
///
/// Extrae información del registro de la base de datos y ser mostrado en el acordeon de Controles
///
///
///
protected void grvUsuariosAD_RowCommand(object sender, GridViewCommandEventArgs e) //M4
{
try
{
if (e.CommandName == "editar")
{
//Extrae la fila seleccionada del GridView
int intIndice = Convert.ToInt32(e.CommandArgument);
GridViewRow selectedRow = grvUsuariosAD.Rows[intIndice];
txtLogin.Text = selectedRow.Cells[1].Text;
txtFuncionario.Text = selectedRow.Cells[2].Text;
txtCedula.Text = selectedRow.Cells[3].Text;
txtCorreo.Text = this.txtLogin.Text + "@aya.go.cr";
mostrarFilaTabla(3);
}
}
catch (Exception ex)
{
MensajeError("Error en R3M4", ex);
}
}
///
/// Metodo que se utiliza para la paginación del Grid en caso de que el usuario desee ver mas registros
///
///
///
protected void grvUsuariosAD_PageIndexChanging(object sender, GridViewPageEventArgs e) //M5
{
try
{
grvUsuariosAD.PageIndex = e.NewPageIndex;
grvUsuariosAD.SelectedIndex = -1;
llenarListaUsuariosAD(txtDatos.Text);
}
catch (Exception ex)
{
MensajeError("Error en R3M5", ex);
}
}
///
/// Activa el evento del botón Buscar (binoculares)
///
///
///
protected void btnBuscar_Click(object sender, System.Web.UI.ImageClickEventArgs e) //M6
{
try
{
llenarGridView(true);
}
catch (Exception ex)
{
MensajeError("Error en R3M6", ex);
}
}
///
/// Activa el evento del boton Nuevo
///
///
///
protected void btnNuevo_Click(object sender, EventArgs e) //M7
{
try
{
ViewState["MODO"] = "Nuevo";
mostrarFilaTabla(2);
//Limpia el grid de Active Directory
grvUsuariosAD.DataBind();
txtDatos.Text = string.Empty;
txtDatos.Focus();
}
catch (Exception ex)
{
MensajeError("Error en R3M7" + MensajesAplicacion.GuardadoFallido.ToString(), ex);
}
}
///
///Activa el metodo del boton Anterior, regresa a la primera fila de la tabla
///
///
///
protected void btnAnterior_Click(object sender, EventArgs e) //M8
{
try
{
llenarGridView(true);
divDatosSuperiores.Visible = true;
divDatosMedios.Visible = false;
divDatosInferiores.Visible = false;
}
catch (Exception ex)
{
MensajeError("Error en R3M8", ex);
}
}
///
/// Buscar usuarios en el Active Directory.
///
///
///
protected void btnBuscarAD_Click(object sender, EventArgs e) //M9
{
try
{
llenarListaUsuariosAD(txtDatos.Text);
}
catch (Exception ex)
{
MensajeError("Error en R3M9" + MensajesAplicacion.BusquedaFallido.ToString(), ex);
}
}
///
/// Activa el evento del boton guardar.1
///
///
///
protected void btnGuardar_Click(object sender, EventArgs e) //M10
{
try
{
if (ddlRol.SelectedValue != "-1")
{
if (GuardarDatos())
{
llenarGridView(true);
mostrarFilaTabla(1);
MensajeInformativo("El registro fue almacenado exitosamente");
}
else
{
MensajeError("El registro no fue almacenado, verifique", null);
}
}
}
catch (Exception ex)
{
MensajeError("Error en R3M1", ex);
}
}
#endregion
#region Metodos Personalizados (R4)
///
/// Oculta las filas que lo requieran
///
///
private void mostrarFilaTabla(int p_intFila) //M0
{
try
{
divDatosSuperiores.Visible = false;
divDatosMedios.Visible = false;
divDatosInferiores.Visible = false;
switch (p_intFila)
{
case 1:
llenarGridView(true);
divDatosSuperiores.Visible = true;
break;
case 2:
llenarGridView(true);
divDatosMedios.Visible = true;
break;
case 3:
llenarGridView(true);
divDatosInferiores.Visible = true;
break;
}
}
catch (Exception ex)
{
MensajeError("Error en R4M0", ex);
}
}
///
/// Metodo que se utiliza para contruir el Grid al inicio de la pantalla
///
private void construirGridView() //M1
{
try
{
grvListaDatosTemp = (GridView)divDatosSuperiores.FindControl("grvListaDatos");
GridViewBoundField bdfPkUsuario = new GridViewBoundField("PKUSUARIO", "PK", true, false, false);
GridViewBoundField bdfLoginUsuario = new GridViewBoundField("LOGINUSUARIO", "LOGIN", true, false, true);
GridViewBoundField bdfNombreCompleto = new GridViewBoundField("NOMBREUSUARIO", "NOMBRE", true, false, true);
GridViewBoundField bdfCedula = new GridViewBoundField("CEDULAUSUARIO", "CEDULA", true, false, true);
GridViewBoundField bdfCorreo = new GridViewBoundField("CORREOUSUARIO", "CORREO", true, false, true);
GridViewBoundField bdfDependencia = new GridViewBoundField("NOMBREDEPENDENCIA", "DEPENDENCIA", true, false, true);
GridViewBoundField bdfRol = new GridViewBoundField("NOMBREROL", "ROL", true, false, true);
GridViewBoundField bdfActivoUsuario = new GridViewBoundField("ACTIVOUSUARIO", "ACTIVO", true, "Si", "No", true);
grvListaDatosTemp.Columns.Add(bdfPkUsuario);
grvListaDatosTemp.Columns.Add(bdfLoginUsuario);
grvListaDatosTemp.Columns.Add(bdfNombreCompleto);
grvListaDatosTemp.Columns.Add(bdfCedula);
grvListaDatosTemp.Columns.Add(bdfCorreo);
grvListaDatosTemp.Columns.Add(bdfDependencia);
grvListaDatosTemp.Columns.Add(bdfRol);
grvListaDatosTemp.Columns.Add(bdfActivoUsuario);
cuwBusquedaList.LlenarCHKLBusqueda(grvListaDatosTemp);
}
catch (Exception ex)
{
MensajeError("Error en R4M1", ex);
}
}
///
/// Metodo que se encarga de agregar el filtro de busqueda seleccionado por el usuario
///
///
private void condicionesBusqueda() //M2
{
objUsuarioBL = new UsuarioBL();
CondicionDAL condicion;
DateTime dteFechaInicio = new DateTime();
DateTime dteFechaFin = new DateTime();
ListItem li = new ListItem();
string p_parametros;
p_parametros = this.cuwBusquedaList.getValorBusqueda();
try
{
if (p_parametros != "")
{
//aqui se construye el listItem con los datos que vienen del control en formato {valor : texto , valor : texto}
char[] separadorTuplas = { ',' };
char[] separadorValores = { ':' };
string[] arrayTupla = p_parametros.Split(separadorTuplas);
for (int i = 0; i <= (arrayTupla.Length - 1); i++)
{
if (arrayTupla[i].ToString() != "")
{
string[] arrayValores = arrayTupla[i].ToString().Split(separadorValores);
li = new ListItem(arrayValores[1], arrayValores[0]);
if (li.Value.Contains("FECHA") && li.Text != string.Empty)
{
if (li.Value.Contains("INICIO"))
{
dteFechaInicio = Convert.ToDateTime(li.Text.ToString());
}
if (li.Value.Contains("FIN"))
{
dteFechaFin = Convert.ToDateTime(li.Text.ToString());
if (dteFechaFin != null || dteFechaInicio != null)
if (dteFechaInicio < dteFechaFin || dteFechaFin == dteFechaInicio)
{
objUsuarioBL = new UsuarioBL();
arlCondicionesBuscador = objUsuarioBL.buscarPorFechas(Tablas.usuario, dteFechaInicio, dteFechaFin, operadorLogico.AND);
}
else
MensajeInformativo("Verifique que la Fecha de Inicio sea menor que la Fecha Final" + "M2");
else
MensajeInformativo("Verifique que los campos de las fechas no estén vacíos" + "M2");
}
}
else
{
if (li.Value.Contains("booleano") && li.Text != "2")
{
condicion = new CondicionDAL();
char[] separadorColumna = { '|' };
string[] strColumna = li.Value.Split(separadorColumna);
condicion.valorIzquierdo = strColumna[1].ToString();
condicion.operadorGeneral = operadorGeneral.EQUAL;
condicion.operadorLogico = operadorLogico.AND;
condicion.valorDerecho = li.Text;
arlCondicionesBuscador.Add(condicion);
}
else
{
if (li.Text != string.Empty && !li.Value.Contains("booleano"))
{
condicion = new CondicionDAL();
condicion.valorIzquierdo = li.Value;
condicion.operadorGeneral = operadorGeneral.LIKEALL;
condicion.operadorLogico = operadorLogico.AND;
condicion.valorDerecho = "%" + li.Text + "%";
arlCondicionesBuscador.Add(condicion);
}
}
}
}
}
}
}
catch (Exception ex)
{
MensajeError("Error en R4M2", ex);
}
}
///
/// Metodo que se utiliza con el buscador de la parte superior de la pantalla, y hace que se despliegue la información de acuerdo
/// a lo solicitado
/// |
private void Buscar() //M3
{
try
{
llenarGridView(true);
}
catch (Exception ex)
{
MensajeError("Error en R4M3", ex);
}
}
///
/// Constrye el Grid de los usuarios en el active
///
private void construirGridUsuariosAD() //M4
{
try
{
grvUsuariosADTemp = (GridView)divDatosMedios.FindControl("grvUsuariosAD");
GridViewBoundField bdfLogin = new GridViewBoundField("Login", "LOGIN", false, false, true);
GridViewBoundField bdfNombre = new GridViewBoundField("Nombre", "NOMBRE", false, false, true);
GridViewBoundField bdfCedula = new GridViewBoundField("Cedula", "CEDULA", false, false, true);
grvUsuariosADTemp.Columns.Add(bdfLogin);
grvUsuariosADTemp.Columns.Add(bdfNombre);
grvUsuariosADTemp.Columns.Add(bdfCedula);
grvUsuariosADTemp.Columns[0].ItemStyle.Width = 25;
}
catch (Exception ex)
{
MensajeError("Error en R4M4", ex);
}
}
///
/// Metodo que se utiliza para el despliegue de los botones
///
private void ComandosxMenu() //M5
{
try
{
DataSet dsComandos = getComandos();
if (dsComandos != null)
{
foreach (DataRow drTemp in dsComandos.Tables[0].Rows)
{
switch (drTemp["NOMBRECOMANDO"].ToString().ToUpper())
{
case "NUEVO":
btnNuevo.Visible = true;
btnBuscarAD.Visible = true;
break;
case "MODIFICA":
//Inicio de variable tipo VIEWSTATE
ViewState["PUEDEMODIFICAR"] = true;
btnGuardar.Visible = true;
break;
}
}
}
}
catch (Exception ex)
{
MensajeError("Error en R4M5", ex);
}
}
#endregion
#region Metodos Controles a Datos (R5)
///
/// guarda y modifica registros en la tabla.
///
///
private bool GuardarDatos() //M0
{
bool blnEjecutado = false;
try
{
string strModo = ViewState["MODO"].ToString();
objUsuarioBL = new UsuarioBL();
objUsuarioBL.objUsuarioEL.Login = txtLogin.Text.Trim();
objUsuarioBL.objUsuarioEL.Nombre = txtFuncionario.Text;
objUsuarioBL.objUsuarioEL.Cedula = txtCedula.Text;
objUsuarioBL.objUsuarioEL.Correo = txtCorreo.Text;
objUsuarioBL.objUsuarioEL.Activo = chkActivo.Checked;
objUsuarioBL.objUsuarioEL.Rol = Int32.Parse(ddlRol.SelectedValue);
objUsuarioBL.objUsuarioEL.Dependencia = Int32.Parse(ddlDependencia.SelectedValue);
if (strModo == "Nuevo")
{
if (objUsuarioBL.getUsuario())
{
if (objUsuarioBL.insertarUsuario())
{
blnEjecutado = true;
GuardarEventoBitacora(
Session["LOGIN"].ToString(),
AccionBitacora.INSERT.ToString(),
MensajesBitacora.IngresarRegistro + ": Se ha ingresado el registro " + txtLogin.Text.Trim() + ", " + txtFuncionario.Text + ", " + txtCedula.Text + ", " + txtCorreo.Text + ", Rol " + ddlRol.SelectedValue + ", Dependencia " + ddlDependencia.SelectedValue,
"frwUsuario.aspx");
}
}
else
MensajeInformativo("Este usuario ya se encuentra resguardado en la Base de Datos");
}
else if (strModo == "Modifica" && bool.Parse(ViewState["PUEDEMODIFICAR"].ToString()) == true)
{
objUsuarioBL.objUsuarioEL.PK = Int32.Parse(ViewState["PkUsuario"].ToString());
if (objUsuarioBL.actualizarUsuario())
{
blnEjecutado = true;
GuardarEventoBitacora(
Session["LOGIN"].ToString(),
AccionBitacora.UPDATE.ToString(),
MensajesBitacora.ModificarRegistro + ": " + txtLogin.Text.Trim() + ", " + txtFuncionario.Text + ", " + txtCedula.Text + ", " + txtCorreo.Text + ", Rol " + ddlRol.SelectedValue + ", Dependencia " + ddlDependencia.SelectedValue,
"frwUsuario.aspx");
}
}
}
catch (Exception ex)
{
blnEjecutado = false;
throw ex;
General.ReportarError(ex, Session["LOGIN"].ToString());
}
return blnEjecutado;
}
#endregion
#region Metodos Datos a Controles (R6)
///
/// Carga el grid principal
///
///
private void llenarGridView(bool p_Llenar) //M0
{
try
{
if (!IsPostBack || p_Llenar)
{
condicionesBusqueda();
objUsuarioBL = new UsuarioBL();
objUsuarioBL.objUsuarioEL.PK = 0;
//Agregar el arlCondicionesFiltroBusqueda
DataSet dsUsuarios = objUsuarioBL.getListaUsuarios(arlCondicionesBuscador);
General.detalleGridView(dsUsuarios, grvListaDatosTemp, lblTotalDatos);
}
}
catch (Exception ex)
{
MensajeError("Error en R6M0", ex);
}
}
///
/// Muestra los datos del registro
///
///
private void mostrarDatos(int p_intPkConsultar) //M1
{
try
{
objUsuarioBL = new UsuarioBL();
objUsuarioBL.objUsuarioEL.PK = p_intPkConsultar;
DataSet dsUsuario = objUsuarioBL.getListaUsuarios(null);
if (dsUsuario.Tables[0].Rows.Count > 0)
{
txtLogin.Text = dsUsuario.Tables[0].Rows[0]["LOGINUSUARIO"].ToString();
txtFuncionario.Text = dsUsuario.Tables[0].Rows[0]["NOMBREUSUARIO"].ToString();
txtCedula.Text = dsUsuario.Tables[0].Rows[0]["CEDULAUSUARIO"].ToString();
txtCorreo.Text = dsUsuario.Tables[0].Rows[0]["CORREOUSUARIO"].ToString();
chkActivo.Checked = bool.Parse(dsUsuario.Tables[0].Rows[0]["ACTIVOUSUARIO"].ToString());
ddlRol.SelectedValue = dsUsuario.Tables[0].Rows[0]["PKROL"].ToString();
ddlDependencia.SelectedValue = dsUsuario.Tables[0].Rows[0]["PKDEPENDENCIA"].ToString();
}
else
{
MensajeInformativo("No se encontró el registro solicitado");
}
}
catch (Exception ex)
{
MensajeError("Error en R6M1", ex);
General.ReportarError(ex, Session["LOGIN"].ToString());
}
}
///
/// Carga el grvUsuariosAD con los datos extraidos del Active Directory
///
private void llenarListaUsuariosAD(string p_strUsuario) //M2
{
try
{
if (txtDatos.Text.Length > 1)
{
objAutenticacionBL = new AutenticacionBL();
DataSet dsUsuariosAD = objAutenticacionBL.BuscarLoginUsuario(p_strUsuario, "", "");
General.detalleGridView(dsUsuariosAD, grvUsuariosADTemp, lblTotalDatos);
}
}
catch (Exception ex)
{
MensajeError("Error en R6M2", ex);
}
}
///
/// Llena el dropdownlist de Roles según la aplicación
///
private void llenarDDLRol() //M3
{
try
{
//Limpia el control
ddlRol.Items.Clear();
//Instancia el objeto
objRolBL = new RolBL();
//Carga la información en un dataset
objRolBL.objRolEL.PK = 0;
if (Session["PKROL"].ToString() == "4")
objRolBL.objRolEL.Padre = 4;
else if (Session["PKROL"].ToString() == "9")
objRolBL.objRolEL.Padre = 9;
else
objRolBL.objRolEL.Padre = 0;
objRolBL.objRolEL.ASTATE = true;
DataSet dsRol = objRolBL.listarRoles();
if (dsRol.Tables[0].Rows.Count != 0)
{
ddlRol.DataSource = dsRol;
ddlRol.DataTextField = dsRol.Tables[0].Columns["NOMBREROL"].ColumnName;
ddlRol.DataValueField = dsRol.Tables[0].Columns["PKROL"].ColumnName;
ddlRol.DataBind();
ddlRol.Items.Insert(0, new ListItem("----- Seleccione un Rol -----", "-1"));
}
}
catch (Exception ex)
{
MensajeError("Error en R6M3", ex);
}
}
///
/// Llena el dropdownlist de Roles según la aplicación
///
private void llenarDDLDependencia() //M4
{
try
{
//Limpia el control
ddlDependencia.Items.Clear();
//Instancia el objeto
objDependenciaBL = new DependenciaBL();
objDependenciaBL.objDependenciaEL.PK = 0;
objDependenciaBL.objDependenciaEL.ASTATE = true;
objDependenciaBL.objDependenciaEL.Padre = 0;
//Carga la información en un dataset
DataSet dsDependencia = objDependenciaBL.getDependencia(null);
if (dsDependencia.Tables[0].Rows.Count != 0)
{
ddlDependencia.DataSource = dsDependencia;
ddlDependencia.DataTextField = dsDependencia.Tables[0].Columns["NOMBREDEPENDENCIA"].ColumnName;
ddlDependencia.DataValueField = dsDependencia.Tables[0].Columns["PKDEPENDENCIA"].ColumnName;
ddlDependencia.DataBind();
ddlDependencia.Items.Insert(0, new ListItem("----- Seleccione una Dependencia -----", "-1"));
}
}
catch (Exception ex)
{
MensajeError("Error en R6M4", ex);
}
}
#endregion
}