/*=========================================================================================================================== * Instituto Costarricense de Acueductos y Alcantarillados. - 2015 * Formularios para Proyectos de Inversión * Nombre de la Pantalla: wfrIndicadorProyecto.aspx * * Explicación de los contenidos del archivo *=========================================================================================================================== * HISTORIAL * * PERSONA DIA – MES - AÑO DESCRIPCIÓN * Pamela Quesada Calderón 30 – 01 - 2017 Se inicia con el diseño de la pagina * Pamela Quesada Calderón 31 – 01 - 2017 Se termina con el diseño y funcionamiento preliminar de la pagina * CGC ………………………………………………………… * ………………………………………………………… *=========================================================================================================================== * 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 AyABL; using AyABL.ADM; using AyABL.AGP; using AyABL.AUT.Autenticacion; using AyABL.RCS; using AyABL.SEG; using AyABL.SEP; using AyADAL; 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; public partial class webforms_SEP_wfrLiderProyecto : 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(); construirGridProyectosUsuario(); Javascript.CheckAllGridViewItems(Page); cuwBusquedaList.Buscar += new _controlesusuario_Estandar_cuwBusquedaList.SearchEvent(Buscar); } catch (Exception ex) { MensajeError("Error en R0M1", ex); } } #endregion #region Variables (R1) GridView grvListaUsuariosTemp, grvProyectosUsuarioTemp; UsuarioBL objUsuarioBL; LiderProyectoBL objLiderProyectoBL; ProyectoBL objProyectoBL; RegionBL objRegionBL; ArrayList arlCondicionesBuscador = new ArrayList(); DataSet dsProyectosUsuarios; #endregion #region Eventos Formulario (R2) protected void Page_Load(object sender, EventArgs e) //M0 { try { if ((!IsPostBack) && (Session.Count > 0)) { llenarGridView(true); mostrarFilaTabla(1); llenarDdlRegion(); llenarddlProyectos(); 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 grvListaUsuarios_RowCommand(object sender, GridViewCommandEventArgs e) //M0 { try { if (e.CommandName == "verProyectos") { int i = Convert.ToInt32(e.CommandArgument); GridViewRow selectedRow = grvListaUsuarios.Rows[i]; int intPkUsuario = Convert.ToInt32(selectedRow.Cells[2].Text); pkUser.Value = intPkUsuario.ToString(); ViewState["PkUsuario"] = intPkUsuario; ViewState["MODO"] = "Modifica"; lblNombreUsuario.Text = selectedRow.Cells[4].Text; mostrarFilaTabla(2); //llenarGridViewProyectosUsuario(intPkUsuario); llenarGridViewProyectosUsuario(); } } catch (Exception ex) { MensajeError("Error en R3M0", ex); } } /// /// Pagina el listado de usuarios del sistema /// /// /// protected void grvListaUsuarios_PageIndexChanging(object sender, GridViewPageEventArgs e) //M1 { try { grvListaUsuarios.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); } } protected void grvProyectosUsuario_RowCommand(object sender, GridViewCommandEventArgs e) //M3 { try { if (e.CommandName == "eliminar") { //Extrae la fila seleccionada del GridView int intIndice = Convert.ToInt32(e.CommandArgument); GridViewRow selectedRow = grvProyectosUsuario.Rows[intIndice]; objLiderProyectoBL = new LiderProyectoBL(); objLiderProyectoBL.objLiderProyectoEL.Usuario = Convert.ToInt32(pkUser.Value); objLiderProyectoBL.objLiderProyectoEL.PK = Convert.ToInt32(selectedRow.Cells[1].Text); objLiderProyectoBL.objLiderProyectoEL.Proyecto = Convert.ToInt32(selectedRow.Cells[2].Text); //Actualiza estado a eliminado en la tabla objLiderProyectoBL.actualizaEstadoLiderProyecto(); llenarGridViewProyectosUsuario(); llenarddlProyectos(); mostrarFilaTabla(2); } } catch (Exception ex) { MensajeError("Error en R3M3", ex); } } protected void grvProyectosUsuario_PageIndexChanging(object sender, GridViewPageEventArgs e) //M4 { try { grvProyectosUsuario.PageIndex = e.NewPageIndex; llenarGridViewProyectosUsuario(); } catch (Exception ex) { MensajeError("Error en R3M4", ex); } } protected void btnRefrescarProyectos_Click(object sender, System.Web.UI.ImageClickEventArgs e) //M5 { try { llenarGridViewProyectosUsuario(); } 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); } } protected void btnNuevo_Click(object sender, EventArgs e) //M7 { try { llenarddlProyectos(); mostrarFilaTabla(3); } catch (Exception ex) { MensajeError("Error en R3M7", 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; btnAnterior.Visible = false; btnNuevo.Visible = false; } catch (Exception ex) { MensajeError("Error en R3M8", ex); } } /// /// Activa el evento del boton guardar.1 /// /// /// protected void btnAsignar_Click(object sender, EventArgs e) //M9 { try { if (ddlProyectos.SelectedIndex > 0) { if (GuardarDatos()) { llenarGridViewProyectosUsuario(); llenarddlProyectos(); mostrarFilaTabla(2); MensajeInformativo("El registro fue almacenado exitosamente"); } else { MensajeError("El registro no fue almacenado, verifique", null); } } else { MensajeError("Debe seleccionar una opción.", null); } } catch (Exception ex) { MensajeError("Error en R3M9", ex); } } protected void ddlRegion_SelectedIndexChanged(object sender, EventArgs e) { llenarddlProyectos(); } protected void ddlRegionGrid_SelectedIndexChanged(object sender, EventArgs e) { llenarGridViewProyectosUsuario(); } #endregion #region Metodos Personalizados (R4) /// /// Oculta las filas que lo requieran /// /// private void mostrarFilaTabla(int p_intFila) //M0 { try { switch (p_intFila) { case 1: llenarGridView(true); divDatosSuperiores.Visible = true; divDatosMedios.Visible = false; divDatosInferiores.Visible = false; btnNuevo.Visible = false; break; case 2: btnAnterior.Visible = true; btnNuevo.Visible = true; btnAsignar.Visible = false; divDatosSuperiores.Visible = false; divDatosMedios.Visible = true; divDatosInferiores.Visible = false; break; case 3: btnAnterior.Visible = true; btnAsignar.Visible = true; divDatosSuperiores.Visible = false; divDatosMedios.Visible = 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 { grvListaUsuariosTemp = (GridView)divDatosSuperiores.FindControl("grvListaUsuarios"); GridViewBoundField bdfPkUsuario = new GridViewBoundField("PKUSUARIO", "PK", false, 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); grvListaUsuariosTemp.Columns.Add(bdfPkUsuario); grvListaUsuariosTemp.Columns.Add(bdfLoginUsuario); grvListaUsuariosTemp.Columns.Add(bdfNombreCompleto); grvListaUsuariosTemp.Columns.Add(bdfCedula); grvListaUsuariosTemp.Columns.Add(bdfCorreo); grvListaUsuariosTemp.Columns.Add(bdfDependencia); grvListaUsuariosTemp.Columns.Add(bdfRol); grvListaUsuariosTemp.Columns.Add(bdfActivoUsuario); grvListaUsuariosTemp.Columns[0].ItemStyle.Width = 25; grvListaUsuariosTemp.Columns[1].ItemStyle.Width = 25; cuwBusquedaList.LlenarCHKLBusqueda(grvListaUsuariosTemp); } 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 construirGridProyectosUsuario() //M4 { try { grvProyectosUsuarioTemp = (GridView)divDatosMedios.FindControl("grvProyectosUsuario"); GridViewBoundField bdfPkt = new GridViewBoundField("PKLIDERPROYECTO", "PKT", false, false, false); GridViewBoundField bdfPk = new GridViewBoundField("PKPROYECTO", "PK", false, false, false); GridViewBoundField bdfNombre = new GridViewBoundField("NOMBREPROYECTO", "NOMBRE PROYECTO", false, false, true); GridViewBoundField bdfEncargado = new GridViewBoundField("ENCARGADOINFORMACIONGENERAL", "ENCARGADO DEL PROYECTO", false, false, true); grvProyectosUsuarioTemp.Columns.Add(bdfPkt); grvProyectosUsuarioTemp.Columns.Add(bdfPk); grvProyectosUsuarioTemp.Columns.Add(bdfNombre); grvProyectosUsuarioTemp.Columns.Add(bdfEncargado); grvProyectosUsuarioTemp.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; break; case "MODIFICA": //Inicio de variable tipo VIEWSTATE ViewState["PUEDEMODIFICAR"] = true; btnAsignar.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(); objLiderProyectoBL = new LiderProyectoBL(); objLiderProyectoBL.objLiderProyectoEL.Usuario = Convert.ToInt32(pkUser.Value); objLiderProyectoBL.objLiderProyectoEL.Proyecto = Int32.Parse(ddlProyectos.SelectedValue); //if (strModo == "Nuevo") //{ if (objLiderProyectoBL.insertarLiderProyecto() > 0) { blnEjecutado = true; GuardarEventoBitacora( Session["LOGIN"].ToString(), AccionBitacora.INSERT.ToString(), MensajesBitacora.IngresarRegistro + ": Se ha ingresado el registro " + pkUser.Value + ", " + ddlProyectos.SelectedValue, "wfrLiderProyecto.aspx"); } } catch (Exception ex) { blnEjecutado = false; throw ex; } 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);//getListaUsuariosRol(arlCondicionesBuscador, 2); //2 indica Lider de Proyecto if (dsUsuarios.Tables.Count != 0) { for (int i = 0; i < dsUsuarios.Tables[0].Rows.Count; i++) { if (!dsUsuarios.Tables[0].Rows[i]["NOMBREROL"].ToString().Equals("Líder de Proyecto") || !bool.Parse(dsUsuarios.Tables[0].Rows[i]["ACTIVOUSUARIO"].ToString())) dsUsuarios.Tables[0].Rows[i].Delete(); } } General.detalleGridView(dsUsuarios, grvListaUsuariosTemp, lblTotalDatos); } } catch (Exception ex) { MensajeError("Error en R6M0", ex); } } /// /// Carga el grid de Proyectos del Usuario /// /// private void llenarGridViewProyectosUsuario() //M1 { try { objLiderProyectoBL = new LiderProyectoBL(); objLiderProyectoBL.objLiderProyectoEL.PK = 0; objLiderProyectoBL.objLiderProyectoEL.Usuario = Int32.Parse(ViewState["PkUsuario"].ToString()); objLiderProyectoBL.objLiderProyectoEL.Region = 0; if (ddlRegionGrid.SelectedIndex > 0) objLiderProyectoBL.objLiderProyectoEL.Region = Int32.Parse(ddlRegionGrid.SelectedValue); dsProyectosUsuarios = objLiderProyectoBL.getLiderProyectos(); General.detalleGridView(dsProyectosUsuarios, grvProyectosUsuarioTemp, lblTotalDatosProyectosUsuario); } catch (Exception ex) { MensajeError("Error en R6M1", ex); } } /// /// Llena el dropdownlist de Roles según la aplicación /// private void llenarddlProyectos() //M2 { try { //Limpia el control ddlProyectos.Items.Clear(); //Instancia el objeto objProyectoBL = new ProyectoBL(); //Carga la información en un dataset objProyectoBL.objProyectoEL.PK = 0; objProyectoBL.objProyectoEL.ASTATE = true; DataSet dsProyectos = objProyectoBL.getProyectosParaAsignar(Convert.ToInt32(ddlRegion.SelectedValue)); objLiderProyectoBL = new LiderProyectoBL(); objLiderProyectoBL.objLiderProyectoEL.PK = 0; dsProyectosUsuarios = objLiderProyectoBL.getLiderProyectos(); if (dsProyectosUsuarios.Tables.Count != 0) { if (dsProyectos.Tables.Count != 0) { for (int i = 0; i < dsProyectosUsuarios.Tables[0].Rows.Count; i++) { for (int j = 0; j < dsProyectos.Tables[0].Rows.Count; j++) { if (dsProyectosUsuarios.Tables[0].Rows[i]["PKPROYECTO"].ToString().Equals(dsProyectos.Tables[0].Rows[j]["PKPROYECTO"].ToString())) dsProyectos.Tables[0].Rows[j].Delete(); } } } } if (dsProyectos.Tables.Count != 0) { if (dsProyectos.Tables[0].Rows.Count != 0) { ddlProyectos.DataSource = dsProyectos; ddlProyectos.DataTextField = dsProyectos.Tables[0].Columns["NOMBREPROYECTO"].ColumnName; ddlProyectos.DataValueField = dsProyectos.Tables[0].Columns["PKPROYECTO"].ColumnName; ddlProyectos.DataBind(); ddlProyectos.Items.Insert(0, new ListItem("----- Seleccione un Proyecto -----", "-1")); } } } catch (Exception ex) { MensajeError("Error en R6M2", ex); } } /// /// Carga el ddl de Regiones /// private void llenarDdlRegion() //M3 { try { //Limpia el control ddlRegion.Items.Clear(); //--------- ddlRegionGrid.Items.Clear(); //Instancia el objeto objRegionBL = new RegionBL(); objRegionBL.objRegionEL.PK = 0; objRegionBL.objRegionEL.Padre = 1; objRegionBL.objRegionEL.ASTATE = true; DataSet dsRegion = objRegionBL.getRegion(); if (dsRegion.Tables[0].Rows.Count != 0) { ddlRegion.DataSource = dsRegion; ddlRegion.DataTextField = dsRegion.Tables[0].Columns["NOMBREREGION"].ColumnName; ddlRegion.DataValueField = dsRegion.Tables[0].Columns["PKREGION"].ColumnName; ddlRegion.DataBind(); ddlRegion.Items.Insert(0, new ListItem("Seleccione una Región", "-1")); //-------- ddlRegionGrid.DataSource = dsRegion; ddlRegionGrid.DataTextField = dsRegion.Tables[0].Columns["NOMBREREGION"].ColumnName; ddlRegionGrid.DataValueField = dsRegion.Tables[0].Columns["PKREGION"].ColumnName; ddlRegionGrid.DataBind(); ddlRegionGrid.Items.Insert(0, new ListItem("Seleccione una Región", "-1")); } } catch (Exception ex) { MensajeError("Error en R6M3", ex); } } #endregion }