public JsonResult ObtenerDestinatariosUTPOferta(int idOferta)
        {
            LNOferta lnOferta = new LNOferta();

            List<OfertaPostulante> postulantes = new List<OfertaPostulante>();
            postulantes = lnOferta.ObtenerPostulantesPorIdOferta(idOferta);

            VistaMensajeUsuarioEmpresaOferta oferta = lnMensaje.ObtenerUsuarioEmpresaOfertaPorId(idOferta);

            List<VistaMensajeDestinatario> destinatarios = new List<VistaMensajeDestinatario>();

            //Se agregan a los postulantes:
            foreach (var postulante in postulantes)
            {
                VistaMensajeDestinatario destinatario = new VistaMensajeDestinatario();
                destinatario.Usuario = postulante.Usuario;
                destinatario.Correo = postulante.CorreoElectronico;
                destinatario.TextoAMostrar = postulante.Usuario + " (" + postulante.CorreoElectronico + ")";

                destinatarios.Add(destinatario);
            }

            //Se agrega al usuario de la oferta:
            VistaMensajeDestinatario destinatarioOferta = new VistaMensajeDestinatario();
            destinatarioOferta.Usuario = oferta.UsuarioPropietarioEmpresa;
            destinatarioOferta.Correo = oferta.UsuarioPropietarioEmpresaCorreo;
            destinatarioOferta.TextoAMostrar = oferta.UsuarioPropietarioEmpresa + " (" + oferta.UsuarioPropietarioEmpresaCorreo + ")";

            destinatarios.Add(destinatarioOferta);

            return Json(postulantes, JsonRequestBehavior.AllowGet);
        }
        public ActionResult AsignarUsuario(string idOferta, string usuario)
        {
            LNOferta lnOferta = new LNOferta();

            lnOferta.AsignarUsuario(Convert.ToInt32(idOferta), usuario);

            //No debe retornar vistas.
            return Content("");
        }
        public ActionResult FinalizarOferta(string idOferta, string estado, string pantalla = "")
        {
            LNOferta lnOferta = new LNOferta();

            lnOferta.CambiarEstado(Convert.ToInt32(idOferta), estado);  //Estado oferta finalizado.

            //Correo de la empresa a UTP
            if (pantalla == Constantes.MENSAJES_EMPRESA_OFERTA && estado == "OFERPR") //Se envia pendiente de activación.
            {
                //Si el estado es pendiente de activación se debe mandar un aviso al ejecutivo de cuenta de UTP.
                DataTable dtDatos = lnOferta.ObtenerDatosParaMensaje(Convert.ToInt32(idOferta));

                //Validación de que la tabla contenga datos.
                if (dtDatos.Rows.Count > 0)
                {
                    string para = Convert.ToString(dtDatos.Rows[0]["CorreoUTP"]);
                    string nombreEmpresa = Convert.ToString(dtDatos.Rows[0]["NombreEmpresa"]);
                    string nombreOferta = Convert.ToString(dtDatos.Rows[0]["NombreOferta"]);
                    TicketEmpresa ticket = (TicketEmpresa)Session["TicketEmpresa"];

                    Mensaje mensaje = new Mensaje();
                    mensaje.DeUsuarioCorreoElectronico = ticket.CorreoElectronico;
                    mensaje.ParaUsuarioCorreoElectronico = para;
                    mensaje.MensajeTexto = "La empresa "+ nombreEmpresa + " ha creado la oferta "+ nombreOferta + " que está pendiente de activación.";
                    mensaje.Asunto = nombreOferta + " - Oferta pendiente de activación.";
                    LNCorreo.EnviarCorreo(mensaje);
                }

                //04MAR: Al publicar la oferta se debe redireccionar a la lista de ofertas.
                RedirectToAction("Publicacion", "Empresa");

            }
            else
                //De UTP a la empresa.
                if (pantalla == Constantes.MENSAJES_UTP_OFERTA && estado == "OFERAC") //UTP envía el estado activado.
                {
                    TicketUTP ticket = (TicketUTP)Session["TicketUtp"];
                    DataTable dtDatos = lnOferta.ObtenerDatosParaMensaje(Convert.ToInt32(idOferta));

                    if (dtDatos.Rows.Count > 0)
                    {
                        string para = Convert.ToString(dtDatos.Rows[0]["CorreoUsuarioEmpresa"]);
                        string nombreEmpresa = Convert.ToString(dtDatos.Rows[0]["NombreEmpresa"]);
                        string nombreOferta = Convert.ToString(dtDatos.Rows[0]["NombreOferta"]);

                        Mensaje mensaje = new Mensaje();
                        mensaje.DeUsuarioCorreoElectronico = ticket.CorreoElectronico;
                        mensaje.ParaUsuarioCorreoElectronico = para;
                        mensaje.MensajeTexto = "La oferta " + nombreOferta + " ha sido activada con éxito.";
                        mensaje.Asunto = nombreOferta + " - Oferta activada";
                        LNCorreo.EnviarCorreo(mensaje);
                    }
                }

            //No debe retornar vistas.
            return Content("");
        }
Example #4
0
        public VistaPanelAlumno ObtenerPanel(string codigoAlumno)
        {
            VistaPanelAlumno panel   = new VistaPanelAlumno();
            LNEvento         eventos = new LNEvento();
            LNOferta         ofertas = new LNOferta();

            //Se llenan los datos del alumno.
            panel.Alumno       = ObtenerAlumnoPorCodigo(codigoAlumno);
            panel.ListaEventos = eventos.Evento_MostrarUltimos();
            panel.ListaOfertas = ofertas.MostrarUltimasOfertas(panel.Alumno.IdAlumno);
            return(panel);
        }
Example #5
0
        /// <summary>
        /// Actualizar el estado de la oferta a finalizado si se cumplen las siguientes condiciones:
        /// 1. La oferta está activa.
        /// 2. La fecha de fin de recepción de cv es mayor a la fecha actual.
        /// </summary>
        public void FinalizarOfertasPorFechaDeRecepcion()
        {
            DataTable dtOfertas = adGeneral.FinalizarOfertaPorFechaCV();
            LNOferta  lnOferta  = new LNOferta();

            foreach (DataRow fila in dtOfertas.Rows)
            {
                int idOferta = Convert.ToInt32(fila["IdOferta"]);

                DataTable dtDatos       = lnOferta.ObtenerDatosParaMensaje(Convert.ToInt32(idOferta));
                string    para          = Convert.ToString(dtDatos.Rows[0]["CorreoUsuarioEmpresa"]);
                string    nombreEmpresa = Convert.ToString(dtDatos.Rows[0]["NombreEmpresa"]);
                string    nombreOferta  = Convert.ToString(dtDatos.Rows[0]["NombreOferta"]);

                Mensaje mensaje = new Mensaje();
                mensaje.DeUsuarioCorreoElectronico   = ConfigurationManager.AppSettings["OfertaCorreoRemitente"];
                mensaje.ParaUsuarioCorreoElectronico = para;
                mensaje.MensajeTexto = "La oferta " + nombreOferta + " ha finalizado";
                mensaje.Asunto       = nombreOferta + " - Oferta Finalizada";
                LNCorreo.EnviarCorreo(mensaje);
            }
        }
        public ActionResult CambiarEstadoPostulante(int idOfertaPostulante, string faseOferta)
        {
            TicketEmpresa ticket = (TicketEmpresa)Session["TicketEmpresa"];

            LNOferta lnOferta = new LNOferta();

            List<OfertaPostulante> lista = new List<OfertaPostulante>();

            OfertaPostulante ofertaPostulante = new OfertaPostulante();
            ofertaPostulante.IdOfertaPostulante = idOfertaPostulante;
            ofertaPostulante.ModificadoPor = ticket.Usuario;
            ofertaPostulante.Seleccionado = true; //Valor agregado por compatibilidad con otro proceso. Se coloca True para indicar que Sí debe actualizar el campo.
            lista.Add(ofertaPostulante);

            lnOferta.ActualizarFaseDePostulantes(lista, faseOferta);

            //Se obtiene la descripción de la oferta:
            LNGeneral lnGeneral = new LNGeneral();
            ListaValor listaValorFase = lnGeneral.ObtenerListaValor(Constantes.IDLISTA_FASE_OFERTA).Where(m => m.IdListaValor == faseOferta).FirstOrDefault();

            //Se retorna la descripción de la fase seleccionada.
            return Content(listaValorFase.DescripcionValor);
        }
        private PartialViewResult obtenerVistaMensajeResponder(string pantalla, int idMensaje)
        {
            Mensaje mensajeBase = lnMensaje.ObtenerPorIdMensaje(idMensaje); //Este es el mensaje original.
            Mensaje mensajeRespuesta = new Mensaje();
            mensajeRespuesta.Asunto = "Re: " + mensajeBase.Asunto;
            mensajeRespuesta.IdMensajePadre = mensajeBase.IdMensaje;
            mensajeRespuesta.ParaUsuario = mensajeBase.DeUsuario;
            mensajeRespuesta.ParaUsuarioCorreoElectronico = mensajeBase.DeUsuarioCorreoElectronico;
            mensajeRespuesta.IdOferta = mensajeBase.IdOferta;
            mensajeRespuesta.Pantalla = pantalla;

            if (pantalla == Constantes.MENSAJES_EMPRESA_INDEX)
            {
                TicketEmpresa ticketEmpresa = (TicketEmpresa)Session["TicketEmpresa"];
                mensajeRespuesta.DeUsuario = ticketEmpresa.Usuario;
                mensajeRespuesta.DeUsuarioCorreoElectronico = ticketEmpresa.CorreoElectronico;

                //1. Obtener ofertas activas de la empresa.
                LNOferta lnOferta = new LNOferta();

                //Se obtienen las ofertas activas
                List<VistaEmpresaOferta> listaOfertas = lnOferta.ObtenerOfertasPorIdEmpresa(ticketEmpresa.IdEmpresa).Where(m => m.NombreEstado == "OFERAC").ToList();

                //Se cargan en el ViewBag para ser consumidas desde el html y se establece el IdOferta.
                ViewBag.IdOferta = new SelectList(listaOfertas, "IdOferta", "CargoOfrecido", mensajeBase.IdOferta);

            }
            else
            if (pantalla == Constantes.MENSAJES_ALUMNO_INDEX)
            {
                TicketAlumno ticketAlumno = (TicketAlumno)Session["TicketAlumno"];
                mensajeRespuesta.DeUsuario = ticketAlumno.Usuario;
                mensajeRespuesta.DeUsuarioCorreoElectronico = ticketAlumno.CorreoElectronico;

                //Hallar las ofertas a las que el alumno a postulado.
                List<VistaAlumnoOferta> listaOfertas = lnMensaje.ObtenerOfertasPorIdAlumno(ticketAlumno.IdAlumno);

                //Se cargan en el ViewBag para ser consumidas desde el html.
                ViewBag.IdOferta = new SelectList(listaOfertas, "IdOferta", "CargoOfrecido", mensajeBase.IdOferta);
            }

            ViewBag.Pantalla = pantalla;

            return PartialView("_MensajesResponder", mensajeRespuesta);
        }
        public JsonResult ObtenerPostulantesPorOferta(int idOferta)
        {
            LNOferta lnOferta = new LNOferta();

            List<OfertaPostulante> postulantes = new List<OfertaPostulante>();
            postulantes = lnOferta.ObtenerPostulantesPorIdOferta(idOferta);

            return Json(postulantes, JsonRequestBehavior.AllowGet);
        }
        private PartialViewResult mensajeUTPOfertaNuevo(string pantalla)
        {
            ViewBag.Pantalla = pantalla;
            TicketEmpresa ticketEmpresa = (TicketEmpresa)Session["TicketEmpresa"];

            //1. Obtener ofertas activas de la empresa.
            LNOferta lnOferta = new LNOferta();

            //Se obtiene el IdEmpresa de la oferta.
            int idEmpresa = lnMensaje.ObtenerIdEmpresaPorIdOferta(IdOferta);

            //Se obtiene las ofertas de la empresa y se selecciona solo una oferta.
            List<VistaEmpresaOferta> listaOfertas = lnOferta.ObtenerOfertasPorIdEmpresa(idEmpresa).Where(m => m.IdOferta == IdOferta).ToList();

            //Se cargan en el ViewBag para ser consumidas desde el html. Se establece el valor del IdOferta.
            ViewBag.IdOfertaMensaje = new SelectList(listaOfertas, "IdOferta", "CargoOfrecido", IdOferta);

            ViewBag.IdOfertaGeneral = IdOferta;

            Mensaje mensaje = new Mensaje();
            mensaje.Pantalla = pantalla;

            VistaEmpresaOferta ofertaSeleccionada = listaOfertas.Where(m => m.IdOferta == IdOferta).FirstOrDefault();
            mensaje.Asunto = ofertaSeleccionada == null ? "" : ofertaSeleccionada.CargoOfrecido;
            mensaje.ParaUsuario = ofertaSeleccionada.UsuarioPropietarioEmpresa;
            mensaje.ParaUsuarioNombre = ofertaSeleccionada.UsuarioPropietarioEmpresa;
            mensaje.ParaUsuarioCorreoElectronico = ofertaSeleccionada.UsuarioPropietarioEmpresaCorreo;
            mensaje.IdOfertaMensaje = IdOferta; //Se establece el IdOferta enviado como parámetro

            //Hay que llenar el combo de destinatarios con los postulantes y el usuario empresa de la oferta.

            return PartialView("_MensajesNuevo", mensaje);
        }
        /// <summary>
        /// Método interno para completar los datos de la pantalla Oferta en Empresa.
        /// </summary>
        private PartialViewResult mensajeEmpresaOfertaNuevo(string pantalla)
        {
            ViewBag.Pantalla = pantalla;
            TicketEmpresa ticketEmpresa = (TicketEmpresa)Session["TicketEmpresa"];

            //1. Obtener ofertas activas de la empresa.
            LNOferta lnOferta = new LNOferta();

            //Se obtienen las ofertas activas
            List<VistaEmpresaOferta> listaOfertas = lnOferta.ObtenerOfertasPorIdEmpresa(ticketEmpresa.IdEmpresa).Where(m => m.NombreEstado == "OFERAC").ToList();

            VistaEmpresaOferta ofertaSeleccionada = listaOfertas.Where(m => m.IdOferta == IdOferta).FirstOrDefault();

            //Se cargan en el ViewBag para ser consumidas desde el html. Se establece el valor del IdOferta.
            ViewBag.IdOfertaMensaje = new SelectList(listaOfertas, "IdOferta", "CargoOfrecido");

            ViewBag.IdOfertaGeneral = IdOferta;

            Mensaje mensaje = new Mensaje();
            mensaje.Pantalla = pantalla;
            mensaje.Asunto = ofertaSeleccionada.CargoOfrecido;
            //mensaje.ParaUsuario = ofertaSeleccionada.UsuarioPropietarioEmpresa;
            //mensaje.ParaUsuarioCorreoElectronico = ofertaSeleccionada.UsuarioPropietarioEmpresaCorreo;
            //mensaje.Oferta.CargoOfrecido = ofertaSeleccionada.CargoOfrecido;

            return PartialView("_MensajesNuevo", mensaje);
        }
        public ActionResult ObtenerNuevasPostulaciones()
        {
            TicketEmpresa ticket = (TicketEmpresa)Session["TicketEmpresa"];

            LNOferta lnOferta = new LNOferta();
            List<VistaNuevasPostulaciones> lista = new List<VistaNuevasPostulaciones>();

            DataTable dtResultado = lnOferta.ObtenerPostulacionesPorEmpresa(ticket.IdEmpresa, ticket.Usuario);

            //Se realiza el FOR en esta porque se está utilizando una vista modelo de presentación.
            foreach (DataRow fila in dtResultado.Rows)
            {
                VistaNuevasPostulaciones vista = new VistaNuevasPostulaciones();
                vista.CargaOfrecido = Convert.ToString(fila["CargoOfrecido"]);
                vista.FechaPostulacion = Convert.ToDateTime(fila["FechaPostulacion"]);
                vista.AlumnoNombres = Convert.ToString(fila["AlumnoNombres"]);
                vista.AlumnoApellidos = Convert.ToString(fila["AlumnoApellidos"]);
                vista.Cumplimiento = Convert.ToInt32(fila["Cumplimiento"] == DBNull.Value ? 0 : fila["Cumplimiento"]);
                vista.IdOfertaPostulante = Convert.ToInt32(fila["IdOfertaPostulante"]);
                vista.IdOferta = Convert.ToInt32(fila["IdOferta"]);
                lista.Add(vista);
            }

            return PartialView("_VistaNuevasPostulaciones", lista);
        }
        /// <summary>
        /// Actualizar el estado de la oferta a finalizado si se cumplen las siguientes condiciones:
        /// 1. La oferta está activa.
        /// 2. La fecha de fin de recepción de cv es mayor a la fecha actual.
        /// </summary>
        public void FinalizarOfertasPorFechaDeRecepcion()
        {
            DataTable dtOfertas = adGeneral.FinalizarOfertaPorFechaCV();
            LNOferta lnOferta = new LNOferta();

            foreach (DataRow fila in dtOfertas.Rows)
            {
                int idOferta = Convert.ToInt32(fila["IdOferta"]);

                DataTable dtDatos = lnOferta.ObtenerDatosParaMensaje(Convert.ToInt32(idOferta));
                string para = Convert.ToString(dtDatos.Rows[0]["CorreoUsuarioEmpresa"]);
                string nombreEmpresa = Convert.ToString(dtDatos.Rows[0]["NombreEmpresa"]);
                string nombreOferta = Convert.ToString(dtDatos.Rows[0]["NombreOferta"]);

                Mensaje mensaje = new Mensaje();
                mensaje.DeUsuarioCorreoElectronico = ConfigurationManager.AppSettings["OfertaCorreoRemitente"];
                mensaje.ParaUsuarioCorreoElectronico = para;
                mensaje.MensajeTexto = "La oferta " + nombreOferta + " ha finalizado";
                mensaje.Asunto = nombreOferta + " - Oferta Finalizada";
                LNCorreo.EnviarCorreo(mensaje);

            }
        }
        public ActionResult CerrarOferta(OfertaEncuesta encuesta)
        {
            LNOferta lnOferta = new LNOferta();
            lnOferta.CompletarEncuesta(encuesta);

            TempData["MsjExitoCerrarOferta"] = "La oferta se ha cerrado con éxito";

            //Se redirecciona a la lista de ofertas:
            return RedirectToAction("Publicacion", "Empresa");
        }
        public PartialViewResult _MensajesResponder(string pantalla, int idMensaje)
        {
            Mensaje mensajeBase = lnMensaje.ObtenerPorIdMensaje(idMensaje); //Este es el mensaje original.
            Mensaje mensajeRespuesta = new Mensaje();
            mensajeRespuesta.Asunto = "Re: " + mensajeBase.Asunto;
            mensajeRespuesta.IdMensajePadre = mensajeBase.IdMensaje;
            mensajeRespuesta.ParaUsuario = mensajeBase.DeUsuario;
            mensajeRespuesta.ParaUsuarioCorreoElectronico = mensajeBase.DeUsuarioCorreoElectronico;
            mensajeRespuesta.IdOfertaMensaje = mensajeBase.IdOferta;
            mensajeRespuesta.IdEvento = mensajeBase.IdEvento;
            mensajeRespuesta.Pantalla = pantalla;
            mensajeRespuesta.IdEmpresa = mensajeBase.IdEmpresa;

            if (pantalla == Constantes.MENSAJES_EMPRESA_INDEX || pantalla == Constantes.MENSAJES_EMPRESA_OFERTA)
            {
                TicketEmpresa ticketEmpresa = (TicketEmpresa)Session["TicketEmpresa"];
                mensajeRespuesta.DeUsuario = ticketEmpresa.Usuario;
                mensajeRespuesta.DeUsuarioCorreoElectronico = ticketEmpresa.CorreoElectronico;
                mensajeRespuesta.CreadoPor = ticketEmpresa.Usuario;

                //1. Obtener ofertas activas de la empresa.
                LNOferta lnOferta = new LNOferta();

                //Se obtienen las ofertas activas
                List<VistaEmpresaOferta> listaOfertas = lnOferta.ObtenerOfertasPorIdEmpresa(ticketEmpresa.IdEmpresa).Where(m => m.NombreEstado == "OFERAC").ToList();

                //Se cargan en el ViewBag para ser consumidas desde el html y se establece el IdOferta.
                ViewBag.IdOfertaMensaje = new SelectList(listaOfertas, "IdOferta", "CargoOfrecido", mensajeBase.IdOferta);

            }
            else
            if (pantalla == Constantes.MENSAJES_ALUMNO_INDEX || pantalla == Constantes.MENSAJES_ALUMNO_OFERTA)
            {
                TicketAlumno ticketAlumno = (TicketAlumno)Session["TicketAlumno"];
                mensajeRespuesta.DeUsuario = ticketAlumno.Usuario;
                mensajeRespuesta.DeUsuarioCorreoElectronico = ticketAlumno.CorreoElectronico;
                mensajeRespuesta.CreadoPor = ticketAlumno.Usuario;

                //Hallar las ofertas a las que el alumno a postulado.
                List<VistaAlumnoOferta> listaOfertas = lnMensaje.ObtenerOfertasPorIdAlumno(ticketAlumno.IdAlumno);

                //Se cargan en el ViewBag para ser consumidas desde el html.
                ViewBag.IdOfertaMensaje = new SelectList(listaOfertas, "IdOferta", "CargoOfrecido", mensajeBase.IdOferta);
            }
            else
            if (pantalla == Constantes.MENSAJES_UTP_INDEX || pantalla == Constantes.MENSAJES_UTP_ALUMNO || pantalla == Constantes.MENSAJES_UTP_OFERTA
                || pantalla == Constantes.MENSAJES_UTP_EMPRESA || pantalla == Constantes.MENSAJES_UTP_EVENTO)
            {
                TicketUTP ticketUtp = (TicketUTP)Session["TicketUtp"];
                mensajeRespuesta.DeUsuario = ticketUtp.Usuario;
                mensajeRespuesta.DeUsuarioCorreoElectronico = ticketUtp.CorreoElectronico;
                mensajeRespuesta.CreadoPor = ticketUtp.Usuario;
            }
            else
             if (pantalla == Constantes.MENSAJES_EMPRESA_EVENTO)
            {
                LNEvento lnEvento = new LNEvento();
                DataTable dtEvento = lnEvento.EVENTO_OBTENERPORID(mensajeBase.IdEvento);
                mensajeRespuesta.Evento.NombreEvento = Convert.ToString(dtEvento.Rows[0]["NombreEvento"]);

                TicketEmpresa ticketEmpresa = (TicketEmpresa)Session["TicketEmpresa"];
                mensajeRespuesta.DeUsuario = ticketEmpresa.Usuario;
                mensajeRespuesta.DeUsuarioCorreoElectronico = ticketEmpresa.CorreoElectronico;
                mensajeRespuesta.CreadoPor = ticketEmpresa.Usuario;
            }
            else
            if (pantalla == Constantes.MENSAJES_ALUMNO_EVENTO)
            {
                LNEvento lnEvento = new LNEvento();
                DataTable dtEvento = lnEvento.EVENTO_OBTENERPORID(mensajeBase.IdEvento);
                mensajeRespuesta.Evento.NombreEvento = Convert.ToString(dtEvento.Rows[0]["NombreEvento"]);

                TicketAlumno ticketAlumno = (TicketAlumno)Session["TicketAlumno"];
                mensajeRespuesta.DeUsuario = ticketAlumno.Usuario;
                mensajeRespuesta.DeUsuarioCorreoElectronico = ticketAlumno.CorreoElectronico;
                mensajeRespuesta.CreadoPor = ticketAlumno.Usuario;
            }
            else
            if (pantalla == Constantes.MENSAJES_EMPRESA_HUNTING)
            {
                TicketEmpresa ticketEmpresa = (TicketEmpresa)Session["TicketEmpresa"];
                mensajeRespuesta.DeUsuario = ticketEmpresa.Usuario;
                mensajeRespuesta.DeUsuarioCorreoElectronico = ticketEmpresa.CorreoElectronico;
                mensajeRespuesta.CreadoPor = ticketEmpresa.Usuario;
            }

            ViewBag.Pantalla = pantalla;

            return PartialView("_MensajesResponder", mensajeRespuesta);
        }
        public VistaPanelAlumno ObtenerPanel(string codigoAlumno)
        {
            VistaPanelAlumno panel = new VistaPanelAlumno();
            LNEvento eventos = new LNEvento();
            LNOferta ofertas = new LNOferta();

            //Se llenan los datos del alumno.
            panel.Alumno = ObtenerAlumnoPorCodigo(codigoAlumno);
            panel.ListaEventos = eventos.Evento_MostrarUltimos();
            panel.ListaOfertas = ofertas.MostrarUltimasOfertas(panel.Alumno.IdAlumno);
            return panel;
        }
        /// <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("");
        }
        public ActionResult Postulante(string id)
        {
            if (id != null)
            {
            VistaOfertaPostulante vistaofertapostulante = lnAlumnocv.ObtenerPostulanteCV(Convert.ToInt32(Helper.Desencriptar(id)));

            //Se cargan las fases de la oferta.
            LNOferta lnOferta = new LNOferta();
            List<OfertaFase> listaFasesActivas = lnOferta.Obtener_OfertaFaseActivas(vistaofertapostulante.alumnocv.IdOferta);
            ViewBag.IdOfertaFase = new SelectList(listaFasesActivas, "IdListaValor", "FaseOferta", vistaofertapostulante.alumnocv.FaseOferta);

            ViewBag.IdOfertaPostulante = Convert.ToInt32(Helper.Desencriptar(id));

            return View(vistaofertapostulante);
            }
            else
            {
                return RedirectToAction("Index", "Empresa");
            }
        }
        /// <summary>
        /// Se revisa si existen ofertas en estado OFERCV
        /// </summary>
        public List<VistaEmpresaOferta> obtenerOfertasEnEstadoOFERCV()
        {
            TicketEmpresa ticket = (TicketEmpresa)Session["TicketEmpresa"];
            LNOferta lnOferta = new LNOferta();

            //Se buscan la ofertas de la empresa que se encuentran en estado OFERCV (Fin de recepción de CVs)
            List<VistaEmpresaOferta> lista = lnOferta.ObtenerOfertasPorIdEmpresa(ticket.IdEmpresa).Where(p => (p.NombreEstado == Constantes.OFERTA_ESTADO_FINRECEPCIONCVS || p.NombreEstado == Constantes.OFERTA_ESTADO_ACTIVA) && p.FechaFinOferta < DateTime.Now).ToList();

            return lista;

            ////Si se encuentran filas => se obienen los cargos y se llena una variable temporal.
            //if (lista.Count() > 0)
            //{
            //    StringBuilder ofertasEncontradas = new StringBuilder();
            //    ofertasEncontradas.Append("Antes de continuar debe cerrar las siguientes ofertas: ");
            //    ofertasEncontradas.Append(Environment.NewLine);

            //    foreach (var oferta in lista)
            //    {
            //        ofertasEncontradas.Append(oferta.CargoOfrecido);
            //        ofertasEncontradas.Append(Environment.NewLine);
            //    }

            //    //En el vista Publicacion.html se lee este TempData y se muestra el mensaje al usuario.
            //    TempData["msjOfertasEnOFERCV"] = ofertasEncontradas.ToString();

            //    //Se redirecciona a la lista de ofertas.
            //    return RedirectToAction("Publicacion");
            //}
        }
        public PartialViewResult _VerDetalleEmpresaOfertas(int id)
        {
            //Se obtiene la información de la BD

            int idEmpresa = id;

            //Se obtiene la información de la BD
            LNOferta lnempresaoferta = new LNOferta();
            List<VistaEmpresaOferta> lista = lnempresaoferta.ObtenerOfertasPorIdEmpresa(id);

            return PartialView("_VerDetalleEmpresaOfertas", lista);

            //return PartialView("_VerDetalleEmpresaOfertas");
        }
        public ActionResult VistaOfertaPostulantes(int id, string estado, string columna, string orden, string pantalla = "")
        {
            LNOferta lnOferta = new LNOferta ();

            List<OfertaPostulante> postulantes = new List<OfertaPostulante>();
            if (columna == "Fecha")
            {
                if (orden == "ASC")
                {
                    postulantes = lnOferta.ObtenerPostulantesPorIdOferta(id).OrderBy(m => m.FechaPostulacion).ToList();
                }
                else
                {
                    postulantes = lnOferta.ObtenerPostulantesPorIdOferta(id).OrderByDescending(m => m.FechaPostulacion).ToList();
                }
            }
            if (columna == "Nombre")
            {
                if (orden == "ASC")
                {
                    postulantes = lnOferta.ObtenerPostulantesPorIdOferta(id).OrderBy(m => m.Alumno.Apellidos).ToList();
                }
                else
                {
                    postulantes = lnOferta.ObtenerPostulantesPorIdOferta(id).OrderByDescending(m => m.Alumno.Apellidos).ToList();
                }
            }
            if (columna == "Fase")
            {
                if (orden == "ASC")
                {
                    postulantes = lnOferta.ObtenerPostulantesPorIdOferta(id).OrderBy(m => m.FaseOferta.Peso).ToList();
                }
                else
                {
                    postulantes = lnOferta.ObtenerPostulantesPorIdOferta(id).OrderByDescending(m => m.FaseOferta.Peso).ToList();
                }
            }
            if (columna == "Cumplimiento")
            {
                if (orden == "ASC")
                {
                    postulantes = lnOferta.ObtenerPostulantesPorIdOferta(id).OrderBy(m => m.NivelDeMatch).ToList();
                }
                else
                {
                    postulantes = lnOferta.ObtenerPostulantesPorIdOferta(id).OrderByDescending(m => m.NivelDeMatch).ToList();
                }
            }

               if (postulantes.Count == 0)
            {
                postulantes = lnOferta.ObtenerPostulantesPorIdOferta(id).OrderBy(m => m.FechaPostulacion).ToList();
            }

            //Llenar el combo de Fases:
            List<OfertaFase> listaFasesActivas = lnOferta.Obtener_OfertaFaseActivas(id);

            ViewBag.IdOfertaFase = new SelectList(listaFasesActivas, "IdListaValor", "FaseOferta");
            ViewBag.EstadoOfertaIdListaValor = estado;

            //Se envían datos para mostrar el orden de la grilla. Se valida si es NULL para la primera vez que cargue el bloque.
            ViewBag.Columna = columna == null ? "Fecha" : columna;
            ViewBag.Orden = orden == null ? "ASC" : orden;
            ViewBag.Pantalla = pantalla;

            return PartialView("_VistaOfertaPostulantes", postulantes);
        }
        private PartialViewResult mensajeEmpresaHuntingNuevo(string pantalla, string listaIdAlumnos)
        {
            ViewBag.Pantalla = pantalla;
            TicketEmpresa ticketEmpresa = (TicketEmpresa)Session["TicketEmpresa"];

            LNOferta lnOferta = new LNOferta();
            List<VistaEmpresaOferta> listaOfertas = lnOferta.ObtenerOfertasPorIdEmpresa(ticketEmpresa.IdEmpresa).Where(m => m.NombreEstado == "OFERAC").ToList(); //Activas.
            ViewBag.IdOfertaMensaje = new SelectList(listaOfertas, "IdOferta", "CargoOfrecido");

            Mensaje mensaje = new Mensaje();
            mensaje.DeUsuario = ticketEmpresa.Usuario;
            mensaje.DeUsuarioCorreoElectronico = ticketEmpresa.CorreoElectronico;
            mensaje.ParaUsuario = lnMensaje.ObtenerListaAlumnosHunting(listaIdAlumnos); //Se guarda la lista de ids en esta propiedad.
            mensaje.ParaUsuarioNombre = lnMensaje.ObtenerListaAlumnosHunting(listaIdAlumnos); //Se guarda la lista de ids en esta propiedad.
            mensaje.ParaUsuarioCorreoElectronico = listaIdAlumnos;
            mensaje.Pantalla = pantalla;
            mensaje.CreadoPor = ticketEmpresa.Usuario;

            return PartialView("_MensajesNuevo", mensaje);
        }
        /// <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("");
        }
        /// <summary>
        /// Método interno para completar los datos de la pantalla Mi Cuenta en Empresa.
        /// </summary>
        private PartialViewResult mensajeEmpresaIndexNuevo(string pantalla)
        {
            ViewBag.Pantalla = pantalla;
            TicketEmpresa ticketEmpresa = (TicketEmpresa)Session["TicketEmpresa"];

            //1. Obtener ofertas activas de la empresa.
            LNOferta lnOferta = new LNOferta();

            //Se obtienen las ofertas activas
            List<VistaEmpresaOferta> listaOfertas = lnOferta.ObtenerOfertasPorIdEmpresa(ticketEmpresa.IdEmpresa).Where(m => m.NombreEstado == "OFERAC").ToList();

            //Se cargan en el ViewBag para ser consumidas desde el html.
            ViewBag.IdOfertaMensaje = new SelectList(listaOfertas, "IdOferta", "CargoOfrecido");

            Mensaje mensaje = new Mensaje();
            mensaje.Pantalla = pantalla;

            return PartialView("_MensajesNuevo", mensaje);
        }
        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);
        }