protected void btnConfirmar_Click(object sender, EventArgs e)
        {
            if (!FaltanDatos())
            {
                if (!VerificarCantidadAgregados())
                {
                    ClientScript.RegisterClientScriptBlock(GetType(), "alert", "alert('ERROR: El número de beneficiarios no coincide con el tipo de sesión.')", true);
                }
                else
                {
                    cSesion unaSesion = new cSesion();
                    switch (ddlTipoSesion.SelectedValue.ToString())
                    {
                    case "Individual":
                        unaSesion.TipoSesion = cUtilidades.TipoSesion.Individual;
                        break;

                    case "Grupo 2":
                        unaSesion.TipoSesion = cUtilidades.TipoSesion.Grupo2;
                        break;

                    case "Grupo 3":
                        unaSesion.TipoSesion = cUtilidades.TipoSesion.Grupo3;
                        break;

                    case "Taller":
                        unaSesion.TipoSesion = cUtilidades.TipoSesion.Taller;
                        break;

                    case "PROES":
                        unaSesion.TipoSesion = cUtilidades.TipoSesion.PROES;
                        break;
                    }
                    unaSesion.Fecha = txtFecha.Text;
                    if (RadioButtonList1.SelectedIndex == 0)
                    {
                        unaSesion.Centro = cUtilidades.Centro.JuanLacaze;
                    }
                    else
                    {
                        unaSesion.Centro = cUtilidades.Centro.NuevaHelvecia;
                    }

                    if (DateTime.Parse(ddlDesde.SelectedValue) >= DateTime.Parse(ddlHasta.SelectedValue))
                    {
                        ClientScript.RegisterClientScriptBlock(GetType(), "alert", "alert('ERROR: La hora de fin de la sesión debe ser mayor a la de inicio.')", true);
                    }
                    else
                    {
                        unaSesion.HoraInicio       = ddlDesde.SelectedValue;
                        unaSesion.HoraFin          = DateTime.Parse(ddlHasta.SelectedValue).AddMinutes(-1).ToShortTimeString();
                        unaSesion.lstBeneficiarios = new List <cBeneficiarioSesion>();
                        cBeneficiarioSesion unBen;
                        for (int i = 0; i < LosBeneficiariosAgregados.Count; i++)
                        {
                            unBen = new cBeneficiarioSesion();
                            unBen.Beneficiario = LosBeneficiariosAgregados[i]; switch (i)
                            {
                            case 0:
                                unBen.Plan = LosBeneficiariosAgregados[i].lstPlanes[ddlPlan1.SelectedIndex];
                                break;

                            case 1:
                                unBen.Plan = LosBeneficiariosAgregados[i].lstPlanes[ddlPlan2.SelectedIndex];
                                break;

                            case 2:
                                unBen.Plan = LosBeneficiariosAgregados[i].lstPlanes[ddlPlan3.SelectedIndex];
                                break;

                            case 3:
                                unBen.Plan = LosBeneficiariosAgregados[i].lstPlanes[ddlPlan4.SelectedIndex];
                                break;

                            case 4:
                                unBen.Plan = LosBeneficiariosAgregados[i].lstPlanes[ddlPlan5.SelectedIndex];
                                break;

                            case 5:
                                unBen.Plan = LosBeneficiariosAgregados[i].lstPlanes[ddlPlan6.SelectedIndex];
                                break;

                            case 6:
                                unBen.Plan = LosBeneficiariosAgregados[i].lstPlanes[ddlPlan7.SelectedIndex];
                                break;

                            case 7:
                                unBen.Plan = LosBeneficiariosAgregados[i].lstPlanes[ddlPlan8.SelectedIndex];
                                break;

                            default:
                                break;
                            }
                            unBen.Estado = cUtilidades.EstadoSesion.SinEstado;
                            unaSesion.lstBeneficiarios.Add(unBen);
                        }

                        unaSesion.lstUsuarios = LosEspecialistasAgregados;
                        List <cUsuario>      lstEspecialistasNoDisponibles = dFachada.SesionVerificarFechaYHorarioUsuario(unaSesion);
                        List <cBeneficiario> lstBeneficiariosNoDisponibles = dFachada.SesionVerificarFechaYHorarioBeneficiario(unaSesion);
                        string sEspecialistas = "";
                        string sBeneficiarios = "";

                        // ESPECIALISTAS NO DISPONIBLES
                        if (lstEspecialistasNoDisponibles.Count > 0)
                        {
                            if (lstEspecialistasNoDisponibles.Count > 1)
                            {
                                sEspecialistas += "Lo especialistas ";
                            }
                            for (int i = 0; i < lstEspecialistasNoDisponibles.Count; i++)
                            {
                                if (i == lstEspecialistasNoDisponibles.Count - 1)
                                {
                                    sEspecialistas += lstEspecialistasNoDisponibles[i].Nombres + " " + lstEspecialistasNoDisponibles[i].Apellidos;
                                }
                                else if (i == 0)
                                {
                                    sEspecialistas += lstEspecialistasNoDisponibles[i].Nombres + " " + lstEspecialistasNoDisponibles[i].Apellidos + ", ";
                                }
                                else if (i == lstEspecialistasNoDisponibles.Count - 2)
                                {
                                    sEspecialistas += lstEspecialistasNoDisponibles[i].Nombres + " " + lstEspecialistasNoDisponibles[i].Apellidos + " y ";
                                }
                            }
                            if (lstEspecialistasNoDisponibles.Count > 1)
                            {
                                sEspecialistas += " no están disponibles para la sesión.";
                            }
                            else
                            {
                                sEspecialistas += " no está disponible para la sesión.";
                            }
                        }
                        if (lstBeneficiariosNoDisponibles.Count > 0)
                        {
                            if (lstEspecialistasNoDisponibles.Count > 1)
                            {
                                sBeneficiarios += "Los beneficiarios ";
                            }
                            for (int i = 0; i < lstBeneficiariosNoDisponibles.Count; i++)
                            {
                                if (i == lstBeneficiariosNoDisponibles.Count - 1)
                                {
                                    sBeneficiarios += lstBeneficiariosNoDisponibles[i].Nombres + " " + lstBeneficiariosNoDisponibles[i].Apellidos;
                                }
                                else if (i == 0)
                                {
                                    sBeneficiarios += lstBeneficiariosNoDisponibles[i].Nombres + " " + lstBeneficiariosNoDisponibles[i].Apellidos + ", ";
                                }
                                else if (i == lstBeneficiariosNoDisponibles.Count - 2)
                                {
                                    sBeneficiarios += lstBeneficiariosNoDisponibles[i].Nombres + " " + lstBeneficiariosNoDisponibles[i].Apellidos + " y ";
                                }
                            }
                            if (lstBeneficiariosNoDisponibles.Count > 1)
                            {
                                sBeneficiarios += " no están disponibles para la sesión.";
                            }
                            else
                            {
                                sBeneficiarios += " no está disponible para la sesión.";
                            }
                        }
                        if (lstEspecialistasNoDisponibles.Count > 0 || lstBeneficiariosNoDisponibles.Count > 0)
                        {
                            ClientScript.RegisterClientScriptBlock(GetType(), "alert", string.Format("alert('ERROR: {0}{1} Su horario coincide con el de otra sesión.')", sEspecialistas, sBeneficiarios), true);
                        }
                        else
                        {
                            if (dFachada.SesionAgregar(unaSesion))
                            {
                                CargarTodo();
                                ClientScript.RegisterClientScriptBlock(GetType(), "alert", "alert('Se agregó la sesión correctamente.')", true);
                                string sScript = "window.opener.location.reload(); window.close();";
                                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "closewindows", sScript, true);
                            }
                            else
                            {
                                ClientScript.RegisterClientScriptBlock(GetType(), "alert", "alert('ERROR: No se pudo agregar la sesión.')", true);
                            }
                        }
                    }
                }
            }
            else
            {
                ClientScript.RegisterClientScriptBlock(GetType(), "alert", "alert('ERROR: Se requiere ingresar todos los datos de la sesión.')", true);
            }
        }
        protected void btnAgregarBeneficiario_Click(object sender, EventArgs e)
        {
            if (!FaltanDatosBeneficiario())
            {
                #region cargar beneficiario
                cBeneficiario unBeneficiario = new cBeneficiario();
                unBeneficiario.Nombres         = txtNombres.Text;
                unBeneficiario.Apellidos       = txtApellidos.Text;
                unBeneficiario.CI              = int.Parse(txtCi.Text);
                unBeneficiario.FechaNacimiento = txtFechaNac.Text;
                unBeneficiario.Domicilio       = txtDomicilio.Text;
                unBeneficiario.Telefono1       = txtTel1.Text;
                unBeneficiario.Telefono2       = txtTel2.Text;
                if (rblSexo.SelectedItem.Text == "Masculino")
                {
                    unBeneficiario.Sexo = "M";
                }
                else
                {
                    unBeneficiario.Sexo = "F";
                }
                if (cbPensionista.Checked)
                {
                    unBeneficiario.Atributario = "Pensionista";
                }
                else
                {
                    unBeneficiario.Atributario = txtAtributario.Text;
                }
                unBeneficiario.MotivoConsulta = txtMotivoConsulta.Text;
                unBeneficiario.Escolaridad    = txtEscolaridad.Text;
                unBeneficiario.Derivador      = txtDerivador.Text;
                unBeneficiario.Email          = txtEmail.Text;
                unBeneficiario.Estado         = false;
                #endregion
                if (dFachada.BeneficiarioTraerEspecificoCI(unBeneficiario) == null)
                {
                    #region cargar plan
                    cPlan unPlan = new cPlan();
                    unPlan.Activo            = false;
                    unPlan.Evaluacion        = cbEvaluacion.Checked;
                    unPlan.Tratamiento       = cbTratamiento.Checked;
                    unPlan.Tipo              = ddlTipoPlanes.SelectedItem.Text;
                    unPlan.FechaInicio       = txtDesde.Text;
                    unPlan.FechaFin          = txtHasta.Text;
                    unBeneficiario.lstPlanes = new List <cPlan>();
                    unBeneficiario.lstPlanes.Add(unPlan);
                    #endregion
                    bool b = dFachada.BeneficiarioAgregar(unBeneficiario);
                    if (b)
                    {
                        unBeneficiario.lstPlanes = dFachada.PlanTraerTodosPorBeneficiario(unBeneficiario);
                    }
                    if (txtDesde.Text != string.Empty || txtHasta.Text != string.Empty)
                    {
                        if (DateTime.Parse(txtDesde.Text) < DateTime.Parse(txtHasta.Text))
                        {
                            if (cbTratamiento.Checked == true || cbEvaluacion.Checked == true)
                            {
                                bool bSeleccionada = false;
                                for (int i = 0; i < cblEspecialidades.Items.Count; i++)
                                {
                                    if (cblEspecialidades.Items[i].Selected)
                                    {
                                        bSeleccionada = true;
                                    }
                                }

                                if (bSeleccionada)
                                {
                                    #region cargar lista de usuarios para las sesiones
                                    // AGREGAR ESPECIALISTAS DE LAS ESPECIALIDADES SELECCIONADAS
                                    List <cUsuario> lstUsuariosSesiones = new List <cUsuario>();
                                    cEspecialidad   unaEspecialidad;
                                    for (int i = 0; i < cblEspecialidades.Items.Count; i++)
                                    {
                                        if (cblEspecialidades.Items[i].Selected)
                                        {
                                            bSeleccionada          = true;
                                            unaEspecialidad        = new cEspecialidad();
                                            unaEspecialidad.Nombre = cblEspecialidades.Items[i].Value;
                                            lstUsuariosSesiones.Add(dFachada.UsuarioTraerPrimeroPorEspecialidad(unaEspecialidad));
                                        }
                                    }
                                    #endregion

                                    #region cargar primera sesion
                                    cSesion unaPrimeraSesion = new cSesion();
                                    unaPrimeraSesion.TipoSesion = cUtilidades.TipoSesion.Individual;
                                    unaPrimeraSesion.Fecha      = txtHasta.Text;
                                    if (rblLocalidad.SelectedIndex == 0)
                                    {
                                        unaPrimeraSesion.Centro = cUtilidades.Centro.JuanLacaze;
                                    }
                                    else
                                    {
                                        unaPrimeraSesion.Centro = cUtilidades.Centro.NuevaHelvecia;
                                    }

                                    unaPrimeraSesion.HoraInicio = "08:00";
                                    unaPrimeraSesion.HoraFin    = "08:45";
                                    cBeneficiarioSesion unBS = new cBeneficiarioSesion();
                                    unBS.Beneficiario = unBeneficiario;
                                    unBS.Plan         = unBeneficiario.lstPlanes[0];
                                    unBS.Estado       = cUtilidades.EstadoSesion.Asistio;
                                    unaPrimeraSesion.lstBeneficiarios = new List <cBeneficiarioSesion>();
                                    unaPrimeraSesion.lstBeneficiarios.Add(unBS);
                                    unaPrimeraSesion.Comentario  = string.Empty;
                                    unaPrimeraSesion.lstUsuarios = new List <cUsuario>();
                                    unaPrimeraSesion.lstUsuarios = lstUsuariosSesiones;
                                    #endregion

                                    #region cargar ultima sesion
                                    cSesion unaUltimaSesion = new cSesion();
                                    unaUltimaSesion.TipoSesion = cUtilidades.TipoSesion.Individual;
                                    unaUltimaSesion.Fecha      = txtHasta.Text;
                                    if (rblLocalidad.SelectedIndex == 0)
                                    {
                                        unaUltimaSesion.Centro = cUtilidades.Centro.JuanLacaze;
                                    }
                                    else
                                    {
                                        unaUltimaSesion.Centro = cUtilidades.Centro.NuevaHelvecia;
                                    }
                                    unaUltimaSesion.HoraInicio = "08:00";
                                    unaUltimaSesion.HoraFin    = "08:45";
                                    cBeneficiarioSesion unBS1 = new cBeneficiarioSesion();
                                    unBS1.Beneficiario = unBeneficiario;
                                    unBS1.Plan         = unBeneficiario.lstPlanes[0];
                                    unBS1.Estado       = cUtilidades.EstadoSesion.Asistio;
                                    unaUltimaSesion.lstBeneficiarios = new List <cBeneficiarioSesion>();
                                    unaUltimaSesion.lstBeneficiarios.Add(unBS1);
                                    unaUltimaSesion.Comentario  = string.Empty;
                                    unaUltimaSesion.lstUsuarios = new List <cUsuario>();
                                    unaUltimaSesion.lstUsuarios = lstUsuariosSesiones;
                                    #endregion

                                    #region cargar diagnostico
                                    unBeneficiario.lstDiagnosticos = new List <cDiagnosticoBeneficiario>();
                                    cDiagnosticoBeneficiario db;
                                    for (int i = 0; i < LosDiagnosticosAgregados.Count; i++)
                                    {
                                        db             = new cDiagnosticoBeneficiario();
                                        db.Diagnostico = LosDiagnosticosAgregados[i];
                                        db.Fecha       = unaUltimaSesion.Fecha;
                                        unBeneficiario.lstDiagnosticos.Add(db);
                                    }
                                    #endregion
                                    if (b && dFachada.SesionAgregar(unaPrimeraSesion) &&
                                        dFachada.SesionAgregar(unaUltimaSesion) &&
                                        dFachada.DiagnosticoAgregarDiagnosticoBeneficiario(unBeneficiario))
                                    {
                                        lblMensajeBeneficiario.Text = "Beneficiario pasivo agregado correctamente.";
                                        LimpiarCampos();
                                    }
                                    else
                                    {
                                        ClientScript.RegisterClientScriptBlock(GetType(), "alert", "alert('ERROR: No se pudo concretar el registro del beneficiario.')", true);
                                    }
                                }
                                else
                                {
                                    ClientScript.RegisterClientScriptBlock(GetType(), "alert", "alert('ERROR: Debe seleccionar las si el beneficiario asistía a tratamiento y/o evaluación.')", true);
                                }
                            }
                            else
                            {
                                ClientScript.RegisterClientScriptBlock(GetType(), "alert", "alert('ERROR: Debe seleccionar las especialidades a las que asistía el beneficiario.')", true);
                            }
                        }
                        else
                        {
                            ClientScript.RegisterClientScriptBlock(GetType(), "alert", "alert('ERROR: La fecha de la primera sesión es mayor a la fecha de la última sesión .')", true);
                        }
                    }
                    else
                    {
                        ClientScript.RegisterClientScriptBlock(GetType(), "alert", "alert('ERROR: Debe seleccionar las fecha de la primera y última sesión del beneficiario.')", true);
                    }
                }
                else
                {
                    ClientScript.RegisterClientScriptBlock(GetType(), "alert", "alert('ERROR: Ya existe un beneficiario en el sistema con esa CI.')", true);
                }
            }
            else
            {
                ClientScript.RegisterClientScriptBlock(GetType(), "alert", "alert('ERROR: Faltan datos del beneficiario.')", true);
            }
        }