Example #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()));
        }
Example #2
0
        protected double[] CoordenadasPorDefecto()
        {
            IParametrosServicio srv = Servicios.ParametrosServicio();

            double[] coordenadas = { 0D, 0D }; // lat, lng
            if (Aplicacion != null)
            {
                Parametro pCoordenadas = srv.GetSingle(p => p.AplicacionID == Aplicacion.AplicacionID &&
                                                       p.Nombre == "CoordenadasIniciales");

                // Si no hay parámetro o falla al parsear, devolverá [0,0].
                if (pCoordenadas != null)
                {
                    Regex er = new Regex(@"^(?<latitud>[-+]?(?:\d*[.])?\d+);(?<longitud>[-+]?(?:\d*[.])?\d+)$");
                    Match m  = er.Match(pCoordenadas.Valor);
                    if (m.Success)
                    {
                        coordenadas[0] = double.Parse(m.Groups["latitud"].Value, CultureInfo.InvariantCulture);
                        coordenadas[1] = double.Parse(m.Groups["longitud"].Value, CultureInfo.InvariantCulture);

                        if (coordenadas[0] > 90 || coordenadas[0] < -90 || coordenadas[1] > 180 || coordenadas[1] < -180)
                        {
                            log.Error($"Valor de parámetro CoordenadasIniciales de la aplicación {Aplicacion.AplicacionID} FUERA DE RANGO.");
                            coordenadas[0] = 0;
                            coordenadas[1] = 0;
                        }
                    }
                    else
                    {
                        log.Error($"Error de formato en el parámetro CoordenadasIniciales de la aplicación {Aplicacion.AplicacionID}");
                    }
                }
            }
            return(coordenadas);
        }
Example #3
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}");
        }
Example #4
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);
        }
Example #5
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);
            }
        }