Ejemplo n.º 1
0
        public async Task <dynamic> GetAlbumAsync(int pagina)
        {
            //Obtiene el idDel usuario por medio del token
            userInfo = new UserInfoModulo(HttpContext);
            var idUsuario = userInfo.GetIdUsuario();

            //Realiza la consulta de una api
            ConsumoApis implementacionModulo = new ConsumoApis();
            var         data = await implementacionModulo.GetApi($"https://jsonplaceholder.typicode.com/albums");

            //Deserializa el string a una lista de objetos
            var albumsDto = JsonConvert.DeserializeObject <List <AlbumsDto> >(data);

            albumsDto = albumsDto.ToList();

            var albumes = _context.Album.Where(a => a.IdUsuario == idUsuario).OrderByDescending(a => a.FechaConsulta).ToArray();

            foreach (var a in albumes)
            {
                var album = albumsDto.Where(_a => _a.id == a.Id).FirstOrDefault();
                album.fechaConsulta = a.FechaConsulta;
            }

            //Organiza los albums
            albumsDto = albumsDto.OrderByDescending(o => o.fechaConsulta).ToList();

            //Cuenta la cantidad de albums que hay
            var cantidad = albumsDto.Count();

            return(new
            {
                cantidad = cantidad,
                albums = albumsDto.Skip(10 * (pagina - 1)).Take(10)
            });
        }
Ejemplo n.º 2
0
        public async Task <PhotosDto[]> GetCancionAsync(int id)
        {
            //Obtiene el idDel usuario por medio del token
            userInfo = new UserInfoModulo(HttpContext);
            var idUsuario = userInfo.GetIdUsuario();

            //Realiza la consulta de una api
            ConsumoApis implementacionModulo = new ConsumoApis();
            var         data = await implementacionModulo.GetApi($"https://jsonplaceholder.typicode.com/albums/{id}/photos");

            var photos = JsonConvert.DeserializeObject <List <PhotosDto> >(data);

            //Consulta el album con el id del usuario y el id del album
            var album = _context.Album.Where(a => a.IdUsuario == idUsuario && a.Id == id).FirstOrDefault();

            //Si no existe el album para el usuario, es creado
            if (album == null)
            {
                album = new Album()
                {
                    FechaConsulta = DateTime.Now,
                    IdAlbum       = 0,
                    Id            = id,
                    IdUsuario     = idUsuario
                };

                _context.Album.Add(album);
            }

            //Actualiza la fecha de consulta del album
            else
            {
                album.FechaConsulta = DateTime.Now;
            }

            //Guarda el album consultado
            _context.SaveChanges();


            var canciones = _context.Cancion.Where(c => c.IdAlbum == album.IdAlbum).ToArray();

            //No lo lista en las canciones
            var noListar = canciones.Where(c => c.NoVolverListar).Select(c => c.Id).ToArray();

            if (noListar.Count() > 0)
            {
                foreach (var p in photos.Where(_p => noListar.Contains(_p.id)).ToArray())
                {
                    p.categoria = -2;
                }
            }

            //No muestra estas canciones en la lista
            var inapropiado = canciones.Where(c => c.Inapropiado).Select(c => c.Id).ToArray();

            if (inapropiado.Count() > 0)
            {
                foreach (var p in photos.Where(_p => inapropiado.Contains(_p.id)).ToArray())
                {
                    p.categoria = -1;
                }
            }

            //Marca las canciones como faboritas
            var faboritos = canciones.Where(c => c.Faborito).Select(c => c.Id).ToArray();

            if (faboritos.Count() > 0)
            {
                foreach (var p in photos.Where(_p => faboritos.Contains(_p.id)).ToArray())
                {
                    p.categoria = 1;
                }
            }

            //Retorna las photos ordenadas
            return(photos.OrderByDescending(p => p.categoria).ToArray());
        }