public void BuscarCumplimientoOfertasAlumno(ref VistaOfertaAlumno vistaofertaalumno)
        {
            DataSet dsResultado = adOferta.BuscarCumplimientoOfertasAlumno(vistaofertaalumno.Oferta.IdAlumno, vistaofertaalumno.Oferta.IdOferta);

            //Datos generales de la empresa.
            if (dsResultado.Tables.Count > 0)
            {
                List<Oferta> ListaEstudios = new List<Oferta>();
                List<Oferta> ListaSectorEmpresarial = new List<Oferta>();
                List<Oferta> ListaInformacionAdicional = new List<Oferta>();

                if (dsResultado.Tables[0].Rows.Count > 0)
                {
                    foreach (DataRow row in dsResultado.Tables[0].Rows)
                    {
                        Oferta of = new Oferta();
                        of.Requisito = Funciones.ToString(row["Caracteristica"]);
                        of.Cumplimiento = Funciones.ToInt(row["Estado"]);
                        of.Tipo = Funciones.ToInt(row["Tipo2"]);
                        of.Line = Funciones.ToInt(row["Line"]);
                        ListaEstudios.Add(of);
                    }
                    vistaofertaalumno.ListadoEstudios = ListaEstudios;
                }
                if (dsResultado.Tables[1].Rows.Count > 0)
                {
                    foreach (DataRow row in dsResultado.Tables[1].Rows)
                    {
                        Oferta of = new Oferta();
                        of.Requisito = Funciones.ToString(row["Caracteristica"]);
                        of.Cumplimiento = Funciones.ToInt(row["Estado"]);
                        of.Tipo = Funciones.ToInt(row["Tipo2"]);
                        of.Line = Funciones.ToInt(row["Line"]);
                        ListaSectorEmpresarial.Add(of);
                    }
                    vistaofertaalumno.ListadoSectorEmpresarial = ListaSectorEmpresarial;
                }
                if (dsResultado.Tables[2].Rows.Count > 0)
                {
                    foreach (DataRow row in dsResultado.Tables[2].Rows)
                    {
                        Oferta of = new Oferta();
                        of.Requisito = Funciones.ToString(row["Caracteristica"]);
                        of.Cumplimiento = Funciones.ToInt(row["Estado"]);
                        of.Tipo = Funciones.ToInt(row["Tipo2"]);
                        of.Line = Funciones.ToInt(row["Line"]);
                        ListaInformacionAdicional.Add(of);
                    }
                    vistaofertaalumno.ListadoInformacionAdicional = ListaInformacionAdicional;
                }

            }
        }
        public List<Oferta> BuscarAvanzadoOfertasAlumno(VistaOfertaAlumno entidad)
        {
            List<Oferta> listaOferta = new List<Oferta>();

            DataTable dtResultado = adOferta.BuscarAvanzadoOfertasAlumno(entidad);

            for (int i = 0; i <= dtResultado.Rows.Count - 1; i++)
            {
                Oferta oferta = new Oferta();
                oferta.IdOferta = Funciones.ToInt(dtResultado.Rows[i]["IdOferta"]);
                oferta.Compatible = Funciones.ToDecimal(dtResultado.Rows[i]["Compatible"]);
                oferta.FechaPublicacion = Funciones.ToDateTime(dtResultado.Rows[i]["FechaPublicacion"]);
                oferta.NombreComercial = Funciones.ToString(dtResultado.Rows[i]["NombreComercial"]);
                oferta.CargoOfrecido = Funciones.ToString(dtResultado.Rows[i]["CargoOfrecido"]);
                oferta.DesTipoTrabajo = Funciones.ToString(dtResultado.Rows[i]["DesTipoTrabajo"]);
                oferta.Horario = Funciones.ToString(dtResultado.Rows[i]["Horario"]);
                oferta.RemuneracionOfrecida = Funciones.ToDecimal(dtResultado.Rows[i]["RemuneracionOfrecida"]);
                oferta.Mensaje = Funciones.ToInt(dtResultado.Rows[i]["Mensajes"]);
                oferta.IdEmpresa = Funciones.ToInt(dtResultado.Rows[i]["IdEmpresa"]);
                oferta.TotalRegistros = Funciones.ToInt(dtResultado.Rows[i]["CantidadTotal"]);
                listaOferta.Add(oferta);
            }
            return listaOferta;
        }
        public DataTable BuscarAvanzadoOfertasAlumno(VistaOfertaAlumno entidad)
        {
            DataTable dtResultado = new DataTable();

            using (SqlConnection conexion = new SqlConnection(cadenaConexion))
            {
                SqlCommand cmd = new SqlCommand();

                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = "Oferta_BusquedaAvazandaAlumno";
                cmd.Parameters.Add(new SqlParameter("@Publicacion", SqlDbType.Int)).Value = entidad.IdPeriodoPublicacion == null ? 0 :(int) entidad.IdPeriodoPublicacion;
                cmd.Parameters.Add(new SqlParameter("@Carrera", SqlDbType.VarChar, 200)).Value = entidad.IdEstudio == null ? "" : entidad.IdEstudio;
                cmd.Parameters.Add(new SqlParameter("@EstadoEstudio", SqlDbType.VarChar, 6)).Value = entidad.IdEstadoEstudio == null ? "" : entidad.IdEstadoEstudio;
                cmd.Parameters.Add(new SqlParameter("@SectorEmpresa", SqlDbType.VarChar, 6)).Value = entidad.IdSectorEmpresarial == null ? "" : entidad.IdSectorEmpresarial;
                cmd.Parameters.Add(new SqlParameter("@AreaEmpresa", SqlDbType.VarChar, 100)).Value = entidad.AreaEmpresa == null ? "" : entidad.AreaEmpresa;
                cmd.Parameters.Add(new SqlParameter("@Experiencia", SqlDbType.Int)).Value = entidad.AniosExperiencia == null ? 0 : entidad.AniosExperiencia;
                cmd.Parameters.Add(new SqlParameter("@TipoTrabajo", SqlDbType.VarChar, 6)).Value = entidad.IdTipoTrabajo == null ? "" : entidad.IdTipoTrabajo;
                cmd.Parameters.Add(new SqlParameter("@TipoContrato", SqlDbType.VarChar, 6)).Value = entidad.IdContrato == null ? "" : entidad.IdContrato;
                cmd.Parameters.Add(new SqlParameter("@TipoCargo", SqlDbType.VarChar, 6)).Value = entidad.IdTipoCargo == null ? "" : entidad.IdTipoCargo;
                cmd.Parameters.Add(new SqlParameter("@Sueldo", SqlDbType.Int)).Value = entidad.Sueldo == null ? 0 : entidad.Sueldo;
                cmd.Parameters.Add(new SqlParameter("@Ubicacion", SqlDbType.VarChar, 100)).Value = entidad.Ubicacion == null ? "" : entidad.Ubicacion;
                cmd.Parameters.Add(new SqlParameter("@Mensaje", SqlDbType.Int)).Value = entidad.IncluirMensaje ? 1 : 0;
                cmd.Parameters.Add(new SqlParameter("@IdAlumno", SqlDbType.Int)).Value = entidad.IdAlumno;
                cmd.Parameters.Add(new SqlParameter("@PagActual", SqlDbType.Int)).Value = entidad.PaginaActual;
                cmd.Parameters.Add(new SqlParameter("@NumRegistros", SqlDbType.Int)).Value = entidad.NumeroRegistros;

                cmd.Connection = conexion;

                conexion.Open();

                SqlDataAdapter da = new SqlDataAdapter(cmd);
                dtResultado = new DataTable();

                da.Fill(dtResultado);

                conexion.Close();
            }

            return dtResultado;
        }
        /// <summary>
        /// Acción que devuelve la vista de la oferta desde la perspectiva del alumno
        /// En esta llamada no existe alumno.
        /// </summary>
        /// <param name="id">idOferta</param>
        /// <returns></returns>
        public ActionResult VerOferta(string crypt)
        {
            int id = Convert.ToInt32(Helper.Desencriptar(crypt));

            LNAlumno lnAlumno = new LNAlumno();
            LNOferta lnOferta = new LNOferta();
            VistaOfertaAlumno vistaofertalumno = new VistaOfertaAlumno();

            vistaofertalumno = lnOferta.OfertaAlumnoPostulacion((int)id, -1); //Se manda -1 porque no existe alumno en esta vista.
            if (vistaofertalumno.Oferta != null && vistaofertalumno.Oferta.IdEmpresa > 0)
            {
                //Periodo Publicacion
                if (vistaofertalumno.Oferta.Postulacion == 0)
                {
                    List<SelectListItem> listItemsAlumnoCV = new List<SelectListItem>();
                    foreach (AlumnoCV entidad in vistaofertalumno.ListaAlumnoCV)
                    {
                        SelectListItem item = new SelectListItem();
                        item.Text = entidad.NombreCV.ToString();
                        item.Value = entidad.IdCV.ToString();
                        listItemsAlumnoCV.Add(item);
                    }
                    ViewBag.ListaAlumnoCV = listItemsAlumnoCV;

                }

                return View(vistaofertalumno);
            }

            return Content("");
        }
        /// <summary>
        /// Acción que devuelve la vista de la oferta desde la perspectiva del alumno
        /// En esta llamada no existe alumno.
        /// </summary>
        /// <param name="id">idOferta</param>
        /// <returns></returns>
        public ActionResult MostrarOferta(string id)
        {
            string idLegible = Utiles.Helper.Desencriptar(id);

            int idOferta = Convert.ToInt32(idLegible);

            if (idOferta != null)
            {
                LNAlumno lnAlumno = new LNAlumno();
                LNOferta lnOferta = new LNOferta();
                VistaOfertaAlumno vistaofertalumno = new VistaOfertaAlumno();
                //Alumno alumno = new Alumno();
                //TicketAlumno ticket = (TicketAlumno)Session["TicketAlumno"];
                //alumno = lnAlumno.ObtenerAlumnoPorCodigo(ticket.CodAlumnoUTP);
                vistaofertalumno = lnOferta.OfertaAlumnoPostulacion(idOferta, -1); //Se manda -1 porque no existe alumno en esta vista.
                if (vistaofertalumno.Oferta != null && vistaofertalumno.Oferta.IdEmpresa > 0)
                {
                    //Periodo Publicacion
                    if (vistaofertalumno.Oferta.Postulacion == 0)
                    {
                        List<SelectListItem> listItemsAlumnoCV = new List<SelectListItem>();
                        foreach (AlumnoCV entidad in vistaofertalumno.ListaAlumnoCV)
                        {
                            SelectListItem item = new SelectListItem();
                            item.Text = entidad.NombreCV.ToString();
                            item.Value = entidad.IdCV.ToString();
                            listItemsAlumnoCV.Add(item);
                        }
                        ViewBag.ListaAlumnoCV = listItemsAlumnoCV;

                    }

                    return View(vistaofertalumno);
                }
                //else
                //{
                //    return RedirectToAction("BusquedaOferta");
                //}

            }
            //else
            //{
            //    return RedirectToAction("BusquedaOferta");
            //}

            return Content("");
        }
        public List<VistaOfertaAlumno> Oferta_Mostrar()
        {
            List<VistaOfertaAlumno> listaOferta = new List<VistaOfertaAlumno>();

            DataTable dtResultado = adOferta.Obtener();

            for (int i = 0; i <= dtResultado.Rows.Count - 1; i++)
            {
                VistaOfertaAlumno oferta = new VistaOfertaAlumno();

                oferta.FechaPublicacion = Convert.ToDateTime(dtResultado.Rows[i]["FechaPublicacion"]);
                oferta.Empresa = dtResultado.Rows[i]["Empresa"].ToString();

                oferta.CargoOfrecido = dtResultado.Rows[i]["CargoOfrecido"].ToString();
                oferta.Horario = dtResultado.Rows[i]["Horario"].ToString();

                oferta.RemuneracionOfrecida = Convert.ToDecimal(dtResultado.Rows[i]["RemuneracionOfrecida"]);

                oferta.EstadoOferta = dtResultado.Rows[i]["EstadoOferta"].ToString();

                listaOferta.Add(oferta);
            }
            return listaOferta;
        }
        public VistaOfertaAlumno OfertaAlumnoPostulacion(int IdOferta, int IdAlumno)
        {
            VistaOfertaAlumno vistaofertalumno = new VistaOfertaAlumno();
            Alumno alumno = new Alumno();
            vistaofertalumno.Oferta = ObtenerOfertasAlumnoPorID(IdOferta, IdAlumno);
            vistaofertalumno.ListaAlumnoCV = lnalumnocv.ObtenerAlumnoCVPorIdAlumnoCompleto(IdAlumno);
            vistaofertalumno.ListaOfertas = BuscarSimilaresOfertasAlumno(IdOferta);
            BuscarCumplimientoOfertasAlumno(ref vistaofertalumno);

            //06MAR15: Se agrega el listado de carreras UTP y otros estudios
            Oferta oferta = ObtenerPorId(IdOferta);
            vistaofertalumno.ListaEstudiosOtros = oferta.ListaEstudios;
            vistaofertalumno.ListaEstudiosUTP = oferta.CarrerasSeleccionadas;

            //06MAR15: Se establece el campo Cumplimiento para los estudios.
            //Armar pares de datos: Estudio  y TipoEstudio
            //if (vistaofertalumno.ListadoEstudios != null && vistaofertalumno.ListadoEstudios.Count > 0)
            //{
            //    //Se recorre la lista de estudios con el dato de cumplimiento:
            //    for (int i = 0; i < vistaofertalumno.ListadoEstudios.Count-3; i++)
            //    {
            //        //Se obtiene los datos de la fila:
            //        string tipoEstudio = vistaofertalumno.ListadoEstudios[i].Requisito;
            //        int cumplimiento = vistaofertalumno.ListadoEstudios[i].Cumplimiento;
            //        string estudio = vistaofertalumno.ListadoEstudios[i+1].Requisito;

            //        //Se avanza en bloques de 4 porque la lista agrupa TipoEstudio(0), Carrera(1), EstadoEstudio(2), Línea vacía(3).
            //        i = i + 4;

            //        //Se busca la oferta en a listaEstudiosUTP
            //        var estudioOfertaUTP = vistaofertalumno.ListaEstudiosUTP.Where(m => m.TipoDeEstudio.Valor == tipoEstudio && m.Estudio == estudio).FirstOrDefault();
            //        if (estudioOfertaUTP != null)
            //        {
            //            estudioOfertaUTP.Cumplimiento = cumplimiento;
            //        }

            //        //Se busca la oferta en a listaEstudiosOtros
            //        var estudioOfertaOtros = vistaofertalumno.ListaEstudiosOtros.Where(m => m.TipoDeEstudio.Valor == tipoEstudio && m.Estudio == estudio).FirstOrDefault();
            //        if (estudioOfertaOtros != null)
            //        {
            //            estudioOfertaOtros.Cumplimiento = cumplimiento;
            //        }
            //    }
            //}

            return vistaofertalumno;
        }
        public ActionResult EstadoPostulacionOferta(int? id)
        {
            if (id != null)
            {
                VistaOfertaAlumno vistaofertalumno = new VistaOfertaAlumno();
                Alumno alumno = new Alumno();
                TicketAlumno ticket = (TicketAlumno)Session["TicketAlumno"];
                alumno = lnAlumno.ObtenerAlumnoPorCodigo(ticket.CodAlumnoUTP);
                vistaofertalumno = lnoferta.OfertaAlumnoPostulacion((int)id, alumno.IdAlumno);
                if (vistaofertalumno.Oferta != null && vistaofertalumno.Oferta.IdEmpresa > 0)
                {
                    //Periodo Publicacion
                    if (vistaofertalumno.Oferta.Postulacion == 0)
                    {
                        List<SelectListItem> listItemsAlumnoCV = new List<SelectListItem>();
                        foreach (AlumnoCV entidad in vistaofertalumno.ListaAlumnoCV)
                        {
                            SelectListItem item = new SelectListItem();
                            item.Text = entidad.NombreCV.ToString();
                            item.Value = entidad.IdCV.ToString();
                            listItemsAlumnoCV.Add(item);
                        }
                        ViewBag.ListaAlumnoCV = listItemsAlumnoCV;

                    }

                    return PartialView("_EstadoPostulacion", vistaofertalumno.Oferta);
                }
                else
                {
                    return RedirectToAction("BusquedaOferta");
                }

            }
            else
            {
                return RedirectToAction("BusquedaOferta");
            }
        }
        public ActionResult BusquedaSimpleOferta(VistaOfertaAlumno entidad)
        {
            entidad.ListaOfertas = lnoferta.BuscarFiltroOfertasAlumno(entidad.IdAlumno, entidad.PalabraClave == null ? "" : entidad.PalabraClave, entidad.PaginaActual, entidad.NumeroRegistros);
            if (entidad.ListaOfertas.Count > 0)
            {
                entidad.MaxPagina = entidad.ListaOfertas[0].TotalRegistros / Constantes.FILAS_POR_PAGINA;
                int residuo = entidad.MaxPagina % Constantes.FILAS_POR_PAGINA; // Constantes.FILAS_POR_PAGINA;
                if (residuo > 0) entidad.MaxPagina += 1;
            }

            //Actualización para las paginaciones, se completa el objeto Paginación.

            Paginacion paginacion = new Paginacion();
            paginacion.NroPaginaActual = entidad.PaginaActual;
            //paginacion.CantidadTotalResultados = cantidadTotal;
            paginacion.FilasPorPagina = Constantes.FILAS_POR_PAGINA; // Constantes.FILAS_POR_PAGINA;
            paginacion.TotalPaginas = entidad.MaxPagina; // cantidadTotal / Constantes.FILAS_POR_PAGINA; // Constantes.FILAS_POR_PAGINA;
            //int residuo = cantidadTotal % Constantes.FILAS_POR_PAGINA; // Constantes.FILAS_POR_PAGINA;
            //if (residuo > 0) paginacion.TotalPaginas += 1;

            ViewBag.Paginacion = paginacion;
            ViewBag.TipoBusqueda = "Simple";

            return PartialView("_ResultadoBusquedaOfertas", entidad);
        }
        public ActionResult BusquedaOferta()
        {
            VistaOfertaAlumno oferta = new VistaOfertaAlumno();
            LNGeneral lngeneral = new LNGeneral();
            LNOferta lnoferta = new LNOferta();
            Dictionary<int, string> listaperiodopublicacion = new Dictionary<int, string>();
            listaperiodopublicacion.Add(0, "Hoy");
            listaperiodopublicacion.Add(1, "Ayer");
            listaperiodopublicacion.Add(7, "Hace una semana");
            listaperiodopublicacion.Add(15, "Hace 15 dias");
            listaperiodopublicacion.Add(30, "Hace un mes");
            listaperiodopublicacion.Add(31, "Hace más de un mes");

            oferta.ListaEstudios = lngeneral.ObtenerListaValor(5);
            oferta.ListaEstadoEstudio = lngeneral.ObtenerListaValor(43);
            oferta.ListaSectorEmpresarial = lngeneral.ObtenerListaValor(8);
            oferta.ListaTipoTrabajo = lngeneral.ObtenerListaValor(29);
            oferta.ListaContrato = lngeneral.ObtenerListaValor(30);
            oferta.ListaTipoCargo = lngeneral.ObtenerListaValor(9);
            oferta.PeriodoPublicacion = listaperiodopublicacion;

            //Declara Lista
            //Periodo Publicacion
            List<SelectListItem> listItemsPublicacion = new List<SelectListItem>();
            foreach (KeyValuePair<int, string> entidad in oferta.PeriodoPublicacion)
            {
                SelectListItem item = new SelectListItem();
                item.Text = entidad.Value.ToString();
                item.Value = entidad.Key.ToString();
                listItemsPublicacion.Add(item);
            }

            //Carreras y Estudios
            List<SelectListItem> listItemsCarrera = new List<SelectListItem>();
            foreach (ListaValor entidad in oferta.ListaEstudios)
            {
                SelectListItem item = new SelectListItem();
                //item.Text = entidad.Valor.ToUpper();
                item.Text = entidad.Valor.ToString();
                item.Value = entidad.IdListaValor.ToString();
                listItemsCarrera.Add(item);
            }

            //Estado Estudio
            List<SelectListItem> listItemsEstadoEstudio = new List<SelectListItem>();
            foreach (ListaValor entidad in oferta.ListaEstadoEstudio)
            {
                SelectListItem item = new SelectListItem();
                //item.Text = entidad.Valor.ToUpper();
                item.Text = entidad.Valor.ToString();
                item.Value = entidad.IdListaValor.ToString();
                listItemsEstadoEstudio.Add(item);
            }

            //Sector Empresarial
            List<SelectListItem> listItemsSectorEmpresarial = new List<SelectListItem>();
            foreach (ListaValor entidad in oferta.ListaSectorEmpresarial)
            {
                SelectListItem item = new SelectListItem();
                //item.Text = entidad.Valor.ToUpper();
                item.Text = entidad.Valor.ToString();
                item.Value = entidad.IdListaValor.ToString();
                listItemsSectorEmpresarial.Add(item);
            }

            //Tipo Trabajo
            List<SelectListItem> listItemsTipoTrabajo = new List<SelectListItem>();
            foreach (ListaValor entidad in oferta.ListaTipoTrabajo)
            {
                SelectListItem item = new SelectListItem();
                //item.Text = entidad.Valor.ToUpper();
                item.Text = entidad.Valor.ToString();
                item.Value = entidad.IdListaValor.ToString();
                listItemsTipoTrabajo.Add(item);
            }

            //Contrato
            List<SelectListItem> listItemsContrato = new List<SelectListItem>();
            foreach (ListaValor entidad in oferta.ListaContrato)
            {
                SelectListItem item = new SelectListItem();
                //item.Text = entidad.Valor.ToUpper();
                item.Text = entidad.Valor.ToString();
                item.Value = entidad.IdListaValor.ToString();
                listItemsContrato.Add(item);
            }

            //Tipo Cargo
            List<SelectListItem> listItemsTipoCargo = new List<SelectListItem>();
            foreach (ListaValor entidad in oferta.ListaTipoCargo)
            {
                SelectListItem item = new SelectListItem();
                //item.Text = entidad.Valor.ToUpper();
                item.Text = entidad.Valor.ToString();
                item.Value = entidad.IdListaValor.ToString();
                listItemsTipoCargo.Add(item);
            }

            //Lista de Combos
            ViewBag.PeriodoPublicacion = listItemsPublicacion;
            ViewBag.ListaEstudios = listItemsCarrera;
            ViewBag.ListaEstadoEstudio = listItemsEstadoEstudio;
            ViewBag.ListaSectorEmpresarial = listItemsSectorEmpresarial;
            ViewBag.ListaTipoTrabajo = listItemsTipoTrabajo;
            ViewBag.ListaContrato = listItemsContrato;
            ViewBag.ListaTipoCargo = listItemsTipoCargo;

            return View(oferta);
        }
        public ActionResult BusquedaAvanzadaOferta(VistaOfertaAlumno entidad)
        {
            entidad.ListaOfertas = lnoferta.BuscarAvanzadoOfertasAlumno(entidad);
            if (entidad.ListaOfertas.Count > 0)
            {
                entidad.MaxPagina = entidad.ListaOfertas[0].TotalRegistros / Constantes.FILAS_POR_PAGINA;
                int residuo = entidad.MaxPagina % Constantes.FILAS_POR_PAGINA; // Constantes.FILAS_POR_PAGINA;
                if (residuo > 0) entidad.MaxPagina += 1;
            }

            Paginacion paginacion = new Paginacion();
            paginacion.NroPaginaActual = entidad.PaginaActual;
            paginacion.FilasPorPagina = Constantes.FILAS_POR_PAGINA; // Constantes.FILAS_POR_PAGINA;
            paginacion.TotalPaginas = entidad.MaxPagina; // cantidadTotal / Constantes.FILAS_POR_PAGINA; // Constantes.FILAS_POR_PAGINA;
            //int residuo = cantidadTotal % Constantes.FILAS_POR_PAGINA; // Constantes.FILAS_POR_PAGINA;
            //if (residuo > 0) paginacion.TotalPaginas += 1;

            ViewBag.Paginacion = paginacion;
            ViewBag.TipoBusqueda = "Avanzada";

            return PartialView("_ResultadoBusquedaOfertas", entidad);
        }