From 585ca7dd9a437374387d96a9477e0b00facd261f Mon Sep 17 00:00:00 2001 From: Vanesa Rimada <80859025+vrimada@users.noreply.github.com> Date: Wed, 13 May 2026 15:50:58 -0300 Subject: [PATCH 1/5] tercera parte de mejoras para abm usuarios --- Business/Data/UsuarioEfector.cs | 100 ++++++++++---- Business/Data/UsuarioEfector.hbm.xml | 11 +- WebLab/Informes/AuditoriaUser.cs | 4 +- WebLab/Usuarios/UsuarioEdit.aspx | 129 ++++++++++--------- WebLab/Usuarios/UsuarioEdit.aspx.cs | 90 +++++++++---- WebLab/Usuarios/UsuarioEdit.aspx.designer.cs | 73 ++++++----- 6 files changed, 250 insertions(+), 157 deletions(-) diff --git a/Business/Data/UsuarioEfector.cs b/Business/Data/UsuarioEfector.cs index bfb4888b..30467704 100644 --- a/Business/Data/UsuarioEfector.cs +++ b/Business/Data/UsuarioEfector.cs @@ -19,27 +19,32 @@ public sealed class UsuarioEfector: Business.BaseDataAccess private int m_idusuarioefector; private Usuario m_idusuario; private Efector m_idefector; - private bool m_activo; - + private int m_idPerfil; + private int m_idEfectorDestino; + private int m_idArea; + private int m_idUsuarioRegistro; + private DateTime m_fechaRegistro; - #endregion - #region Default ( Empty ) Class Constuctor - /// - /// default constructor - /// - public UsuarioEfector() + #endregion + + #region Default ( Empty ) Class Constuctor + /// + /// default constructor + /// + public UsuarioEfector() { m_idusuarioefector = 0; m_idusuario = new Usuario(); m_idefector = new Efector(); - m_activo = false; - - - - } + m_idPerfil = 0; + m_idEfectorDestino = 0; + m_idArea = 0; + m_idUsuarioRegistro = 0; + m_fechaRegistro = DateTime.MinValue; + } #endregion // End of Default ( Empty ) Class Constuctor @@ -49,12 +54,11 @@ public UsuarioEfector() /// required (not null) fields only constructor /// public UsuarioEfector( - bool activo) + bool activo) : this() { m_idusuario = new Usuario(); m_idefector = new Efector(); - m_activo = activo; @@ -112,30 +116,70 @@ public bool Activo m_activo = value; } + } + public int IdPerfil + { + get { return m_idPerfil; } + set + { + m_isChanged |= (m_idPerfil != value ); + m_idPerfil = value; + } + } - - public bool IsChanged + public int IdEfectorDestino { - get { return m_isChanged; } + get { return m_idEfectorDestino; } + set + { + m_isChanged |= (m_idEfectorDestino != value ); + m_idEfectorDestino = value; + } + } + + public int IdArea + { + get { return m_idArea; } + set + { + m_isChanged |= (m_idArea != value ); + m_idArea = value; + } - #endregion + } + + public int IdUsuarioRegistro + { + get { return m_idUsuarioRegistro; } + set + { + m_isChanged |= (m_idUsuarioRegistro != value ); + m_idUsuarioRegistro = value; + } + } + + public DateTime FechaRegistro + { + get { return m_fechaRegistro; } + set + { + m_isChanged |= (m_fechaRegistro != value ); + m_fechaRegistro = value; + } - #region Metodos + } + + public bool IsChanged + { + get { return m_isChanged; } + } #endregion - //public bool esHemoterapia() - //{ - // var index=this.IdPerfil.Nombre.ToUpper().IndexOf("HEMOTERAPIA"); - // if (index > -1) return true; - // else return false; - //} - - } } diff --git a/Business/Data/UsuarioEfector.hbm.xml b/Business/Data/UsuarioEfector.hbm.xml index 9a8644fb..d558ea7a 100644 --- a/Business/Data/UsuarioEfector.hbm.xml +++ b/Business/Data/UsuarioEfector.hbm.xml @@ -8,12 +8,11 @@ - - - - - - + + + + + diff --git a/WebLab/Informes/AuditoriaUser.cs b/WebLab/Informes/AuditoriaUser.cs index 011b0ace..da02ce09 100644 --- a/WebLab/Informes/AuditoriaUser.cs +++ b/WebLab/Informes/AuditoriaUser.cs @@ -74,6 +74,8 @@ public CrystalDecisions.CrystalReports.Engine.Section Section3 { [Browsable(false)] [DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Hidden)] + public CrystalDecisions.CrystalReports.Engine.Section Section4 + { get { return this.ReportDefinition.Sections[3]; } @@ -81,7 +83,7 @@ public CrystalDecisions.CrystalReports.Engine.Section Section3 { [Browsable(false)] [DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Hidden)] - public CrystalDecisions.CrystalReports.Engine.Section Section3 { + public CrystalDecisions.CrystalReports.Engine.Section Section5 { get { return this.ReportDefinition.Sections[4]; } diff --git a/WebLab/Usuarios/UsuarioEdit.aspx b/WebLab/Usuarios/UsuarioEdit.aspx index 1a892ea0..c835e709 100644 --- a/WebLab/Usuarios/UsuarioEdit.aspx +++ b/WebLab/Usuarios/UsuarioEdit.aspx @@ -221,42 +221,8 @@ - <%-- - - Efector - - - - * - - --%> - - - Area/Laboratorio: - - - - - - - - Perfil: - - - - * - - - * - - - + + Activo: @@ -322,20 +288,51 @@
-
- - -
- - <%-- - --%> - - +
+ + + + + + + + + + + + + + + + + + + + + + @@ -343,9 +340,11 @@ - + + + - @@ -308,11 +315,11 @@ @@ -323,20 +330,20 @@ * + ValidationGroup="1" Enabled="False">* - diff --git a/WebLab/Usuarios/UsuarioEdit.aspx.cs b/WebLab/Usuarios/UsuarioEdit.aspx.cs index 9f6c1234..e2f90d5a 100644 --- a/WebLab/Usuarios/UsuarioEdit.aspx.cs +++ b/WebLab/Usuarios/UsuarioEdit.aspx.cs @@ -29,9 +29,6 @@ public partial class UsuarioEdit : System.Web.UI.Page public Configuracion oC = new Configuracion(); CrystalReportSource oCr = new CrystalReportSource(); - - - protected void Page_PreInit(object sender, EventArgs e) { if (Session["idUsuario"] != null) @@ -122,16 +119,16 @@ private void MostrarDatos() txtPassword.Visible = false; lblPassword.Visible = false; chkActivo.Checked = oRegistro.Activo; - ddlPerfil.SelectedValue = oRegistro.IdPerfil.IdPerfil.ToString(); + //ddlPerfil.SelectedValue = oRegistro.IdPerfil.IdPerfil.ToString(); --> Se muestra en grilla tab Efector //ddlEfector.SelectedValue = oRegistro.IdEfector.IdEfector.ToString(); //ddlEfector.Enabled = false; - if (ddlPerfil.SelectedValue == "15") - { - CargarEfectorLabo(); - ddlEfectorDestino.SelectedValue = oRegistro.IdEfectorDestino.IdEfector.ToString(); - } + //if (ddlPerfil.SelectedValue == "15") --> Se muestra en grilla tab Efector + //{ + // CargarEfectorLabo(); + // ddlEfectorDestino.SelectedValue = oRegistro.IdEfectorDestino.IdEfector.ToString(); + //} - ddlArea.SelectedValue = oRegistro.IdArea.ToString(); + //ddlArea.SelectedValue = oRegistro.IdArea.ToString();--> Se muestra en grilla tab Efector chkExterno.Checked = oRegistro.Externo; rfvPassword.Enabled = false; email.Value = oRegistro.Email; @@ -456,6 +453,7 @@ protected void ddlPerfil_SelectedIndexChanged(object sender, EventArgs e) lblEfectorDestino.Visible = false; } ddlEfectorDestino.UpdateAfterCallBack = true; + lblEfectorDestino.UpdateAfterCallBack = true; } private void CargarEfectorLabo() @@ -474,6 +472,7 @@ private void CargarEfectorLabo() rvEfectorDestino.Enabled = true; rvEfectorDestino.UpdateAfterCallBack = true; lblEfectorDestino.Visible = true; + lblEfectorDestino.UpdateAfterCallBack = true; } protected void customValidacionGeneral0_ServerValidate(object source, ServerValidateEventArgs args) @@ -707,29 +706,31 @@ private bool puedeAgregarEfector(DataTable dt) private void AgregarEfector() { lblMensajeEfector.Visible = false; - if (ddlEfector3.SelectedValue != "0") + + DataTable dt = ViewState["efectores"] as DataTable; + + if (puedeAgregarEfector(dt)) { - DataTable dt = ViewState["efectores"] as DataTable; + string efectorDestino = (ddlEfectorDestino.SelectedItem != null ) ? ddlEfectorDestino.SelectedItem.Text : ddlEfector3.SelectedItem.Text ; + int efDestino = (ddlEfectorDestino.SelectedItem != null ) ? int.Parse( ddlEfectorDestino.SelectedValue.ToString()) : int.Parse( ddlEfector3.SelectedValue); - if (puedeAgregarEfector(dt)) + dt.Rows.Add(0, ddlEfector3.SelectedItem.Text, ddlEfector3.SelectedValue, ddlArea.SelectedItem.Text, ddlArea.SelectedValue, ddlPerfil.SelectedItem.Text, ddlPerfil.SelectedValue, efectorDestino, efDestino); + ViewState["efectores"] = dt; + //Si el usuario existe lo guarda en la base, sino lo deja en el viewstate para guardarlo cuando se guarde el usuario + if (Request["id"] != null) { - dt.Rows.Add(0, ddlEfector3.SelectedItem.Text, ddlEfector3.SelectedValue, ddlArea.SelectedItem.Text, ddlArea.SelectedValue, ddlPerfil.SelectedItem.Text, ddlPerfil.SelectedValue, ddlEfectorDestino.SelectedItem.Text, ddlEfectorDestino.SelectedValue); - ViewState["efectores"] = dt; - //Si el usuario existe lo guarda en la base, sino lo deja en el viewstate para guardarlo cuando se guarde el usuario - if (Request["id"] != null) - { - Usuario oUsuario = new Usuario(); - oUsuario = (Usuario)oUsuario.Get(typeof(Usuario), int.Parse(Request["id"])); - GuardarEfectores(oUsuario); - } + Usuario oUsuario = new Usuario(); + oUsuario = (Usuario)oUsuario.Get(typeof(Usuario), int.Parse(Request["id"])); + GuardarEfectores(oUsuario); } - else - { - lblMensajeEfector.Visible = true; - lblMensajeEfector.Text = "Alerta: Efector ya ingresado para el usuario."; + } + else + { + lblMensajeEfector.Visible = true; + lblMensajeEfector.Text = "Alerta: Efector ya ingresado para el usuario."; - } } + lblMensajeEfector.UpdateAfterCallBack = true; } @@ -770,11 +771,13 @@ private void GuardarEfectores(Business.Data.Usuario oUsuario) oRegistro.IdPerfil = int.Parse(row["idPerfil"].ToString()); oRegistro.IdArea = int.Parse(row["idArea"].ToString()); oRegistro.IdEfectorDestino = int.Parse(row["idEfectorDestino"].ToString()); + oRegistro.IdUsuarioRegistro = int.Parse(Session["idUsuario"].ToString()); + oRegistro.FechaRegistro = DateTime.Now; oRegistro.Save(); //solo genero auditoria la primera vez que vincula el efector if (!yaTieneAuditoriaVincula.Contains(idEfector)) - oAuditor.GrabaAuditoria("Vincula " + oEfector.Nombre +" Perfil:" + row["Perfil"].ToString() + " Area:" + row["Area"].ToString(), oRegistro.IdUsuario.IdUsuario, oRegistro.IdUsuario.Username); + oAuditor.GrabaAuditoria("Vincula " + oEfector.Nombre, oRegistro.IdUsuario.IdUsuario, oRegistro.IdUsuario.Username, "", "Perfil:" + row["Perfil"].ToString() + " Area:" + row["Area"].ToString()); //actualizo el viewstate con los nuevos ID row[0] = oRegistro.IdUsuarioEfector; @@ -859,7 +862,7 @@ private void EliminarEfector(object idEfector) Usuario oAuditor = new Usuario(); oAuditor = (Usuario)oAuditor.Get(typeof(Usuario), int.Parse(Session["idUsuario"].ToString())); - oAuditor.GrabaAuditoria("DesVincula " + s_efector.TrimStart().TrimEnd() + " Perfil:" + oPerfil.Nombre + " Area:" + nombreArea, int.Parse(Request["id"].ToString()), s_username); + oAuditor.GrabaAuditoria("DesVincula " + s_efector.TrimStart().TrimEnd(), int.Parse(Request["id"].ToString()), s_username, "Perfil:" + oPerfil.Nombre + " Area:" + nombreArea, ""); } } //else: esta solo en la visualizacion pero no en la base de datos diff --git a/WebLab/Usuarios/UsuarioEdit.aspx.designer.cs b/WebLab/Usuarios/UsuarioEdit.aspx.designer.cs index 1cb5bb1c..9bbc587b 100644 --- a/WebLab/Usuarios/UsuarioEdit.aspx.designer.cs +++ b/WebLab/Usuarios/UsuarioEdit.aspx.designer.cs @@ -1,10 +1,10 @@ //------------------------------------------------------------------------------ -// -// Este código fue generado por una herramienta. +// +// This code was generated by a tool. // -// Los cambios en este archivo podrían causar un comportamiento incorrecto y se perderán si -// se vuelve a generar el código. -// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// //------------------------------------------------------------------------------ namespace WebLab.Usuarios @@ -15,353 +15,362 @@ public partial class UsuarioEdit { /// - /// Control HFCurrTabIndex. + /// HFCurrTabIndex control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.HiddenField HFCurrTabIndex; /// - /// Control txtApellido. + /// txtApellido control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.TextBox txtApellido; /// - /// Control rfvApellido. + /// rfvApellido control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.RequiredFieldValidator rfvApellido; /// - /// Control txtNombre. + /// txtNombre control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.TextBox txtNombre; /// - /// Control rfvNombre. + /// rfvNombre control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.RequiredFieldValidator rfvNombre; /// - /// Control txtFirmaValidacion. + /// txtFirmaValidacion control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.TextBox txtFirmaValidacion; /// - /// Control email. + /// email control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.HtmlControls.HtmlInputGenericControl email; /// - /// Control txtTelefono. + /// txtTelefono control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.TextBox txtTelefono; /// - /// Control ddlTipoAutenticacion. + /// ddlTipoAutenticacion control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.DropDownList ddlTipoAutenticacion; /// - /// Control txtUsername. + /// txtUsername control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.TextBox txtUsername; /// - /// Control rfvUsuario. + /// rfvUsuario control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.RequiredFieldValidator rfvUsuario; /// - /// Control customValidacionGeneral. + /// customValidacionGeneral control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.CustomValidator customValidacionGeneral; /// - /// Control customValidacionGeneral0. + /// customValidacionGeneral0 control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.CustomValidator customValidacionGeneral0; /// - /// Control customValidacionGeneral1. + /// customValidacionGeneral1 control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.CustomValidator customValidacionGeneral1; /// - /// Control lblPassword. + /// lblPassword control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.Label lblPassword; /// - /// Control txtPassword. + /// txtPassword control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.TextBox txtPassword; /// - /// Control rfvPassword. + /// rfvPassword control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.RequiredFieldValidator rfvPassword; /// - /// Control chkAdministrador. + /// chkAdministrador control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::Anthem.CheckBox chkAdministrador; /// - /// Control chkActivo. + /// chkActivo control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.CheckBox chkActivo; /// - /// Control chkExterno. + /// chkExterno control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.CheckBox chkExterno; /// - /// Control chkRequiereContrasenia. + /// chkRequiereContrasenia control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.CheckBox chkRequiereContrasenia; /// - /// Control customValidatorExterno. + /// customValidatorExterno control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.CustomValidator customValidatorExterno; /// - /// Control customValidatorEfector. + /// customValidatorEfector control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.CustomValidator customValidatorEfector; /// - /// Control lnkRegresar. + /// lnkRegresar control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.LinkButton lnkRegresar; /// - /// Control btnGuardar. + /// btnGuardar control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.Button btnGuardar; /// - /// Control ValidationSummary1. + /// ValidationSummary1 control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.ValidationSummary ValidationSummary1; /// - /// Control btnAuditoria. + /// btnAuditoria control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.Button btnAuditoria; /// - /// Control btnBlanquear. + /// btnBlanquear control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.Button btnBlanquear; /// - /// Control ddlEfector3. + /// ddlEfector3 control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.DropDownList ddlEfector3; /// - /// Control ddlArea. + /// rfvEfector3 control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RequiredFieldValidator rfvEfector3; + + /// + /// ddlArea control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::Anthem.DropDownList ddlArea; /// - /// Control ddlPerfil. + /// ddlPerfil control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::Anthem.DropDownList ddlPerfil; /// - /// Control rvPerfil. + /// rvPerfil control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::Anthem.RangeValidator rvPerfil; /// - /// Control lblEfectorDestino. + /// lblEfectorDestino control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::Anthem.Label lblEfectorDestino; /// - /// Control ddlEfectorDestino. + /// ddlEfectorDestino control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::Anthem.DropDownList ddlEfectorDestino; /// - /// Control rvEfectorDestino. + /// rvEfectorDestino control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::Anthem.RangeValidator rvEfectorDestino; /// - /// Control btnAgregarEfector. + /// btnAgregarEfector control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::Anthem.Button btnAgregarEfector; /// - /// Control lblMensajeEfector. + /// lblMensajeEfector control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::Anthem.Label lblMensajeEfector; /// - /// Control gvListaEfector. + /// gvListaEfector control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::Anthem.GridView gvListaEfector; /// - /// Control lnkRegresar1. + /// lnkRegresar1 control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.LinkButton lnkRegresar1; } diff --git a/WebLab/Usuarios/UsuarioList.aspx.cs b/WebLab/Usuarios/UsuarioList.aspx.cs index 2a796ad7..4c6b4b62 100644 --- a/WebLab/Usuarios/UsuarioList.aspx.cs +++ b/WebLab/Usuarios/UsuarioList.aspx.cs @@ -171,8 +171,8 @@ private DataTable LeerDatos(string tipo="") firmaValidacion, email, U.telefono, CASE WHEN externo = 1 THEN 'Si' ELSE 'No' END AS externo, P.nombre AS Perfil, E.nombre AS Efector,tipoAutenticacion as [Tipo Autenticacion] FROM Sys_Usuario U WITH (NOLOCK) - INNER JOIN sys_perfil P WITH (NOLOCK) ON U.idPerfil = P.idPerfil INNER JOIN Sys_UsuarioEfector AS UE WITH (NOLOCK) ON UE.idUsuario = U.idUsuario + INNER JOIN sys_perfil P WITH (NOLOCK) ON UE.idPerfil = P.idPerfil INNER JOIN Sys_Efector AS E WITH (NOLOCK) ON E.idEfector = UE.idEfector "; } else @@ -180,8 +180,8 @@ INNER JOIN Sys_UsuarioEfector AS UE WITH (NOLOCK) ON UE.idUsuario = U.idUsuario m_strSQL = @"SELECT U.idUsuario, U.apellido, U.nombre, U.username, P.nombre AS perfil, E.nombre as efector , case when U.activo=1 then 'Si' else 'No' end as habilitado, U.activo as activo , tipoAutenticacion FROM Sys_Usuario U WITH(NOLOCK) - INNER JOIN sys_perfil P WITH (NOLOCK) ON U.idPerfil = P.idPerfil INNER JOIN Sys_UsuarioEfector AS UE WITH (NOLOCK) ON UE.idUsuario = U.idUsuario + INNER JOIN sys_perfil P WITH (NOLOCK) ON UE.idPerfil = P.idPerfil INNER JOIN Sys_Efector AS E WITH (NOLOCK) ON E.idEfector = UE.idEfector "; } From 428c13040dafeb8bf3e7109a5181738bd707c6b1 Mon Sep 17 00:00:00 2001 From: Vanesa Rimada <80859025+vrimada@users.noreply.github.com> Date: Thu, 14 May 2026 10:21:39 -0300 Subject: [PATCH 3/5] feature: cambio de dropdiwn a chosen --- WebLab/Usuarios/UsuarioList.aspx | 30 +++++- WebLab/Usuarios/UsuarioList.aspx.designer.cs | 106 +++++++++---------- 2 files changed, 80 insertions(+), 56 deletions(-) diff --git a/WebLab/Usuarios/UsuarioList.aspx b/WebLab/Usuarios/UsuarioList.aspx index 7ebec2e6..b35ce2bf 100644 --- a/WebLab/Usuarios/UsuarioList.aspx +++ b/WebLab/Usuarios/UsuarioList.aspx @@ -1,10 +1,15 @@ <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="UsuarioList.aspx.cs" Inherits="WebLab.Usuarios.UsuarioList" MasterPageFile="~/Site1.Master" %> + + + + + + + + - - - diff --git a/WebLab/Usuarios/UsuarioList.aspx.designer.cs b/WebLab/Usuarios/UsuarioList.aspx.designer.cs index 730a6fd0..cbc62520 100644 --- a/WebLab/Usuarios/UsuarioList.aspx.designer.cs +++ b/WebLab/Usuarios/UsuarioList.aspx.designer.cs @@ -1,10 +1,10 @@ //------------------------------------------------------------------------------ -// -// Este código fue generado por una herramienta. +// +// This code was generated by a tool. // -// Los cambios en este archivo podrían causar un comportamiento incorrecto y se perderán si -// se vuelve a generar el código. -// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// //------------------------------------------------------------------------------ namespace WebLab.Usuarios @@ -15,146 +15,146 @@ public partial class UsuarioList { /// - /// Control pnlTitulo. + /// pnlTitulo control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.HtmlControls.HtmlGenericControl pnlTitulo; /// - /// Control ddlEfector. + /// ddlEfector control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.DropDownList ddlEfector; /// - /// Control ddlPerfil. + /// ddlPerfil control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.DropDownList ddlPerfil; /// - /// Control txtUsername. + /// txtUsername control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.TextBox txtUsername; /// - /// Control ddlTipoAutenticacion. + /// ddlTipoAutenticacion control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.DropDownList ddlTipoAutenticacion; /// - /// Control txtNombre. + /// txtNombre control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.TextBox txtNombre; /// - /// Control txtApellido. + /// txtApellido control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.TextBox txtApellido; /// - /// Control ddlHabilitados. + /// ddlHabilitados control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.DropDownList ddlHabilitados; /// - /// Control chbAdministrador. + /// chbAdministrador control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.CheckBox chbAdministrador; /// - /// Control lnkExcel. + /// lnkExcel control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.LinkButton lnkExcel; /// - /// Control btnBuscar. + /// btnBuscar control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.Button btnBuscar; /// - /// Control btnAgregar. + /// btnAgregar control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.Button btnAgregar; /// - /// Control pnlLista. + /// pnlLista control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.Panel pnlLista; /// - /// Control CantidadRegistros. + /// CantidadRegistros control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.Label CantidadRegistros; /// - /// Control CurrentPageLabel. + /// CurrentPageLabel control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.Label CurrentPageLabel; /// - /// Control gvLista. + /// gvLista control. /// /// - /// Campo generado automáticamente. - /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.GridView gvLista; } From 8c3be73a7318dcaf737d12af757f511cbccd3e7b Mon Sep 17 00:00:00 2001 From: Vanesa Rimada <80859025+vrimada@users.noreply.github.com> Date: Thu, 14 May 2026 10:59:02 -0300 Subject: [PATCH 4/5] fix: para alta de usuaario se corrige el dt --- WebLab/Usuarios/UsuarioEdit.aspx | 6 +- WebLab/Usuarios/UsuarioEdit.aspx.cs | 24 +- WebLab/Usuarios/UsuarioEdit.aspx.designer.cs | 250 +++++++++---------- 3 files changed, 138 insertions(+), 142 deletions(-) diff --git a/WebLab/Usuarios/UsuarioEdit.aspx b/WebLab/Usuarios/UsuarioEdit.aspx index 2cc2c0b7..6a05ef22 100644 --- a/WebLab/Usuarios/UsuarioEdit.aspx +++ b/WebLab/Usuarios/UsuarioEdit.aspx @@ -196,7 +196,7 @@ MaxLength="50">* - + @@ -324,7 +324,7 @@ - +
Efector: + - +
Area/Laboratorio: + + +
+ Perfil: + + + * + +
+ + + * +
+ - -


+ - - - + + + + + + + + + + + + - - - - - - - + + + + + diff --git a/WebLab/Usuarios/UsuarioEdit.aspx.cs b/WebLab/Usuarios/UsuarioEdit.aspx.cs index 3f09ffc4..9f6c1234 100644 --- a/WebLab/Usuarios/UsuarioEdit.aspx.cs +++ b/WebLab/Usuarios/UsuarioEdit.aspx.cs @@ -142,7 +142,7 @@ private void MostrarDatos() habilitarAdministrador(); Usuario oAuditor = new Usuario(); oAuditor = (Usuario)oAuditor.Get(typeof(Usuario), int.Parse(Session["idUsuario"].ToString())); - ViewState["idAuditoriaConsulta"] = oAuditor.GrabaAuditoria("Consulta", oRegistro.IdUsuario, oRegistro.Username); + oAuditor.GrabaAuditoria("Consulta", oRegistro.IdUsuario, oRegistro.Username); MostrarEfectores(); ddlTipoAutenticacion.SelectedValue = oRegistro.TipoAutenticacion.Trim(); @@ -297,9 +297,13 @@ private DataTable LeerDatosEfector() { if (Request["id"] != null) { - string m_strSQL = @" SELECT IR.idUsuarioEfector, R.nombre as nombre , R.idEfector - FROM Sys_UsuarioEfector IR (nolock) - INNER JOIN sys_efector R (nolock) ON R.idEfector=IR.idEfector + string m_strSQL = @" SELECT IR.idUsuarioEfector, R.nombre as nombre , R.idEfector, isnull(A.nombre,'Todas') AS Area, Ir.idArea, P.nombre AS Perfil, P.idPerfil, dest.nombre as [Efector Destino], IR.idEfectorDestino + FROM Sys_UsuarioEfector IR (nolock) + INNER JOIN sys_efector R (nolock) ON R.idEfector=IR.idEfector + LEFT JOIN LAB_Area A (nolock) ON A.idArea = IR.idArea + INNER JOIN Sys_Perfil P (nolock) ON P.idPerfil = IR.idPerfil + INNER JOIN sys_efector dest (nolock) ON dest.idEfector=IR.idEfectorDestino + WHERE IR.idUsuario=" + Request["id"].ToString(); @@ -447,8 +451,9 @@ protected void ddlPerfil_SelectedIndexChanged(object sender, EventArgs e) } else { - //Si habia algun valor seleccionado lo limpio - ddlEfectorDestino.SelectedValue = "0"; + + ddlEfectorDestino.SelectedValue = ddlEfector3.SelectedValue; + lblEfectorDestino.Visible = false; } ddlEfectorDestino.UpdateAfterCallBack = true; } @@ -468,6 +473,7 @@ private void CargarEfectorLabo() ddlEfectorDestino.Visible = true; rvEfectorDestino.Enabled = true; rvEfectorDestino.UpdateAfterCallBack = true; + lblEfectorDestino.Visible = true; } protected void customValidacionGeneral0_ServerValidate(object source, ServerValidateEventArgs args) @@ -607,27 +613,29 @@ private void guardarAuditoria(Usuario oRegistro) if (oRegistro.Administrador != chkAdministrador.Checked) { oAuditor.GrabaAuditoria("Modifica Administrador", oRegistro.IdUsuario, oRegistro.Username, oRegistro.Administrador ? "Si" : "No", chkAdministrador.Checked ? "Si" : "No"); } - if (oRegistro.IdArea.ToString() != ddlArea.SelectedValue) - { - string nombreArea = ""; - if (oRegistro.IdArea != 0) - { - Area oArea = new Area(); - oArea = (Area)oArea.Get(typeof(Area), oRegistro.IdArea); - nombreArea = oArea.Nombre; - } - else nombreArea = "Todas"; - oAuditor.GrabaAuditoria("Modifica Area", oRegistro.IdUsuario, oRegistro.Username, nombreArea, ddlArea.SelectedItem.Text); + //Esta auditoria se guarda con la vinculacion del efector ya que van todos juntos + //if (oRegistro.IdArea.ToString() != ddlArea.SelectedValue) + //{ + // string nombreArea = ""; + // if (oRegistro.IdArea != 0) + // { + // Area oArea = new Area(); + // oArea = (Area)oArea.Get(typeof(Area), oRegistro.IdArea); + // nombreArea = oArea.Nombre; + // } + // else nombreArea = "Todas"; + + // oAuditor.GrabaAuditoria("Modifica Area", oRegistro.IdUsuario, oRegistro.Username, nombreArea, ddlArea.SelectedItem.Text); - } + //} - if (oRegistro.IdPerfil.IdPerfil.ToString() != ddlPerfil.SelectedValue) - { oAuditor.GrabaAuditoria("Modifica Perfil", oRegistro.IdUsuario, oRegistro.Username, oRegistro.IdPerfil.Nombre, ddlPerfil.SelectedItem.Text); } + //if (oRegistro.IdPerfil.IdPerfil.ToString() != ddlPerfil.SelectedValue) + //{ oAuditor.GrabaAuditoria("Modifica Perfil", oRegistro.IdUsuario, oRegistro.Username, oRegistro.IdPerfil.Nombre, ddlPerfil.SelectedItem.Text); } - if (ddlEfectorDestino.SelectedValue != "" && oRegistro.IdEfectorDestino.IdEfector.ToString() != ddlEfectorDestino.SelectedValue) - { oAuditor.GrabaAuditoria("Modifica Laboratorio Destino", oRegistro.IdUsuario, oRegistro.Username, oRegistro.IdEfectorDestino.Nombre, ddlEfectorDestino.SelectedItem.Text); } + //if (ddlEfectorDestino.SelectedValue != "" && oRegistro.IdEfectorDestino.IdEfector.ToString() != ddlEfectorDestino.SelectedValue) + //{ oAuditor.GrabaAuditoria("Modifica Laboratorio Destino", oRegistro.IdUsuario, oRegistro.Username, oRegistro.IdEfectorDestino.Nombre, ddlEfectorDestino.SelectedItem.Text); } if (oRegistro.Activo != chkActivo.Checked) { oAuditor.GrabaAuditoria("Modifica Activo", oRegistro.IdUsuario, oRegistro.Username, oRegistro.Activo ? "Si" : "No", chkActivo.Checked ? "Si" : "No"); } @@ -648,7 +656,7 @@ protected void gvListaEfector_RowDataBound(object sender, GridViewRowEventArgs e { if (e.Row.RowType == DataControlRowType.DataRow) { - ImageButton CmdEliminar = (ImageButton)e.Row.Cells[1].Controls[1]; + ImageButton CmdEliminar = (ImageButton)e.Row.Cells[4].Controls[1]; CmdEliminar.CommandArgument = this.gvListaEfector.DataKeys[e.Row.RowIndex].Value.ToString(); CmdEliminar.CommandName = "Eliminar"; CmdEliminar.ToolTip = "Eliminar"; @@ -705,7 +713,7 @@ private void AgregarEfector() if (puedeAgregarEfector(dt)) { - dt.Rows.Add(0, ddlEfector3.SelectedItem.Text, ddlEfector3.SelectedValue); + dt.Rows.Add(0, ddlEfector3.SelectedItem.Text, ddlEfector3.SelectedValue, ddlArea.SelectedItem.Text, ddlArea.SelectedValue, ddlPerfil.SelectedItem.Text, ddlPerfil.SelectedValue, ddlEfectorDestino.SelectedItem.Text, ddlEfectorDestino.SelectedValue); ViewState["efectores"] = dt; //Si el usuario existe lo guarda en la base, sino lo deja en el viewstate para guardarlo cuando se guarde el usuario if (Request["id"] != null) @@ -759,11 +767,14 @@ private void GuardarEfectores(Business.Data.Usuario oUsuario) oRegistro.IdUsuario = oUsuario; oRegistro.IdEfector = oEfector; oRegistro.Activo = true; + oRegistro.IdPerfil = int.Parse(row["idPerfil"].ToString()); + oRegistro.IdArea = int.Parse(row["idArea"].ToString()); + oRegistro.IdEfectorDestino = int.Parse(row["idEfectorDestino"].ToString()); oRegistro.Save(); //solo genero auditoria la primera vez que vincula el efector if (!yaTieneAuditoriaVincula.Contains(idEfector)) - oAuditor.GrabaAuditoria("Vincula " + oEfector.Nombre, oRegistro.IdUsuario.IdUsuario, oRegistro.IdUsuario.Username); + oAuditor.GrabaAuditoria("Vincula " + oEfector.Nombre +" Perfil:" + row["Perfil"].ToString() + " Area:" + row["Area"].ToString(), oRegistro.IdUsuario.IdUsuario, oRegistro.IdUsuario.Username); //actualizo el viewstate con los nuevos ID row[0] = oRegistro.IdUsuarioEfector; @@ -786,6 +797,12 @@ private void MostrarEfectores() dt.Columns.Add("idUsuarioEfector", typeof(int)); dt.Columns.Add("nombre", typeof(string)); dt.Columns.Add("idEfector", typeof(int)); + dt.Columns.Add("Area", typeof(string)); + dt.Columns.Add("idArea", typeof(string)); + dt.Columns.Add("Perfil", typeof(string)); + dt.Columns.Add("idPerfil", typeof(string)); + dt.Columns.Add("EfectorDestino", typeof(string)); + dt.Columns.Add("idEfectorDestino", typeof(string)); } //le asigno clave primaria para despues poder buscar por este valor @@ -821,11 +838,28 @@ private void EliminarEfector(object idEfector) { string s_efector = oRegistro.IdEfector.Nombre; string s_username = oRegistro.IdUsuario.Username; + int perfil = oRegistro.IdPerfil; + int area = oRegistro.IdArea; oRegistro.Delete(); - /////Auditoria + + //Auditoria + ////Area + + string nombreArea = ""; + if (area != 0) + { + Area oArea = new Area(); + oArea = (Area)oArea.Get(typeof(Area), area); + nombreArea = oArea.Nombre; + } + else nombreArea = "Todas"; + //Perfil + Perfil oPerfil = new Perfil(); + oPerfil = (Perfil)oPerfil.Get(typeof(Perfil), perfil); + Usuario oAuditor = new Usuario(); oAuditor = (Usuario)oAuditor.Get(typeof(Usuario), int.Parse(Session["idUsuario"].ToString())); - oAuditor.GrabaAuditoria("DesVincula " + s_efector.TrimStart().TrimEnd(), int.Parse(Request["id"].ToString()), s_username); + oAuditor.GrabaAuditoria("DesVincula " + s_efector.TrimStart().TrimEnd() + " Perfil:" + oPerfil.Nombre + " Area:" + nombreArea, int.Parse(Request["id"].ToString()), s_username); } } //else: esta solo en la visualizacion pero no en la base de datos @@ -835,7 +869,7 @@ private void EliminarEfector(object idEfector) else { lblMensajeEfector.Visible = true; - lblMensajeEfector.Text = "Alerta: Debe tener al menos 1 efector asociado"; + lblMensajeEfector.Text = "Alerta: Debe tener al menos un perfil, con area y efector asociado"; lblMensajeEfector.UpdateAfterCallBack = true; puedeEliminar = false; } diff --git a/WebLab/Usuarios/UsuarioEdit.aspx.designer.cs b/WebLab/Usuarios/UsuarioEdit.aspx.designer.cs index fcde6f90..1cb5bb1c 100644 --- a/WebLab/Usuarios/UsuarioEdit.aspx.designer.cs +++ b/WebLab/Usuarios/UsuarioEdit.aspx.designer.cs @@ -177,148 +177,157 @@ public partial class UsuarioEdit protected global::Anthem.CheckBox chkAdministrador; /// - /// Control ddlArea. + /// Control chkActivo. /// /// /// Campo generado automáticamente. /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// - protected global::Anthem.DropDownList ddlArea; + protected global::System.Web.UI.WebControls.CheckBox chkActivo; /// - /// Control ddlPerfil. + /// Control chkExterno. /// /// /// Campo generado automáticamente. /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// - protected global::Anthem.DropDownList ddlPerfil; + protected global::System.Web.UI.WebControls.CheckBox chkExterno; /// - /// Control rvPerfil. + /// Control chkRequiereContrasenia. /// /// /// Campo generado automáticamente. /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// - protected global::Anthem.RangeValidator rvPerfil; + protected global::System.Web.UI.WebControls.CheckBox chkRequiereContrasenia; /// - /// Control ddlEfectorDestino. + /// Control customValidatorExterno. /// /// /// Campo generado automáticamente. /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// - protected global::Anthem.DropDownList ddlEfectorDestino; + protected global::System.Web.UI.WebControls.CustomValidator customValidatorExterno; /// - /// Control rvEfectorDestino. + /// Control customValidatorEfector. /// /// /// Campo generado automáticamente. /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// - protected global::Anthem.RangeValidator rvEfectorDestino; + protected global::System.Web.UI.WebControls.CustomValidator customValidatorEfector; /// - /// Control chkActivo. + /// Control lnkRegresar. /// /// /// Campo generado automáticamente. /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// - protected global::System.Web.UI.WebControls.CheckBox chkActivo; + protected global::System.Web.UI.WebControls.LinkButton lnkRegresar; /// - /// Control chkExterno. + /// Control btnGuardar. /// /// /// Campo generado automáticamente. /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// - protected global::System.Web.UI.WebControls.CheckBox chkExterno; + protected global::System.Web.UI.WebControls.Button btnGuardar; /// - /// Control chkRequiereContrasenia. + /// Control ValidationSummary1. /// /// /// Campo generado automáticamente. /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// - protected global::System.Web.UI.WebControls.CheckBox chkRequiereContrasenia; + protected global::System.Web.UI.WebControls.ValidationSummary ValidationSummary1; /// - /// Control customValidatorExterno. + /// Control btnAuditoria. /// /// /// Campo generado automáticamente. /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// - protected global::System.Web.UI.WebControls.CustomValidator customValidatorExterno; + protected global::System.Web.UI.WebControls.Button btnAuditoria; /// - /// Control customValidatorEfector. + /// Control btnBlanquear. /// /// /// Campo generado automáticamente. /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// - protected global::System.Web.UI.WebControls.CustomValidator customValidatorEfector; + protected global::System.Web.UI.WebControls.Button btnBlanquear; /// - /// Control lnkRegresar. + /// Control ddlEfector3. /// /// /// Campo generado automáticamente. /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// - protected global::System.Web.UI.WebControls.LinkButton lnkRegresar; + protected global::System.Web.UI.WebControls.DropDownList ddlEfector3; /// - /// Control btnGuardar. + /// Control ddlArea. /// /// /// Campo generado automáticamente. /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// - protected global::System.Web.UI.WebControls.Button btnGuardar; + protected global::Anthem.DropDownList ddlArea; /// - /// Control ValidationSummary1. + /// Control ddlPerfil. /// /// /// Campo generado automáticamente. /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// - protected global::System.Web.UI.WebControls.ValidationSummary ValidationSummary1; + protected global::Anthem.DropDownList ddlPerfil; /// - /// Control btnAuditoria. + /// Control rvPerfil. /// /// /// Campo generado automáticamente. /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// - protected global::System.Web.UI.WebControls.Button btnAuditoria; + protected global::Anthem.RangeValidator rvPerfil; /// - /// Control btnBlanquear. + /// Control lblEfectorDestino. /// /// /// Campo generado automáticamente. /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// - protected global::System.Web.UI.WebControls.Button btnBlanquear; + protected global::Anthem.Label lblEfectorDestino; /// - /// Control ddlEfector3. + /// Control ddlEfectorDestino. /// /// /// Campo generado automáticamente. /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// - protected global::System.Web.UI.WebControls.DropDownList ddlEfector3; + protected global::Anthem.DropDownList ddlEfectorDestino; + + /// + /// Control rvEfectorDestino. + /// + /// + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// + protected global::Anthem.RangeValidator rvEfectorDestino; /// /// Control btnAgregarEfector. From 0b84d93638e58c4f005cc9ec19b91c71ae6913d3 Mon Sep 17 00:00:00 2001 From: Vanesa Rimada <80859025+vrimada@users.noreply.github.com> Date: Thu, 14 May 2026 09:50:58 -0300 Subject: [PATCH 2/5] validacion de ingreso de efectores y fix de lista de usuarios con nuevo esquema de perfiles --- WebLab/Usuarios/UsuarioEdit.aspx | 23 +- WebLab/Usuarios/UsuarioEdit.aspx.cs | 61 ++--- WebLab/Usuarios/UsuarioEdit.aspx.designer.cs | 253 ++++++++++--------- WebLab/Usuarios/UsuarioList.aspx.cs | 4 +- 4 files changed, 180 insertions(+), 161 deletions(-) diff --git a/WebLab/Usuarios/UsuarioEdit.aspx b/WebLab/Usuarios/UsuarioEdit.aspx index c835e709..2cc2c0b7 100644 --- a/WebLab/Usuarios/UsuarioEdit.aspx +++ b/WebLab/Usuarios/UsuarioEdit.aspx @@ -293,14 +293,21 @@
Efector: - - + + * +
Area/Laboratorio: - +
Perfil: - + * + ValidationGroup="1">*
- +
+
@@ -369,7 +369,7 @@ - + diff --git a/WebLab/Usuarios/UsuarioEdit.aspx.cs b/WebLab/Usuarios/UsuarioEdit.aspx.cs index e2f90d5a..da647cd4 100644 --- a/WebLab/Usuarios/UsuarioEdit.aspx.cs +++ b/WebLab/Usuarios/UsuarioEdit.aspx.cs @@ -294,7 +294,7 @@ private DataTable LeerDatosEfector() { if (Request["id"] != null) { - string m_strSQL = @" SELECT IR.idUsuarioEfector, R.nombre as nombre , R.idEfector, isnull(A.nombre,'Todas') AS Area, Ir.idArea, P.nombre AS Perfil, P.idPerfil, dest.nombre as [Efector Destino], IR.idEfectorDestino + string m_strSQL = @" SELECT IR.idUsuarioEfector, R.nombre as nombre , R.idEfector, isnull(A.nombre,'Todas') AS Area, Ir.idArea, P.nombre AS Perfil, P.idPerfil, dest.nombre as EfectorDestino, IR.idEfectorDestino FROM Sys_UsuarioEfector IR (nolock) INNER JOIN sys_efector R (nolock) ON R.idEfector=IR.idEfector LEFT JOIN LAB_Area A (nolock) ON A.idArea = IR.idArea @@ -418,22 +418,18 @@ protected void btnBlanquear_Click(object sender, EventArgs e) protected void customValidacionGeneral_ServerValidate(object source, ServerValidateEventArgs args) { - - //if (Request["id"] == null) // Validar tambien en modificacion + Usuario oRegistro = new Usuario(); + oRegistro = (Usuario)oRegistro.Get(typeof(Usuario), "Username", txtUsername.Text.Trim()); + if (oRegistro != null) { - - Usuario oRegistro = new Usuario(); - - oRegistro = (Usuario)oRegistro.Get(typeof(Usuario), "Username", txtUsername.Text.Trim()); - if (oRegistro != null) + if (Request["id"] != null) { - if (Request["id"] != null) - if (oRegistro.IdUsuario != int.Parse(Request["id"])) //que no compare el username del que estoy modificando - args.IsValid = false; - - return; - + if (oRegistro.IdUsuario != int.Parse(Request["id"])) //que no compare el username del que estoy modificando + args.IsValid = false; } + else args.IsValid = false; + + return; } } diff --git a/WebLab/Usuarios/UsuarioEdit.aspx.designer.cs b/WebLab/Usuarios/UsuarioEdit.aspx.designer.cs index 9bbc587b..2e89f1fd 100644 --- a/WebLab/Usuarios/UsuarioEdit.aspx.designer.cs +++ b/WebLab/Usuarios/UsuarioEdit.aspx.designer.cs @@ -1,10 +1,10 @@ //------------------------------------------------------------------------------ -// -// This code was generated by a tool. +// +// Este código fue generado por una herramienta. // -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// +// Los cambios en este archivo podrían causar un comportamiento incorrecto y se perderán si +// se vuelve a generar el código. +// //------------------------------------------------------------------------------ namespace WebLab.Usuarios @@ -15,362 +15,362 @@ public partial class UsuarioEdit { /// - /// HFCurrTabIndex control. + /// Control HFCurrTabIndex. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.HiddenField HFCurrTabIndex; /// - /// txtApellido control. + /// Control txtApellido. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.TextBox txtApellido; /// - /// rfvApellido control. + /// Control rfvApellido. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.RequiredFieldValidator rfvApellido; /// - /// txtNombre control. + /// Control txtNombre. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.TextBox txtNombre; /// - /// rfvNombre control. + /// Control rfvNombre. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.RequiredFieldValidator rfvNombre; /// - /// txtFirmaValidacion control. + /// Control txtFirmaValidacion. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.TextBox txtFirmaValidacion; /// - /// email control. + /// Control email. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.HtmlControls.HtmlInputGenericControl email; /// - /// txtTelefono control. + /// Control txtTelefono. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.TextBox txtTelefono; /// - /// ddlTipoAutenticacion control. + /// Control ddlTipoAutenticacion. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.DropDownList ddlTipoAutenticacion; /// - /// txtUsername control. + /// Control txtUsername. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.TextBox txtUsername; /// - /// rfvUsuario control. + /// Control rfvUsuario. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.RequiredFieldValidator rfvUsuario; /// - /// customValidacionGeneral control. + /// Control customValidacionGeneral. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.CustomValidator customValidacionGeneral; /// - /// customValidacionGeneral0 control. + /// Control customValidacionGeneral0. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.CustomValidator customValidacionGeneral0; /// - /// customValidacionGeneral1 control. + /// Control customValidacionGeneral1. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.CustomValidator customValidacionGeneral1; /// - /// lblPassword control. + /// Control lblPassword. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.Label lblPassword; /// - /// txtPassword control. + /// Control txtPassword. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.TextBox txtPassword; /// - /// rfvPassword control. + /// Control rfvPassword. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.RequiredFieldValidator rfvPassword; /// - /// chkAdministrador control. + /// Control chkAdministrador. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::Anthem.CheckBox chkAdministrador; /// - /// chkActivo control. + /// Control chkActivo. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.CheckBox chkActivo; /// - /// chkExterno control. + /// Control chkExterno. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.CheckBox chkExterno; /// - /// chkRequiereContrasenia control. + /// Control chkRequiereContrasenia. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.CheckBox chkRequiereContrasenia; /// - /// customValidatorExterno control. + /// Control customValidatorExterno. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.CustomValidator customValidatorExterno; /// - /// customValidatorEfector control. + /// Control customValidatorEfector. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.CustomValidator customValidatorEfector; /// - /// lnkRegresar control. + /// Control lnkRegresar. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.LinkButton lnkRegresar; /// - /// btnGuardar control. + /// Control btnGuardar. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.Button btnGuardar; /// - /// ValidationSummary1 control. + /// Control ValidationSummary1. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.ValidationSummary ValidationSummary1; /// - /// btnAuditoria control. + /// Control btnAuditoria. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.Button btnAuditoria; /// - /// btnBlanquear control. + /// Control btnBlanquear. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.Button btnBlanquear; /// - /// ddlEfector3 control. + /// Control ddlEfector3. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.DropDownList ddlEfector3; /// - /// rfvEfector3 control. + /// Control rfvEfector3. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.RequiredFieldValidator rfvEfector3; /// - /// ddlArea control. + /// Control ddlArea. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::Anthem.DropDownList ddlArea; /// - /// ddlPerfil control. + /// Control ddlPerfil. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::Anthem.DropDownList ddlPerfil; /// - /// rvPerfil control. + /// Control rvPerfil. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::Anthem.RangeValidator rvPerfil; /// - /// lblEfectorDestino control. + /// Control lblEfectorDestino. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::Anthem.Label lblEfectorDestino; /// - /// ddlEfectorDestino control. + /// Control ddlEfectorDestino. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::Anthem.DropDownList ddlEfectorDestino; /// - /// rvEfectorDestino control. + /// Control rvEfectorDestino. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::Anthem.RangeValidator rvEfectorDestino; /// - /// btnAgregarEfector control. + /// Control btnAgregarEfector. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::Anthem.Button btnAgregarEfector; /// - /// lblMensajeEfector control. + /// Control lblMensajeEfector. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::Anthem.Label lblMensajeEfector; /// - /// gvListaEfector control. + /// Control gvListaEfector. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::Anthem.GridView gvListaEfector; /// - /// lnkRegresar1 control. + /// Control lnkRegresar1. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.LinkButton lnkRegresar1; } From ebc8fa8525d3b379421e986f5a10d29e384437e5 Mon Sep 17 00:00:00 2001 From: Vanesa Rimada <80859025+vrimada@users.noreply.github.com> Date: Tue, 19 May 2026 09:41:00 -0300 Subject: [PATCH 5/5] fix: que se cargue como labo destino en perfil distinto de adm externo el efector de logueo --- WebLab/Usuarios/UsuarioEdit.aspx.cs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/WebLab/Usuarios/UsuarioEdit.aspx.cs b/WebLab/Usuarios/UsuarioEdit.aspx.cs index da647cd4..2e6160ab 100644 --- a/WebLab/Usuarios/UsuarioEdit.aspx.cs +++ b/WebLab/Usuarios/UsuarioEdit.aspx.cs @@ -438,16 +438,19 @@ protected void ddlPerfil_SelectedIndexChanged(object sender, EventArgs e) { rvEfectorDestino.Enabled = false; ddlEfectorDestino.Visible = false; + lblEfectorDestino.Visible = false; if (ddlPerfil.SelectedValue == "15") { CargarEfectorLabo(); } else { - - ddlEfectorDestino.SelectedValue = ddlEfector3.SelectedValue; - lblEfectorDestino.Visible = false; + if (ddlEfectorDestino.Items.FindByValue(ddlEfector3.SelectedValue.ToString()) != null)//si existe el efector seleccionado se carga en destino + ddlEfectorDestino.SelectedValue = ddlEfector3.SelectedValue; + else + ddlEfectorDestino.SelectedValue = "0"; } + ddlEfectorDestino.UpdateAfterCallBack = true; lblEfectorDestino.UpdateAfterCallBack = true; } @@ -707,7 +710,12 @@ private void AgregarEfector() if (puedeAgregarEfector(dt)) { - string efectorDestino = (ddlEfectorDestino.SelectedItem != null ) ? ddlEfectorDestino.SelectedItem.Text : ddlEfector3.SelectedItem.Text ; + string efectorDestino = ""; + if (ddlEfectorDestino.SelectedItem != null && ddlEfectorDestino.SelectedValue != "0") + efectorDestino=ddlEfectorDestino.SelectedItem.Text; + else + efectorDestino= ddlEfector3.SelectedItem.Text ; + int efDestino = (ddlEfectorDestino.SelectedItem != null ) ? int.Parse( ddlEfectorDestino.SelectedValue.ToString()) : int.Parse( ddlEfector3.SelectedValue); dt.Rows.Add(0, ddlEfector3.SelectedItem.Text, ddlEfector3.SelectedValue, ddlArea.SelectedItem.Text, ddlArea.SelectedValue, ddlPerfil.SelectedItem.Text, ddlPerfil.SelectedValue, efectorDestino, efDestino);