コード例 #1
0
ファイル: RatingManager.cs プロジェクト: younes21/abp
    public async Task <Rating> SetStarAsync(CmsUser user, string entityType, string entityId, short starCount)
    {
        var currentUserRating = await RatingRepository.GetCurrentUserRatingAsync(entityType, entityId, user.Id);

        if (currentUserRating != null)
        {
            currentUserRating.SetStarCount(starCount);

            return(await RatingRepository.UpdateAsync(currentUserRating));
        }

        if (!await RatingDefinitionStore.IsDefinedAsync(entityType))
        {
            throw new EntityCantHaveRatingException(entityType);
        }

        return(await RatingRepository.InsertAsync(
                   new Rating(
                       GuidGenerator.Create(),
                       entityType,
                       entityId,
                       starCount,
                       user.Id,
                       CurrentTenant.Id
                       )
                   ));
    }
コード例 #2
0
        public virtual async Task <RatingDto> CreateAsync(string entityType, string entityId,
                                                          CreateUpdateRatingInput input)
        {
            var userId = CurrentUser.GetId();
            var user   = await CmsUserLookupService.GetByIdAsync(userId);

            var currentUserRating = await RatingRepository.GetCurrentUserRatingAsync(entityType, entityId, userId);

            if (currentUserRating != null)
            {
                currentUserRating.SetStarCount(input.StarCount);
                var updatedRating = await RatingRepository.UpdateAsync(currentUserRating);

                return(ObjectMapper.Map <Rating, RatingDto>(updatedRating));
            }

            var rating = await RatingRepository.InsertAsync(
                new Rating(
                    GuidGenerator.Create(),
                    entityType,
                    entityId,
                    input.StarCount,
                    user.Id,
                    CurrentTenant.Id
                    )
                );

            return(ObjectMapper.Map <Rating, RatingDto>(rating));
        }
コード例 #3
0
        public virtual async Task <RatingDto> GetCurrentUserRatingAsync(string entityType, string entityId)
        {
            var currentUserId = CurrentUser.GetId();

            var rating = await RatingRepository.GetCurrentUserRatingAsync(entityType, entityId, currentUserId);

            return(ObjectMapper.Map <Rating, RatingDto>(rating));
        }
コード例 #4
0
        public virtual async Task DeleteAsync(string entityType, string entityId)
        {
            var rating = await RatingRepository.GetCurrentUserRatingAsync(entityType, entityId, CurrentUser.GetId());

            if (rating.CreatorId != CurrentUser.GetId())
            {
                throw new AbpAuthorizationException();
            }

            await RatingRepository.DeleteAsync(rating.Id);
        }
コード例 #5
0
        public virtual async Task <List <RatingWithStarCountDto> > GetGroupedStarCountsAsync(string entityType,
                                                                                             string entityId)
        {
            var ratings = await RatingRepository.GetGroupedStarCountsAsync(entityType, entityId);

            var userRatingOrNull = CurrentUser.IsAuthenticated
                ? await RatingRepository.GetCurrentUserRatingAsync(entityType, entityId, CurrentUser.GetId())
                : null;

            var ratingWithStarCountDto = new List <RatingWithStarCountDto>();

            foreach (var rating in ratings)
            {
                ratingWithStarCountDto.Add(
                    new RatingWithStarCountDto
                {
                    StarCount = rating.StarCount,
                    Count     = rating.Count,
                    IsSelectedByCurrentUser = userRatingOrNull != null && userRatingOrNull.StarCount == rating.StarCount
                });
            }

            return(ratingWithStarCountDto);
        }