TFS_ANTIGUO/AYA.FROPI/FOPI/webforms/ADM/wfrDependencia.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

745 lines
No EOL
26 KiB
C#
Raw Permalink 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. - 2012
* Proyecto: Formularios para Proyectos de Inversión
* Nombre de la Pantalla: frwDependencia.aspx
*
* Explicación de los contenidos del archivo
*===========================================================================================================================
* HISTORIAL
*
* PERSONA DIA MES - AÑO DESCRIPCIÓN
* Oscar Vargas Jimenez 15 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.ADM;
using AyABL.RCS;
using AyADAL;
public partial class webforms_ADM_wfrDependencia : 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();
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;
ArrayList arlCondicionesFiltroBusqueda = new ArrayList();
DependenciaBL objDependenciaBL;
ArrayList arlCondicionesBuscador;
#endregion
#region Eventos Formulario (R2)
protected void Page_Load(object sender, EventArgs e) //M0
{
try
{
if (!IsPostBack)
{
llenarDDLDependencia();
llenarGridView(true);
ComandosxMenu();
mostrarFilaTabla(1);
}
}
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 div 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 intPkDependencia = Convert.ToInt32(selectedRow.Cells[2].Text);
ViewState["PkDependencia"] = intPkDependencia;
ViewState["MODO"] = "Modifica";
mostrarFilaTabla(2);
mostrarDatos(intPkDependencia);
}
}
catch (Exception ex)
{
MensajeError("Error en R3M0", ex);
}
}
/// <summary>
/// Metodo que se utiliza para la paginación del Grid en caso de que el Rol desee ver mas registros
/// </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 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>
/// 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) //M3
{
try
{
llenarGridView(true);
}
catch (Exception ex)
{
MensajeError("Error en R3M3", 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) //M4
{
try
{
ViewState["MODO"] = "Nuevo";
mostrarFilaTabla(2);
limpiarCampos();
//MensajeError("Error en R3M4", null);
}
catch (Exception ex)
{
MensajeError("Error en R3M4", ex);
}
}
/// <summary>
/// Metodo que activa el botón de Eliminar
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnEliminar_Click(object sender, EventArgs e) //M5
{
try
{
// recorro el grid
foreach (GridViewRow row in grvListaDatos.Rows)
{
HtmlInputCheckBox chkTemp = (HtmlInputCheckBox)row.Controls[0].Controls[1];
if (chkTemp != null)
{
// si el registro esta marcado
if (chkTemp.Checked)
{
//Iguala la variable al valor en la celda seleccionada
int intPkEliminar = Convert.ToInt32(row.Cells[2].Text);
string registro = row.Cells[3].Text;
//Ejecuta el eliminar con el valor de la variable
eliminarDatos(intPkEliminar, registro);
}
}
}
llenarGridView(true);
}
catch (Exception ex)
{
MensajeError("Error en R3M5", ex);
}
}
///<summary>
///Activa el metodo del boton Anterior, regresa a mostrar el listado
///</summary>
///<param name="sender"></param>
///<param name="e"></param>
protected void btnAnterior_Click(object sender, EventArgs e) //M6
{
try
{
llenarGridView(true);
divDatosSuperiores.Visible = true;
divDatosInferiores.Visible = false;
}
catch (Exception ex)
{
MensajeError("Error en R3M6", ex);
}
}
/// <summary>
/// Activa el evento del boton guardar.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnGuardar_Click(object sender, EventArgs e) //M7
{
try
{
string strMensaje = string.Empty;
//******Reparar, aqui no van los llenarGridView(true);
if (GuardarDatos())
llenarGridView(true);
else
llenarGridView(true);
mostrarFilaTabla(1);
}
catch (Exception ex)
{
MensajeError("Error en R3M7", ex);
}
}
protected void ddlTipo_SelectedIndexChanged(object sender, EventArgs e) //M8
{
llenarGridView(true);
}
#endregion
#region Metodos Personalizados (R4)
/// <summary>
/// Oculta los divs según la necesidad
/// </summary>
/// <param name="p_intFila"></param>
private void mostrarFilaTabla(int p_intFila) //M0
{
try
{
divDatosSuperiores.Visible = false;
divDatosInferiores.Visible = false;
switch (p_intFila)
{
case 1:
llenarGridView(true);
divDatosSuperiores.Visible = true;
break;
case 2:
llenarGridView(true);
divDatosInferiores.Visible = true;
break;
}
}
catch (Exception ex)
{
MensajeError("Error en R4M0", ex);
}
}
/// <summary>
/// Metodo que se utiliza para construir el Grid al inicio de la pantalla
/// </summary>
private void construirGridView() //M1
{
try
{
//Se Instancia la variable con el control
grvListaDatosTemp = (GridView)divDatosSuperiores.FindControl("grvListaDatos");
//Se crean las columnas del grid
GridViewBoundField bdfPkDependencia = new GridViewBoundField("PKDependencia", "PK", false, false, false);
GridViewBoundField bdfNombreDependencia = new GridViewBoundField("NOMBREDependencia", "Dependencia", true, false, true);
GridViewBoundField bdfCodigoAccesoDependencia = new GridViewBoundField("CODIGOACCESODEPENDENCIA", "CodigoAcceso", false, false, false);
////Asigna las columnas a los campos a la hora de hacer la consulta
grvListaDatosTemp.Columns.Add(bdfPkDependencia);
grvListaDatosTemp.Columns.Add(bdfNombreDependencia);
grvListaDatosTemp.Columns.Add(bdfCodigoAccesoDependencia);
////Le damos estilo a las filas (opcional)
grvListaDatosTemp.Columns[0].ItemStyle.Width = 25;
grvListaDatosTemp.Columns[1].ItemStyle.Width = 25;
grvListaDatosTemp.Columns[2].ItemStyle.Width = 25;
////Carga el buscador con las columnas del grid
cuwBusquedaList.LlenarCHKLBusqueda(grvListaDatosTemp);
}
catch (Exception ex)
{
MensajeError("Error en R4M1", ex);
}
}
/// <summary>
/// Metodo que se utiliza para limpiar los campos en la pantalla
/// </summary>
private void limpiarCampos() //M3
{
try
{
txtNombre.Text = string.Empty;
llenarDDLDependencia();
}
catch (Exception ex)
{
MensajeError("Error en R4M3", 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() //M4
{
try
{
llenarGridView(true);
}
catch (Exception ex)
{
MensajeError("Error en R4M4", ex);
}
}
/// <summary>
/// Metodo que se utiliza para el despliegue de los botones segun el rol del usuario
/// </summary>
private void ComandosxMenu() //M5
{
try
{
//General general = null;
DataSet dsComandos = getComandos();
if (dsComandos != null)
{
foreach (DataRow drTemp in dsComandos.Tables[0].Rows)
{
switch (drTemp["NOMBRECOMANDO"].ToString().ToUpper())
{
case "NUEVO":
btnNuevo.Visible = true;
break;
case "ELIMINAR":
btnEliminar.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);
}
}
private void condicionesBusqueda() //M6
{
objDependenciaBL = new DependenciaBL();
arlCondicionesBuscador = new ArrayList();
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)
{
objDependenciaBL = new DependenciaBL();
arlCondicionesBuscador = objDependenciaBL.buscarPorFechas(Tablas.dependencia, 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 R4M6", ex);
}
}
#endregion
#region Metodos Controles a Datos (R5)
/// <summary>
/// guarda y modifica registros en la tabla.
/// </summary>
/// <returns></returns>
private bool GuardarDatos() //M0
{
bool blnValorRetornado = false; //Se utiliza para verificar si se ejecuto el proceso tanto de guardar como el de eliminar
int intPk = 0;
try
{
string strModo = ViewState["MODO"].ToString();
ViewState["PUEDEMODIFICAR"] = true;
//Igualar los valores de los controles a las propiedades del objeto a utilizar
//Ejemplo
objDependenciaBL = new DependenciaBL();
objDependenciaBL.objDependenciaEL.PK = Int32.Parse(ddlDependencia.SelectedValue.ToString());
objDependenciaBL.objDependenciaEL.Nombre = txtNombre.Text;
objDependenciaBL.objDependenciaEL.Padre = Int32.Parse(ddlDependencia.SelectedValue.ToString());
if (strModo == "Nuevo")
{
//Es necesario enviar la PK de la Dependencia que es padre en la tabla
objDependenciaBL.objDependenciaEL.Padre = Int32.Parse(ddlDependencia.SelectedValue);
//Si es un nuevo registro se llama al metodo respectivo del objeto para hacer la inserción
//***** Para este caso se obtiene el pk al utilizar el metodo del objeto para insertar información *******
//Ejemplo
if (objDependenciaBL.insertarDependencia())
{
blnValorRetornado = true;
GuardarEventoBitacora(
Session["LOGIN"].ToString(), //Usuario
AccionBitacora.INSERT.ToString(), //Accion que se va a ejecutar
MensajesBitacora.IngresarRegistro + ": " + ddlDependencia.SelectedValue.ToString() + ", " + txtNombre.Text, //Mensaje de la bitacora
"wfrDependencia.aspx"
);
}
}
else if (strModo == "Modifica")
{
//Si se va a modificar el registro y si tiene el permiso de modificar
if (Convert.ToBoolean(ViewState["PUEDEMODIFICAR"]) != false)
{
// Para hacer la modificación del registro se debe proporsionar la PK del registro a modificar
//Ejemplo
objDependenciaBL.objDependenciaEL.PK = Convert.ToInt32(ViewState["PkDependencia"]);
if (objDependenciaBL.actualizarDependencia())
{
blnValorRetornado = true;
//Se ingresa a bitacora la transacción
GuardarEventoBitacora(
Session["LOGIN"].ToString(),
AccionBitacora.UPDATE.ToString(),
MensajesBitacora.ModificarRegistro + ": " + ddlDependencia.SelectedValue.ToString() + ", " + txtNombre.Text,
"wfrDependencia.aspx"
);
}
}
}
}
catch (Exception ex)
{
MensajeError("Error en R5M0", ex);
General.ReportarError(ex, Session["LOGIN"].ToString());
}
return blnValorRetornado;
}
/// <summary>
/// Metodo que se utiliza para eliminar registros de la base de datos
/// </summary>
/// <param name="p_intPksAEliminar"></param>
private void eliminarDatos(int p_intPkDependencia, string registroDependencia) //M1
{
try
{
//Para eliminar datos inicialmente se instancia el objeto
//Ejemplo
objDependenciaBL = new DependenciaBL();
//Se asignan los valores a las propiedades el objeto
//Ejemplo
objDependenciaBL.objDependenciaEL.PK = p_intPkDependencia;
if (objDependenciaBL.borradoLogicoDependencia())
{
//Se ingresa a bitacora la transacción
GuardarEventoBitacora(
Session["LOGIN"].ToString(),
AccionBitacora.DELETE.ToString(),
MensajesBitacora.EliminarRegistro + ": " + registroDependencia,
"wfrDependencia.aspx"
);
}
}
catch (Exception ex)
{
MensajeError("Error en R5M1", ex);
General.ReportarError(ex, Session["LOGIN"].ToString());
}
}
#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();
//Se llena el dataset con la información
//Ejemplo
objDependenciaBL = new DependenciaBL();
objDependenciaBL.objDependenciaEL.PK = 0;
objDependenciaBL.objDependenciaEL.Padre = 0;
DataSet dsListaDatos = objDependenciaBL.getDependencia(arlCondicionesBuscador);
//Hago el llamado del metodo que carga el grid o listado
//Ejemplo
General.detalleGridView(dsListaDatos, 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
{
//Se instancia el objeto
//Ejemplo
objDependenciaBL = new DependenciaBL();
//Se obtiene la PK del registro por medio el parametro
//Ejemplo
objDependenciaBL.objDependenciaEL.PK = p_intPkConsultar;
objDependenciaBL.objDependenciaEL.Padre = 0;
//Se llena un dataset con la inforación suministrada.
//Ejemplo
DataSet dsDependencia = objDependenciaBL.getDependencia(null);
//Se llenan los campos
//Ejemplo
if (dsDependencia.Tables[0].Rows.Count > 0)
{
ddlDependencia.SelectedValue = dsDependencia.Tables[0].Rows[0]["PADREDEPENDENCIA"].ToString();
txtNombre.Text = dsDependencia.Tables[0].Rows[0]["NOMBREDEPENDENCIA"].ToString();
}
}
catch (Exception ex)
{
MensajeError("Error en R6M1", ex);
General.ReportarError(ex, Session["LOGIN"].ToString());
}
}
private void llenarDDLDependencia() //M2
{
try
{
//Limpia el control
ddlDependencia.Items.Clear();
//Instancia el objeto
objDependenciaBL = new DependenciaBL();
objDependenciaBL.objDependenciaEL.PK = 0;
objDependenciaBL.objDependenciaEL.Padre = 1;
objDependenciaBL.objDependenciaEL.ASTATE = true;
//Carga la información en el dropdownlist
ddlDependencia.DataSource = objDependenciaBL.getDependencia(null); ;
ddlDependencia.DataTextField = Concepto.NOMBRE.ToString() + Tablas.dependencia.ToString().ToUpper();
ddlDependencia.DataValueField = Constraints.PK.ToString() + Tablas.dependencia.ToString().ToUpper();
ddlDependencia.DataBind();
ddlDependencia.Items.Insert(0, new ListItem("Sin Nivel Superior", "-1"));
}
catch (Exception ex)
{
MensajeError("Error en R6M2", ex);
}
}
#endregion
}