public async Task <EntityDto <long> > CreateRating(CreateRatingInput input)
        {
            var currentUser = await GetCurrentUserAsync();

            Rating rating = null;

            if (input.ActivityId.HasValue)
            {
                var activity = await _activityManager.GetAsync(input.ActivityId.Value);

                rating = await _ratingManager.CreateAsync(input.RatingStatus, activity, currentUser);
            }
            else if (input.ActivityPlanId.HasValue)
            {
                var activityPlan = await _activityPlanManager.GetAsync(input.ActivityPlanId.Value);

                rating = await _ratingManager.CreateAsync(input.RatingStatus, activityPlan, currentUser);
            }
            else if (input.ActivityTemplateId.HasValue)
            {
                var activityTemplate = await _activityTemplateManager.GetAsync(input.ActivityTemplateId.Value);

                rating = await _ratingManager.CreateAsync(input.RatingStatus, activityTemplate, currentUser);
            }
            else
            {
                throw new UserFriendlyException("Please provide either activityId or activityPlanId or activityTemplateId.");
            }

            return(new EntityDto <long>(rating.Id));
        }
        public async Task Rate(CreateRatingInput input)
        {
            try
            {
                var isAlreadyRate = await _ratingManager.IsUserAlreadyRatePost(AbpSession.UserId.Value, input.PostId);

                if (isAlreadyRate)
                {
                    throw new UserFriendlyException($"User {AbpSession.UserId} already rate post {input.PostId}");
                }

                await _ratingManager.Create(new Rating(input.Value, input.PostId, AbpSession.UserId.Value));

                var post = await _manager.GetById(input.PostId);

                var averageRating = await _ratingManager.GetRatingAverage(input.PostId);

                post.SetAverageRating(averageRating);
                await _manager.Update(post);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
Beispiel #3
0
        public void CreateRating(CreateRatingInput input)
        {
            //long currentUserId = _abpSession.UserId.Value;
            //var user = await _userManager.GetUserByIdAsync(currentUserId);
            //Console.Write(user);

            //var rating = new RatingDetails
            //{
            //    ReviewComments = input.ReviewComments,
            //    ReviewStar = input.ReviewStar,
            //    MovieId = input.MovieId,
            //   // CreatorUser = user
            //};

            //var rating = ObjectMapper.Map<RatingDetails>(input);

            var m = _ratingRepository.GetAll()
                    .WhereIf(AbpSession.UserId != null, t => t.CreatorUserId == AbpSession.UserId)
                    .Where(t => t.MovieId == input.MovieId)
                    .Count();

            if (m >= 1)
            {
                throw new Abp.UI.UserFriendlyException("Already the Movie has been Rated by you");
            }
            else
            {
                var rating = ObjectMapper.Map <RatingDetails>(input);
                _ratingRepository.InsertAsync(rating);
            }


            //await _ratingRepository.InsertAsync(rating);
        }