protected void CargaPersona()
    {
      try
      {
        co_tg_personas persona = new bf_tg_personas().GetData(FWPConfiguration.get_ID_Person(Session.SessionID));
        txtRut.Text = persona.pe_rut;
        txtNombres.Text = persona.pe_nombres;
        txtApePaterno.Text = persona.pe_appaterno;
        txtApeMaterno.Text = persona.pe_apmaterno;
        txtEmail.Text = persona.pe_email;
        txtDireccion.Text = persona.pe_direccion;
        txtTelefono.Text = persona.pe_telefono;
        txtCelular.Text = persona.pe_celular;
        if (persona.id_pais.id!=0)
        {
          cmbPais.SeleccionarOpcion(persona.id_pais.id.ToString());  
        }
        txtNacionalidad.Text = persona.pe_nacionalidad;
        if (persona.id_estadocivil.id != 0)
        {
          cmbEstadoCivil.SeleccionarOpcion(persona.id_estadocivil.id.ToString());
        }

      }
      catch (Exception ex)
      {
        Mensajes.Error(ErrorText.ERROR_GUARDAR_REGISTRO,ex.TargetSite.ToString(),ex);
      }
    }
    protected void BtnGrabar_Click(object sender, DirectEventArgs e)
    {
      try
      {
        co_tg_personas persona = new bf_tg_personas().GetData(FWPConfiguration.get_ID_Person(Session.SessionID));
        persona.pe_rut = txtRut.Text;
        persona.pe_nombrecompleto = txtNombres.Text + " " + txtApePaterno.Text + " " + txtApeMaterno.Text;
        persona.pe_nombres = txtNombres.Text;
        persona.pe_appaterno = txtApePaterno.Text;
        persona.pe_apmaterno = txtApeMaterno.Text;
        persona.pe_email = txtEmail.Text;
        persona.pe_telefono = txtTelefono.Text;
        persona.pe_celular = txtCelular.Text;
        persona.pe_direccion = txtDireccion.Text;
        if (cmbPais.SelectedItem.Value != null)
        {
          persona.pe_pais = cmbPais.SelectedItem.Text;
          persona.id_pais.id = cmbPais.SelectedItem.Value.ValidaEntero(cmbPais.FieldLabel);
        }
        persona.pe_nacionalidad = txtNacionalidad.Text;
        persona.id_estadocivil.id = cmbEstadoCivil.SelectedItem.Value.ValidaEntero(cmbEstadoCivil.FieldLabel);

        persona = new bf_tg_personas().Save(persona);

        Mensajes.Show("mensaje",ErrorText.REGISTRO_MODIFICADO,Mensajes.Icon.INFO);

      }
      catch (Exception ex)
      {
        Mensajes.Error(ErrorText.ERROR_GUARDAR_REGISTRO,ex.TargetSite.ToString(),ex);
      }
    }
    public void OnReadData_st_cmb_id_persona(object sender, StoreReadDataEventArgs e)
    {
      IList<co_tg_personas> listPersonas = new bf_tg_personas().GetData(new co_tg_personas()).OrderBy(c => c.pe_nombrecompleto).ToList();

      st_cmb_id_persona.DataSource = listPersonas;
      st_cmb_id_persona.DataBind();
    }
    protected void st_grilla_OnReadData(object sender, StoreReadDataEventArgs e)
    {
      
      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_tg_personas_no Nomina = new co_tg_personas_no();

      Nomina.Pagina = page;
      Nomina.RegistrosPorPaginas = 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_tg_personas_no> data = new bf_tg_personas().GetNomina(Nomina);

      foreach (co_tg_personas_no n in data.DataSource)
      {
        lista.Add(
            new
            {
              id_persona = n.id_persona,
              pe_nombrecompleto = n.pe_nombrecompleto,
              pe_nombres = n.pe_nombres,
              pe_appaterno = n.pe_appaterno,
              pe_apmaterno = n.pe_apmaterno,
              id_tiporut = n.id_tiporut,
              pe_rut = n.pe_rut,
              pe_fechaingreso = n.pe_fechaingreso.Fecha,
              pe_nacionalidad = n.pe_nacionalidad,
              pe_giro = n.pe_giro,
              pe_flgsinrut = n.pe_flgsinrut,
              pe_numctacte = n.pe_numctacte,
              id_estadocivil = n.id_estadocivil,
              pe_telefono = n.pe_telefono,
              pe_celular = n.pe_celular,
              id_banco = n.id_banco,
              pe_comuna = n.pe_comuna,
              pe_ciudad = n.pe_ciudad,
              pe_pais = n.pe_pais,
              pe_email = n.pe_email,
              pe_direccion = n.pe_direccion,
              id_pais = n.id_pais,
              id_comuna = n.id_comuna,
              id_ciudad = n.id_ciudad,

            });
      }

      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();
    }
    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 TxtEmail_OnValidation(object sender, RemoteValidationEventArgs e)
 {
   try
   {
     string email = txtCorreo.Text;
     IList<co_tg_personas> listPersonas = new bf_tg_personas().GetData(new co_tg_personas { pe_email = email });
     if (listPersonas.Any())
     {
       if (listPersonas.Count == 1)
       {
         co_tg_personas persona = listPersonas.FirstOrDefault();
         //rescato al usuario y le envio por Email su Contraseña
         if (persona != null)
         {
           e.Success = true;
           txtIdPersona.Value = persona.id_persona;
         }
       }
       else
       {
         e.Success = false;
         e.ErrorMessage = "Error";
         Mensajes.Error(
           "Se encuentra más de un Usuario asociado a este Email, Favor Contactese con su Administrador de Sistema");
       }
     }
     else
     {
       e.Success = false;
       e.ErrorMessage = "Email no se encuentra registrado";
     }
   }
   catch (Exception ex)
   {
     Mensajes.Error(ex.Message);
   }
 }
    protected void strCmbIdPersona_OnReadData(object sender, StoreReadDataEventArgs e)
    {
      try
      {
        int start = e.Start;
        int limit = e.Limit;
        int page = (start / limit) + 1;

        co_tg_personas_no Nomina = new co_tg_personas_no();
        Nomina.Pagina = page;
        Nomina.RegistrosPorPaginas = limit;
        Nomina.ColumnaOrden = e.Parameters.GetParameter("sort").Value;
        Nomina.OrdenColumna =
          (FwpServerControls.FwpDataGridDataBound.Orden)
          Enum.Parse(typeof(FwpServerControls.FwpDataGridDataBound.Orden), e.Parameters.GetParameter("dir").Value, true);

        if (!string.IsNullOrEmpty(strCmbFilterIdPersona.Text))
        {
          Nomina.pe_nombrecompleto = strCmbFilterIdPersona.Text;
        }

        IList<object> lista = new List<object>();
        Nomina<co_tg_personas_no> data = new bf_tg_personas().GetNomina(Nomina);

        foreach (co_tg_personas_no n in data.DataSource)
        {
          lista.Add(
              new
              {
                id_persona = n.id_persona,
                pe_nombrecompleto = n.pe_nombrecompleto,
              });
        }

        strCmbIdPersona.DataSource = lista;
        PageProxy pageProxy = strCmbIdPersona.Proxy[0] as PageProxy;
        if (pageProxy != null)
          pageProxy.Total = data.Registros;
        strCmbIdPersona.DataBind();

        strCmbFilterIdPersona.Text = "";
      }
      catch (Exception)
      {
        Mensajes.Error(ErrorText.USUARIOS_NO_PERSONAS);
      }
    }
    public void OnReadData_st_cmb_id_persona(object sender, StoreReadDataEventArgs e)
    {
      try
      {



        int page = (e.Start / e.Limit) + 1;

        co_tg_personas_no Nomina = new co_tg_personas_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);

        if (!string.IsNullOrEmpty(filtercbx_id_persona.SelectedItem.Text))
        {
          Nomina.pe_nombrecompleto = filtercbx_id_persona.SelectedItem.Text;
        }

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

        Nomina<co_tg_personas_no> data = new bf_tg_personas().GetNomina(Nomina);

        foreach (co_tg_personas_no n in data.DataSource)
        {
          lista.Add(
          new
          {
            id_persona = n.id_persona,
            pe_nombrecompleto = n.pe_nombrecompleto,
          });
        }

        st_cmb_id_persona.DataSource = lista;
        (st_cmb_id_persona.Proxy[0] as PageProxy).Total = data.Registros;
        st_cmb_id_persona.DataBind();
      }
      catch (Exception ex)
      {
        Mensajes.Error(ex.Message);
      }
    }
    private void GetContactos()
    {
      try
      {
        IList<co_tg_personas> lista = new bf_tg_personas().
          GetCargaContacto(new co_tg_personas { activo = TiposBases.EstadoRegistro.ACT });

        if (lista == null) return;
        strPersonas.DataSource = lista.Where(x => x.id_persona != Constantes.PERFIL_ADMINISTRADOR);
        strPersonas.DataBind();
      }
      catch (Exception ex)
      {
        Mensajes.Error(ex.Message);
      }
    }
 private void CompletarValores(string id)
 {
   try
   {
     co_tg_personas obj = new bf_tg_personas().GetData(id.ValidaEntero(hiddenID.FieldLabel));
     txt_pe_nombres.Text = obj.pe_nombres;
     txt_pe_appaterno.Text = obj.pe_appaterno;
     txt_pe_apmaterno.Text = obj.pe_apmaterno;
     txt_pe_rut.Text = obj.pe_rut;
     dat_pe_fechaingreso.Value = obj.pe_fechaingreso.Fecha;
     txt_pe_telefono.Text = obj.pe_telefono;
     txt_pe_celular.Text = obj.pe_celular;
     txt_pe_email.Text = obj.pe_email;
   }
   catch (Exception ex)
   {
     Mensajes.Error(ex.Message);
   }
 }
    public void btnGuardar_Click(object sender, DirectEventArgs e)
    {
      try
      {
        co_tg_personas obj = new co_tg_personas();
        string mensaje = string.Empty;
        if (hiddenID.Text != "0")
        {
          obj = new bf_tg_personas().GetData(hiddenID.Text.ValidaEntero(hiddenID.FieldLabel));
          mensaje = ErrorText.REGISTRO_MODIFICADO;
        }
        else
        {
          mensaje = ErrorText.REGISTRO_INGRESADO;
        }
        obj.pe_nombrecompleto = txt_pe_nombres.Text + " " + txt_pe_appaterno.Text + " " + txt_pe_apmaterno.Text;
        obj.pe_nombres = txt_pe_nombres.Text;
        obj.pe_appaterno = txt_pe_appaterno.Text;
        obj.pe_apmaterno = txt_pe_apmaterno.Text;
        obj.pe_rut = txt_pe_rut.Text;
        obj.pe_telefono = txt_pe_telefono.Text;
        obj.pe_celular = txt_pe_celular.Text;
        obj.pe_email = txt_pe_email.Text;
        obj.pe_fechaingreso.Fecha = (DateTime)dat_pe_fechaingreso.Value;

        if (hiddenID.Text.Equals("0"))
        {
          panelCenter.Reset();
        }
        new bf_tg_personas().Save(obj);

        Mensajes.Show("Mensaje",mensaje,"CloseIframe();",MessageBox.Icon.INFO);
      }
      catch (Exception ex)
      {
        Mensajes.Error(ErrorText.ERROR_GUARDAR_REGISTRO + "<br> Excepcion:" + ex.Message);
      }
    }
    private void CrearExcel(ref IList<object> lista, DirectEventArgs e, bool tienelimite)
    {
      if (lista == null) throw new ArgumentNullException("lista");
      JObject sortinfo = (JObject)JsonConvert.DeserializeObject(e.ExtraParams["SortInfo"]);

      //si falta informacion adicional o agregar nuevas caracteristicas (opcional)
      //JArray columnInfo = (JArray)JsonConvert.DeserializeObject(e.ExtraParams["ColumnInfo"]);


      co_tg_personas_no Nomina = new co_tg_personas_no();
      lista = new List<object>();


      Nomina.Pagina = 1;
      Nomina.RegistrosPorPaginas = 1;
      Nomina.ColumnaOrden = sortinfo["field"].ToString();

      //cuando estan en distintos modales se marea y no encuentra nada
      //Nomina.OrdenColumna = (FwpServerControls.FwpDataGridDataBound.Orden)Enum.Parse(typeof(FwpServerControls.FwpDataGridDataBound.Orden), sortinfo["direction"].ToString(), true);

      Nomina.OrdenColumna = FwpServerControls.FwpDataGridDataBound.Orden.ASC;


      AgregarFiltros_st_grilla(ref Nomina);

      //recupera solo 1 fila
      //para obtener datos como cantidad de registros
      Nomina<co_tg_personas_no> data = new bf_tg_personas().GetNomina(Nomina);

      Nomina.Pagina = 1;
      if (tienelimite)
      {
        Nomina.RegistrosPorPaginas = data.Registros < 65000 ? data.Registros : (int)(65000);
      }
      else
      {
        //idea principal de esto es enviar la todos los registros, pero por temas de rendimiento se limito.
        Nomina.RegistrosPorPaginas = data.Registros < 100000 ? data.Registros : (int)(100000);
      }

      //recuepra la totalidad de datos permitidos
      data = new bf_tg_personas().GetNomina(Nomina);

      foreach (co_tg_personas_no n in data.DataSource)
      {
        lista.Add(
            new
            {
              pe_nombres = n.pe_nombres,
              pe_appaterno = n.pe_appaterno,
              pe_apmaterno = n.pe_apmaterno,
              pe_rut = n.pe_rut,
              pe_telefono = n.pe_telefono,
              pe_celular = n.pe_celular,
              pe_email = n.pe_email,

            });
      }

      //return lista;
    }