TFS_ANTIGUO/AYA.FROPI/FOPI/webforms/SEG/wfrUsuario.aspx.cs
Administrador 50700fd78b Solución FROPI
git-tfs-id: [http://192.168.1.10:8080/tfs/AyA]$/SINORT;C491
2019-05-27 14:46:35 +00:00

819 lines
No EOL
29 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*===========================================================================================================================
* 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)
/// <summary>
/// Metodo que se utiliza para extraer información del registro de la base de datos y ser mostrado en el acordeon de Controles
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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);
}
}
/// <summary>
/// Pagina el listado de usuarios del sistema
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void grvListaDatos_PageIndexChanging(object sender, GridViewPageEventArgs e) //M1
{
try
{
grvListaDatos.PageIndex = e.NewPageIndex;
llenarGridView(true);
}
catch (Exception ex)
{
MensajeError("Error en R3M1", ex);
}
}
///<summary>
///Activar el botón de Refrescar
///</summary>
///<param name="sender"></param>
///<param name="e"></param>
protected void btnRefrescar_Click(object sender, System.Web.UI.ImageClickEventArgs e) //M2
{
try
{
llenarGridView(true);
}
catch (Exception ex)
{
MensajeError("Error en R3M2", ex);
}
}
/// <summary>
/// Extrae información del registro de la base de datos y ser mostrado en el acordeon de Controles
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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);
}
}
/// <summary>
/// Metodo que se utiliza para la paginación del Grid en caso de que el usuario desee ver mas registros
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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);
}
}
/// <summary>
/// Activa el evento del botón Buscar (binoculares)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnBuscar_Click(object sender, System.Web.UI.ImageClickEventArgs e) //M6
{
try
{
llenarGridView(true);
}
catch (Exception ex)
{
MensajeError("Error en R3M6", ex);
}
}
/// <summary>
/// Activa el evento del boton Nuevo
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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);
}
}
///<summary>
///Activa el metodo del boton Anterior, regresa a la primera fila de la tabla
///</summary>
///<param name="sender"></param>
///<param name="e"></param>
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);
}
}
/// <summary>
/// Buscar usuarios en el Active Directory.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnBuscarAD_Click(object sender, EventArgs e) //M9
{
try
{
llenarListaUsuariosAD(txtDatos.Text);
}
catch (Exception ex)
{
MensajeError("Error en R3M9" + MensajesAplicacion.BusquedaFallido.ToString(), ex);
}
}
/// <summary>
/// Activa el evento del boton guardar.1
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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)
/// <summary>
/// Oculta las filas que lo requieran
/// </summary>
/// <param name="p_intFila"></param>
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);
}
}
/// <summary>
/// Metodo que se utiliza para contruir el Grid al inicio de la pantalla
/// </summary>
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);
}
}
/// <summary>
/// Metodo que se encarga de agregar el filtro de busqueda seleccionado por el usuario
/// </summary>
/// <returns></returns>
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);
}
}
/// <summary>
/// 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
/// </summary>|
private void Buscar() //M3
{
try
{
llenarGridView(true);
}
catch (Exception ex)
{
MensajeError("Error en R4M3", ex);
}
}
/// <summary>
/// Constrye el Grid de los usuarios en el active
/// </summary>
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);
}
}
/// <summary>
/// Metodo que se utiliza para el despliegue de los botones
/// </summary>
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)
/// <summary>
/// guarda y modifica registros en la tabla.
/// </summary>
/// <returns></returns>
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)
/// <summary>
/// Carga el grid principal
/// </summary>
/// <param name="p_Llenar"></param>
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);
}
}
/// <summary>
/// Muestra los datos del registro
/// </summary>
/// <param name="p_intPkConsultar"></param>
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());
}
}
/// <summary>
/// Carga el grvUsuariosAD con los datos extraidos del Active Directory
/// </summary>
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);
}
}
/// <summary>
/// Llena el dropdownlist de Roles según la aplicación
/// </summary>
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);
}
}
/// <summary>
/// Llena el dropdownlist de Roles según la aplicación
/// </summary>
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
}