示例#1
0
        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());
                }
            }
        }
示例#2
0
        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);
        }