Exemple #1
0
        public void GetFeedbackViewModelTest()
        {
            var artistDto = CreateArtist();
            var genreDto  = CreateGenre();
            var trackDto  = CreateTrack(artistDto, genreDto);

            var userData = new UserData
            {
                Id = 1
            };

            var feedbackDto = new Feedback
            {
                Id       = 1,
                Comments = "Some comments",
                Track    = trackDto,
                TrackId  = trackDto.Id,
                User     = userData,
                UserId   = userData.Id
            };
            var feedback = ModelsMapper.GetFeedbackViewModel(feedbackDto);

            Assert.IsNotNull(feedback);
            Assert.IsTrue(feedback.UserDataId == userData.Id);
            Assert.IsTrue(feedback.Comments.Equals(feedbackDto.Comments, StringComparison.OrdinalIgnoreCase));
        }
        /// <summary>
        /// Returns the feedback which have made the specified user for the track.
        /// </summary>
        /// <param name="trackId">
        /// The track id.
        /// </param>
        /// <param name="userDataId">
        /// The user who have left a comment and/or a vote for the track.
        /// </param>
        /// <returns>
        /// The feedback for the <paramref name="trackId"/> which have made the specified <paramref name="userDataId"/>
        /// or <b>null</b> in case if feedback doesn't exist.
        /// </returns>
        public FeedbackViewModel GetTrackFeedback(int trackId, int userDataId)
        {
            Feedback feedback;

            using (var repository = Factory.GetFeedbackRepository())
            {
                feedback = repository.FirstOrDefault(f => f.TrackId == trackId && f.UserId == userDataId, f => f.User, f => f.User.User);
            }

            Vote vote;

            using (var repository = Factory.GetVoteRepository())
            {
                vote = repository.FirstOrDefault(v => v.TrackId == trackId && v.UserId == userDataId);
            }

            FeedbackViewModel feedbackViewModel = null;

            // if user comments exist for this feedback
            if (feedback != null)
            {
                feedbackViewModel = ModelsMapper.GetFeedbackViewModel(feedback);
            }

            // if a user mark exists for this feedback
            if (vote != null)
            {
                if (feedbackViewModel == null)
                {
                    // this is a feedback only with mark
                    feedbackViewModel = new FeedbackViewModel
                    {
                        Mark       = vote.Mark,
                        UserDataId = vote.UserId
                    };
                }
                else
                {
                    // this is a feedback with comments and mark
                    feedbackViewModel.Mark = vote.Mark;
                }
            }

            return(feedbackViewModel);
        }