public async Task <IActionResult> Add([FromBody] AlbumGroup albumGroup) { if (ModelState.IsValid) { try { AlbumGroupDetail group = await _repository.AddAsync(albumGroup); return(CreatedAtRoute( new { controller = "album", action = nameof(Get), key = group.Key }, group)); } catch (RepositoryException e) { return(BadRequest(new ApiErrorRep(e.Message))); } catch (Exception e) { _logger.LogError("AddAlbum", e, "Error adding album"); return(StatusCode(500, new ApiErrorRep("Unknown error"))); } } else { return(BadRequest(ModelState)); } }
public async Task <AlbumGroupDetail> UpdateAsync(int groupId, AlbumGroup group) { var dbAlbumGroup = await _context.AlbumGroups.SingleOrDefaultAsync(x => x.Id == groupId); if (dbAlbumGroup != null) { dbAlbumGroup.Name = group.Name; dbAlbumGroup.UpdatedUtc = DateTime.UtcNow; await _context.SaveChangesAsync(); var numAlbums = await _context.AlbumGroups.Where(g => g.Id == dbAlbumGroup.Id).SelectMany(x => x.Items).CountAsync(x => x.Album.PublishStatus == DbPublishedStatus.PUBLISHED); return(new AlbumGroupDetail() { Id = dbAlbumGroup.Id, Key = dbAlbumGroup.Key, Name = dbAlbumGroup.Name, TotalAlbums = numAlbums, Created = new DateTime(dbAlbumGroup.CreatedUtc.Ticks, DateTimeKind.Utc), Updated = new DateTime(dbAlbumGroup.UpdatedUtc.Ticks, DateTimeKind.Utc) }); } else { throw new EntityNotFoundRepositoryException($"Album group with ID {groupId} not found"); } }
public async Task <IActionResult> Update([FromRoute] int id, [FromBody] AlbumGroup albumGroup) { if (ModelState.IsValid) { try { return(Ok(await _repository.UpdateAsync(id, albumGroup))); } catch (EntityNotFoundRepositoryException e) { return(NotFound(new ApiErrorRep(e.Message))); } catch (RepositoryException e) { return(BadRequest(new ApiErrorRep(e.Message))); } catch (Exception e) { _logger.LogError("UpdateAlbumGroup", e, "Error updating album group"); return(StatusCode(500, new ApiErrorRep("Unknown error"))); } } else { return(BadRequest(ModelState)); } }
public void Slide(int idx, float duration = -1) { isMoving = true; AlbumGroup group = albumGroups[idx]; float tx = container.x + group.x; direction = tx > 0 ? -1 : 1; if (duration == -1) { tx = Mathf.Abs(tx); if (tx <= DISTANCE_X + 0.3) { duration = 0.6f; } else if (tx >= DISTANCE_X * 3 - 0.3) { duration = 1.2f; } else { duration = 0.8f; } container.TweenX(-group.x, duration).OnUpdate(UpdateHeaderPos) .OnComplete(() => group.Open()); } else { container.TweenX(-group.x, duration, Ease.OutCubic).OnUpdate(UpdateHeaderPos) .OnComplete(() => group.Open()); } focusIdx = idx; }
public async void AddAlbumGroup_ReturnsNonNullResult_WithValidInput() { AlbumGroup input = CreateValidCreateModel(); AlbumGroupDetail result = await this.repo.AddAsync(input); Assert.NotNull(result); }
public async void AddAlbumGroup_ThrowsEntityAlreadyExistsRepositoryException_WhenAttemptingToCreateAnExistingGroupKey() { AlbumGroup input = CreateValidCreateModel(); AlbumGroupDetail result = await this.repo.AddAsync(input); await Assert.ThrowsAsync <EntityAlreadyExistsRepositoryException>(() => this.repo.AddAsync(input)); }
public static IList <AlbumGroup> ToAlbumGroups(this SoundCloudClone.Models.Api.Home home) { var albumGroups = new List <AlbumGroup>(); foreach (var algumGroupsCollection in home.AlgumGroupsCollection) { var albumGroupApi = algumGroupsCollection.AlbumGroup; var albumGroupApp = new AlbumGroup( albumGroupApi.Title, albumGroupApi.Description ); var albumCollection = new AlbumCollection(); foreach (var albumsApi in algumGroupsCollection.AlbumGroup.AlbumCollection.Albums) { albumCollection.Add( new Album( albumsApi.ArtworkUrlTemplate, albumsApi.ArtworkStyle, albumsApi.Count, albumsApi.ShortTitle, albumsApi.ShortSubtitle ) ); } albumGroupApp.Add(albumCollection); albumGroups.Add(albumGroupApp); } return(albumGroups); }
public async Task <AlbumGroupDetail> AddAsync(AlbumGroup group) { var dbAlbumGroup = await _context.AlbumGroups.SingleOrDefaultAsync(x => x.Key == group.Key); if (dbAlbumGroup == null) { dbAlbumGroup = new DbAlbumGroup() { Key = group.Key, Name = group.Name, CreatedUtc = DateTime.UtcNow, UpdatedUtc = DateTime.UtcNow }; _context.AlbumGroups.Add(dbAlbumGroup); await _context.SaveChangesAsync(); return(new AlbumGroupDetail() { Id = dbAlbumGroup.Id, Key = dbAlbumGroup.Key, Name = dbAlbumGroup.Name, TotalAlbums = 0, Created = new DateTime(dbAlbumGroup.CreatedUtc.Ticks, DateTimeKind.Utc), Updated = new DateTime(dbAlbumGroup.UpdatedUtc.Ticks, DateTimeKind.Utc) }); } else { throw new EntityAlreadyExistsRepositoryException($"A group with the key '{group.Key}' already exists"); } }
public async void UpdateAlbumGroup_ThrowsEntityNotFoundRepositoryException_WithInvalidGroupId() { int groupId = await SetupValidRecordInDatabase(); AlbumGroup input = CreateValidCreateModel(); input.Name = "NewName"; await Assert.ThrowsAsync <EntityNotFoundRepositoryException>(() => this.repo.UpdateAsync(99999, input)); }
public async void UpdateAlbumGroup_ReturnsMatchingName_WithValidInput() { int groupId = await SetupValidRecordInDatabase(); AlbumGroup input = CreateValidCreateModel(); input.Name = "NewName"; AlbumGroupDetail result = await this.repo.UpdateAsync(groupId, input); Assert.Equal("NewName", result.Name); }
public async void UpdateAlbumGroup_ReturnsAlbumGroupDetailResult_WithValidInput() { int groupId = await SetupValidRecordInDatabase(); AlbumGroup input = CreateValidCreateModel(); input.Name = "NewName"; AlbumGroupDetail result = await this.repo.UpdateAsync(groupId, input); Assert.IsType <AlbumGroupDetail>(result); }
public void UpdateMenu(int idx) { if (idx == focusIdx) { return; } isMoving = true; AlbumGroup group = albumGroups[focusIdx]; DisplayTitle(false); group.Close(idx); }
void OnMouseUp() { if (MusicMenu.isMoving || y < -1) { return; } MusicPlayer.instance.Stop(); AlbumGroup group = parent as AlbumGroup; MusicMenu.instance.UpdateMenu(group.idx); }
public Paging <SimplifiedAlbum> GetArtistAlbums(string id, AlbumGroup includeGroups = AlbumGroup.single, string market = "PL", int limit = 20, int offset = 0) { var queryParameters = new Dictionary <string, string>() { { "include_groups", includeGroups.ToString().Replace(" ", string.Empty) }, { "market", market }, { "limit", limit.ToString() }, { "offset", offset.ToString() }, }; var urlSegmentParameter = new KeyValuePair <string, string>("id", id); return(Rest.SendRequestAndGetData <Paging <SimplifiedAlbum> >("/v1/artists/{id}/albums", queryParameters, urlSegmentParameter)); }
void OnMouseUp() { if (MusicMenu.isMoving || y < 0) { return; } MusicPlayer.instance.Stop(); AlbumGroup group = parent as AlbumGroup; group.Slide(idx); }
private void AddAlbumControls(SPList albumLibrary) { var albumsQuery = new SPQuery { Query = QueryResources.AlbumsQueryText, }; var albumGroups = albumLibrary.GetItems(albumsQuery).Cast<SPListItem>().GroupBy(x => x["Start Date"] == null ? "Timeless" : x.GetFormattedValue("Album Year")) .OrderByDescending(x => x.Key).ToList(); //HACK: Get the albums with no date value at the end of the the list instead of the begining. var timelessPhotos = albumGroups.FirstOrDefault(x => x.Key == "Timeless"); if(timelessPhotos != null) { albumGroups.Remove(timelessPhotos); albumGroups.Add(timelessPhotos); } var uploadControlHtml = GenerateUploadControlHtml(albumLibrary); var addAlbumControlHtml = GenerateAddAlbumControHtml(albumLibrary); var topHtml = String.Format(@"<div class='titleRow'> <span id='albumTitle'>Photos</span> {0} {1} </div>", uploadControlHtml, addAlbumControlHtml); Controls.Add(new LiteralControl(topHtml)); var headerHtml = new StringBuilder(String.Format(@"<div class='albumHeader' data-albums-visible-for-groups='{0}'>Albums: ", AlbumsPerGroup), 250); foreach(var albumGroup in albumGroups.Select(x => x.Key)) { headerHtml.AppendFormat(@"<span class='albumNav groupName selectable'>{0}</span>", albumGroup.Replace(",", String.Empty)); } headerHtml.Append("</div>"); Controls.Add(new LiteralControl(headerHtml.ToString())); foreach (var curAlbum in albumGroups) { var albumGroup = new AlbumGroup { GroupName = curAlbum.Key.Replace(",", String.Empty) }; foreach(var album in curAlbum) { //THANKS SHAREPOINT var thumbNailUrlField = album["Album Thumbnail URL"]; var thumbNailUrl = thumbNailUrlField != null ? new SPFieldUrlValue(thumbNailUrlField.ToString()).Url : DefaultAlbumImage ?? String.Empty; albumGroup.AddAlbum(new Album { AlbumName = album.Folder.Name, ThumbNailUrl = thumbNailUrl, LazyImageLoadEnabled = this.LazyLoadingEnabled, Type = Album.AlbumType.Photo, ItemsCount = album.Folder.ItemCount, //This will include sub-folders in the count, but they shouldn't be there. }); } Controls.Add(albumGroup); } }
private void BuildTestDatum() { AlbumGroup group1 = new AlbumGroup() { Name = "A" }; Album al1 = new Album() { AlbumName = "Feed Your Soul", Artist = "Christa Wells" }; Album al2 = new Album() { AlbumName = "The Female Boss", Artist = "Tulisa" }; Album al3 = new Album() { AlbumName = "Only Human", Artist = "Delta Goodrem" }; group1.Albums.AddRange(new[] { al1, al2, al3 }); AlbumGroup group2 = new AlbumGroup() { Name = "B" }; Album al4 = new Album() { AlbumName = "GreatestHits II (2011 remaster)", Artist = "" }; group2.Albums.AddRange(new[] { al4 }); AlbumGroup groupC = new AlbumGroup() { Name = "C" }; Album alC1 = new Album() { AlbumName = "Music for Tourist", Artist = "Chris Garneau" }; Album alC2 = new Album() { AlbumName = "Nick Johnas", Artist = "" }; groupC.Albums.AddRange(new[] { alC1, alC2 }); AlbumGroup groupD = new AlbumGroup() { Name = "D" }; Album alD1 = new Album() { AlbumName = "Feed Your Soul", Artist = "Christa Wells" }; Album alD2 = new Album() { AlbumName = "The Female Boss", Artist = "Tulisa" }; Album alD3 = new Album() { AlbumName = "Only Human", Artist = "Delta Goodrem" }; groupD.Albums.AddRange(new[] { alD1, alD2, alD3 }); AlbumGroup groupE = new AlbumGroup() { Name = "E" }; Album alE1 = new Album() { AlbumName = "Feed Your Soul", Artist = "Christa Wells" }; Album alE2 = new Album() { AlbumName = "The Female Boss", Artist = "Tulisa" }; Album alE3 = new Album() { AlbumName = "Only Human", Artist = "Delta Goodrem" }; groupE.Albums.AddRange(new[] { alE1, alE2, alE3 }); AlbumGroup groupF = new AlbumGroup() { Name = "F" }; Album alF1 = new Album() { AlbumName = "Feed Your Soul", Artist = "Christa Wells" }; Album alF2 = new Album() { AlbumName = "The Female Boss", Artist = "Tulisa" }; Album alF3 = new Album() { AlbumName = "Only Human", Artist = "Delta Goodrem" }; groupF.Albums.AddRange(new[] { alF1, alF2, alF3 }); AlbumGroup groupG = new AlbumGroup() { Name = "G" }; Album alG1 = new Album() { AlbumName = "Feed Your Soul", Artist = "Christa Wells" }; Album alG2 = new Album() { AlbumName = "The Female Boss", Artist = "Tulisa" }; Album alG3 = new Album() { AlbumName = "Only Human", Artist = "Delta Goodrem" }; groupG.Albums.AddRange(new[] { alG1, alG2, alG3 }); AlbumGroup groupH = new AlbumGroup() { Name = "H" }; Album alH1 = new Album() { AlbumName = "Feed Your Soul", Artist = "Christa Wells" }; Album alH2 = new Album() { AlbumName = "The Female Boss", Artist = "Tulisa" }; Album alH3 = new Album() { AlbumName = "Only Human", Artist = "Delta Goodrem" }; groupH.Albums.AddRange(new[] { alH1, alH2, alH3 }); AlbumGroup groupI = new AlbumGroup() { Name = "I" }; Album alI1 = new Album() { AlbumName = "Feed Your Soul", Artist = "Christa Wells" }; Album alI2 = new Album() { AlbumName = "The Female Boss", Artist = "Tulisa" }; Album alI3 = new Album() { AlbumName = "Only Human", Artist = "Delta Goodrem" }; groupI.Albums.AddRange(new[] { alI1, alI2, alI3 }); Groups = new ObservableCollection <AlbumGroup>(); Groups.Add(group1); Groups.Add(group2); Groups.Add(groupC); Groups.Add(groupD); Groups.Add(groupE); Groups.Add(groupF); Groups.Add(groupG); Groups.Add(groupH); Groups.Add(groupI); Initials = new ObservableCollection <string>(); Initials.Add("A"); Initials.Add("B"); Initials.Add("C"); Initials.Add("D"); Initials.Add("E"); Initials.Add("F"); Initials.Add("G"); Initials.Add("H"); Initials.Add("I"); Initials.Add("J"); }