public ActionResult Contacto(string pantalla = "")
        {
            Mensaje mensaje = new Mensaje();
            mensaje.Pantalla = pantalla;

            if (pantalla == Constantes.MENSAJES_EMPRESA_CONTACTO)
            {
                TicketEmpresa ticketEmpresa = (TicketEmpresa)Session["TicketEmpresa"];

                mensaje.DeUsuario = ticketEmpresa.Usuario;
                mensaje.DeUsuarioCorreoElectronico = ticketEmpresa.CorreoElectronico;
                mensaje.DeUsuarioNombre = ticketEmpresa.Nombre;
            }
            else
                if (pantalla == Constantes.MENSAJES_ALUMNO_CONTACTO)
                {
                    TicketAlumno ticketAlumno = (TicketAlumno)Session["TicketAlumno"];

                    mensaje.DeUsuario = ticketAlumno.Usuario;
                    mensaje.DeUsuarioCorreoElectronico = ticketAlumno.CorreoElectronico;
                    mensaje.DeUsuarioNombre = ticketAlumno.Nombre;
                }

            ViewBag.Pantalla = pantalla;

            return View(mensaje);
        }
        public void InsertarHunting(Mensaje mensaje)
        {
            if (mensaje.ParaUsuarioCorreoElectronico == null) mensaje.ParaUsuarioCorreoElectronico = "";
            if (mensaje.IdOfertaMensaje == null) mensaje.IdOfertaMensaje = 0;
            if (mensaje.IdEvento == null) mensaje.IdEvento = 0;

            //Se obtiene la lista de los códigos de alumno.
            string[] arrayIds = mensaje.ParaUsuarioCorreoElectronico.Split('-');

            //Se recorreo todos los Id's seleccionados y se envía los correos uno por uno.
            foreach (string idAlumnoCadena in arrayIds)
            {

                string correoPara = adMensaje.InsertarHunting(mensaje, Convert.ToInt32(idAlumnoCadena));
                mensaje.ParaUsuarioCorreoElectronico = correoPara;

                try
                {
                    LNCorreo.EnviarCorreo(mensaje);
                }
                catch (Exception ex)
                {
                    //Manejar la excepción del envío de correo.
                }
            }
        }
Example #3
0
        public void ActualizarEstadoYUsuarioEC(Empresa empresa, string correoUTPDe)
        {
            if (empresa.UsuarioEC == null) empresa.UsuarioEC = "";

            adUtp.ActualizarEstadoYUsuarioEC(empresa);

            #region Envio de correo:
            //Se completan los campos:
            //Se indica el nombre del estado:
            string estado = "";
            if (empresa.EstadoIdListaValor == "EMPRAC") estado = "Activa";
            if (empresa.EstadoIdListaValor == "EMPRNO") estado = "No Activa";
            if (empresa.EstadoIdListaValor == "EMPRRV") estado = "Pendiente de aprobación de registro";
            if (empresa.EstadoIdListaValor == "EMPRSU") estado = "Suspendida";

            //Obtener usuario empresa y su correo electronico.
            LNMensaje lnMensaje = new LNMensaje();
            DataTable dt = lnMensaje.ObtenerUsuarioEmpresaPorIdEmpresa(empresa.IdEmpresa);

            if (dt.Rows.Count > 0)
            {
                Mensaje mensaje = new Mensaje();
                mensaje.DeUsuarioCorreoElectronico = correoUTPDe; // empresa.Usuario; //Contiene el ticket del usuario UTP.
                mensaje.ParaUsuarioCorreoElectronico = Convert.ToString(dt.Rows[0]["CorreoElectronico"]);
                mensaje.Asunto = "Empresa actualizada";
                mensaje.MensajeTexto = "El estado de la empresa '" + empresa.NombreComercial + "' ha sido actualizado a: " + estado + "'";

                LNCorreo.EnviarCorreo(mensaje);
            }
            #endregion
        }
        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("");
        }
        public static async Task<bool> EnviarCorreo(Mensaje mensaje)
        {
            try
            {
                bool mensajesEnProduccion = Convert.ToBoolean(ConfigurationManager.AppSettings["MensajeCorreoEnProduccion"]);
                string usuario = ConfigurationManager.AppSettings["MensajeCorreoUsuario"];
                string contrasena = ConfigurationManager.AppSettings["MensajeCorreoContrasena"];
                string host = ConfigurationManager.AppSettings["MensajeCorreoHost"];
                int puerto = Convert.ToInt32(ConfigurationManager.AppSettings["MensajeCorreoPuerto"]);
                bool enableSSL = Convert.ToBoolean(ConfigurationManager.AppSettings["MensajeCorreoEnableSSL"]);
                string deDesarrollo = ConfigurationManager.AppSettings["MensajeCorreoUsuarioDeDesarrollo"];
                string paraDesarrollo = ConfigurationManager.AppSettings["MensajeCorreoUsuarioParaDesarrollo"];
                string prefijoAsunto = "Portal de Empleabilidad: ";  //ConfigurationManager.AppSettings["MensajeCorreoPrefijoAsunto"];

                //MailMessage Message = new MailMessage(mensajesEnProduccion ? mensaje.DeUsuarioCorreoElectronico : deDesarrollo,
                //                                        mensajesEnProduccion ? mensaje.ParaUsuarioCorreoElectronico : paraDesarrollo
                //                                      );

                MailMessage Message = new MailMessage();

                //Cambiar a ConfigurationManager.AppSettings["MensajeCorreoAliasFrom"], Agregar tag en web.config
                string correoDe = mensajesEnProduccion ? mensaje.DeUsuarioCorreoElectronico : deDesarrollo;
                string correoPara = mensajesEnProduccion ? mensaje.ParaUsuarioCorreoElectronico : paraDesarrollo;
                string correoDeNombre = mensaje.DeUsuarioNombre == null ? "" :  mensaje.DeUsuarioNombre;
                string correoParaNombre = mensaje.ParaUsuarioNombre == null ? "" : mensaje.ParaUsuarioNombre;

                Message.From = new MailAddress(correoDe, correoDeNombre, Encoding.UTF8);
                Message.To.Add(new MailAddress(correoPara, correoParaNombre, Encoding.UTF8));
                
              
                Message.Body = mensaje.MensajeTexto;
                Message.Subject = prefijoAsunto + " " + mensaje.Asunto;
                Message.SubjectEncoding = Encoding.UTF8;

                SmtpClient client = new SmtpClient();
                client.Host = host;
                client.Port = puerto;
                client.UseDefaultCredentials = false;
                client.DeliveryMethod = SmtpDeliveryMethod.Network;
                //27MAR15: Comentado en desarrollo para homolgar con UTP.
                //Notar que en desarrollo el correo NO se envía al estar comentada estas dos líneas.
                //client.EnableSsl = enableSSL;
                //client.Credentials = new NetworkCredential(usuario, contrasena);  //Cuenta en criteria para el envío de correos.
                client.Send(Message);
                await Task.Yield();
                
                //await client.SendAsync(Message, "token");
                return true;
            }
            catch (Exception ex)
            {
                int a = 0;
                return false;
            }
        }
        public ActionResult Contacto(Mensaje mensaje)
        {
            LNMensaje lnMensaje = new LNMensaje();
            if (mensaje.Pantalla == Constantes.MENSAJES_EMPRESA_CONTACTO)
            {

                TicketEmpresa ticketEmpresa = (TicketEmpresa)Session["TicketEmpresa"];
                DataTable dtUsuarioAsignado = lnMensaje.ObtenerUsuarioUTPAsignadoAEmpresa(ticketEmpresa.IdEmpresa);

                if (dtUsuarioAsignado.Rows.Count > 0)
                {
                    mensaje.ParaUsuario = Convert.ToString(dtUsuarioAsignado.Rows[0]["Usuario"]);
                    mensaje.ParaUsuarioCorreoElectronico = Convert.ToString(dtUsuarioAsignado.Rows[0]["CorreoElectronico"]);
                    mensaje.CreadoPor = ticketEmpresa.Usuario;
                }
            }
            else
                if (mensaje.Pantalla == Constantes.MENSAJES_ALUMNO_CONTACTO)
                {
                    TicketAlumno ticketAlumno = (TicketAlumno)Session["TicketAlumno"];

                    //Obtener usuario administrador UTP.
                    DataTable dtUsuarioUTPAdmin = lnMensaje.ObtenerUsuarioAdministradorUTP();

                    mensaje.ParaUsuario = Convert.ToString(dtUsuarioUTPAdmin.Rows[0]["Usuario"]);
                    mensaje.ParaUsuarioCorreoElectronico = Convert.ToString(dtUsuarioUTPAdmin.Rows[0]["CorreoElectronico"]);
                    mensaje.CreadoPor = ticketAlumno.Usuario;
                }
                else
                    if (mensaje.Pantalla == Constantes.MENSAJES_INICIO)
                    {
                        //Obtener usuario administrador UTP.
                        DataTable dtUsuarioUTPAdmin = lnMensaje.ObtenerUsuarioAdministradorUTP();

                        mensaje.ParaUsuario = Convert.ToString(dtUsuarioUTPAdmin.Rows[0]["Usuario"]);
                        mensaje.ParaUsuarioCorreoElectronico = Convert.ToString(dtUsuarioUTPAdmin.Rows[0]["CorreoElectronico"]);
                        mensaje.DeUsuario = mensaje.DeUsuarioCorreoElectronico;
                        mensaje.CreadoPor = mensaje.DeUsuarioCorreoElectronico; //Se coloca el correo de la persona.
                    }

            mensaje.FechaEnvio = DateTime.Now;
            mensaje.IdEvento = 0;
            mensaje.EstadoMensaje = "MSJNOL";  //Pendiente de ser leido

            lnMensaje.Insertar(mensaje);

            TempData["MsjExitoCrearMensaje"] = "El mensaje se envió con éxito";

            return RedirectToAction("Contacto", new { pantalla = mensaje.Pantalla });
        }
 public void Insertar(OfertaPostulante ofertapostulante)
 {
     adOfertaPostulante.Insertar(ofertapostulante);
     if (ofertapostulante.RecibeCorreos == "OFCOPO")
     {
         DataTable dt = adAlumno.ObtenerAlumnoPorIdAlumno(ofertapostulante.IdAlumno);
         if (dt.Rows.Count > 0)
         {
             Mensaje mensaje = new Mensaje();
             mensaje.DeUsuarioCorreoElectronico = "*****@*****.**";
             mensaje.ParaUsuarioCorreoElectronico = ofertapostulante.CorreoElectronicoUsuarioEmpresa;
             mensaje.Asunto = "Nuevo Postulante: " + dt.Rows[0]["Nombres"] + " " + dt.Rows[0]["Apellidos"] + " - Oferta " + ofertapostulante.CargoOfrecido;
             mensaje.MensajeTexto = "Ha recibido un Postulante nuevo para su Oferta: " + ofertapostulante.CargoOfrecido + "\r\n\r\n" + dt.Rows[0]["Nombres"] + " " + dt.Rows[0]["Apellidos"];
             LNCorreo.EnviarCorreo(mensaje);
         }
     }
 }
        public string InsertarHunting(Mensaje mensaje, int idAlumno)
        {
            string correoPara = "";
            try
            {
                using (SqlConnection conexion = new SqlConnection(cadenaConexion))
                {
                    SqlCommand cmd = new SqlCommand();

                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.CommandText = "Mensaje_InsertarHunting";

                    //Parámetros:
                    cmd.Parameters.Add(new SqlParameter("@DeUsuario", mensaje.DeUsuario));
                    cmd.Parameters.Add(new SqlParameter("@DeUsuarioCorreoElectronico", mensaje.DeUsuarioCorreoElectronico));
                    cmd.Parameters.Add(new SqlParameter("@IdAlumno", idAlumno));
                    cmd.Parameters.Add(new SqlParameter("@ParaUsuario", mensaje.ParaUsuario));
                    cmd.Parameters.Add(new SqlParameter("@ParaUsuarioCorreoElectronico", mensaje.ParaUsuarioCorreoElectronico));
                    cmd.Parameters.Add(new SqlParameter("@IdOferta", mensaje.IdOfertaMensaje));
                    cmd.Parameters.Add(new SqlParameter("@IdEvento", mensaje.IdEvento));
                    cmd.Parameters.Add(new SqlParameter("@FechaEnvio", mensaje.FechaEnvio));
                    cmd.Parameters.Add(new SqlParameter("@Asunto", mensaje.Asunto));
                    cmd.Parameters.Add(new SqlParameter("@Mensaje", mensaje.MensajeTexto));
                    cmd.Parameters.Add(new SqlParameter("@IdMensajePadre", mensaje.IdMensajePadre));
                    cmd.Parameters.Add(new SqlParameter("@EstadoMensaje", mensaje.EstadoMensaje));
                    cmd.Parameters.Add(new SqlParameter("@CreadoPor", mensaje.CreadoPor));

                    cmd.Connection = conexion;
                    conexion.Open();
                    object resultado = cmd.ExecuteScalar();

                    if (resultado != null)
                    {
                        correoPara = Convert.ToString(resultado);
                    }
                    conexion.Close();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return correoPara;
        }
        public int Insertar(Mensaje mensaje)
        {
            if (mensaje.ParaUsuarioCorreoElectronico == null) mensaje.ParaUsuarioCorreoElectronico = "";
            if (mensaje.IdOfertaMensaje == null) mensaje.IdOfertaMensaje = 0;
            if (mensaje.IdEvento == null) mensaje.IdEvento = 0;

            int idMensaje = adMensaje.Insertar(mensaje);

            //Se envía el correo:
            try
            {
                LNCorreo.EnviarCorreo(mensaje);
            }
            catch (Exception ex)
            {
                //Manejar la excepción del envío de correo.
            }

            return idMensaje;
        }
        public PartialViewResult _MensajeFormulario(int id)
        {
            Mensaje mensaje = new Mensaje();
            mensaje.IdOferta = id;

            ViewBag.ParaUsuario = new SelectList(lnMensaje.ObtenePostulantesPorIdOferta(id), "AlumnoNombreUsuario", "AlumnoNombreCompleto");

            return PartialView("_MensajeFormulario", mensaje);
        }
        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);
        }
        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);
        }
        private PartialViewResult mensajeUTPIndexNuevo(string pantalla)
        {
            TicketUTP ticketUtp = (TicketUTP)Session["TicketUtp"];

            Mensaje mensaje = new Mensaje();
            mensaje.DeUsuario = ticketUtp.Usuario;
            mensaje.DeUsuarioCorreoElectronico = ticketUtp.CorreoElectronico;
            mensaje.CreadoPor = ticketUtp.Usuario;
            mensaje.Pantalla = pantalla;

            return PartialView("_MensajesNuevo", mensaje);
        }
        public PartialViewResult _MensajesNuevo(Mensaje mensaje)
        {
            if (mensaje.Pantalla == Constantes.MENSAJES_EMPRESA_INDEX || mensaje.Pantalla == Constantes.MENSAJES_EMPRESA_OFERTA
                || mensaje.Pantalla == Constantes.MENSAJES_EMPRESA_EVENTO)
            {
                TicketEmpresa ticket = (TicketEmpresa)Session["TicketEmpresa"];

                mensaje.DeUsuario = ticket.Usuario;
                mensaje.DeUsuarioCorreoElectronico = ticket.CorreoElectronico;
                mensaje.CreadoPor = ticket.Usuario;
                mensaje.DeUsuarioNombre = ticket.Nombre;
            }
            else
                if (mensaje.Pantalla == Constantes.MENSAJES_ALUMNO_INDEX || mensaje.Pantalla == Constantes.MENSAJES_ALUMNO_OFERTA
                    || mensaje.Pantalla == Constantes.MENSAJES_ALUMNO_EVENTO)
            {
                TicketAlumno ticketAlumno = (TicketAlumno)Session["TicketAlumno"];
                mensaje.DeUsuario = ticketAlumno.Usuario;
                mensaje.DeUsuarioCorreoElectronico = ticketAlumno.CorreoElectronico;
                mensaje.CreadoPor = ticketAlumno.Usuario;
                mensaje.DeUsuarioNombre = ticketAlumno.Nombre;
            }
            else
            if (mensaje.Pantalla == Constantes.MENSAJES_UTP_INDEX || mensaje.Pantalla == Constantes.MENSAJES_UTP_ALUMNO ||
                mensaje.Pantalla == Constantes.MENSAJES_UTP_OFERTA || mensaje.Pantalla == Constantes.MENSAJES_UTP_EVENTO ||
                mensaje.Pantalla == Constantes.MENSAJES_UTP_EMPRESA)
            {
                TicketUTP ticketUtp = (TicketUTP)Session["TicketUtp"];
                mensaje.DeUsuario = ticketUtp.Usuario;
                mensaje.DeUsuarioCorreoElectronico = ticketUtp.CorreoElectronico;
                mensaje.CreadoPor = ticketUtp.Usuario;
                mensaje.DeUsuarioNombre = ticketUtp.Nombre;
            }

            mensaje.FechaEnvio = DateTime.Now;
            mensaje.EstadoMensaje = "MSJNOL";  //Pendiente de ser leido

            if (mensaje.Pantalla == Constantes.MENSAJES_EMPRESA_HUNTING)
            {
                TicketEmpresa ticket = (TicketEmpresa)Session["TicketEmpresa"];

                mensaje.DeUsuario = ticket.Usuario;
                mensaje.DeUsuarioCorreoElectronico = ticket.CorreoElectronico;
                mensaje.CreadoPor = ticket.Usuario;
                mensaje.DeUsuarioNombre = ticket.Nombre;
                lnMensaje.InsertarHunting(mensaje);
            }
            else
            {
                lnMensaje.Insertar(mensaje);
            }

            //Se guardan las variables para utilizarlas al obtener la lista de mensajes.
            ViewBag.Pantalla = mensaje.Pantalla;
            this.UsuarioAlumno = mensaje.ParaUsuario;
            this.IdOferta = Convert.ToInt32(mensaje.IdOfertaMensaje);
            this.IdEventoParametro = Convert.ToInt32(mensaje.IdEvento);

            List<Mensaje> lista = ObtenerListaMensajes(mensaje.Pantalla);

            ViewBag.IdOfertaMensaje = mensaje.IdOfertaMensaje;
            ViewBag.IdOferta = mensaje.IdOfertaMensaje;
            ViewBag.IdEvento = mensaje.IdEvento;
            ViewBag.UsuarioAlumno = mensaje.ParaUsuario; //Este valor contiene el dato del usuario alumno en las pantallas UTP - Alumno.

            TempData["MsjExitoCrearMensaje"] = "El mensaje se ha enviado con éxito.";

            return PartialView("_Mensajes", lista.OrderByDescending(m => m.FechaEnvio));
        }
        public ActionResult Registro(VistaRegistroEmpresa empresa)
        {
            LNUsuario lnUsuario = new LNUsuario();
            StringBuilder mensajeDeError = new StringBuilder();
            if (lnUsuario.ValidarNombreDeUsuario(empresa.CuentaUsuario))
            {
                mensajeDeError.Append("El Nombre de Usuario ya está Registrado<br />");
            }
            if (lnUsuario.ValidarExistenciaEmpresa(empresa.PaisIdListaValor, empresa.IdentificadorTributario))
            {
                mensajeDeError.Append("La Empresa ya se encuentra registrada, por favor comuníquese con nosotros<br />");
            }
            Regex rgx = new Regex(@"^\d{8}$");
            if (empresa.TipoDocumentoIdListaValor == "TDDNI")
            {
                if (!rgx.IsMatch(empresa.NumeroDocumento))
                {
                    mensajeDeError.Append("El Numero de Documento es inválido<br />");
                }
            }
            if (ModelState.IsValid && mensajeDeError.ToString() == "")
            {
                LNEmpresa lnEmpresa = new LNEmpresa();
                //Empresa
                empresa.CreadoPor = empresa.CuentaUsuario; //Usuario anónimo.
                empresa.EstadoIdListaValor = "EMPRRV"; //Estado de la empresa pendiente de aprobación.
                //Ubicación
                empresa.EstadoLocacionIdListaValor = "LOSTNO"; //Estado NO ACTIVA. Se debe activar al momento que UTP active la cuenta.

                if (empresa.PaisIdListaValor == "PAIPER")
                {
                    empresa.NombreLocacion = empresa.DireccionLocacion + ", " + empresa.TextDistrito + ", " + empresa.TextoCiudad + ", " + empresa.TextoDepartamento;

                }
                else
                {
                    empresa.NombreLocacion = empresa.DireccionLocacion + ", " + empresa.DireccionDistritoLocacion + ", " + empresa.DireccionCiudadLocacion + ", " + empresa.DireccionDepartamentoLocacion;
                }

                //validar si el pais es peru, si es asi entonces:

                //Usuario
                empresa.RolIdListaValor = "ROLEAD"; //La cuenta es creada como Rol: "Administrador de Empresa"
                empresa.EstadoUsuarioIdListaValor = "USEUTP"; //El usuario también se encuenta pendiente de activación. Se debe activar al momento que UTP active la cuenta.
                byte[] bytes = Encoding.Default.GetBytes(empresa.Contrasena);
                SHA1 sha = new SHA1CryptoServiceProvider();
                byte[] password = sha.ComputeHash(bytes);
                String spassword = Encoding.Default.GetString(password);
                empresa.Contrasena = spassword;
                lnEmpresa.Insertar(empresa);

                //Enviar mensaje de correo:
                LNMensaje lnMensaje = new LNMensaje();
                DataTable dtUsuarioUTPAdmin = lnMensaje.ObtenerUsuarioAdministradorUTP();

                if (dtUsuarioUTPAdmin.Rows.Count > 0)
                {
                    Mensaje mensaje = new Mensaje();
                    mensaje.DeUsuarioCorreoElectronico = empresa.EmailUsuario;
                    mensaje.ParaUsuarioCorreoElectronico = Convert.ToString(dtUsuarioUTPAdmin.Rows[0]["CorreoElectronico"]); //Administrador UTP
                    mensaje.Asunto = empresa.NombreComercial + " Empresa registrada en el Portal:";
                    mensaje.MensajeTexto = "La empresa '" + empresa.NombreComercial + "' se ha registrado en el portal y está a la espera de activación";
                    LNCorreo.EnviarCorreo(mensaje);
                }

                //Si el registro fue exitoso redireccionar a página de resultado.
                TempData["GuardaRegistroExitoso"] = "Estimado(a) <strong>" + empresa.NombresUsuario + " " + empresa.ApellidosUsuario
                + "</strong>, muchas gracias por enviarnos su información. En breve recibirá un correo de confirmación con sus datos.</br></br>Nuestro proceso de activación tomará un plazo no mayor a 1 día útil, antes del cual estaremos comunicándole la activación de su Usuario. ";
                //Aquí debería enviarse un correo
                return RedirectToAction("Index");
            }
            else
            {
                var errors = ModelState.Select(x => x.Value.Errors)
                           .Where(y => y.Count > 0)
                           .ToList();
                //Variable temporal para poner el break
                int a = 0;
            }
            LNGeneral lnGeneral = new LNGeneral();
            ViewBag.PaisIdListaValor = new SelectList(lnGeneral.ObtenerListaValor(Constantes.IDLISTA_PAIS), "IdListaValor", "Valor", empresa.PaisIdListaValor);
            ViewBag.SectorEmpresarial1IdListaValor = new SelectList(lnGeneral.ObtenerListaValor(Constantes.IDLISTA_SECTOR_EMPRESARIAL), "IdListaValor", "Valor", empresa.SectorEmpresarial1IdListaValor);
            ViewBag.TipoLocacionIdListaValor = new SelectList(lnGeneral.ObtenerListaValor(Constantes.IDLISTA_TIPO_LOCACION), "IdListaValor", "Valor", empresa.TipoLocacionIdListaValor);
            ViewBag.TipoDocumentoIdListaValor = new SelectList(lnGeneral.ObtenerListaValor(Constantes.IDLISTA_TIPO_DOCUMENTO), "IdListaValor", "Valor", empresa.TipoDocumentoIdListaValor);

            ViewBag.DireccionDepartamentoLocacion = new SelectList(lnGeneral.ObtenerListaValor(Constantes.IDLISTA_Departamento), "IdListaValor", "Valor", empresa.DireccionDepartamentoLocacion);

            ViewBag.MensajeDeError = mensajeDeError;
            return View(empresa);
        }
        public ActionResult GenerarToken(string NombreUsuario, string submitButton, string token)
        {
            LNUsuario lnUsuario = new LNUsuario();
            DataSet dsResultado = ln.Autenticar_Usuario(NombreUsuario);

            string tipoUsuario = Convert.ToString(dsResultado.Tables[0].Rows[0]["TipoUsuario"]);

            if (tipoUsuario == "USEREM") {
                switch (submitButton) {
                    case "mail":
                        var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
                        var random = new Random();
                        var result = new string(
                            Enumerable.Repeat(chars, 8)
                                      .Select(s => s[random.Next(s.Length)])
                                      .ToArray());

                        string ip = Ip();
                        lnUsuario.InsertarToken(result, NombreUsuario, DateTime.Now.AddHours(1), DateTime.Now, ip);

                        Mensaje mensaje = new Mensaje();
                        mensaje.DeUsuarioCorreoElectronico = "*****@*****.**";
                        mensaje.ParaUsuarioCorreoElectronico = Convert.ToString(dsResultado.Tables[2].Rows[0]["CorreoElectronico"]); //Administrador UTP
                        mensaje.Asunto = "Cambio de Contraseña";
                        mensaje.MensajeTexto = "Estimado(a):" + NombreUsuario + "\r\n\r\n" +
                            "Es grato comunicarnos con usted para informarle que debido la confidencialidad de la información que contiene su cuenta, le hemos generado un token para que valide su información en nuestra intranet.\r\n\r\n" +
                            "-Token: " + result + "\r\n\r\n" +
                            Request.Url.GetLeftPart(UriPartial.Authority)+"/#Token"+
                            "Cordialmente \r\n\r\n" +
                            "Area de TI";
                        LNCorreo.EnviarCorreo(mensaje);
                        TempData["CorreoExitoso"] = "Se envio el TOKEN a las siguientes cuentas: "+mensaje.ParaUsuarioCorreoElectronico;
                        return RedirectToAction("Index", "Home");

                    case "Ingresar":
                        Session["Token"] = lnUsuario.ObtenerToken(NombreUsuario);
                        int id = Convert.ToInt32(dsResultado.Tables[2].Rows[0]["IdEmpresa"]);
                        LNEmpresaUsuario lnEmpresaUsuario = new LNEmpresaUsuario();
                        List<VistaEmpresaUsuario> list = lnEmpresaUsuario.ObtenerUsuariosPorIdEmpresa(id);

                        EmpresaUsuario empresaUsuario = lnEmpresaUsuario.ObtenerPorIdEmpresaUsuario(Convert.ToInt32(list[0].IdEmpresaUsuario));

                        if (Session["Token"] == null || Session["Token"].ToString() != token)
                        {
                            TempData["TokenNoExitoso"] = "El Token no es correcto.";
                            return RedirectToAction("Index", "Home");
                        }
                        return Json(empresaUsuario);

                    default:
                        return null;
                }
            }

            TempData["TokenNoExitoso"] = "Esta funcionalidad es solo para empresas";
            return RedirectToAction("Index", "Home");
        }
        /// <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);
        }
        private PartialViewResult mensajeEmpresaEventoNuevo(string pantalla, int idEvento)
        {
            ViewBag.Pantalla = pantalla;
            TicketEmpresa ticketEmpresa = (TicketEmpresa)Session["TicketEmpresa"];

            LNEvento lnEvento = new LNEvento();
            DataTable dtEvento = lnEvento.EVENTO_OBTENERPORID(idEvento);

            Mensaje mensaje = new Mensaje();
            mensaje.DeUsuario = ticketEmpresa.Usuario;
            mensaje.DeUsuarioCorreoElectronico = ticketEmpresa.CorreoElectronico;
            mensaje.Pantalla = pantalla;
            mensaje.Asunto = Convert.ToString(dtEvento.Rows[0]["NombreEvento"]);
            mensaje.Evento.NombreEvento = Convert.ToString(dtEvento.Rows[0]["NombreEvento"]);
            mensaje.IdEvento = Convert.ToInt32(dtEvento.Rows[0]["IdEvento"]);

            //Se manda el correo al administrador de la UPT. No existe funcionalidad de asignar usuario UTP al evento.
            //DataTable dtUsuarioUTPAdmin = lnMensaje.ObtenerUsuarioAdministradorUTP(); //--se obtiene, la información y se completan los campos.
            //mensaje.ParaUsuario = Convert.ToString(dtUsuarioUTPAdmin.Rows[0]["Usuario"]);
            //mensaje.ParaUsuarioCorreoElectronico = Convert.ToString(dtUsuarioUTPAdmin.Rows[0]["CorreoElectronico"]);

            //04MAR15: Se coloca el usuario y correo del que ha creado el evento.
            mensaje.ParaUsuario = Convert.ToString(dtEvento.Rows[0]["CreadoPor"]);
            mensaje.ParaUsuarioNombre = Convert.ToString(dtEvento.Rows[0]["NombresUsuarioCreacion"]) + " " + Convert.ToString(dtEvento.Rows[0]["ApellidosUsuarioCreacion"]);
            mensaje.ParaUsuarioCorreoElectronico = Convert.ToString(dtEvento.Rows[0]["CorreoUsuarioCreacion"]);

            return PartialView("_MensajesNuevo", mensaje);
        }
        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);
        }
        private PartialViewResult mensajeAlumnoIndexNuevo(string pantalla)
        {
            TicketAlumno ticketAlumno = (TicketAlumno)Session["TicketAlumno"];

            Mensaje mensaje = new Mensaje();
            mensaje.DeUsuario = ticketAlumno.Usuario;
            mensaje.DeUsuarioCorreoElectronico = ticketAlumno.CorreoElectronico;
            mensaje.Pantalla = pantalla;

            //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");

            return PartialView("_MensajesNuevo", mensaje);
        }
        public PartialViewResult _MensajesResponder(Mensaje mensaje)
        {
            //if (mensaje.Pantalla == Constantes.MENSAJES_EMPRESA_INDEX || mensaje.Pantalla == Constantes.MENSAJES_EMPRESA_OFERTA)
            //{
            //    TicketEmpresa ticket = (TicketEmpresa)Session["TicketEmpresa"];
            //    mensaje.CreadoPor = ticket.Usuario;
            //}
            //else
            //if (mensaje.Pantalla == Constantes.MENSAJES_ALUMNO_INDEX || mensaje.Pantalla == Constantes.MENSAJES_ALUMNO_OFERTA)
            //{
            //    TicketAlumno ticketAlumno = (TicketAlumno)Session["TicketAlumno"];
            //    mensaje.CreadoPor = ticketAlumno.Usuario;
            //}
            //else
            //if (mensaje.Pantalla == Constantes.MENSAJES_UTP_INDEX)
            //{
            //    TicketUTP ticketUtp = (TicketUTP)Session["TicketUtp"];
            //    mensaje.CreadoPor = ticketUtp.Usuario;
            //}

            mensaje.FechaEnvio = DateTime.Now;
            mensaje.EstadoMensaje = "MSJNOL";  //Pendiente de ser leido

            IdOferta = Convert.ToInt32(mensaje.IdOfertaMensaje);
            IdEventoParametro = Convert.ToInt32(mensaje.IdEvento);
            IdEmpresaParametro = Convert.ToInt32(mensaje.IdEmpresa);
            int idMensajeInsertado = lnMensaje.Insertar(mensaje);
            //lnMensaje.ActualizarEstadoMensaje(idMensajeInsertado, "MSJCON");      //El responder siempre es Nuevo, el que cambia es el IdPadre.

            UsuarioAlumno = mensaje.ParaUsuario;

            List<Mensaje> lista = ObtenerListaMensajes(mensaje.Pantalla);

            ViewBag.IdEmpresa = IdEmpresaParametro;
            ViewBag.IdOfertaMensaje = mensaje.IdOferta;
            ViewBag.IdEvento = mensaje.IdEvento;
            ViewBag.Pantalla = mensaje.Pantalla;
            ViewBag.UsuarioAlumno = mensaje.ParaUsuario;

            TempData["MsjExitoCrearMensaje"] = "El mensaje se ha enviado con éxito.";

            return PartialView("_Mensajes", lista.OrderByDescending(m => m.FechaEnvio));
        }
        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);
        }
        /// <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);

            }
        }
        private PartialViewResult mensajeUTPAlumnoNuevo(string pantalla, string usuarioAlumno)
        {
            TicketUTP ticketUtp = (TicketUTP)Session["TicketUtp"];
            LNAlumno lnAlumno = new LNAlumno();
            Alumno alumno = lnAlumno.ObtenerAlumnoPorCodigo(usuarioAlumno);

            Mensaje mensaje = new Mensaje();
            mensaje.DeUsuario = ticketUtp.Usuario;
            mensaje.DeUsuarioCorreoElectronico = ticketUtp.CorreoElectronico;
            mensaje.ParaUsuario = usuarioAlumno;
            mensaje.ParaUsuarioNombre = usuarioAlumno;
            mensaje.ParaUsuarioCorreoElectronico = alumno.CorreoElectronico1;
            mensaje.CreadoPor = ticketUtp.Usuario;
            mensaje.Pantalla = pantalla;

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

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

            return PartialView("_MensajesNuevo", mensaje);
        }
        public void EnviarOfertaCorreosPendientes()
        {
            DataTable dt = adGeneral.ObtenerOfertaCorreoPendientes();

            foreach (DataRow fila in dt.Rows)
            {
                int idOfertaCorreo = Convert.ToInt32(fila["IdOfertaCorreo"]);
                string destinatario = Convert.ToString(fila["Destinatario"]);
                string asunto = Convert.ToString(fila["Asunto"]);
                string mensajeTexto = Convert.ToString(fila["Mensaje"]);

                Mensaje mensaje = new Mensaje();
                mensaje.DeUsuarioCorreoElectronico = ConfigurationManager.AppSettings["OfertaCorreoRemitente"];
                mensaje.ParaUsuarioCorreoElectronico = destinatario;
                mensaje.Asunto = asunto;
                mensaje.MensajeTexto = mensajeTexto;

                //Se envia el mensaje:
                LNCorreo.EnviarCorreo(mensaje);

                //Se marca el mensaje como enviado.
                int enviado = 1; //se envía el valor 1 para marcar el registro como enviado.
                adGeneral.ActualizarOfertaCorreo(idOfertaCorreo, enviado);
            }
        }
        private PartialViewResult mensajeUTPEmpresaNuevo(string pantalla)
        {
            TicketUTP ticketUtp = (TicketUTP)Session["TicketUtp"];

            DataTable dt = lnMensaje.ObtenerUsuarioEmpresaPorIdEmpresa(IdEmpresaParametro);

            Mensaje mensaje = new Mensaje();
            mensaje.DeUsuario = ticketUtp.Usuario;
            mensaje.DeUsuarioCorreoElectronico = ticketUtp.CorreoElectronico;
            mensaje.ParaUsuario = Convert.ToString(dt.Rows[0]["Usuario"]);
            mensaje.ParaUsuarioNombre = Convert.ToString(dt.Rows[0]["Usuario"]);
            mensaje.ParaUsuarioCorreoElectronico = Convert.ToString(dt.Rows[0]["CorreoElectronico"]);
            mensaje.CreadoPor = ticketUtp.Usuario;
            mensaje.Pantalla = pantalla;

            return PartialView("_MensajesNuevo", mensaje);
        }
        public JsonResult generarTokenUsuario(string NombreUsuario, string submitButton, string token)
        {
            String strMensaje = "";
            String tipoUsuario = "";
            LNUsuario lnUsuario = new LNUsuario();
            DataSet dsResultado = ln.Autenticar_Usuario(NombreUsuario);

            if ((dsResultado != null) && dsResultado.Tables.Count>0 && dsResultado.Tables[0].Rows.Count>0)
                tipoUsuario = Convert.ToString(dsResultado.Tables[0].Rows[0]["TipoUsuario"]);

            if (String.IsNullOrEmpty(tipoUsuario))
            {
                strMensaje = "El usuario ingresado no es válido";
            }
            if (tipoUsuario == "USEREM")
            {

                var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
                var random = new Random();
                var result = new string(
                    Enumerable.Repeat(chars, 8)
                              .Select(s => s[random.Next(s.Length)])
                              .ToArray());

                string ip = Ip();
                lnUsuario.InsertarToken(result, NombreUsuario, DateTime.Now.AddHours(1), DateTime.Now, ip);

                Mensaje mensaje = new Mensaje();
                mensaje.DeUsuarioCorreoElectronico = "*****@*****.**";
                mensaje.ParaUsuarioCorreoElectronico = Convert.ToString(dsResultado.Tables[2].Rows[0]["CorreoElectronico"]); //Administrador UTP
                mensaje.Asunto = "Cambio de Contraseña";
                mensaje.MensajeTexto = "Estimado(a):" + NombreUsuario + "\r\n\r\n" +
                    "Es grato comunicarnos con usted para informarle que debido la confidencialidad de la información que contiene su cuenta, le hemos generado un token para que valide su información en nuestra intranet.\r\n\r\n" +
                    "-Token: " + result + "\r\n\r\n" +
                    "Cordialmente \r\n\r\n" +
                    "Area de TI";
                LNCorreo.EnviarCorreo(mensaje);
                //strMensaje = "Se envio el TOKEN a las siguientes cuentas: " + mensaje.ParaUsuarioCorreoElectronico;
                strMensaje = "El token ha sido enviado a su correo electrónico.";
            }
            if (tipoUsuario != "USEREM" && !String.IsNullOrEmpty(tipoUsuario))
            {
                strMensaje = "Esta funcionalidad es solo para empresas";
            }

            return Json(strMensaje);
        }
        private PartialViewResult mensajeUTPEventoNuevo(string pantalla, int idEvento)
        {
            ViewBag.Pantalla = pantalla;
            TicketUTP ticketUTP = (TicketUTP)Session["TicketUtp"];

            LNEvento lnEvento = new LNEvento();
            DataTable dtEvento = lnEvento.EVENTO_OBTENERPORID(idEvento);

            Mensaje mensaje = new Mensaje();
            mensaje.DeUsuario = ticketUTP.Usuario;
            mensaje.DeUsuarioCorreoElectronico = ticketUTP.CorreoElectronico;
            mensaje.Pantalla = pantalla;
            mensaje.Asunto = Convert.ToString(dtEvento.Rows[0]["NombreEvento"]);
            //mensaje.ParaUsuario = "faltaUsuarioUTPDelEvento";
            //mensaje.ParaUsuarioCorreoElectronico = "faltaUsuarioCorreoUTPDelEvento";

            //ViewBag.ParaUsuario = lnEvento.ObtenerAsistentes(idEvento, "EVTAAL"); //tipo alumno.
            ViewBag.IdEventoGeneral = idEvento;

            return PartialView("_MensajesNuevo", mensaje);
        }
        /// <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 PartialViewResult _MensajeFormularioGrabar(Mensaje mensaje)
        {
            TicketEmpresa ticket = (TicketEmpresa)Session["TicketEmpresa"];
            mensaje.DeUsuario = ticket.Usuario;
            mensaje.DeUsuarioCorreoElectronico = ticket.CorreoElectronico;
            mensaje.ParaUsuarioCorreoElectronico = "*****@*****.**";
            mensaje.FechaEnvio = DateTime.Now;
            mensaje.IdEvento = 0;
            mensaje.EstadoMensaje = "MSJNOL";  //Pendiente de ser leido
            mensaje.CreadoPor = ticket.Usuario;

            lnMensaje.Insertar(mensaje);

            List<Mensaje> lista = lnMensaje.ObtenerPorIdEmpresaIdOferta(ticket.IdEmpresa, mensaje.IdOferta);

            ViewBag.IdOferta = mensaje.IdOferta;

            return PartialView("_ObtenerMensajes", lista);
        }