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