public static bool CheckUserSecurity(LoginType expectedType)
        {
            bool isSuccess = true;

            var sessionLogin = HttpContext.Current.Session[LoginHelper.UserLoginSessionID];

            if (sessionLogin == null)
                return false;

            string userLogin = sessionLogin.ToString();

            // se cosulta el login

            using (var context = new multilingualEntities())
            {
                login currentLogin =
                    (
                        from l in context.logins
                        where l.Login1.Equals(userLogin)
                        select l
                    ).FirstOrDefault<login>();

                LoginType currentType = (LoginType)currentLogin.Type.Value;

                if (currentType == LoginType.Admin)
                    return true;

                if (expectedType != currentType)
                    isSuccess = false;
            }

            return isSuccess;
        }
        protected void btnGuardarVerif_Click(object sender, EventArgs e)
        {
            var date = txtFechaVerif.Text;

            using (var context = new multilingualEntities())
            {
                var alumno =
                    (
                        from a in context.alumnoes
                        where a.id_alumno == this.IdAlumno
                        select a
                    ).First();

                var matricula =
                    (
                        from m in context.matriculas
                        where m.idMatricula == alumno.Matricula_idMatricula
                        select m
                    ).First();

                matricula.Fecha_Validacion = DateTime.Parse(date);

                context.SaveChanges();
                Label2.Text = "Se ha guardado con éxito";
            }
        }
        protected void btnAgregarPago_Click(object sender, EventArgs e)
        {
            pago nuevoPago = new pago()
            {
                Cantidad_Recibida = Convert.ToInt32(txtRecibido.Text),
                Fecha_de_Pago = DateTime.Parse(txtFecha.Text),
                Metodo_Pago = ddlMetodoPago.SelectedValue,
                Numero_Cuota = Convert.ToInt32(txtNoCuota.Text),
                Numero_Factura = !String.IsNullOrEmpty(txtNoFactura.Text) ? Convert.ToInt32(txtNoFactura.Text) : 0,
                Numero_Recibo =!String.IsNullOrEmpty(txtNoRecibo.Text) ? Convert.ToInt32(txtNoRecibo.Text) : 0,
                Tipo_Pago = ddlTipoPago.SelectedValue,
                Titular_idTitular = this.TitularId,
                Observaciones = txtObservacion.Text,
                Elaboro = txtElaboro.Text,
                Interes = !String.IsNullOrEmpty(txtInteres.Text) ? Convert.ToInt32(txtInteres.Text) : 0,
                Promocion = !String.IsNullOrEmpty(txtPromo.Text) ? Convert.ToInt32(txtPromo.Text) : 0,
                Mes_Pagado = ddlMesPagado.SelectedValue

            };

            using (var context = new multilingualEntities())
            {
                context.pagos.Add(nuevoPago);
                context.SaveChanges();

                Response.Redirect("../MessageAction.aspx?m=8");
            }
        }
        protected void btnLogin_Click(object sender, EventArgs e)
        {
            using (var context = new multilingualEntities())
            {
                var login =
                    (
                        from u in context.logins
                        where u.Login1.Equals(txtLogin.Text) && u.Password.Equals(txtPassword.Text)
                        select u
                    ).FirstOrDefault();

                if (login == null)
                {
                    Response.Redirect("Login.aspx?m=2");
                    return;
                }

                LoginHelper.SaveUserSession(login.Login1);
                Response.Redirect("Default.aspx");
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                bool result = LoginHelper.CheckUserSecurity(LoginType.Payments);
                if (!result)
                {
                    // Redirigir a login
                    Response.Redirect("../Login.aspx?m=1");
                    return;
                }
            }

            if (!IsPostBack)
            {
                var id = Convert.ToInt32(Request.QueryString["id"]);
                this.IdTitular = id;

                agregarPagoUrl.HRef += "?id=" + id;
                // Consultar alumnos del titular
                using (var context = new multilingualEntities())
                {
                    var titular =
                                (
                                    from t in context.titulars
                                    where t.idTitular == this.IdTitular
                                    select t.No_Confidencial
                                ).First();
                    if (titular.HasValue)
                    {
                        this.Verificada = true;
                    }

                    // Consultar matriculas
                    var matriculas =
                        (
                            from m in context.matriculas
                            where m.Titular_idTitular == id
                            select m.idMatricula
                        ).ToList();

                    var alumnos =
                        (
                            from a in context.alumnoes.Include("idiomas")
                            where matriculas.Contains(a.Matricula_idMatricula)
                            select a
                        ).ToList();

                    listadoAlumno.DataSource = alumnos;
                    listadoAlumno.DataBind();

                    // Se consulta la direcicón
                    var dirId =
                        (
                             from d in context.titulars
                             where d.idTitular == id
                             select d.Dom_Titular_idDom_Titular1
                        ).First();

                    var datosDir =
                        (
                            from dir in context.dom_titular
                            where dir.idDom_Titular == dirId
                            select new
                            {
                                Calle = dir.Calle,
                                Numero = dir.Numero,
                                Colonia = dir.Colonia,
                                Ciudad = dir.Ciudad
                            }
                        ).ToList();

                    gridDir.DataSource = datosDir;
                    gridDir.DataBind();
                }
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                bool result = LoginHelper.CheckUserSecurity(LoginType.Payments);
                if (!result)
                {
                    // Redirigir a login
                    Response.Redirect("../Login.aspx?m=1");
                    return;
                }
            }

            if (IsPostBack)
                return;

            var id =Convert.ToInt32(Request.QueryString["id"]);
            this.TitularId = id;

            using (var context = new multilingualEntities() )
            {
                var matriculas =
                    (
                        from m in context.matriculas
                        where m.Titular_idTitular == id
                        select m
                    ).ToList();

                lblFecha.Text = DateTime.Now.ToShortDateString();

                // precio básico
                decimal? precioBasico = 0;
                // pagos
                decimal? pagos = 0;
                decimal? primerPago = 0;
                foreach (var item in matriculas)
                {
                    precioBasico += item.Costo_Total;

                    primerPago =
                        (
                            from p in context.pagos
                            where p.Titular_idTitular == id
                            orderby p.Fecha_de_Pago ascending
                            select p.Cantidad_Recibida
                        ).FirstOrDefault();
                }

                var pagosEfectuados =
                    (
                        from p in context.pagos
                        where p.Titular_idTitular == id
                        select p
                    ).ToList();

                foreach (var item in pagosEfectuados)
                {
                    pagos += item.Cantidad_Recibida;
                }

                // vencimiento
                lblVencimiento.Text = matriculas[0].Vigencia;

                lblNoCuotas.Text = matriculas[0].Cuota.Value.ToString();
                lblCuotaMensual.Text = matriculas[0].Importe_Mensual.Value.ToString();
                lblNoContrato.Text = matriculas[0].Numero_Contrato.Value.ToString();
                lblRp.Text = matriculas[0].No_RP.Value.ToString();
                lblPrecio.Text = precioBasico.ToString();
                lblCuotaInicial.Text = primerPago.ToString();
                lblSaldo.Text = (precioBasico - pagos).ToString();

            }
        }
        protected void btnAgregar_Click(object sender, EventArgs e)
        {
            var random = new Random();
            matricula nuevaMatricula = new matricula()
            {
                idMatricula = random.Next(int.MaxValue),
                Vigencia = txtVigencia.Text,
                No_Consecutivo = Convert.ToInt32(txtNoConsec.Text),
                No_Puntos = Convert.ToInt32(txtNoPuntos.Text),
                Numero_Contrato = Convert.ToInt32(txtNoContrato.Text),
                Fecha_Matricula = DateTime.Parse(txtFecha.Text),
                No_RP = Convert.ToInt32(txtNoRp.Text),
                Organizacion_idOrganizacion = Convert.ToInt32(ddlOrganizacion.SelectedValue),
                Subgerente_idSubgerente = Convert.ToInt32(ddlSubGerente.SelectedValue),
                Supervisor_idSupervisor = Convert.ToInt32(ddlSupervisor.SelectedValue),
                Asesor_idAsesor = Convert.ToInt32(ddlAsesor.SelectedValue),
                Tipo_Programa = ddlTipoPrograma.Text,
                Tiempo_Servicio = txtTiempoServicio.Text,
                Importe_Mensual = Convert.ToDecimal(txtImporteMensual.Text),
                Costo_Total = Convert.ToDecimal(txtCostoTotal.Text),
                Estatus = ddlStatus.SelectedValue,
                Observaciones = txtObservacionesStatus.Text,
                Estrategia = ddlEstrategia.SelectedValue,
                Cuota = Convert.ToInt32(txtCuotas.Text)
            };

            //pago pagoInscripción = new pago()
            //{
            //    Cantidad_Recibida = Convert.ToDecimal(txtPagoInscripcion.Text),
            //    Numero_Cuota = Convert.ToInt32(txtCuotas.Text),
            //    Metodo_Pago = ddlTipoPago.SelectedValue,
            //    Fecha_de_Pago = cldFechaPago.SelectedDate,
            //    Tipo_Pago = "Inscripción"
            //};

            titular titular = (titular)Session[Add.titularSessionId];
            dom_titular domicilio;

            if (titular != null)
            {
                // ya se seleccionó un titular
                domicilio = (dom_titular)Session[Add.domicilioTitularSessionId];
            }
            else
            {
                domicilio = new dom_titular()
                {
                    idDom_Titular = random.Next(int.MaxValue),
                    Calle = txtCalle.Text,
                    Colonia = txtColonia.Text,
                    Numero = Convert.ToInt32(txtNumCasa.Text),
                    Ciudad = "Chihuahua"
                };

                // agregar datos nuevos
                titular = new titular()
                {
                    idTitular = random.Next(int.MaxValue),
                    Nombre = txtNombreTitular.Text,
                    Email = txtEmailTitular.Text,
                    RFC = txtRfc.Text,
                    Telefono_Particular = txtTelefonoPart.Text,
                    Telefono_Celular = txtTelefonoCel.Text,
                    Telefono_Oficina = txtTelOfi.Text,
                    Compania = txtEmpresaLabora.Text,
                    Profesion = txtCargo.Text,
                    Dom_Titular_idDom_Titular1 = domicilio.idDom_Titular
                };
            }

            //pagoInscripción.Titular_idTitular = titular.idTitular;

            int alumnoId = random.Next(int.MaxValue);
            alumno nuevoAlumno = new alumno()
            {
                id_alumno = alumnoId,
                Nombre = txtNombreEstudiante.Text,
                Matricula_idMatricula = nuevaMatricula.idMatricula
            };

            idioma first = new idioma();
            idioma second = new idioma();

            using (var dummyContext = new multilingualEntities())
            {
                var firstId = Convert.ToInt32(ddlIdioma.SelectedValue);
                var secondID = Convert.ToInt32(ddlIdiomaOpcional.SelectedValue);

                first =
                    (
                        from i in dummyContext.idiomas
                        where i.idIdiomas == firstId
                        select i
                    ).FirstOrDefault();

                second =
                    (
                        from i in dummyContext.idiomas
                        where i.idIdiomas == secondID
                        select i
                    ).FirstOrDefault();
            }

            nuevoAlumno.idiomas.Add(first);
            if (second != null)
            {
                nuevoAlumno.idiomas.Add(second);
            }

            using (var context = new multilingualEntities())
            {

                if (this.isNew)
                {
                    context.dom_titular.Add(domicilio);
                    context.SaveChanges();
                    context.titulars.Add(titular);
                    context.SaveChanges();
                }
                else
                {
                    Session[Add.domicilioTitularSessionId] = null;
                    Session[Add.titularSessionId] = null;
                }

                nuevaMatricula.Titular_idTitular = titular.idTitular;

                context.matriculas.Add(nuevaMatricula);
                context.SaveChanges();
                //context.pagos.Add(pagoInscripción);
                //context.SaveChanges();

                context.alumnoes.Add(nuevoAlumno);
                context.SaveChanges();

                Response.Redirect("../MessageAction.aspx?m=9");
            }
        }
        protected void btnBuscarTitular_Click(object sender, EventArgs e)
        {
            string busqueda = txtBuscarTitular.Text;
            using (var context = new multilingualEntities())
            {
                var titular =
                    (
                        from t in context.titulars
                        where t.RFC == busqueda
                        select t
                    ).FirstOrDefault();

                if (titular != null)
                {
                    // somos felices
                    // llenar el formulario con los datos del titular
                    Session[titularSessionId] = titular;

                    // consultamos su dirección
                    var dir =
                        (
                            from d in context.dom_titular
                            where d.idDom_Titular == titular.Dom_Titular_idDom_Titular1
                            select d
                        ).FirstOrDefault();

                    Session[Add.domicilioTitularSessionId] = dir;

                    var dummyList = new List<titular>();
                    dummyList.Add(titular);

                    var html = String.Format("<table><tr><th>Nombre: {0}</th></tr><tr><th>RFC: {1}</th></tr></table>",titular.Nombre,titular.RFC);
                    divHelper.InnerHtml = html;

                    txtNombreTitular.Text = titular.Nombre;
                    txtEmailTitular.Text = titular.Email;
                    txtRfc.Text = titular.RFC;
                    txtTelefonoPart.Text = titular.Telefono_Particular;
                    txtTelefonoCel.Text = titular.Telefono_Celular;
                    txtCalle.Text = dir.Calle;
                    txtColonia.Text = dir.Colonia;
                    txtNumCasa.Text = dir.Numero.ToString();
                    txtEmpresaLabora.Text = titular.Compania;
                    txtCargo.Text = titular.Profesion;

                }
                else
                    lblResultadoBusqueda.Visible = true;
            }
        }