コード例 #1
0
        public async Task <IHttpActionResult> Detalle(SolicitudComunicacionesModel model)
        {
            if (!ComprobarClaves(model))
            {
                return(Unauthorized());
            }

            // Validación del modelo: ComunicacionID tiene valor, UID se ha especificado, Subdominio se ha especificado.
            if (!model.ComunicacionID.HasValue || string.IsNullOrWhiteSpace(model.UID) || string.IsNullOrWhiteSpace(model.Subdominio))
            {
                log.Warn($"Modelo no válido: ComunicacionID={model.ComunicacionID}, UID={model.UID}, subdominio={model.Subdominio}.");
                return(BadRequest());
            }

            ComunicacionDetalleModel resul;

            try
            {
                Aplicacion app = Aplicacion(model.Subdominio);
                IComunicacionesServicio srv = Servicios.ComunicacionesServicio();
                Comunicacion            c   = srv.ConsultarComunicacion(model.ComunicacionID.Value, model.UID, GetClientIp());
                await srv.ApplyChangesAsync();

                resul = ComunicacionDetalleModel.FromEntity(c);
                return(Ok(resul));
            }
            catch (Exception e)
            {
                log.Error($"Error al consultar comunicación {model.ComunicacionID} el terminal {model.UID}.", e);
                return(Ok <ComunicacionDetalleModel>(null));
            }
        }
コード例 #2
0
        /// <summary>
        /// Devuelve la lista de publicaciones de la aplicación actual para la web, aplicando posibles
        /// restricciones de filtrado, ordenación y paginado.
        /// </summary>
        /// <returns>DataSourceResult para un componente telerik tipo Grid, ListView o similar.</returns>
        public async Task <ActionResult> ComunicacionesPublicadas([DataSourceRequest] DataSourceRequest request)
        {
            // Si el único filtro es CategoriaID == -1, tenemos que devolver sólo las comunicaciones destacadas
            if (request.Filters.Count == 1)
            {
                FilterDescriptor filtro = request.Filters[0] as FilterDescriptor;
                if (filtro != null &&
                    filtro.Member == "CategoriaID" &&
                    filtro.Operator == FilterOperator.IsEqualTo &&
                    filtro.Value.ToString() == "-1")
                {
                    request.Filters.Clear();
                    request.Filters.Add(new FilterDescriptor("Destacado", FilterOperator.IsEqualTo, true));
                }
            }

            IComunicacionesServicio         srv = Servicios.ComunicacionesServicio();
            IEnumerable <ComunicacionModel> comunicacionesPublicadas =
                Aplicacion == null
                ? new List <ComunicacionModel>(0)
                : (await srv.PublicadasAsync()).Select(ComunicacionModel.FromEntity);

            return(Json(comunicacionesPublicadas.ToDataSourceResult(request),
                        JsonRequestBehavior.AllowGet));
        }
コード例 #3
0
        public ActionResult Miniatura(long id)
        {
            IComunicacionesServicio srv          = Servicios.ComunicacionesServicio();
            Comunicacion            comunicacion = srv.GetSingle(c => c.ComunicacionID == id);

            if (comunicacion != null)
            {
                if (comunicacion.Imagen == null)
                {
                    return(File("~/Content/Images/Blanco.png", contentType: "image/png"));
                }
                else
                {
                    var cd = new ContentDisposition
                    {
                        FileName = Path.GetFileNameWithoutExtension(comunicacion.Imagen.Nombre) + "_thumb"
                                   + Path.GetExtension(comunicacion.Imagen.Nombre),
                        Inline = false,
                    };

                    Response.AppendHeader(name: "Content-Disposition", value: cd.ToString());
                    FileStream str = FileManager.ObtenerMiniatura(comunicacion.Imagen);
                    return(new FileStreamResult(str, comunicacion.Imagen.Mime));
                }
            }
            else
            {
                return(HttpNotFound());
            }
        }
コード例 #4
0
        /// <summary>
        /// Devuelve una comunicación de la aplicación actual dado su ID.
        /// </summary>
        /// <param name="comunicacionID">ID de la comunicación solicitada.</param>
        public async Task <ActionResult> ComunicacionDetalle(long comunicacionID)
        {
            IComunicacionesServicio srv = Servicios.ComunicacionesServicio();
            Comunicacion            c   = srv.ConsultarComunicacion(comunicacionID, $"{Request.UserHostName}-{Request.Browser.Browser}", Request.UserHostAddress);
            await srv.ApplyChangesAsync();

            ComunicacionDetalleModel resul = ComunicacionDetalleModel.FromEntity(c);

            return(Json(resul, JsonRequestBehavior.AllowGet));
        }
コード例 #5
0
        public async Task <ActionResult> LeerUnoDetalle(long comunicacionID)
        {
            IComunicacionesServicio srv = Servicios.ComunicacionesServicio();
            Comunicacion            com = await srv.GetSingleAsync(c => c.ComunicacionID == comunicacionID);

            if (com != null)
            {
                return(Json(ComunicacionDetalleModel.FromEntity(com), JsonRequestBehavior.AllowGet));
            }
            else
            {
                return(HttpNotFound());
            }
        }
コード例 #6
0
        public async Task <ActionResult> LeerUno(long comunicacionID)
        {
            IComunicacionesServicio srv = Servicios.ComunicacionesServicio();
            Comunicacion            com = await srv.GetSingleAsync(c => c.ComunicacionID == comunicacionID);

            if (com != null)
            {
                return(Json(ComunicacionGrid.FromEntity(com, CategoriasPermitidasIds, PeriodoEnvioPushHoras),
                            JsonRequestBehavior.AllowGet));
            }
            else
            {
                return(HttpNotFound());
            }
        }
コード例 #7
0
        public ActionResult ComunicacionesPublicadas([DataSourceRequest] DataSourceRequest request)
        {
            IComunicacionesServicio    srv = Servicios.ComunicacionesServicio();
            IEnumerable <Comunicacion> comunicacionesPublicadas1 = srv.Publicadas().ToList();

            List <ComunicacionGrid> comunicacionesPublicadas = new List <ComunicacionGrid>();

            foreach (var c in comunicacionesPublicadas1)
            {
                comunicacionesPublicadas.Add(ComunicacionGrid.FromEntity(c, CategoriasPermitidasIds, PeriodoEnvioPushHoras));
            }

            return(Json(comunicacionesPublicadas.ToDataSourceResult(request),
                        JsonRequestBehavior.AllowGet));
        }
コード例 #8
0
        public ActionResult UltimasComunicaciones()
        {
            IComunicacionesServicio    srv      = Servicios.ComunicacionesServicio();
            IEnumerable <Comunicacion> ultimas1 = srv
                                                  .Get(c => !c.Borrado, cc => cc.OrderByDescending(c => c.FechaCreacion),
                                                       includeProperties: "Categoria, Adjunto, Accesos"
                                                       )
                                                  .Take(10);

            List <ComunicacionGrid> ultimas = new List <ComunicacionGrid>();
            var categoriasPermitidas        = Aplicacion.Categorias.Select(c => c.CategoriaID);

            foreach (var c in ultimas1)
            {
                ultimas.Add(ComunicacionGrid.FromEntity(c, categoriasPermitidas, PeriodoEnvioPushHoras));
            }

            return(Json(ultimas, JsonRequestBehavior.AllowGet));
        }
コード例 #9
0
        public ActionResult Estadisticas()
        {
            EstadisticasModel resul = new EstadisticasModel();

            ITerminalesServicio trmSrv = Servicios.TerminalesServicio();

            resul.Terminales = trmSrv.Get().Count();

            IComunicacionesServicio comSrv = Servicios.ComunicacionesServicio();

            resul.Comunicaciones = comSrv.Get().Count();

            IComunicacionesAccesosServicio accSrv = Servicios.ComunicacionesAccesosServicio();
            DateTime haceUnMes = DateTime.Now.AddMonths(-1);

            resul.VisualizacionesUltimoMes = accSrv.Get(acc => acc.Fecha >= haceUnMes).Count();
            resul.Visualizaciones          = accSrv.Get().Count();

            return(Json(resul, JsonRequestBehavior.AllowGet));
        }
コード例 #10
0
        public ActionResult Documento(long id, bool descargar = false)
        {
            IComunicacionesServicio srv          = Servicios.ComunicacionesServicio();
            Comunicacion            comunicacion = srv.GetSingle(c => c.ComunicacionID == id);

            if (comunicacion == null || comunicacion.Adjunto == null)
            {
                return(HttpNotFound());
            }

            var cd = new ContentDisposition
            {
                FileName = comunicacion.Adjunto.Nombre,
                Inline   = !descargar,
            };

            Response.AppendHeader(name: "Content-Disposition", value: cd.ToString());
            Response.AppendHeader(name: "Content-Length", value: comunicacion.Adjunto.Tamano.ToString());
            FileStream str = FileManager.ObtenerDocumento(comunicacion.Adjunto);

            return(new FileStreamResult(str, comunicacion.Adjunto.Mime));
        }
コード例 #11
0
        public async Task <ActionResult> Leer([DataSourceRequest] DataSourceRequest request)
        {
            IComunicacionesServicio srv       = Servicios.ComunicacionesServicio();
            List <ComunicacionGrid> registros = new List <ComunicacionGrid>();
            var query = (await srv.GetAsync(c => !c.Borrado, includeProperties: "Categoria, Adjunto, Accesos"));

            if (User.Identity.IsAuthenticated)
            {
                foreach (var c in query)
                {
                    registros.Add(ComunicacionGrid.FromEntityParaAdmin(c, CategoriasPermitidasIds, PeriodoEnvioPushHoras));
                }
            }
            else
            {
                foreach (var c in query)
                {
                    registros.Add(ComunicacionGrid.FromEntity(c, CategoriasPermitidasIds, PeriodoEnvioPushHoras));
                }
            }

            return(Json(registros.ToDataSourceResult(request), JsonRequestBehavior.AllowGet));
        }
コード例 #12
0
        public async Task <IHttpActionResult> Lista(SolicitudComunicacionesModel model)
        {
            // Validación del modelo: Subdominio se ha especificado.
            if (string.IsNullOrWhiteSpace(model.Subdominio))
            {
                return(BadRequest("Subdominio no válido"));
            }
            if (!ComprobarClaves(model))
            {
                return(Unauthorized());
            }

            IComunicacionesServicio srv = Servicios.ComunicacionesServicio();

            // Si categoriaID es -1, nos están pidiendo las publicaciones destacadas, sin filtrar por
            // categoría.
            IEnumerable <Comunicacion> comunicaciones = model.CategoriaID == -1
                ? await srv.PublicadasAsync(categoriaID : null, soloDestacadas : true, timestamp : model.TimeStamp)
                : await srv.PublicadasAsync(categoriaID : model.CategoriaID, timestamp : model.TimeStamp);

            return(Ok(comunicaciones
                      .Select(ComunicacionDetalleModel.FromEntity)
                      .AsQueryable()));
        }