protected void st_grilla_OnReadData(object sender, StoreReadDataEventArgs e)
    {
      try
      {
        int start = e.Start;
        int limit = NumInt.Init(e.Parameters.GetParameter("limit").Value);
        limit = limit == 0 ? e.Limit : limit;
        int page = (start/limit) + 1;

        co_ca_usuarios_no Nomina = new co_ca_usuarios_no();

        Nomina.Pagina = page;
        Nomina.RegistrosPorPaginas = e.Limit;
        Nomina.ColumnaOrden = e.Sort[0].Property;
        Nomina.OrdenColumna =
          (FwpServerControls.FwpDataGridDataBound.Orden)
          Enum.Parse(typeof (FwpServerControls.FwpDataGridDataBound.Orden), e.Sort[0].Direction.ToString(), true);

        IList<object> lista = new List<object>();

        AgregarFiltros_st_grilla(ref Nomina);

        Nomina<co_ca_usuarios_no> data = new bf_ca_usuarios().GetNomina(Nomina);

        foreach (co_ca_usuarios_no n in data.DataSource)
        {
          lista.Add(
            new
              {
                id_usuario = n.id_usuario,
                id_persona = n.id_persona,
                pe_nombrecompleto = n.pe_nombrecompleto,
                us_esvigente = n.us_esvigente,
                us_ultimaconexion = n.us_ultimaconexion.Fecha,
                us_consuser = n.us_consuser,
                us_password = n.us_password,
                us_cambioPassword = n.us_cambioPassword,
                us_ultimoacceso = n.us_ultimoacceso.Fecha,
                us_feccambiopass = n.us_feccambiopass.Fecha,
                us_fechaexpiracion = n.us_fechaexpiracion.Fecha,
                us_intentosfallidos = n.us_intentosfallidos,

              });
        }

        st_grilla.DataSource = lista;
        st_grilla.PageSize = limit;
        PageProxy pageProxy = st_grilla.Proxy[0] as PageProxy;
        if (pageProxy != null) pageProxy.Total = data.Registros;
        st_grilla.DataBind();
      }
      catch (Exception ex)
      {
        Mensajes.Error(ex.Message);
      }
    }
	  protected void BtnEjecutar_Click(object sender, DirectEventArgs e)
	  {
	    try
	    {
	      DataSet res = new bf_ca_usuarios().GetInforme(txtSql.Text);
	      txtResultado.Text = res.GetXml();
	    }
	    catch (Exception ex)
	    {
	      txtResultado.Text = ex.Message;
	    }
	  }
    protected void BtnRecordar_Click(object sender, DirectEventArgs e)
    {
      try
      {
        int IdPersona = NumInt.Init(txtIdPersona.Text);
        co_tg_personas persona = new bf_tg_personas().GetData(IdPersona);
        IList<co_ca_usuarios> listUsuario =
               new bf_ca_usuarios().GetData(new co_ca_usuarios { id_persona = { id = IdPersona } });
        if (listUsuario.Any())
        {
          co_ca_usuarios usuario = listUsuario.FirstOrDefault();
          if (usuario != null)
          {
            string asunto = Constantes.ASUNTO_RC;
            string cuerpo = Constantes.CUERPO_RC;
            string password = new GeneradorPassword(8, 50, 10, 40).GetNewPassword();
            string passwordEncriptada = new Security().Encrypt(password);

            usuario.us_password = passwordEncriptada;
            usuario.us_fechaexpiracion.Fecha = DateTime.Now.AddMinutes(Constantes.ACC_TIEMPO_TOKEN);
            usuario.us_cambioPassword = TiposBases.EstadoRegistro.ACT;

            new bf_ca_usuarios().Save(usuario);

            cuerpo = string.Format(cuerpo, persona.pe_nombrecompleto, usuario.us_consuser, password);
            List<MailAddress> listDestinatarios = new List<MailAddress>();
            listDestinatarios.Add(new MailAddress(persona.pe_email,persona.pe_nombrecompleto));
            if (Mailer.Enviar(asunto, cuerpo, listDestinatarios))
            {
              Mensajes.Show("Mensaje", "Se a Enviado su nueva Contraseña al Correo Ingresado",
                           "window.location.href='Default.aspx'", MessageBox.Icon.INFO);
            }
          }
        }
      }
      catch (Exception ex)
      {
        Mensajes.Error(ex.Message);
      }
    }
    protected void btnCambiarClave_Click(object sender, DirectEventArgs e)
    {
      try
      {
        int idUsuario = FWPConfiguration.get_ID_User(Session.SessionID);
        co_ca_usuarios usuario = new bf_ca_usuarios().GetData(idUsuario);
        if (usuario != null)
        {
          usuario.us_esvigente = TiposBases.EstadoRegistro.ACT;
          usuario.us_cambioPassword = TiposBases.EstadoRegistro.DES;
          usuario.us_fechaexpiracion.Fecha = DateTime.Now.AddYears(1);
          usuario.us_password = new Security().Encrypt(txtNewPass.Text);

          new bf_ca_usuarios().Save(usuario);
          Mensajes.Show("Mensaje", "Clave Cambiada Exitosamente", "window.location.href='Desktop.aspx';", MessageBox.Icon.INFO);
        }
      }
      catch (Exception ex)
      {
        Mensajes.Error(ex.Message);
      }
    }
 protected void BtnGrabar_Click(object sender, DirectEventArgs e)
 {
   try
   {
     Security sec = new Security();
     int id_usuario = FWPConfiguration.get_ID_User(Session.SessionID);
     co_ca_usuarios usuario = new bf_ca_usuarios().GetData(id_usuario);
     string claveActual = sec.Decrypt(usuario.us_password);
     if (claveActual.Equals(txtClaveAntigua.Text.Trim()))
     {
       if (!txtClaveAntigua.Text.Trim().Equals(txtClaveNueva.Text.Trim()))
       {
         usuario.us_password = sec.Encrypt(txtClaveNueva.Text.Trim());
         usuario.us_feccambiopass.Fecha = DateTime.Now;
         usuario = new bf_ca_usuarios().Save(usuario);
         Mensajes.Show("Mensaje",ErrorText.REGISTRO_MODIFICADO,Mensajes.Icon.INFO);
       }
       else
       {
         Mensajes.Error(ErrorText.CLAVE_INGRESADA_REPETIDA);
       }
     }
     else
     {
       txtClaveAntigua.Text = "";
       txtClaveNueva.Text = "";
       txtRepiteClaveNueva.Text = "";
       txtClaveAntigua.Focus();
       Mensajes.Error(ErrorText.CLAVE_INCORRECTA);
     }
   }
   catch (Exception ex)
   {
     Mensajes.Error(ErrorText.ERROR_CAMBIAR_CLAVE, "CambiarClave.BtnGrabar_Click",ex);
   }
 }
    private void CompletarValores(string id)
    {
      try
      {
        co_ca_usuarios obj = new bf_ca_usuarios().GetData(Convert.ToInt32(id));
        cmbIdPersona.SetValueAndFireSelect(obj.id_persona.id);

        strCmbFilterIdPersona.Text = obj.id_persona.descripcion;
        cmbIdPersona.ReadOnly = true;
        txtUsConsuser.ReadOnly = true;
        chk_us_esvigente.Value = EstadosRegistros.ConvertirABool(obj.us_esvigente);
        txtUsConsuser.Text = obj.us_consuser;
        Security sec = new Security();
        txtUsClave.Text = sec.Decrypt(obj.us_password);
        txtUsRepiteClave.Text = sec.Decrypt(obj.us_password);
      }
      catch (Exception ex)
      {
        Mensajes.Error(ex.Message);
      }
    }
    protected void btnGuardar_Click(object sender, DirectEventArgs e)
    {
      try
      {
        Security sec = new Security();
        string mensaje = ErrorText.REGISTRO_INGRESADO;
        co_ca_usuarios usr = new co_ca_usuarios();
        if (hiddenID.Text != "0")
        {
          usr = new bf_ca_usuarios().GetData(hiddenID.Text.ValidaEntero(hiddenID.FieldLabel));
          mensaje = ErrorText.REGISTRO_MODIFICADO;
        }

        usr.id_persona.id = cmbIdPersona.SelectedItem.Value.ValidaEntero(cmbIdPersona.FieldLabel);
        usr.us_esvigente = EstadosRegistros.ConvertirAEstadosRegistros(chk_us_esvigente.Value);
        usr.us_consuser = txtUsConsuser.Text;
        usr.us_password = sec.Encrypt(txtUsClave.Text);

        usr = new bf_ca_usuarios().Save(usr);
        if (usr.id!=0)
        {
          formPanel.Reset();
        }
        Mensajes.Show("Mensaje",mensaje,"CloseIframe();",MessageBox.Icon.INFO);

      }
      catch (Exception)
      {
        Mensajes.Error(ErrorText.ERROR_GUARDAR_REGISTRO);
      }
    }
 protected void strResponsable_OnReadData()
 {
   try
   {
     IList<co_ca_usuarios> listResponsables = new bf_ca_usuarios()
       .GetData(new co_ca_usuarios { activo = TiposBases.EstadoRegistro.ACT });
     if (listResponsables.Any())
     {
       IList<object> lista = new List<object>();
       foreach (co_ca_usuarios usu in listResponsables)
       {
         lista.Add(new { id_usuario = usu.id_usuario, us_consuser = usu.us_consuser, pe_nombrecompleto = usu.id_persona.descripcion });
       }
       strResponsable.DataSource = lista;
       strResponsable.DataBind();
     }
   }
   catch (Exception ex)
   {
     Mensajes.Error(ex.Message);
   }
 }
    protected void btnLogin_Click(object sender, DirectEventArgs e)
    {
      try
      {
        string accesos = new bf_ca_perfilesopciones().GetAccesos(cmbPerfil.SelectedItem.Value.ValidaEntero(cmbPerfil.FieldLabel), 1);
        co_ca_usuarios usuario = new co_ca_usuarios();
        bf_ca_usuarios bfUsuarios = new bf_ca_usuarios();
        usuario.us_consuser = txtUsername.Text.Trim();
        usuario.us_password = txtPassword.Text.Trim();
        usuario = bfUsuarios.Login(usuario);
        if (usuario.id != 0)
        {
          Session["id_usuario"] = usuario.id_usuario;
          FWPConfiguration.set_Cons_User(Session.SessionID, usuario.us_consuser);
          FWPConfiguration.set_ID_User(Session.SessionID, usuario.id_usuario);
          FWPConfiguration.set_Perfil(Session.SessionID, cmbPerfil.SelectedItem.Value.ValidaEntero(cmbPerfil.FieldLabel));
          FWPConfiguration.set_ID_Person(Session.SessionID, usuario.id_persona.id);
          FWPConfiguration.set_Name_Person(Session.SessionID, usuario.id_persona.descripcion);
          FWPConfiguration.set_Accesos(Session.SessionID, accesos);

          co_ca_usuarios us = bfUsuarios.GetData(usuario.id_usuario);
          us.us_ultimoacceso.Fecha = DateTime.Now;
          us.us_intentosfallidos = 0;

          bfUsuarios.Save(us);
          Response.Redirect("Desktop.aspx");

        }
        else
        {
          usuario.us_esvigente= TiposBases.EstadoRegistro.TODOS;
          usuario = new bf_ca_usuarios().GetData(usuario).FirstOrDefault();

          if (usuario != null && usuario.us_cambioPassword == TiposBases.EstadoRegistro.ACT)
          {
            Session["id_usuario"] = usuario.id_usuario;
            FWPConfiguration.set_Cons_User(Session.SessionID, usuario.us_consuser);
            FWPConfiguration.set_ID_User(Session.SessionID, usuario.id_usuario);
            FWPConfiguration.set_Perfil(Session.SessionID, cmbPerfil.SelectedItem.Value.ValidaEntero(cmbPerfil.FieldLabel));
            FWPConfiguration.set_ID_Person(Session.SessionID, usuario.id_persona.id);
            FWPConfiguration.set_Name_Person(Session.SessionID, usuario.id_persona.descripcion);
            FWPConfiguration.set_Accesos(Session.SessionID, accesos);
            Mensajes.Show("Mensaje", "La clave ingresada es una Clave Temporal, debe ingresar una nueva Clave",
              "window.location.href='CambiarContrasena.aspx'", MessageBox.Icon.INFO);
          }
          else
          {
            Mensajes.Error(ErrorText.LOGUEO_INCORRECTO);
            //veo si ingreso bien el usuario para asi contar los intentos fallidos 
            var user = bfUsuarios.GetData(new co_ca_usuarios {us_consuser = txtUsername.Text});
            if (user.Any())
            {
              var coCaUsuarios = user.FirstOrDefault();
              if (coCaUsuarios != null)
              {
                coCaUsuarios.us_intentosfallidos = coCaUsuarios.us_intentosfallidos + 1;
                if (coCaUsuarios.us_intentosfallidos >= Constantes.INTENTOS_FALLIDOS)
                {
                  Mensajes.Error(Constantes.EXCEDIO_INTENTOS_FALLIDOS);
                  coCaUsuarios.us_esvigente = TiposBases.EstadoRegistro.DES;
                }
                bfUsuarios.Save(coCaUsuarios);
                frmLogin.Reset();
              }
            }
          }
        }
      }
      catch (Exception ex)
      {
        Mensajes.Error(ErrorText.LOGUEO + "<br> Excepcion: " + ex.Message);
      }
    }
    protected void txtUsername_Blur(object sender, DirectEventArgs e)
    {
      try
      {
        co_ca_usuarios usuario = new bf_ca_usuarios().GetData(
          new co_ca_usuarios
            {
              us_consuser = txtUsername.Text.Trim(),
            }).FirstOrDefault();

        if (usuario != null)
        {
          hidIdUsuario.Text = usuario.id_usuario.ToString();
          CargarPerfiles();
        }
        else
        {
          Mensajes.Error(ErrorText.USUARIO_NO_EXISTE);
        }
      }
      catch (Exception ex)
      {
        Mensajes.Error(ErrorText.BUSQUEDA_USUARIO, "Default.txtUsername_Blur",ex);
      }
    }
    public void CerrarSesion()
    {
      try
      {
        //registro cuando cerro sesion
        int idUsuario = FWPConfiguration.get_ID_User(Session.SessionID);
        co_ca_usuarios usuario = new bf_ca_usuarios().GetData(idUsuario);
        if (usuario != null)
        {
          usuario.us_ultimaconexion.Fecha = DateTime.Now;
          new bf_ca_usuarios().Save(usuario);
        }

        FWPConfiguration.OnSessionEnd(Session.SessionID);
        Session["id_usuario"] = null;
        FWPConfiguration.OnSessionStart(Session.SessionID);

        Response.Redirect("Default.aspx");
      }
      catch (Exception ex)
      {
        Mensajes.Error(ex.Message);
      }
    }