/*=========================================================================================================================== * Instituto Costarricense de Acueductos y Alcantarillados. - 2015 * Administración de la Seguridad * Nombre de la Pantalla: frwProyectos.aspx * * Explicación de los contenidos del archivo *=========================================================================================================================== * HISTORIAL * * PERSONA DIA – MES - AÑO DESCRIPCIÓN * Esteban Gutierrez Rapso 20 – 04 - 2015 Se inicia con el diseño de la pagina * ………………………………………………………… * ………………………………………………………… *=========================================================================================================================== * Derechos Reservados (C) 2015 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.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 AyABL.APL; using AyADAL; using System.Configuration; using AyABL.RCS; using AyABL; using AyABL.Usuario; using AyABL.APL; using AyAEL.MANT; public partial class Forms_Requisitos_frwProyectos : 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 grvListaDatosProyectosTemp, grvProyectosADTemp; proyectoBL objProyectoBL; AutenticacionBL objAutenticacionBL; UsuarioRolBL objUsuarioRolBL; RolItemMenuComandoBL objRolItemMenuComandoBL; AplicacionBL objAplicacionBL; ArrayList arlCondicionesFiltroBusqueda = 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); //llenarDDLdiasPlazo(); 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 grvListaDatosProyectos_RowCommand(object sender, GridViewCommandEventArgs e) //M0 { try { if (e.CommandName == "editar") { int i = Convert.ToInt32(e.CommandArgument); GridViewRow selectedRow = grvListaDatosProyectos.Rows[i]; int intPkProyecto = Convert.ToInt32(selectedRow.Cells[2].Text); ViewState["PkProyecto"] = intPkProyecto; ViewState["MODO"] = "Modifica"; mostrarFilaTabla(2); mostrarDatos(intPkProyecto); } } catch (Exception ex) { MensajeError("Error en R3M0", ex); } } /// /// Metodo que se utiliza para la paginación del Grid en caso de que el usuario desee ver mas registros /// /// /// protected void grvListaDatosProyectos_PageIndexChanging(object sender, GridViewPageEventArgs e) //M3 { try { grvListaDatosProyectos.PageIndex = e.NewPageIndex; llenarGridView(true); } catch (Exception ex) { MensajeError("Error en R3M3", ex); } } /// ///Activar el botón de Refrescar /// /// /// protected void btnRefrescar_Click(object sender, System.Web.UI.ImageClickEventArgs e) //M4 { try { llenarGridView(true); } catch (Exception ex) { MensajeError("Error en R3M4" + MensajesAplicacion.RefrescarFallido.ToString(), ex); } } /// /// Activa el evento del botón Buscar (binoculares) /// /// /// protected void btnBuscar_Click(object sender, System.Web.UI.ImageClickEventArgs e) //M7 { try { llenarGridView(true); } catch (Exception ex) { MensajeError("Error en R3M7" + MensajesAplicacion.UsuarioInexistente.ToString(), ex); } } /// /// Activa el evento del boton Nuevo /// /// /// protected void btnNuevo_Click(object sender, EventArgs e) //M8 { try { ViewState["MODO"] = "Nuevo"; mostrarFilaTabla(2); //Limpia campos limpiarCampos(); //ddlDiasPlazo.Focus(); } catch (Exception ex) { MensajeError("Error en R3M8" + MensajesAplicacion.GuardadoFallido.ToString(), ex); } } /// /// Metodo que activa el botón de Eliminar /// /// /// protected void btnActivar_Click(object sender, EventArgs e) //M9 { try { foreach (GridViewRow row in grvListaDatosProyectos.Rows) { HtmlInputCheckBox chkTemp = (HtmlInputCheckBox)row.Controls[0].Controls[1]; if (chkTemp != null) { // si el registro esta marcado if (chkTemp.Checked) { int intPkEliminar = Convert.ToInt32(row.Cells[2].Text); ActivarDesactivar(intPkEliminar); MensajeInformativo(AyABL.BASESDEDATOS.ADS + "Interfaz: " + MensajesAplicacion.GuardadoExitoso.ToString()); } } } llenarGridView(true); } catch (Exception ex) { MensajeError("Error en R3M9", ex); } } /// ///Activa el metodo del boton Anterior, regresa a la primera fila de la tabla /// /// /// protected void btnAnterior_Click(object sender, EventArgs e) //M12 { try { llenarGridView(true); divDatosSuperiores.Visible = true; divDatosMedios.Visible = false; } catch (Exception ex) { MensajeError("Error en R3M12", ex); } } /// /// Activa el evento del boton guardar.1 /// /// /// protected void btnGuardar_Click(object sender, EventArgs e) //M14 { try { //if (((int.Parse(txtCantidad.Text)) == 0 && txtUnidadMedida.Text == "") || ((int.Parse(txtCantidad.Text)) > 0 && txtUnidadMedida.Text != "")) if (txtDescripcion.Text != "" && txtUnidadMedida.Text != "" && txtCantidad.Text != "" && txtFactorequivalencia.Text !="") { if (txtDescripcion.Text != "") { int pkRegistro = GuardarDatos(); llenarGridView(true); mostrarFilaTabla(1); //llenarDDLdiasPlazo(); MensajeInformativo(AyABL.BASESDEDATOS.ADS + "Interfaz: " + MensajesAplicacion.GuardadoExitoso.ToString()); } } else { //MensajeAlerta(AyABL.BASESDEDATOS.ADS + "Interfaz: " + MensajesAplicacion.GuardadoFallido.ToString()); } } catch (Exception ex) { MensajeError("Error en R3M14", ex); } } //protected void ddlDiasPlazo_SelectedIndexChanged(object sender, EventArgs e) //M15 //{ // if (ddlDiasPlazo.SelectedItem.Text == "") // txtCantidad.Enabled = true; // else // txtCantidad.Enabled = false; //} #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; switch (p_intFila) { case 1: llenarGridView(true); divDatosSuperiores.Visible = true; break; case 2: llenarGridView(true); divDatosMedios.Visible = true; break; case 3: llenarGridView(true); break; } } catch (Exception ex) { throw ex; } } /// /// Metodo que se utiliza para contruir el Grid al inicio de la pantalla /// private void construirGridView() //M1 { try { grvListaDatosProyectosTemp = (GridView)tdLista.FindControl("grvListaDatosProyectos"); GridViewBoundField bdfPkProyecto = new GridViewBoundField("PKPROYECTO", "PK", false, false, false); GridViewBoundField bdfDescripcion = new GridViewBoundField("DESCRIPCIONPROYECTO", "Proyecto", true, false, true); //GridViewBoundField bdfPlazo = new GridViewBoundField("DIASPLAZORESOLUCION", "Dias plazo", true, false, true); //GridViewBoundField bdfFecha = new GridViewBoundField("FECHACREAPROYECTO", "Fecha", false, false, false); //GridViewBoundField bdfUsuario = new GridViewBoundField("USUARIOCREAPROYECTO", "Responsable", false, false, false); GridViewBoundField bdfCantidad = new GridViewBoundField("CANTIDADLIMITEPROYECTO", "Cantidad límite", true, false, true); GridViewBoundField bdfFactorequivalencia = new GridViewBoundField("FACTOREQUIVALENCIAPROYECTO", "Factor equivalencia", true, false, true); GridViewBoundField bdfUnidadMedida = new GridViewBoundField("UNIDADMEDIDAPROYECTO", "Unidad medida", true, false, true); GridViewBoundField bdfActivo = new GridViewBoundField("ASTATEPROYECTO", "Activo", true, "Si", "No", true); grvListaDatosProyectosTemp.Columns.Add(bdfPkProyecto); grvListaDatosProyectosTemp.Columns.Add(bdfDescripcion); //grvListaDatosProyectosTemp.Columns.Add(bdfPlazo); //grvListaDatosProyectosTemp.Columns.Add(bdfFecha); //grvListaDatosProyectosTemp.Columns.Add(bdfUsuario); grvListaDatosProyectosTemp.Columns.Add(bdfCantidad); grvListaDatosProyectosTemp.Columns.Add(bdfFactorequivalencia); grvListaDatosProyectosTemp.Columns.Add(bdfUnidadMedida); grvListaDatosProyectosTemp.Columns.Add(bdfActivo); grvListaDatosProyectosTemp.Columns[0].ItemStyle.Width = 25; grvListaDatosProyectosTemp.Columns[1].ItemStyle.Width = 25; cuwBusquedaList.LlenarCHKLBusqueda(grvListaDatosProyectosTemp); } catch (Exception ex) { throw ex; } } /// /// Metodo que se encarga de agregar el filtro de busqueda seleccionado por el usuario /// /// private void condicionesBusqueda() //M2 { AyABL.AyABL objBL = new AyABL.AyABL(); 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()); dteFechaFin = DateTime.Now; } if (li.Value.Contains("FIN")) { dteFechaFin = Convert.ToDateTime(li.Text.ToString()); if (dteFechaFin != null || dteFechaInicio != null) if (dteFechaInicio < dteFechaFin || dteFechaFin == dteFechaInicio) { objBL = new AyABL.AyABL(); arlCondicionesFiltroBusqueda = objBL.buscarPorFechas(Tablas.BITACORA, dteFechaInicio, dteFechaFin, operadorLogico.AND, arlCondicionesFiltroBusqueda); } else MensajeInformativo(AyABL.BASESDEDATOS.ADS + "Interfaz: " + "Verifique que la Fecha de Inicio sea menor que la Fecha Final" + "M2"); else MensajeInformativo(AyABL.BASESDEDATOS.ADS + "Interfaz: " + "Verifique que los campos de las fechas no estén vacíos" + "M2"); } else { objBL = new AyABL.AyABL(); arlCondicionesFiltroBusqueda = objBL.buscarPorFechas(Tablas.BITACORA, dteFechaInicio, dteFechaFin, operadorLogico.AND, arlCondicionesFiltroBusqueda); } } 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.Trim(); arlCondicionesFiltroBusqueda.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.Trim() + "%"; arlCondicionesFiltroBusqueda.Add(condicion); } } } } } } } catch (Exception ex) { throw 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) { throw ex; } } /// /// Metodo que se utiliza para el despliegue de los botones /// private void ComandosxMenu() //M6 { 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; break; case "MODIFICA": //Inicio de variable tipo VIEWSTATE ViewState["PUEDEMODIFICAR"] = true; btnGuardar.Visible = true; btnActivar.Visible = true; break; } } } } catch (Exception ex) { throw ex; } } /// /// Limpia los campos /// private void limpiarCampos() { txtCantidad.Text = string.Empty; txtDescripcion.Text = string.Empty; txtUnidadMedida.Text = string.Empty; txtFactorequivalencia.Text = string.Empty; } #endregion #region Metodos Controles a Datos (R5) /// /// guarda y modifica registros en la tabla. /// /// private int GuardarDatos() //M0 { int nValorRetornado = 0; try { string strModo = ViewState["MODO"].ToString(); objProyectoBL = new proyectoBL(); objProyectoBL.objproyectoEL.DESCRIPCION = txtDescripcion.Text; //objProyectoBL.objproyectoEL.FKDIASPLAZORESOLUCION = Convert.ToInt16(ddlDiasPlazo.SelectedValue); objProyectoBL.objproyectoEL.Activo = true; objProyectoBL.objproyectoEL.CANTIDADLIMITE = int.Parse(txtCantidad.Text); objProyectoBL.objproyectoEL.FACTOREQUIVALENCIA = decimal.Parse(txtFactorequivalencia.Text); objProyectoBL.objproyectoEL.UNIDADMEDIDA = txtUnidadMedida.Text; if (strModo == "Nuevo") { nValorRetornado = objProyectoBL.insertarProyecto(); //llenarDDLdiasPlazo(); limpiarCampos(); GuardarEventoBitacora( Session["LOGIN"].ToString(), AccionBitacora.INSERT.ToString(), MensajesBitacora.IngresarRegistro + ": Se ha ingresado el proyecto " + txtDescripcion.Text.Trim(), "frwProyectos.aspx", Convert.ToInt32(ConfigurationManager.AppSettings["pkApp"]) ); } else if (strModo == "Modifica" && bool.Parse(ViewState["PUEDEMODIFICAR"].ToString()) == true) { objProyectoBL.objproyectoEL.PK = Convert.ToInt32(ViewState["PkProyecto"]); nValorRetornado = objProyectoBL.modificarProyecto(); //llenarDDLdiasPlazo(); limpiarCampos(); GuardarEventoBitacora( Session["LOGIN"].ToString(), AccionBitacora.UPDATE.ToString(), MensajesBitacora.IngresarRegistro + ": Se ha modificado el proyecto " + txtDescripcion.Text.Trim(), "frwProyectos.aspx", Convert.ToInt32(ConfigurationManager.AppSettings["pkApp"]) ); } } catch (Exception ex) { throw ex; } return nValorRetornado; } /// /// Activa o desactiva el usuario /// /// private bool ActivarDesactivar(int p_intPkEliminar) //M2 { bool blnValorRetornado = false; bool blnActivo = false; try { objProyectoBL = new proyectoBL(); objProyectoBL.objproyectoEL.PK = p_intPkEliminar; DataSet dsProyectoDS = objProyectoBL.listarProyectos(null, false, null); //Verifica que el usuario se encuentre en la BD if (dsProyectoDS.Tables[0].Rows.Count != 0) { //Si esta activado que lo desactive if (Convert.ToBoolean(dsProyectoDS.Tables[0].Rows[0][Concepto.ASTATE.ToString() + Tablas.proyecto.ToString()])) blnActivo = false; //Si esta desactivado que lo active else blnActivo = true; objProyectoBL.objproyectoEL.Activo = blnActivo; objProyectoBL.activarDesactivarProyecto(); } GuardarEventoBitacora( Session["LOGIN"].ToString(), AccionBitacora.INSERT.ToString(), MensajesBitacora.ModificarRegistro + ": Se ha puesto el registro de la PK=" + p_intPkEliminar + " en " + blnActivo, "frwProyectos.aspx", Convert.ToInt32(ConfigurationManager.AppSettings["pkApp"]) ); } catch (Exception ex) { throw ex; } return blnValorRetornado; } #endregion #region Metodos Datos a Controles (R6) /// /// Carga el grid principal /// /// private void llenarGridView(bool p_Llenar) //M0 { try { if (!IsPostBack || p_Llenar) { arlCondicionesFiltroBusqueda = new ArrayList(); objProyectoBL = new proyectoBL(); condicionesBusqueda(); DataSet dsProyectos = objProyectoBL.dsListaProyectos(arlCondicionesFiltroBusqueda); General.detalleGridView(dsProyectos, grvListaDatosProyectosTemp, lblTotalDatos); } } catch (Exception ex) { throw ex; } } /// /// Muestra los datos del registro /// /// private void mostrarDatos(int p_intPkConsultar) //M1 { try { objProyectoBL = new proyectoBL(); objProyectoBL.objproyectoEL.PK = p_intPkConsultar; DataSet dsProyecto = objProyectoBL.dsListaProyectos(null); if (dsProyecto.Tables[0].Rows.Count > 0) { //Información de la cantonal txtDescripcion.Text = dsProyecto.Tables[0].Rows[0]["DESCRIPCIONPROYECTO"].ToString(); txtCantidad.Text = dsProyecto.Tables[0].Rows[0]["CANTIDADLIMITEPROYECTO"].ToString(); txtUnidadMedida.Text = dsProyecto.Tables[0].Rows[0]["UNIDADMEDIDAPROYECTO"].ToString(); txtFactorequivalencia.Text = dsProyecto.Tables[0].Rows[0]["FACTOREQUIVALENCIAPROYECTO"].ToString(); } else { } } catch (Exception ex) { throw ex; } } /// /// Llena el dropdownlist de Cantonales según la aplicación /// //private void llenarDDLdiasPlazo() //M2 //{ // try // { // //Limpia el control // ddlDiasPlazo.Items.Clear(); // //Instancia el bjeto // objProyectoBL = new proyectoBL(); // //Asigna datos al atributo // //Carga la información en un dataset // DataSet dsDiasPlazo = objProyectoBL.dsListaDiasPlazo(arlCondicionesFiltroBusqueda); // if (dsDiasPlazo.Tables[0].Rows.Count != 0) // { // ddlDiasPlazo.DataSource = dsDiasPlazo; // ddlDiasPlazo.DataTextField = dsDiasPlazo.Tables[0].Columns["DIASPLAZORESOLUCION"].ColumnName; // ddlDiasPlazo.DataValueField = dsDiasPlazo.Tables[0].Columns["PKDIASPLAZORESOLUCION"].ColumnName; // ddlDiasPlazo.DataBind(); // ddlDiasPlazo.Items.Insert(0, new ListItem("Seleccione", "-1")); // } // else // ddlDiasPlazo.Items.Insert(0, new ListItem("----- Vacío -----", "-1")); // } // catch (Exception ex) // { // throw ex; // } //} #endregion }