Ejemplo n.º 1
0
        public async Task <IHttpActionResult> Empresas(SolicitudModel model)
        {
            if (!ComprobarClaves(model))
            {
                return(Unauthorized());
            }


            var ap = Aplicacion(model.Subdominio);

            if (ap.Caracteristicas.All(c => c.Nombre != "Empresas"))
            {
                return(Unauthorized());
            }

            IParametrosServicio pSrv = Servicios.ParametrosServicio();
            Parametro           pSubdominioBannersAleatorios = pSrv.GetByName("EmpresaBannerAleatorio");
            string subdominioBannersAleatorios = pSubdominioBannersAleatorios?.Valor;

            IEmpresasServicio   srv      = Servicios.EmpresasServicio();
            List <EmpresaModel> empresas = (await srv.GetAsync(e => e.Activo))
                                           .Select(EmpresaModel.FromEntity)
                                           .ToList();

            // Si el subdominio coincide con el parámetro de banners aleatorios, desordenar la
            // lista de empresas para que los banner se muestren en un orden aleatorio.
            if (model.Subdominio == subdominioBannersAleatorios)
            {
                Random rnd = new Random();
                empresas = empresas.OrderBy(i => rnd.Next()).ToList();
            }

            log.Debug("Sirviendo empresas en el siguiente orden: " + string.Join(", ", empresas.Select(e => e.EmpresaID)));
            return(Ok(empresas.AsQueryable()));
        }
Ejemplo n.º 2
0
        protected string ObtenerPlantillaUrlMapas()
        {
            IParametrosServicio pSrv      = Servicios.ParametrosServicio();
            Parametro           pUrlMapas = pSrv.GetByName("UrlGoogleMaps");

            return(pUrlMapas?.Valor
                   ?? "http://maps.google.com/maps?z=12&t=m&q=loc:{latitud}+{longitud}");
        }
Ejemplo n.º 3
0
        public static string Absoluta(string relativa, Aplicacion aplicacion)
        {
            IPushNewsUnitOfWork uow = HttpContext.Current.Request.GetOwinContext().Get <IPushNewsUnitOfWork>();
            var servicios           = new ServiciosFactoria(uow, aplicacion);
            IParametrosServicio srv = servicios.ParametrosServicio();
            Parametro           paramRaizDocumentos = srv.GetByName(nombreParametro: "RaizDocumentos");
            string rutaRaiz     = paramRaizDocumentos.Valor;
            string rutaAbsoluta = System.IO.Path.Combine(rutaRaiz, relativa);

            return(rutaAbsoluta);
        }
Ejemplo n.º 4
0
        private bool EnviarPush(Comunicacion comunicacion)
        {
            Aplicacion aplicacion = comunicacion.Categoria.Aplicacion;

            // No se envía push si no
            if (string.IsNullOrEmpty(Aplicacion.CloudKey) ||
                string.IsNullOrEmpty(Aplicacion.Usuario) ||
                string.IsNullOrEmpty(Aplicacion.Clave))
            {
                log.Info($"No se enviará push de la comunicación {comunicacion.ComunicacionID} porque la aplicación {aplicacion.Nombre} no tiene los datos de configuración del servicio push (CloudKey, Usuario, Clave).");
                return(false);
            }

            try
            {
                // Obtener el canal
                IParametrosServicio pSrv = Servicios.ParametrosServicio();
                string    claveCanal     = "CanalPush";
                Parametro canal          = pSrv.GetByName(claveCanal);
                if (canal == null || string.IsNullOrWhiteSpace(canal.Valor))
                {
                    log.Info($"No se enviará push de la comunicación {comunicacion.ComunicacionID} porque el parámetro {claveCanal} no existe o no tiene valor.");
                    return(false);
                }

                string descripcion = comunicacion.Descripcion.Length > 50
                    ? comunicacion.Descripcion.Substring(0, 50) + "..."
                    : comunicacion.Descripcion;
                using (CloudPush push = new CloudPush(Aplicacion.CloudKey, Aplicacion.Usuario, Aplicacion.Clave))
                {
                    Respuesta respuesta = push.EnviarMensaje(comunicacion.Titulo, descripcion, true, canal.Valor,
                                                             comunicacion.ComunicacionID.ToString());
                    if (respuesta.Meta.Code != 200)
                    {
                        log.Info($"Comunicacion: {comunicacion.ComunicacionID} - El servidor devolvió un error al solicitar push: Código: {respuesta.Meta.Code} Estado: {respuesta.Meta.Status} Mensaje: {respuesta.Meta.Message} Método: {respuesta.Meta.Method_Name}.");
                        return(false);
                    }
                    else
                    {
                        log.Info($"Comunicacion: {comunicacion.ComunicacionID} - Push OK");
                        log.Info($"CloudKey: {Aplicacion.CloudKey}");
                        return(true);
                    }
                }
            }
            catch (Exception e)
            {
                log.Error("Error en push", e);
                return(false);
            }
        }