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; } }
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); }