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");
        }
        //-----
        public JsonResult verificarTokenUsuario(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")
            {
                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)
                {
                    strMensaje = "El Token no es correcto.";
                }
            }
            if (tipoUsuario != "USEREM" && !String.IsNullOrEmpty(tipoUsuario))
            {
                strMensaje = "Esta funcionalidad es solo para empresas";
            }
            return Json(strMensaje);
        }
        public PartialViewResult _VerDetalleEmpresaUsuarios(int id)
        {
            int idEmpresa = id;

            //Se obtiene la información de la BD
            LNEmpresaUsuario lnEmpresaUsuario = new LNEmpresaUsuario();
            List<VistaEmpresaUsuario> lista = lnEmpresaUsuario.ObtenerUsuariosPorIdEmpresa(id);

            return PartialView("_VerDetalleEmpresaUsuarios", lista);
        }
 public ActionResult CambiarClave(string contrasena, string usuario)
 {
     DataSet dsResultado = ln.Autenticar_Usuario(usuario);
     string tipoUsuario = Convert.ToString(dsResultado.Tables[0].Rows[0]["TipoUsuario"]);
     // Encriptar clave y luego actualizar solo en caso de usuario empresa
     switch (tipoUsuario) {
         case "USEREM":
             LNEmpresaUsuario lnEmpresaUsuario = new LNEmpresaUsuario();
             // encriptacion de la clave del usuario
             byte[] bytes = Encoding.Default.GetBytes(contrasena);
             SHA1 sha = new SHA1CryptoServiceProvider();
             byte[] password = sha.ComputeHash(bytes);
             String spassword = Encoding.Default.GetString(password);
             // actualizar nueva clave con la clave encriptada
             lnEmpresaUsuario.ActualizarContrasena(spassword, usuario);
             break;
         default:
             ViewBag.messageError = "Esta funcionalidad es solo para empresas";
             break;
     }
     // redireccionar a la pagina de inicio
     return RedirectToAction("Index", "Home");
 }
        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 PartialViewResult _UsuariosEmpresaUTPEditar(EmpresaUsuario empresaUsuario)
        {
            //if (ModelState.IsValid)
            //{
            TicketUTP ticket = (TicketUTP)Session["TicketUtp"];

            //empresaUsuario.Empresa.IdEmpresa = ticket.IdEmpresa;
            empresaUsuario.ModificadoPor = ticket.Usuario;

            LNEmpresaUsuario lnEmpresaUsuario = new LNEmpresaUsuario();
            lnEmpresaUsuario.Actualizar(empresaUsuario);

            //Se actualiza la lista de usuarios de la empresa.
            List<EmpresaUsuario> lista = lnEmpresaUsuario.ObtenerUsuariosParaUTP(1, Constantes.FILAS_POR_PAGINA_UTP, "");

            //Datos para la paginación.
            int cantidadTotal = lista.Count() == 0 ? 0 : lista[0].CantidadTotal;

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

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

            return PartialView("_UsuariosEmpresaLista", lista);
            //}
            //else
            //{
            //    var errors = ModelState.Select(x => x.Value.Errors)
            //               .Where(y => y.Count > 0)
            //               .ToList();

            //    int a = 0;
            //}
            //return PartialView("_AdministrarUsuarioEditar", empresaUsuario);
        }
        public ActionResult _UsuariosEmpresaLista(int nroPaginaActual, string nombre)
        {
            LNEmpresaUsuario lnEmpresaUsuario = new LNEmpresaUsuario();
            List<EmpresaUsuario> lista = lnEmpresaUsuario.ObtenerUsuariosParaUTP(nroPaginaActual, Constantes.FILAS_POR_PAGINA_UTP, nombre);

            //Datos para la paginación.
            int cantidadTotal = lista.Count() == 0 ? 0 : lista[0].CantidadTotal;

            Paginacion paginacion = new Paginacion();
            paginacion.NroPaginaActual = nroPaginaActual;
            paginacion.CantidadTotalResultados = cantidadTotal;
            paginacion.FilasPorPagina = Constantes.FILAS_POR_PAGINA_UTP; // Constantes.FILAS_POR_PAGINA_UTP;
            paginacion.TotalPaginas = cantidadTotal / Constantes.FILAS_POR_PAGINA_UTP; // Constantes.FILAS_POR_PAGINA_UTP;
            int residuo = cantidadTotal % Constantes.FILAS_POR_PAGINA_UTP; // Constantes.FILAS_POR_PAGINA_UTP;
            if (residuo > 0) paginacion.TotalPaginas += 1;

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

            return PartialView("_UsuariosEmpresaLista", lista);
            //return PartialView("_UsuariosUTPLista");
        }
        public PartialViewResult _UsuariosEmpresaUTPCrear(EmpresaUsuario empresaUsuario)
        {
            //if (ModelState.IsValid)
            //{
            TicketUTP ticket = (TicketUTP)Session["TicketUTP"];

            empresaUsuario.CreadoPor = ticket.Usuario;
            empresaUsuario.Empresa.IdEmpresa = Convert.ToInt32(empresaUsuario.CodigoEmpresa);
            empresaUsuario.IdEmpresaLocacion = Convert.ToInt32(empresaUsuario.ListaUbicaciones);

            LNEmpresaUsuario lnEmpresaUsuario = new LNEmpresaUsuario();
            lnEmpresaUsuario.Insertar(empresaUsuario);

            List<EmpresaUsuario> lista = lnEmpresaUsuario.ObtenerUsuariosParaUTP(1, Constantes.FILAS_POR_PAGINA_UTP, "");

            //Datos para la paginación.
            int cantidadTotal = lista.Count() == 0 ? 0 : lista[0].CantidadTotal;

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

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

            return PartialView("_UsuariosEmpresaLista", lista);
        }
        public ActionResult ValidarNroDocumento(string nroDocumento, int idEmpresa, int idEmpresaUsuario)
        {
            LNEmpresaUsuario lnEmpresaUsuario = new LNEmpresaUsuario ();

            int cantidad = lnEmpresaUsuario.ValidarNumeroDocumento(idEmpresa, nroDocumento, idEmpresaUsuario);

            return Json(cantidad, JsonRequestBehavior.AllowGet);
        }
        public ActionResult _EmpresaNuevaModal(VistaRegistroEmpresa empresa)
        {
            LNUsuario lnUsuario = new LNUsuario();
            StringBuilder mensajeDeError = new StringBuilder();
            if (lnUsuario.ValidarExistenciaEmpresa(empresa.PaisIdListaValor, empresa.IdentificadorTributario))
            {
                mensajeDeError.Append("La Empresa ya se encuentra registrada<br />");
            }
            if (mensajeDeError.ToString() == "")
            {
                LNEmpresa lnEmpresa = new LNEmpresa();
                //Empresa
                TicketUTP ticket = (TicketUTP)Session["TicketUTP"];
                empresa.CreadoPor = ticket.Usuario;

                empresa.EstadoIdListaValor = "EMPRNO"; //Estado de la empresa No Activa.
                //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;
                }

                lnEmpresa.Insertar(empresa);

                //Si el registro fue exitoso redireccionar a página de resultado.
                TempData["GuardaRegistroExitoso"] = "La Empresa <strong>" + empresa.NombreComercial
                + "</strong>se ha registrado con éxito. ";
                //Aquí debería enviarse un correo
                //return PartialView();
            }
            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 RedirectToAction("Empresas");

            LNEmpresaUsuario lnEmpresaUsuario = new LNEmpresaUsuario();
            List<EmpresaUsuario> lista = lnEmpresaUsuario.ObtenerUsuariosParaUTP(1, Constantes.FILAS_POR_PAGINA_UTP, "");

            //Datos para la paginación.
            int cantidadTotal = lista.Count() == 0 ? 0 : lista[0].CantidadTotal;

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

            ViewBag.Paginacion = paginacion;
            ViewBag.TipoBusqueda = "Simple";
            TicketUTP ticketUtp = (TicketUTP)Session["TicketUtp"];
            ViewBag.Rol = ticketUtp.Rol;

            return PartialView("_ResultadoBusquedaEmpresas", lista);
        }
        public PartialViewResult _VistaOfertaAdministracion(Oferta oferta, string pantalla = "")
        {
            TicketEmpresa ticket = (TicketEmpresa)Session["TicketEmpresa"];

            if (pantalla == "Empresa")
            {
                //Se obtienen los usuarios de la empresa con roles Administrador, Supervisor y Usuario.
                LNEmpresaUsuario lnEmpresaUsuario = new LNEmpresaUsuario();
                List<VistaEmpresaUsuario> lista = lnEmpresaUsuario.ObtenerUsuariosActivosYPorRolesPorIdEmpresa(ticket.IdEmpresa);
                ViewBag.UsuarioPropietarioEmpresa = new SelectList(lista, "NombreUsuario", "NombreCompletoUsuario", oferta.UsuarioPropietarioEmpresa);
            }

            ViewBag.Pantalla = pantalla;

            return PartialView("_VistaOfertaAdministracion", oferta);
        }
        public PartialViewResult _AdministrarUsuarioEditarTMP(EmpresaUsuario empresaUsuario)
        {
            if (ModelState.IsValid)
            {
                TicketEmpresa ticket = (TicketEmpresa)Session["TicketEmpresa"];

                empresaUsuario.Empresa.IdEmpresa = ticket.IdEmpresa;
                empresaUsuario.ModificadoPor = ticket.Usuario;

                LNEmpresaUsuario lnEmpresaUsuario = new LNEmpresaUsuario();
                lnEmpresaUsuario.Actualizar(empresaUsuario);

                //Se crea una variable temporal para mostra el mensaje:
                TempData["_AdministrarUsuarioEditarTMP"] = "Los datos se modificaron con éxito.";

                VistaPanelCabecera panel = new VistaPanelCabecera();

                ViewBag.IdEmpresa = ticket.IdEmpresa;
                ViewBag.EstiloPanel = " in";
                //Se cargan los datos del empresaUsuario autenticado:
                panel = lnEmpresa.ObtenerPanelCabecera(ticket.Usuario);

                return PartialView("_DatosUsuario", panel);
            }
            else
            {
                var errors = ModelState.Select(x => x.Value.Errors)
                           .Where(y => y.Count > 0)
                           .ToList();

                int a = 0;
            }
            return PartialView("_AdministrarUsuarioEditar", empresaUsuario);
        }
        public PartialViewResult _AdministrarUsuarioEditar(EmpresaUsuario empresaUsuario)
        {
            if (ModelState.IsValid)
            {
                TicketEmpresa ticket = (TicketEmpresa)Session["TicketEmpresa"];

                empresaUsuario.Empresa.IdEmpresa = ticket.IdEmpresa;
                empresaUsuario.ModificadoPor = ticket.Usuario;

                LNEmpresaUsuario lnEmpresaUsuario = new LNEmpresaUsuario();
                lnEmpresaUsuario.Actualizar(empresaUsuario);

                //Se obtienen los usuarios desde la BD.
                var empresa = lnEmpresa.ObtenerDatosEmpresaPorId(ticket.IdEmpresa);

                return PartialView("_AdministrarUsuarios", empresa.Usuarios);
            }
            else
            {
                var errors = ModelState.Select(x => x.Value.Errors)
                           .Where(y => y.Count > 0)
                           .ToList();

                int a = 0;
            }
            return PartialView("_AdministrarUsuarioEditar", empresaUsuario);
        }
        public PartialViewResult _AdministrarUsuarioEditar(int id)
        {
            TicketEmpresa ticket = (TicketEmpresa)Session["TicketEmpresa"];

            LNEmpresaUsuario lnEmpresaUsuario = new LNEmpresaUsuario();
            EmpresaUsuario empresaUsuario = lnEmpresaUsuario.ObtenerPorIdEmpresaUsuario(id);

            LNEmpresaLocacion lnEmpresaLocacion = new LNEmpresaLocacion();

            ViewBag.IdEmpresaLocacion = new SelectList(lnEmpresaLocacion.ObtenerLocaciones(ticket.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 = ticket.IdEmpresa;

            //Se devuelve la lista parcial con el usuario.
            return PartialView("_AdministrarUsuarioEditar", empresaUsuario);
        }
        public PartialViewResult _AdministrarNuevoUsuario(EmpresaUsuario empresaUsuario)
        {
            if (ModelState.IsValid)
            {
                TicketEmpresa ticket = (TicketEmpresa)Session["TicketEmpresa"];

                empresaUsuario.Empresa.IdEmpresa = ticket.IdEmpresa;
                empresaUsuario.CreadoPor = ticket.Usuario;

                LNEmpresaUsuario lnEmpresaUsuario = new LNEmpresaUsuario();
                lnEmpresaUsuario.Insertar(empresaUsuario);

                //Se obtienen los usuarios desde la BD.
                var empresa = lnEmpresa.ObtenerDatosEmpresaPorId(ticket.IdEmpresa);

                return PartialView("_AdministrarUsuarios", empresa.Usuarios);
            }

            return PartialView("_AdministrarNuevoUsuario", empresaUsuario);
        }