public PartialViewResult _VerDetalleEmpresaUbicaciones(int id)
        {
            int idEmpresa = id;

            //Se obtiene la información de la BD
            LNEmpresaLocacion lnEmpresaLocacion = new LNEmpresaLocacion();
            List<VistaEmpresaLocacion> lista = lnEmpresaLocacion.ObtenerLocacionesPorIdEmpresa(id);

            return PartialView("_VerDetalleEmpresaUbicaciones", lista);

            //Se obtiene la información de la BD

            //return PartialView("_VerDetalleEmpresaUbicaciones");
        }
        /*
        public ActionResult BuscarDatosEmpresasUTP(int idempresa)
        {
            //string descripocn = "";

            LNAlumno lnAlumno = new LNAlumno();
            EmpresaUsuario vista = new EmpresaUsuario();
            LNEmpresaLocacion lnEmpresaLocacion = new LNEmpresaLocacion();

            DataTable dtResultado = lnAlumno.Utp_BuscarDatosListaEmpresas(idempresa);

            if (dtResultado.Rows.Count > 0)
            {

                //vista.idEmpresa =Convert.ToInt32 (dtResultado.Rows[0]["IdEmpresa"]);

                vista.CodigoEmpresa = dtResultado.Rows[0]["IdEmpresa"].ToString();

                vista.ListaUbicaciones = dtResultado.Rows[0]["IdEmpresaLocacion"].ToString();

            }

            return Json(vista, JsonRequestBehavior.AllowGet);

        }*/
        public JsonResult BuscarDatosEmpresasUTP(int id)
        {
            LNEmpresaLocacion lnEmpresaLocacion = new LNEmpresaLocacion();
            List<VistaEmpresaLocacion> listVistaEmpresaLocacion = lnEmpresaLocacion.ObtenerLocacionesPorIdEmpresa(id);
            //List<SelectListItem> li = new List<SelectListItem>();

            return Json(new SelectList(listVistaEmpresaLocacion, "IdEmpresaLocacion", "NombreLocacion"), JsonRequestBehavior.AllowGet);
        }
        public PartialViewResult _UsuariosEmpresaUTPEditar(int id)
        {
            LNGeneral lnGeneral = new LNGeneral();
            LNEmpresaUsuario lnEmpresaUsuario = new LNEmpresaUsuario();
            EmpresaUsuario empresaUsuario = lnEmpresaUsuario.ObtenerPorIdEmpresaUsuario(id);

            LNEmpresaLocacion lnEmpresaLocacion = new LNEmpresaLocacion();

            ViewBag.IdEmpresaLocacion = new SelectList(lnEmpresaLocacion.ObtenerLocacionesPorIdEmpresa(empresaUsuario.Empresa.IdEmpresa), "IdEmpresaLocacion", "NombreLocacion", empresaUsuario.IdEmpresaLocacion);
            ViewBag.SexoIdListaValor = new SelectList(lnGeneral.ObtenerListaValor(Constantes.IDLISTA_SEXO), "IdListaValor", "Valor", empresaUsuario.SexoIdListaValor);
            ViewBag.TipoDocumentoIdListaValor = new SelectList(lnGeneral.ObtenerListaValor(Constantes.IDLISTA_TIPO_DOCUMENTO), "IdListaValor", "Valor", empresaUsuario.TipoDocumentoIdListaValor);
            ViewBag.RolIdListaValor = new SelectList(lnGeneral.ObtenerListaValor(Constantes.IDLISTA_ROL_USUARIO, "ROLE"), "IdListaValor", "Valor", empresaUsuario.RolIdListaValor);
            ViewBag.EstadoUsuarioIdListaValor = new SelectList(lnGeneral.ObtenerListaValor(Constantes.IDLISTA_ESTADO_USUARIO, "USEM"), "IdListaValor", "Valor", empresaUsuario.EstadoUsuarioIdListaValor);

            ViewBag.IdEmpresa = empresaUsuario.idEmpresa;

            //Se devuelve la lista parcial con el usuario.
            return PartialView("_UsuariosEmpresaUTP_Editar", empresaUsuario);
        }
        public ActionResult NuevaOferta()
        {
            #region Validación 11FEB: Si existen ofertas en estado OFERCV mostrar un mensaje de alerta para que cierre las ofertas.

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

                foreach (var ofertaEncontrada in lista)
                {
                    msjAlUsuario.Append(ofertaEncontrada.CargoOfrecido);
                    msjAlUsuario.Append(Environment.NewLine);
                }

                msjAlUsuario.Append("Para cerrar sus ofertas debe ingresar a la Oferta en la sección Administración de Oferta y Cerrar la Oferta. ");
                msjAlUsuario.Append("Debe repetir este proceso para cada oferta.");

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

                //Se redirecciona a la lista de ofertas.
                return RedirectToAction("Publicacion");
            }
            #endregion

            #region Funcionalidad 16FEB: Al crear una oferta se crea internamente y se muestra la pantalla de Ofertalaboral.cshtml

            //Se obtiene el ticket de la sesión.
            TicketEmpresa ticket = (TicketEmpresa)Session["TicketEmpresa"];

            //Se obtiene las locaciones de la empresa y se guarda la primera encontrada:
            LNEmpresaLocacion empresaLocacion = new LNEmpresaLocacion();
            List<VistaEmpresaLocacion> locaciones = empresaLocacion.ObtenerLocacionesPorIdEmpresa(ticket.IdEmpresa);

            int idEmpresaLocacion = 0;
            if (locaciones.Count > 0)
                idEmpresaLocacion = locaciones[0].IdEmpresaLocacion;
            else
            {
                //Si no tiene locaciones entonces no se muestra un error y la oferta no se crea, por regla todas las empresas
                //tienen al menos 1 locación y no debería entrar. Se coloca la condición por si existe data migrada errónea.
                StringBuilder msjAlUsuario = new StringBuilder();
                msjAlUsuario.Append("La empresa no cuenta con locaciones disponibles, cree una e intente nuevamente.");

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

                //Se redirecciona a la lista de ofertas.
                return RedirectToAction("Publicacion");
            }

            //Se completa los datos de la oferta borrador y se inserta en la BD.
            Oferta ofertaBorrador = new Oferta();
            ofertaBorrador.IdEmpresa = ticket.IdEmpresa;
            ofertaBorrador.UsuarioPropietarioEmpresa = ticket.Usuario; //Se guarda el usuario asignado.
            ofertaBorrador.EstadoOferta = Constantes.OFERTA_ESTADO_BORRADOR; //Estado oferta en borrador
            ofertaBorrador.CreadoPor = ticket.Usuario;
            ofertaBorrador.FechaFinRecepcionCV = DateTime.Now;
            ofertaBorrador.FechaFinProceso = DateTime.Now;
            ofertaBorrador.IdEmpresaLocacion = idEmpresaLocacion;
            ofertaBorrador.TipoTrabajoIdListaValor = "";
            ofertaBorrador.CargoOfrecido = "";
            ofertaBorrador.RecibeCorreosIdListaValor = "";

            int idOfertaGenerado = lnOfertaEmpresa.Insertar(ofertaBorrador);

            if (idOfertaGenerado > 0)
            {
                //Se redirecciona a la nueva oferta creada:
                return RedirectToAction("OfertaLaboral", new { id = Utiles.Helper.Encriptar(idOfertaGenerado.ToString()) });
            }

            #endregion

            //TicketEmpresa ticket = (TicketEmpresa)Session["TicketEmpresa"];

            ////Se envían datos de prueba.
            //Oferta oferta = new Oferta();
            //oferta.IdEmpresa = ticket.IdEmpresa;
            //oferta.UsuarioPropietarioEmpresa = "";
            //oferta.FechaPublicacion = DateTime.Now;
            //oferta.CreadoPor = ticket.Usuario;
            //oferta.FechaFinRecepcionCV = DateTime.Now; //Se establece la fecha actual para la nueva oferta.

            //LNGeneral lnGeneral = new LNGeneral();
            //LNEmpresaLocacion lnEmpresaLocacion = new LNEmpresaLocacion ();

            ////Se completan las listas:

            //ViewBag.TipoCargoIdListaValor = new SelectList(lnGeneral.ObtenerListaValor(Constantes.IDLISTA_TIPO_CARGO), "IdListaValor", "Valor");
            //ViewBag.TipoTrabajoIdListaValor = new SelectList(lnGeneral.ObtenerListaValor(Constantes.IDLISTA_TIPO_TRABAJO), "IdListaValor", "Valor");
            //ViewBag.TipoContratoIdListaValor = new SelectList(lnGeneral.ObtenerListaValor(Constantes.IDLISTA_TIPO_CONTRATO), "IdListaValor", "Valor");
            //ViewBag.IdEmpresaLocacion = new SelectList(lnEmpresaLocacion.ObtenerLocaciones(ticket.IdEmpresa), "IdEmpresaLocacion", "NombreLocacion");
            //ViewBag.RecibeCorreosIdListaValor = new SelectList(lnGeneral.ObtenerListaValor(Constantes.IDLISTA_OFERTA_RECIBECORREOS), "IdListaValor", "Valor");
            //ViewBag.FasesOferta = new SelectList(lnGeneral.ObtenerListaValor(Constantes.IDLISTA_FASE_OFERTA), "IdListaValor", "Valor");

            //return View(oferta);

            return RedirectToAction("Publicacion");
        }