예제 #1
0
        public Respuesta <List <AvisoCarrusel> > ObtenAvisosCarrusel()
        {
            dbContextoEF.Configuration.ProxyCreationEnabled = false;
            List <AvisoCarrusel> avisos;
            Respuesta <List <AvisoCarrusel> > estado;

            try
            {
                avisos = dbContextoEF
                         .AvisosCarrusel
                         .Include(aviso => aviso.Boton)
                         .Where(aviso => aviso.Visible)
                         .OrderByDescending(aviso => aviso.Orden)
                         .ToList();

                if (avisos.Count > 0)
                {
                    estado = Respuesta <object> .GeneraRespuestaNoExcepcion(true, avisos);
                }
                else
                {
                    estado = Respuesta <object> .GeneraRespuestaNoExcepcion <List <AvisoCarrusel> >(false, null,
                                                                                                    detalle : "Tenemos problemas para recuperar los avisos del carrusel, intentalo mas tarde",
                                                                                                    iconoCliente : ICONOS_RESPUESTA.ADVERTENCIA);
                }
            }
            catch (Exception ex)
            {
                estado = Respuesta <object> .GeneraRespuestaExcepcion <List <AvisoCarrusel> >(ex,
                                                                                              NombreMetodo : "GaroNetDb.ObtenAvisosCarrusel()");
            }

            return(estado);
        }
예제 #2
0
        public Respuesta <List <ArticuloBusqueda> > ObtenArticulos(string busqueda)
        {
            dbContextoEF.Configuration.ProxyCreationEnabled = false;
            Respuesta <List <ArticuloBusqueda> > estado;
            List <string> tags = busqueda.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)
                                 .Select(tag => tag.Trim().ToLower()).ToList();

            try
            {
                var ArticuloBusquedas = dbContextoEF.Tags
                                        .Include(etiqueta => etiqueta.Articulos)
                                        .Where(etiqueta => tags.Contains(etiqueta.Etiqueta.ToLower()))
                                        .SelectMany(etiqueta => etiqueta.Articulos)
                                        .Distinct()
                                        .Include(articulo => articulo.Noticias)
                                        .AsEnumerable()
                                        .Select(articulo => new ArticuloBusqueda
                {
                    Descripcion = articulo.Noticias.Last().Descripcion,
                    Titulo      = articulo.Titulo,
                    URI         = articulo.URI
                }).ToList();

                estado = Respuesta <object> .GeneraRespuestaNoExcepcion <List <ArticuloBusqueda> >(true,
                                                                                                   ArticuloBusquedas);
            }
            catch (Exception ex)
            {
                estado = Respuesta <object> .
                         GeneraRespuestaExcepcion <List <ArticuloBusqueda> >(ex,
                                                                             NombreMetodo : "GaroNetDb.ObtenArticuloBusquedas(string)");
            }

            return(estado);
        }
예제 #3
0
        public Respuesta <List <Articulo> > ObtenArticulosRelacionados(string articuloId)
        {
            dbContextoEF.Configuration.ProxyCreationEnabled = false;
            Respuesta <List <Articulo> > estado;

            try
            {
                var ArticulosRelacionados = (from articulo in dbContextoEF.Articulos.Include(art => art.Etiquetas)
                                             where articulo.URI.ToLower() == articuloId
                                             from etiquetaArt in articulo.Etiquetas
                                             join etiqueta in dbContextoEF.Tags.Include(art => art.Articulos)
                                             on etiquetaArt.Etiqueta equals etiqueta.Etiqueta
                                             from articuloResult in etiqueta.Articulos
                                             where articuloResult.URI.ToLower() != articuloId
                                             select articuloResult).Distinct()
                                            .ToList();

                estado = Respuesta <object> .GeneraRespuestaNoExcepcion <List <Articulo> >(true,
                                                                                           ArticulosRelacionados);
            }
            catch (Exception ex)
            {
                estado = Respuesta <object> .
                         GeneraRespuestaExcepcion <List <Articulo> >(ex,
                                                                     NombreMetodo : "GaroNetDb.ObtenArticulosRelacionados(string)");
            }

            return(estado);
        }
예제 #4
0
        public Respuesta <List <OpcionMenu> > ObtenOpcionesMenu()
        {
            //dbContextoEF.Configuration.ProxyCreationEnabled = false;
            List <OpcionMenu> opciones;
            Respuesta <List <OpcionMenu> > estado;

            try
            {
                opciones = dbContextoEF
                           .OpcionesMenu
                           .Include(opcion => opcion.Opciones)
                           .Where(opcion => opcion.MenuPadre == null && opcion.Visible)
                           .OrderByDescending(opcion => opcion.Orden)
                           .ToList();
                if (opciones.Count > 0)
                {
                    estado = Respuesta <object> .GeneraRespuestaNoExcepcion(true, opciones);
                }
                else
                {
                    estado = Respuesta <object> .GeneraRespuestaNoExcepcion <List <OpcionMenu> >(false, null,
                                                                                                 detalle : "Tenemos problemas para recuperar el menú, intentalo mas tarde",
                                                                                                 iconoCliente : ICONOS_RESPUESTA.ADVERTENCIA);
                }
            }
            catch (Exception ex)
            {
                estado = Respuesta <object> .GeneraRespuestaExcepcion <List <OpcionMenu> >(ex,
                                                                                           NombreMetodo : "GaroNetDb.ObtenOpcionesMenu()");
            }

            return(estado);
        }
예제 #5
0
        public Respuesta <Tuple <List <Comentario>, int> > GuardaComentario(Comentario comentario)
        {
            Respuesta <Tuple <List <Comentario>, int> > estado;

            try
            {
                string[] InfoCliente = comentario.Email.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
                comentario.Email = InfoCliente[0];
                if (InfoCliente[1] == "0")
                {
                    dbContextoEF.ClientesArticulos.Add(new Cliente
                    {
                        Email     = InfoCliente[0],
                        Avatar    = InfoCliente[2],
                        Auditoria = new InfoRegistro {
                            UsuarioCreacion = "WEB API"
                        },
                        Nombre = comentario.Auditoria.UsuarioCreacion
                    });
                }
                dbContextoEF.Comentarios.Add(comentario);
                dbContextoEF.SaveChanges();

                estado = ObtenComentarios(comentario.URI, int.Parse(InfoCliente[3]),
                                          idComentarioPadre: comentario.IdComentarioP);
            }
            catch (Exception ex)
            {
                estado = Respuesta <object> .
                         GeneraRespuestaExcepcion <Tuple <List <Comentario>, int> >(ex,
                                                                                    NombreMetodo : "GaroNetDb.GuardaComentario(Comentario)");
            }

            return(estado);
        }
예제 #6
0
        public Respuesta <int> GuardaComentario(ComentarioAcercaD comentario)
        {
            Respuesta <int> estado;

            try
            {
                comentario.Auditoria = new InfoRegistro
                {
                    UsuarioCreacion = "WEB API"
                };
                dbContextoEF.CometariosEsteban.Add(comentario);
                dbContextoEF.SaveChanges();

                estado = Respuesta <int> .GeneraRespuestaNoExcepcion <int>(true,
                                                                           comentario.NumeroComentario);
            }
            catch (Exception ex)
            {
                estado = Respuesta <object> .
                         GeneraRespuestaExcepcion <int>(ex,
                                                        NombreMetodo : "GaroNetDb.GuardaComentario(ComentarioAcercaD)");
            }

            return(estado);
        }
예제 #7
0
        public Respuesta <List <PalabraCodigo> > ObtenPalabrasCodigo()
        {
            dbContextoEF.Configuration.ProxyCreationEnabled = false;
            Respuesta <List <PalabraCodigo> > estado;

            try
            {
                var palabras = dbContextoEF.PalabrasCode.
                               ToList();

                if (palabras.Count > 0)
                {
                    estado = Respuesta <object> .GeneraRespuestaNoExcepcion <List <PalabraCodigo> >(true, palabras);
                }
                else
                {
                    estado = Respuesta <object> .
                             GeneraRespuestaNoExcepcion <List <PalabraCodigo> >(false, null,
                                                                                detalle : "Tenemos problemas para recuperar las palabras de código, intentalo mas tarde",
                                                                                iconoCliente : ICONOS_RESPUESTA.ADVERTENCIA);
                }
            }
            catch (Exception ex)
            {
                estado = Respuesta <object> .
                         GeneraRespuestaExcepcion <List <PalabraCodigo> >(ex,
                                                                          NombreMetodo : "GaroNetDb.ObtenPalabrasCodigo()");
            }

            return(estado);
        }
예제 #8
0
        public Respuesta <List <Autor> > ObtenAutores()
        {
            dbContextoEF.Configuration.ProxyCreationEnabled = false;
            Respuesta <List <Autor> > estado;

            try
            {
                var autores = dbContextoEF.Autores.
                              Include(aut => aut.Puesto).
                              Where(aut => aut.Estado).
                              OrderBy(aut => aut.Orden).
                              ToList();

                if (autores.Count > 0) // Recuperar de archivo de configuración.
                {
                    estado = Respuesta <object> .GeneraRespuestaNoExcepcion <List <Autor> >(true, autores);
                }
                else
                {
                    estado = Respuesta <object> .
                             GeneraRespuestaNoExcepcion <List <Autor> >(false, null,
                                                                        detalle : "Tenemos problemas para recuperar la sección autores, intentalo mas tarde",
                                                                        iconoCliente : ICONOS_RESPUESTA.ADVERTENCIA);
                }
            }
            catch (Exception ex)
            {
                estado = Respuesta <object> .
                         GeneraRespuestaExcepcion <List <Autor> >(ex,
                                                                  NombreMetodo : "GaroNetDb.ObtenAutores()");
            }

            return(estado);
        }
예제 #9
0
        public Respuesta <Articulo> ObtenInfoArticulo(string articuloId)
        {
            Respuesta <Articulo> estado;

            try
            {
                Articulo articuloInformacion = dbContextoEF.Articulos
                                               .Include(articulo => articulo.Autores)
                                               .Include(articulo => articulo.Noticias)
                                               .FirstOrDefault(articulo => articulo.URI.ToLower() == articuloId);

                if (articuloInformacion != null)
                {
                    estado = Respuesta <object> .GeneraRespuestaNoExcepcion <Articulo>(true, articuloInformacion);
                }
                else
                {
                    estado = Respuesta <object> .
                             GeneraRespuestaNoExcepcion <Articulo>(false, null,
                                                                   detalle : "Tenemos problemas para recuperar la información de artículo, intentalo mas tarde",
                                                                   iconoCliente : ICONOS_RESPUESTA.ADVERTENCIA);
                }
            }
            catch (Exception ex)
            {
                estado = Respuesta <object> .
                         GeneraRespuestaExcepcion <Articulo>(ex,
                                                             NombreMetodo : "GaroNetDb.ObtenInfoArticulo(string)");
            }

            return(estado);
        }
예제 #10
0
        public Respuesta <Cliente> ObtenCliente(string email)
        {
            dbContextoEF.Configuration.ProxyCreationEnabled = false;
            Respuesta <Cliente> estado;

            try
            {
                var cliente = dbContextoEF.ClientesArticulos
                              .FirstOrDefault(client => client.Email == email);

                estado = Respuesta <object> .GeneraRespuestaNoExcepcion <Cliente>(true, cliente);
            }
            catch (Exception ex)
            {
                estado = Respuesta <object> .
                         GeneraRespuestaExcepcion <Cliente>(ex,
                                                            NombreMetodo : "GaroNetDb.ObtenCliente(string)");
            }

            return(estado);
        }
예제 #11
0
        public Respuesta <Autor> ObtenAutor(int id)
        {
            dbContextoEF.Configuration.ProxyCreationEnabled = false;
            Respuesta <Autor> estado;

            try
            {
                var autor = dbContextoEF.Autores
                            .Include(_autor => _autor.Puesto)
                            .Include(_autor => _autor.RedesSociales)
                            .FirstOrDefault(_autor => _autor.Id == id);

                estado = Respuesta <object> .GeneraRespuestaNoExcepcion <Autor>(true,
                                                                                LimpiaYPreparaAutorEnDependencias(autor));
            }
            catch (Exception ex)
            {
                estado = Respuesta <object> .
                         GeneraRespuestaExcepcion <Autor>(ex,
                                                          NombreMetodo : "GaroNetDb.ObtenAutor(id)");
            }

            return(estado);
        }
예제 #12
0
        public Respuesta <List <ClasePersonalizada> > ObtenClasesPersonalizadasCodigo(string articuloId = null)
        {
            dbContextoEF.Configuration.ProxyCreationEnabled = false;
            Respuesta <List <ClasePersonalizada> > estado;

            try
            {
                var clases = articuloId != null?dbContextoEF
                             .ClasesPersonalizadasCode
                             .Where(clasep => clasep.ArticuloId == articuloId)
                             .ToList() :
                                 new List <ClasePersonalizada>();

                estado = Respuesta <object> .GeneraRespuestaNoExcepcion <List <ClasePersonalizada> >(true, clases);
            }
            catch (Exception ex)
            {
                estado = Respuesta <object> .
                         GeneraRespuestaExcepcion <List <ClasePersonalizada> >(ex,
                                                                               NombreMetodo : "GaroNetDb.ObtenClasesPersonalizadasCodigo(int?)");
            }

            return(estado);
        }
예제 #13
0
        public Respuesta <List <NoticiaPrincipal> > ObtenNoticias()
        {
            dbContextoEF.Configuration.ProxyCreationEnabled = false;
            Respuesta <List <NoticiaPrincipal> > estado;

            try
            {
                IQueryable <NoticiaPrincipal> recientes = dbContextoEF.NoticiasPrincipales.
                                                          OrderByDescending(noti => noti.Auditoria.Creacion).
                                                          Take(4);
                IQueryable <NoticiaPrincipal> comentadas = dbContextoEF.NoticiasPrincipales.
                                                           OrderByDescending(noti => noti.Articulo.Comentarios.Count).
                                                           Except(recientes).
                                                           Take(4);
                var conjunto = recientes.Union(comentadas).ToList();
                if (conjunto.Count == 8) // Recuperar de archivo de configuración.
                {
                    estado = Respuesta <object> .GeneraRespuestaNoExcepcion(true, conjunto);
                }
                else
                {
                    estado = Respuesta <object> .
                             GeneraRespuestaNoExcepcion <List <NoticiaPrincipal> >(false, null,
                                                                                   detalle : "Tenemos problemas para recuperar los noticias principales, intentalo mas tarde",
                                                                                   iconoCliente : ICONOS_RESPUESTA.ADVERTENCIA);
                }
            }
            catch (Exception ex)
            {
                estado = Respuesta <object> .
                         GeneraRespuestaExcepcion <List <NoticiaPrincipal> >(ex,
                                                                             NombreMetodo : "GaroNetDb.ObtenNoticias()");
            }

            return(estado);
        }
예제 #14
0
        public Respuesta <Tuple <List <Comentario>, int> > ObtenComentarios(string articulo, int idComentarioUltimoReciente = 0,
                                                                            COMENTARIOS tipo = COMENTARIOS.RECIENTES, int?idComentarioPadre = null, int?numeroComentarios = null)
        {
            // Publicación de comentarios; registro de comentarios NIVEL 0. (Comentarios.Recientes,
            //  Comentario reciente = 0 ó > 0, idComentarioPadre = null y numeroComentarios = null).
            // Respuesta de comentarios; registro de comentarios NIVEL 1,2. (Comentarios.Recientes,
            //  Comentario reciente = 0 ó > 0, idComentarioPadre > 0 y numeroComentarios = null).
            // Obtención de comentarios antiguos; operación "Mostrar Más". (Comentarios.Antiguos, Comentario último > 0,
            //  idComentarioPadre = null y numeroComentarios = null).
            // Carga incial de coentarios. (Comentarios.Recientes, Comentario reciente = 0, idComentarioPadre = null y
            //  numeroComentarios > 0)
            List <Comentario>       comentarios;
            IQueryable <Comentario> consulta;
            int cuenta;
            Respuesta <Tuple <List <Comentario>, int> > estado;

            try
            {
                consulta = from comentario in dbContextoEF.Comentarios
                           .Include(coment => coment.Cliente).Include(coment => coment.Comentarios)
                           where articulo == comentario.URI.ToLower() && comentario.IdComentarioP == idComentarioPadre &&
                           (tipo == COMENTARIOS.RECIENTES ? comentario.Id > idComentarioUltimoReciente :
                            comentario.Id < idComentarioUltimoReciente)
                           select comentario;

                comentarios = tipo == COMENTARIOS.ANTIGUOS ? consulta
                              .OrderByDescending(coment => coment.Id)
                              .Take(ConfiguracionesApp.NumeroComentariosAntiguos)
                              .ToList():
                              tipo == COMENTARIOS.RECIENTES ? !numeroComentarios.HasValue ? consulta.ToList() :
                              consulta.OrderByDescending(coment => coment.Id).Take(numeroComentarios.Value).ToList() : null;
                if (comentarios == null)
                {
                    throw new NotImplementedException("No se tiene soporte para el tipo de comentario especificado");
                }

                //cuenta = tipo == COMENTARIOS.ANTIGUOS ? consulta.Count() : comentarios.Count;
                cuenta = consulta.Count();

                for (int i = 0; i < comentarios.Count; i++)
                {
                    Comentario ComentarioProxy = comentarios[i];
                    comentarios[i] = RevierteYPreparaProxyComentario(ComentarioProxy);
                }

                estado = Respuesta <object> .GeneraRespuestaNoExcepcion <Tuple <List <Comentario>, int> >(true,
                                                                                                          new Tuple <List <Comentario>, int>(comentarios, cuenta));
            }
            catch (Exception ex)
            {
                estado = Respuesta <object> .
                         GeneraRespuestaExcepcion <Tuple <List <Comentario>, int> >(ex,
                                                                                    NombreMetodo : "GaroNetDb.ObtenComentarios(string, int = 0,COMENTARIOS = COMENTARIOS.RECIENTES, " +
                                                                                    "int? = null, int?  = null)");
            }
            finally
            {
                dbContextoEF.Configuration.ProxyCreationEnabled = true;
            }

            return(estado);
        }