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)); } }
/// <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)); }
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()); } }
/// <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)); }
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()); } }
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()); } }
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)); }
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)); }
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)); }
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)); }
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)); }
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())); }