public ActionResult Asignar(string id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            // no deberia cargar datos de la asignacion pasada, cada asignacion es nueva
            // si quiero ver a quien esta asignado nada mas puedo ver los detalles del activo
            ACTIVO aCTIVO = db.ACTIVOS.Find(id);

            if (aCTIVO.DESECHADO)
            {
                return(RedirectToAction("Index"));
            }

            aCTIVO.COMENTARIO = "";


            if (aCTIVO == null)
            {
                return(HttpNotFound());
            }
            ViewBag.V_EMPLEADOSIDEMPLEADO = new SelectList(db.V_EMPLEADOS.Where(emp => emp.ESTADO.Equals(1) && emp.EMAIL.Contains("@")).OrderBy(emp => emp.NOMBRE), "IDEMPLEADO", "NOMBRE");
            ViewBag.ESTADO_ACTIVOID       = new SelectList(db.ESTADOS_ACTIVOS.OrderBy(ea => ea.NOMBRE), "ID", "NOMBRE", aCTIVO.ESTADO_ACTIVOID);
            ViewBag.V_ESTACIONID          = new SelectList(db.V_ESTACION.OrderBy(e => e.NOMBRE), "ID", "NOMBRE", aCTIVO.V_ESTACIONID);
            ViewBag.CENTRO_DE_COSTOId     = new SelectList(db.CENTROS_DE_COSTOS, "ID", "NOMBRE", aCTIVO.CENTRO_DE_COSTOId);
            return(View(aCTIVO));
        }
        public ActionResult DeleteConfirmed(string id)
        {
            ACTIVO aCTIVO = db.ACTIVOS.Find(id);

            if (aCTIVO.DESECHADO)
            {
                return(RedirectToAction("Index"));
            }

            aCTIVO.DESECHADO = true;
            var estado = db.ESTADOS_ACTIVOS.ToList().Where(ea => ea.NOMBRE == "Desechado");

            aCTIVO.ESTADO_ACTIVOID = estado.ToList()[0].ID;

            var consulta_proveedor   = db.V_PROVEEDOR.ToList().Where(ea => ea.IDPROVEEDOR == aCTIVO.V_PROVEEDORIDPROVEEDOR);
            var proveedor            = consulta_proveedor.ToList()[0].NOMBRE;
            var consulta_anfitriona  = db.V_ANFITRIONA.ToList().Where(ea => ea.ID == aCTIVO.V_ANFITRIONAID);
            var anfitriona           = consulta_anfitriona.ToList()[0].NOMBRE;
            var consulta_transaccion = db.TIPOS_TRANSACCIONES.ToList().Where(ea => ea.ID == aCTIVO.TIPO_TRANSACCIONID);
            var transaccion          = consulta_transaccion.ToList()[0].NOMBRE;

            db.SaveChanges();
            controladora_transaccion.Create(User.Identity.GetUserName(), "Eliminado", aCTIVO.descripcion(proveedor, transaccion, anfitriona), aCTIVO.ID);
            return(RedirectToAction("Index"));
        }
        public ActionResult Edit(string id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            ACTIVO aCTIVO = db.ACTIVOS.Find(id);

            if (aCTIVO.DESECHADO)
            {
                return(RedirectToAction("Index"));
            }
            if (aCTIVO == null)
            {
                return(HttpNotFound());
            }

            ViewBag.TIPO_TRANSACCIONID     = new SelectList(db.TIPOS_TRANSACCIONES.OrderBy(tt => tt.NOMBRE), "ID", "NOMBRE", aCTIVO.TIPO_TRANSACCIONID);
            ViewBag.TIPO_ACTIVOID          = new SelectList(db.TIPOS_ACTIVOS.OrderBy(ta => ta.NOMBRE), "ID", "NOMBRE", aCTIVO.TIPO_ACTIVOID);
            ViewBag.V_PROVEEDORIDPROVEEDOR = new SelectList(db.V_PROVEEDOR.OrderBy(p => p.NOMBRE), "IDPROVEEDOR", "NOMBRE", aCTIVO.V_PROVEEDORIDPROVEEDOR);
            ViewBag.V_ANFITRIONAID         = new SelectList(db.V_ANFITRIONA.OrderBy(a => a.NOMBRE), "ID", "NOMBRE", aCTIVO.V_ANFITRIONAID);
            ViewBag.V_MONEDAID             = new SelectList(db.V_MONEDA, "ID", "SIMBOLO", aCTIVO.V_MONEDAID);
            ViewBag.FECHA_INGRESO          = aCTIVO.FECHA_INGRESO.Date;
            return(View(aCTIVO));
        }
        // GET: Empleados/Details/5
        public ActionResult Details(string id)
        {
            // TODO: mostrar los activos que ha tenido asignado el usuario consultado
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            V_EMPLEADOS             v_EMPLEADOS       = db.V_EMPLEADOS.Find(id);
            List <ActivosAsignados> activos_asignados = new List <ActivosAsignados>();
            List <TRANSACCION>      transacciones     = db.TRANSACCIONES.Where(em => em.V_EMPLEADOSIDEMPLEADO.Equals(id)).ToList();

            foreach (var item in transacciones)
            {
                ACTIVO activo = db.ACTIVOS.Find(item.ACTIVOID);
                activos_asignados.Add(new ActivosAsignados(activo.ID, item.FECHA, activo.DESCRIPCION, activo.MODELO, activo.PLACA, activo.DESECHADO));
            }
            activos_asignados.OrderBy(f => f.transaccion_fecha);
            ViewBag.activos_asignados = activos_asignados;

            if (v_EMPLEADOS == null)
            {
                return(HttpNotFound());
            }
            return(View(v_EMPLEADOS));
        }
Ejemplo n.º 5
0
        //
        // GET: /Users/Details/5
        public async Task <ActionResult> Details(string id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            var user = await UserManager.FindByIdAsync(id);

            ViewBag.RoleNames = await UserManager.GetRolesAsync(user.Id);

            var estaciones = db.V_ESTACION.ToList();

            ViewBag.Estacion = estaciones.Where(e => e.ID.Equals(user.EstacionID)).ToList()[0].NOMBRE;
            List <TRANSACCION>            listaTransacciones   = db.TRANSACCIONES.Where(e => e.RESPONSABLE.Equals(user.Email)).ToList();
            List <TransaccionesConActivo> transacciones_listas = new List <TransaccionesConActivo>();

            foreach (TRANSACCION item in listaTransacciones)
            {
                ACTIVO        activo = db.ACTIVOS.Find(item.ACTIVOID);
                TIPOS_ACTIVOS tipo   = db.TIPOS_ACTIVOS.Find(activo.TIPO_ACTIVOID);
                transacciones_listas.Add(new TransaccionesConActivo(item.ACTIVOID, item.FECHA, activo.DESCRIPCION, item.DESCRIPCION, activo.PLACA, activo.DESECHADO, item.ESTADO, tipo.NOMBRE));
            }
            ViewBag.Transacciones = transacciones_listas;

            return(View(user));
        }
        public ActionResult Create([Bind(Include = "ID,NUMERO_SERIE,FECHA_COMPRA,INICIO_SERVICIO,FECHA_INGRESO,FABRICANTE,PRECIO,DESCRIPCION,EXENTO,PRESTABLE,TIPO_CAPITAL,INGRESADO_POR,NUMERO_DOCUMENTO,NUMERO_LOTE,TIPO_TRANSACCIONID,ESTADO_ACTIVOID,TIPO_ACTIVOID,COMENTARIO,DESECHADO,MODELO,V_EMPLEADOSIDEMPLEADO,V_ESTACIONID,V_ANFITRIONAID,V_PROVEEDORIDPROVEEDOR,V_MONEDAID,CENTRO_DE_COSTOId,PLACA,ESTADO_PRESTADO")] ACTIVO aCTIVO)
        {
            var estado = db.ESTADOS_ACTIVOS.ToList().Where(ea => ea.NOMBRE == "Disponible");

            aCTIVO.ESTADO_ACTIVOID = estado.ToList()[0].ID;
            aCTIVO.INGRESADO_POR   = User.Identity.Name;
            decimal precio;

            if (db.V_MONEDA.Find(Request["V_MONEDAID"]).NOMBRE.Equals("Colones"))
            {
                // Colones
                decimal tipo_cambio = db.V_TIPO_CAMBIO.ToList()[0].TIPOCAMBIO;
                precio = aCTIVO.PRECIO / tipo_cambio;
            }
            else
            {
                //Dolares
                precio = aCTIVO.PRECIO;
            }
            aCTIVO.TIPO_CAPITAL = (precio >= 1000) ? true : false;

            if (ModelState.IsValid)
            {
                db.ACTIVOS.Add(aCTIVO);
                db.SaveChanges();


                var consulta_proveedor   = db.V_PROVEEDOR.ToList().Where(ea => ea.IDPROVEEDOR == aCTIVO.V_PROVEEDORIDPROVEEDOR);
                var proveedor            = consulta_proveedor.ToList()[0].NOMBRE;
                var consulta_anfitriona  = db.V_ANFITRIONA.ToList().Where(ea => ea.ID == aCTIVO.V_ANFITRIONAID);
                var anfitriona           = consulta_anfitriona.ToList()[0].NOMBRE;
                var consulta_transaccion = db.TIPOS_TRANSACCIONES.ToList().Where(ea => ea.ID == aCTIVO.TIPO_TRANSACCIONID);
                var transaccion          = consulta_transaccion.ToList()[0].NOMBRE;

                controladora_transaccion.Create(User.Identity.GetUserName(), "Creado", aCTIVO.descripcion(proveedor, transaccion, anfitriona), aCTIVO.ID);
                return(RedirectToAction("Index"));
            }

            ViewBag.TIPO_TRANSACCIONID     = new SelectList(db.TIPOS_TRANSACCIONES.OrderBy(tt => tt.NOMBRE), "ID", "NOMBRE", aCTIVO.TIPO_TRANSACCIONID);
            ViewBag.TIPO_ACTIVOID          = new SelectList(db.TIPOS_ACTIVOS.OrderBy(ta => ta.NOMBRE), "ID", "NOMBRE", aCTIVO.TIPO_ACTIVOID);
            ViewBag.V_PROVEEDORIDPROVEEDOR = new SelectList(db.V_PROVEEDOR.OrderBy(p => p.NOMBRE), "IDPROVEEDOR", "NOMBRE", aCTIVO.V_PROVEEDORIDPROVEEDOR);
            ViewBag.V_ANFITRIONAID         = new SelectList(db.V_ANFITRIONA.OrderBy(a => a.NOMBRE), "ID", "NOMBRE", aCTIVO.V_ANFITRIONAID);
            ViewBag.V_MONEDAID             = new SelectList(db.V_MONEDA, "ID", "SIMBOLO", aCTIVO.V_MONEDAID);
            ViewBag.FECHA_INGRESO          = DateTime.Now.ToString("yyyy-MM-dd");
            ViewBag.INGRESADO_POR          = User.Identity.Name;
            return(View(aCTIVO));
        }
        public ActionResult Delete(string id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ACTIVO aCTIVO = db.ACTIVOS.Find(id);

            if (aCTIVO.DESECHADO)
            {
                return(RedirectToAction("Index"));
            }
            if (aCTIVO == null)
            {
                return(HttpNotFound());
            }
            return(View(aCTIVO));
        }
        public ActionResult Details(string id, bool reparaciones = false)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ACTIVO aCTIVO = db.ACTIVOS.Find(id);

            if (aCTIVO == null)
            {
                return(HttpNotFound());
            }

            aCTIVO.TRANSACCIONES = aCTIVO.TRANSACCIONES.Where(a => a.ACTIVOID.Equals(id)).ToList();
            if (reparaciones)
            {
                aCTIVO.TRANSACCIONES = aCTIVO.TRANSACCIONES.Where(a => a.ESTADO.Equals("Dañado sin reparación") || a.ESTADO.Equals("En reparación")).ToList();
            }
            aCTIVO.TRANSACCIONES = aCTIVO.TRANSACCIONES.OrderByDescending(a => a.FECHA).ToList();

            return(View(aCTIVO));
        }
        // GET: Inventario
        public ActionResult Inventario(string orden, int?pagina, string busqueda)
        {
            ViewBag.OrdenActual = orden;
            ViewBag.Compania    = String.IsNullOrEmpty(orden) ? "compania_desc" : "";
            ViewBag.Estacion    = (orden == "estacion_asc") ? "estacion_desc" : "estacion_asc";
            ViewBag.Tipo        = (orden == "tipo_asc") ? "tipo_desc" : "tipo_asc";
            ViewBag.Responsable = (orden == "responsable_asc") ? "responsable_desc" : "responsable_asc";
            ViewBag.Descripcion = (orden == "descrip_asc") ? "descrip_desc" : "descrip_asc";


            //se obtiene el usuario loggeado
            var                 user    = UserManager.FindById(User.Identity.GetUserId());
            Boolean             isAdmin = User.IsInRole("superadmin") ? true : false;
            IQueryable <ACTIVO> aCTIVOS = ACTIVO.busquedaSimple(busqueda, user.EstacionID, isAdmin);

            switch (orden)
            {
            case "compania_desc":
                aCTIVOS = aCTIVOS.OrderByDescending(a => a.V_ANFITRIONA.SIGLAS);
                break;

            case "estacion_asc":
                aCTIVOS = aCTIVOS.OrderBy(a => a.V_ESTACION.SIGLAS);
                break;

            case "estacion_desc":
                aCTIVOS = aCTIVOS.OrderByDescending(a => a.V_ESTACION.SIGLAS);
                break;

            case "tipo_asc":
                aCTIVOS = aCTIVOS.OrderBy(a => a.TIPOS_ACTIVOS.NOMBRE);
                break;

            case "tipo_desc":
                aCTIVOS = aCTIVOS.OrderByDescending(a => a.TIPOS_ACTIVOS.NOMBRE);
                break;

            case "responsable_asc":
                aCTIVOS = aCTIVOS.OrderBy(a => a.V_EMPLEADOS.NOMBRE);
                break;

            case "responsable_desc":
                aCTIVOS = aCTIVOS.OrderByDescending(a => a.V_EMPLEADOS.NOMBRE);
                break;

            case "descrip_desc":
                aCTIVOS = aCTIVOS.OrderByDescending(a => a.DESCRIPCION);
                break;

            case "descrip_asc":
                aCTIVOS = aCTIVOS.OrderBy(a => a.DESCRIPCION);
                break;

            default:
                aCTIVOS = aCTIVOS.OrderBy(a => a.V_ANFITRIONA.SIGLAS);
                break;
            }

            int tamano_pagina = 20;
            int num_pagina    = (pagina ?? 1);

            return(View(aCTIVOS.ToPagedList(num_pagina, tamano_pagina)));
        }
        public ActionResult Asignar([Bind(Include = "ID,NUMERO_SERIE,FECHA_COMPRA,INICIO_SERVICIO,FECHA_INGRESO,FABRICANTE,PRECIO,DESCRIPCION,EXENTO,PRESTABLE,TIPO_CAPITAL,INGRESADO_POR,NUMERO_DOCUMENTO,NUMERO_LOTE,TIPO_TRANSACCIONID,ESTADO_ACTIVOID,TIPO_ACTIVOID,COMENTARIO,DESECHADO,MODELO,V_EMPLEADOSIDEMPLEADO,V_ESTACIONID,V_ANFITRIONAID,V_PROVEEDORIDPROVEEDOR,V_MONEDAID,CENTRO_DE_COSTOId,PLACA,ESTADO_PRESTADO")] ACTIVO aCTIVO)
        {
            var original = db.ACTIVOS.Find(aCTIVO.ID);

            if (aCTIVO.DESECHADO)
            {
                return(RedirectToAction("Index"));
            }

            if (original != null)
            {
                original.INICIO_SERVICIO = aCTIVO.INICIO_SERVICIO;
                original.ESTADO_ACTIVOID = aCTIVO.ESTADO_ACTIVOID;
                // si no se cambio el comentario, dejar el original
                original.COMENTARIO = aCTIVO.COMENTARIO == null ? original.COMENTARIO : aCTIVO.COMENTARIO;
                // Si el activo se pone como asignado, agregar id de empleado encargado, id de estacion de epleado y centro de costo
                int id_estado_asignado = db.ESTADOS_ACTIVOS.Where(ea => ea.NOMBRE.Equals("Asignado")).ToList()[0].ID; // Se busca el identificador del estado Asignado
                if (aCTIVO.ESTADO_ACTIVOID == id_estado_asignado)
                {
                    original.V_EMPLEADOSIDEMPLEADO = aCTIVO.V_EMPLEADOSIDEMPLEADO;
                    // Al activo se le asigna la estacion del empleado encargado, para que siempre este correcta y no dependa de la correctitud del filtro de empleados por estacion.
                    original.V_ESTACIONID      = (db.V_EMPLEADOS.ToList().Where(ea => ea.IDEMPLEADO == aCTIVO.V_EMPLEADOSIDEMPLEADO)).ToList()[0].ESTACION_ID;
                    original.CENTRO_DE_COSTOId = aCTIVO.CENTRO_DE_COSTOId;

                    var empleado = db.V_EMPLEADOS.Find(aCTIVO.V_EMPLEADOSIDEMPLEADO);

                    if (empleado.EMAIL.Contains("@"))
                    {
                        var mensaje_correo = new SendGridMessage();
                        mensaje_correo.From = new System.Net.Mail.MailAddress("*****@*****.**", "Admin"); // CAMBIAR CON EL CORREO DESDE EL QUE SE VAN A ENVIAR LOS MENSAJES
                        List <String> destinatarios = new List <string>
                        {
                            @"" + empleado.NOMBRE + " <" + empleado.EMAIL + ">"
                            //@"Jose Urena <*****@*****.**>" // PARA ESTABLECER EL CORREO DONDE SE ENVIA LA INFORMACION, ELIMINAR ESTA LINEA Y DESCOMENTAR LA LINEA SUPERIOR.
                        };

                        mensaje_correo.AddTo(destinatarios);
                        mensaje_correo.Subject = "Activo asignado a su cuenta de OET.";
                        mensaje_correo.Html   += "<h2>La OET le informa</h2><br />";
                        mensaje_correo.Html   += "A través de este correo la OET desea informarle que un nuevo activo ha sido asignado a su nombre." + "<br />" + "<br />";
                        mensaje_correo.Html   += "A continuación se enlistan las características del activo: " + "<br />" + "<br />" + "<br />";
                        mensaje_correo.Html   += "Descripción: " + original.DESCRIPCION + "<br />" + "<br />";
                        mensaje_correo.Html   += "Número de placa: " + original.PLACA + "<br />" + "<br />";
                        mensaje_correo.Html   += "Inicio del servicio: " + original.INICIO_SERVICIO + "<br />" + "<br />";
                        mensaje_correo.Html   += "Comentarios: " + original.COMENTARIO + "<br />";

                        var credentials  = new NetworkCredential(ConfigurationManager.AppSettings["mailAccount"], ConfigurationManager.AppSettings["mailPassword"]);
                        var transportWeb = new SendGrid.Web(credentials);
                        transportWeb.DeliverAsync(mensaje_correo);
                    }
                }
                else
                {
                    // Si no se asigna entonces se le quita la estacion, el centro de costo y el empleado responsable
                    original.V_ESTACIONID          = "";
                    original.CENTRO_DE_COSTOId     = null;
                    original.V_EMPLEADOSIDEMPLEADO = "";
                }

                db.SaveChanges();

                var consulta_proveedor   = db.V_PROVEEDOR.ToList().Where(ea => ea.IDPROVEEDOR == original.V_PROVEEDORIDPROVEEDOR);
                var proveedor            = consulta_proveedor.ToList()[0].NOMBRE;
                var consulta_anfitriona  = db.V_ANFITRIONA.ToList().Where(ea => ea.ID == original.V_ANFITRIONAID);
                var anfitriona           = consulta_anfitriona.ToList()[0].NOMBRE;
                var consulta_transaccion = db.TIPOS_TRANSACCIONES.ToList().Where(ea => ea.ID == original.TIPO_TRANSACCIONID);
                var transaccion          = consulta_transaccion.ToList()[0].NOMBRE;

                // Si el activo se pone como asignado, se agrega id del responsable a la bitacora.
                if (aCTIVO.ESTADO_ACTIVOID == id_estado_asignado)
                {
                    controladora_transaccion.CreateWithResponsible(User.Identity.GetUserName(), original.ESTADOS_ACTIVOS.NOMBRE, original.descripcion(proveedor, transaccion, anfitriona), original.ID, aCTIVO.V_EMPLEADOSIDEMPLEADO);
                }
                else
                {
                    controladora_transaccion.Create(User.Identity.GetUserName(), original.ESTADOS_ACTIVOS.NOMBRE, original.descripcion(proveedor, transaccion, anfitriona), original.ID);
                }

                return(RedirectToAction("Index"));
            }
            ViewBag.V_EMPLEADOSIDEMPLEADO = new SelectList(db.V_EMPLEADOS.Where(emp => emp.ESTADO.Equals(1) && emp.EMAIL.Contains("@")).OrderBy(emp => emp.NOMBRE), "IDEMPLEADO", "NOMBRE", aCTIVO.V_EMPLEADOSIDEMPLEADO);
            ViewBag.ESTADO_ACTIVOID       = new SelectList(db.ESTADOS_ACTIVOS.OrderBy(ea => ea.NOMBRE), "ID", "NOMBRE", aCTIVO.ESTADO_ACTIVOID);
            ViewBag.V_ESTACIONID          = new SelectList(db.V_ESTACION.OrderBy(e => e.NOMBRE), "ID", "NOMBRE", aCTIVO.V_ESTACIONID);
            ViewBag.CENTRO_DE_COSTOId     = new SelectList(db.CENTROS_DE_COSTOS, "ID", "NOMBRE", aCTIVO.CENTRO_DE_COSTOId);
            return(View(aCTIVO));
        }
        public ActionResult Index(string orden, string filtro, string busqueda, string V_PROVEEDORIDPROVEEDOR, string TIPO_ACTIVOID, string V_ANFITRIONAID, string TIPO_TRANSACCIONID, string ESTADO_ACTIVOID, string V_ESTACIONID, string fecha_antes, string fecha_despues, string usuario, string fabricante, int?pagina)
        {
            ViewBag.OrdenActual = orden;
            ViewBag.Compania    = String.IsNullOrEmpty(orden) ? "compania_desc" : "";
            ViewBag.Estacion    = (orden == "estacion_asc") ? "estacion_desc" : "estacion_asc";
            ViewBag.Tipo        = (orden == "tipo_asc") ? "tipo_desc" : "tipo_asc";
            ViewBag.Responsable = (orden == "responsable_asc") ? "responsable_desc" : "responsable_asc";
            ViewBag.Descripcion = (orden == "descrip_asc") ? "descrip_desc" : "descrip_asc";
            //se obtiene el usuario loggeado
            var     user    = UserManager.FindById(User.Identity.GetUserId());
            Boolean isAdmin = User.IsInRole("superadmin") ? true : false;

            // Paginación
            if (busqueda != null)
            {
                pagina = 1;
            }
            else
            {
                busqueda = filtro;
            }

            ViewBag.FiltroActual = busqueda;

            // Busqueda con base en los parametros que ingresa el usuario
            #region Busqueda simple
            IQueryable <ACTIVO> aCTIVOS = ACTIVO.busquedaSimple(busqueda, user.EstacionID, isAdmin); //OJO
            #endregion

            #region Busqueda avanzada

            // Para las opciones de busqueda avanzada
            ViewBag.TIPO_TRANSACCIONID     = new SelectList(db.TIPOS_TRANSACCIONES, "ID", "NOMBRE");
            ViewBag.TIPO_ACTIVOID          = new SelectList(db.TIPOS_ACTIVOS, "ID", "NOMBRE");
            ViewBag.V_PROVEEDORIDPROVEEDOR = new SelectList(db.V_PROVEEDOR, "IDPROVEEDOR", "NOMBRE");
            ViewBag.V_ANFITRIONAID         = new SelectList(db.V_ANFITRIONA, "ID", "NOMBRE");
            ViewBag.ESTADO_ACTIVOID        = new SelectList(db.ESTADOS_ACTIVOS, "ID", "NOMBRE");
            ViewBag.V_ESTACIONID           = new SelectList(db.V_ESTACION, "ID", "NOMBRE");

            Dictionary <string, string> params_busqueda = new Dictionary <string, string>();

            params_busqueda.Add("proveedor", V_PROVEEDORIDPROVEEDOR);
            params_busqueda.Add("tipo_activo", TIPO_ACTIVOID);
            params_busqueda.Add("anfitriona", V_ANFITRIONAID);
            params_busqueda.Add("tipo_transaccion", TIPO_TRANSACCIONID);
            params_busqueda.Add("fecha_antes", fecha_antes);
            params_busqueda.Add("fecha_despues", fecha_despues);
            params_busqueda.Add("usuario", usuario);
            params_busqueda.Add("estado_activo", ESTADO_ACTIVOID);
            params_busqueda.Add("estacion", V_ESTACIONID);
            params_busqueda.Add("fabricante", fabricante);

            aCTIVOS = ACTIVO.busquedaAvanzada(params_busqueda, aCTIVOS);
            #endregion

            switch (orden)
            {
            case "compania_desc":
                aCTIVOS = aCTIVOS.OrderByDescending(a => a.V_ANFITRIONA.SIGLAS);
                break;

            case "estacion_asc":
                aCTIVOS = aCTIVOS.OrderBy(a => a.V_ESTACION.SIGLAS);
                break;

            case "estacion_desc":
                aCTIVOS = aCTIVOS.OrderByDescending(a => a.V_ESTACION.SIGLAS);
                break;

            case "tipo_asc":
                aCTIVOS = aCTIVOS.OrderBy(a => a.TIPOS_ACTIVOS.NOMBRE);
                break;

            case "tipo_desc":
                aCTIVOS = aCTIVOS.OrderByDescending(a => a.TIPOS_ACTIVOS.NOMBRE);
                break;

            case "responsable_asc":
                aCTIVOS = aCTIVOS.OrderBy(a => a.V_EMPLEADOS.NOMBRE);
                break;

            case "responsable_desc":
                aCTIVOS = aCTIVOS.OrderByDescending(a => a.V_EMPLEADOS.NOMBRE);
                break;

            case "descrip_desc":
                aCTIVOS = aCTIVOS.OrderByDescending(a => a.DESCRIPCION);
                break;

            case "descrip_asc":
                aCTIVOS = aCTIVOS.OrderBy(a => a.DESCRIPCION);
                break;

            default:
                aCTIVOS = aCTIVOS.OrderBy(a => a.V_ANFITRIONA.SIGLAS);
                break;
            }

            int tamano_pagina = 20;
            int num_pagina    = (pagina ?? 1);

            return(View(aCTIVOS.ToPagedList(num_pagina, tamano_pagina)));
        }