/*=========================================================================================================================== * 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) /// /// Metodo que se utiliza para extraer información del registro de la base de datos y ser mostrado en el div 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 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); } } /// /// Metodo que se utiliza para la paginación del Grid en caso de que el Rol desee ver mas registros /// /// /// protected void grvListaDatos_PageIndexChanging(object sender, GridViewPageEventArgs e) //M1 { try { grvListaDatos.PageIndex = e.NewPageIndex; llenarGridView(true); } catch (Exception ex) { MensajeError("Error 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); } } /// /// Activa el evento del botón Buscar (binoculares) /// /// /// protected void btnBuscar_Click(object sender, System.Web.UI.ImageClickEventArgs e) //M3 { try { llenarGridView(true); } catch (Exception ex) { MensajeError("Error en R3M3", ex); } } /// /// Activa el evento del boton Nuevo /// /// /// 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); } } /// /// Metodo que activa el botón de Eliminar /// /// /// 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); } } /// ///Activa el metodo del boton Anterior, regresa a mostrar el listado /// /// /// 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); } } /// /// Activa el evento del boton guardar. /// /// /// 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) /// /// Oculta los divs según la necesidad /// /// 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); } } /// /// Metodo que se utiliza para construir el Grid al inicio de la pantalla /// 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); } } /// /// Metodo que se utiliza para limpiar los campos en la pantalla /// private void limpiarCampos() //M3 { try { txtNombre.Text = string.Empty; llenarDDLDependencia(); } catch (Exception ex) { MensajeError("Error en R4M3", 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() //M4 { try { llenarGridView(true); } catch (Exception ex) { MensajeError("Error en R4M4", ex); } } /// /// Metodo que se utiliza para el despliegue de los botones segun el rol del usuario /// 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) /// /// guarda y modifica registros en la tabla. /// /// 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; } /// /// Metodo que se utiliza para eliminar registros de la base de datos /// /// 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) /// /// Carga el grid principal /// /// 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); } } /// /// Muestra los datos del registro /// /// 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 }