private async void btnSave_Click(object sender, EventArgs e) { if (ValidateChildren()) { var albumTrack = albumTracks.Select(i => i.TrackID).ToList(); var request = new AlbumUpsertRequest() { Name = txtName.Text, YearOfRelease = Convert.ToInt32(txtReleaseYear.Text), ArtistID = Convert.ToInt32(cbArtist.SelectedValue), GenreID = Convert.ToInt32(cbGenre.SelectedValue), Image = ImageHelper.SystemDrawingToByteArray(pbAlbumPicture.Image), NumberOfTracks = albumTrack.Count(), Price = Convert.ToInt32(txtPrice.Text), About = txtAbout.Text, Tracks = albumTrack }; if (_ID.HasValue) { var tracksToDelete = _album.AlbumTracks .Where(i => !albumTracks.Any(id => id.TrackID == i.TrackID)) .Select(i => i.TrackID) .ToList(); request.TracksToDelete = tracksToDelete; await albumService.Update <MAlbum>(_ID.Value, request); MessageBox.Show("Album updated succesfully", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information); PanelHelper.SwapPanels(this.Parent, this, new AlbumList()); } else { await albumService.Insert <MAlbum>(request); MessageBox.Show("Album added succesfully", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information); PanelHelper.SwapPanels(this.Parent, this, new AlbumList()); } } }
private async void btnSubmitAlbum_Click(object sender, EventArgs e) { var confirmResult = MessageBox.Show("Submit Changes?", "Confirm", MessageBoxButtons.YesNo); if (confirmResult == DialogResult.Yes) { if (this.ValidateChildren()) { var req = new AlbumUpsertRequest() { ArtistId = _artistId, AlbumDescription = txtDescription.Text, AlbumName = txtAlbumName.Text, AlbumPhoto = hold.AlbumPhoto, AlbumPhotoThumb = hold.AlbumPhotoThumb, DateReleased = txtDateReleased.Text }; if (req.AlbumPhoto == null) { Image placeholder = Image.FromFile(Helper.GetImagePath("placeholder.jpg")); req.AlbumPhoto = Helper.ImageToByteArray(placeholder); req.AlbumPhotoThumb = Helper.ImageToByteArray(Helper.ResizeImage(placeholder, 120, 120)); } if (_albumId.HasValue) { await _albumService.Update <Model.Album>(_albumId, req); } else { req.AlbumGeneratedRating = 0; await _albumService.Insert <Model.Album>(req); refreshHandler?.Invoke(this, null); MessageBox.Show("Task successful"); this.Close(); } refreshHandler?.Invoke(this, null); MessageBox.Show("Task successful"); } } }
private async void btnSave_Click(object sender, EventArgs e) { if (ValidateChildren()) { var albumTracks = _albumTracks.Select(i => i.ID).ToList(); var request = new AlbumUpsertRequest() { Name = Convert.ToString(txtName.Text), ReleaseYear = Convert.ToInt32(txtReleaseYear.Text), ArtistID = Convert.ToInt32(cbArtist.SelectedValue), Image = ImageHelper.SystemDrawingToByteArray(pbAlbumImage.Image), Tracks = albumTracks }; if (_ID.HasValue) { var tracksToDelete = _album.AlbumTracks .Where(i => !albumTracks.Any(id => id.Equals(i.TrackID))) .Select(i => i.TrackID) .ToList(); request.TracksToDelete = tracksToDelete; await _albumApiService.Update <Model.Album>(_ID.Value, request); } else { await _albumApiService.Insert <Model.Album>(request); var parent = this.Parent; PanelHelper.SwapPanels(this.Parent, this, new ucAlbumUpsert()); } MessageBox.Show("Success", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
public static async Task GenerateRating(int AlbumId) { Album thisAlbum = await _albumService.GetById <Album>(AlbumId); var albumVotes = await _userAlbumVoteService.Get <List <UserAlbumVote> >(new UserAlbumVoteSearchRequest() { AlbumId = AlbumId }); var tracks = await _trackService.Get <List <Track> >(new TrackSearchRequest() { AlbumId = AlbumId }); float albumLikesPercentage = (float)albumVotes.Where(a => a.Liked == true).Count() / albumVotes.Count(); if (!HasValue(albumLikesPercentage)) { albumLikesPercentage = 1; } int aggregateTrackLikes = 0; int aggregateVotes = 0; foreach (var item in tracks) { var trackVotes = await _userTrackVoteService.Get <List <UserTrackVote> >(new UserTrackVoteSearchRequest() { TrackId = item.TrackId }); aggregateTrackLikes += trackVotes.Where(a => a.Liked == true).Count(); aggregateVotes += trackVotes.Count(); } float trackLikesPercentage = (float)aggregateTrackLikes / aggregateVotes; if (!HasValue(trackLikesPercentage)) { trackLikesPercentage = 1; } var reviewsAlbum = await _reviewService.Get <List <Review> >(new ReviewSearchRequest() { AlbumId = AlbumId }); int sumRatings = reviewsAlbum.Sum(a => a.Rating); float percentageReviews = (float)sumRatings / (reviewsAlbum.Count * 5); if (!HasValue(percentageReviews)) { percentageReviews = 1; } double ratingCombined = (double)(percentageReviews + albumLikesPercentage + trackLikesPercentage) / 3; ratingCombined *= 5; string str = ratingCombined.ToString("0.0"); ratingCombined = Double.Parse(str); AlbumUpsertRequest updatedAlbum = new AlbumUpsertRequest() { AlbumDescription = thisAlbum.AlbumDescription, AlbumGeneratedRating = ratingCombined, AlbumName = thisAlbum.AlbumName, AlbumPhoto = thisAlbum.AlbumPhoto, AlbumPhotoThumb = thisAlbum.AlbumPhotoThumb, ArtistId = thisAlbum.ArtistId, DateReleased = thisAlbum.DateReleased }; await _albumService.Update <Model.Album>(AlbumId, updatedAlbum); }