示例#1
0
        public async Task <DataWithCount <Drawing> > GetDetailsAsync(int id, int skip, int take)
        {
            int authUserId = GetClaimId(ClaimType.UserId);

            if (HasPermission(Permission.PerformDrawing))
            {
                try
                {
                    return(new DataWithCount <Drawing>
                    {
                        Data = await _drawingRepository.GetByIdAsync(id, skip, take),
                        Count = await _drawingRepository.GetWinnerCountAsync(id)
                    });
                }
                catch (Exception)
                {
                    throw new GraException("The requested drawing could not be accessed or does not exist.");
                }
            }
            else
            {
                _logger.LogError($"User {authUserId} doesn't have permission to view drawing {id}.");
                throw new GraException("Permission denied.");
            }
        }
示例#2
0
        public async Task RemovePrizeAsync(int prizeWinnerId)
        {
            VerifyManagementPermission();

            int authUserId = GetClaimId(ClaimType.UserId);
            var prize      = await _prizeWinnerRepository.GetByIdAsync(prizeWinnerId);

            if (!prize.RedeemedAt.HasValue)
            {
                await _prizeWinnerRepository.RemoveSaveAsync(authUserId, prizeWinnerId);

                if (prize.DrawingId.HasValue)
                {
                    var winnerCount = await _drawingRepository.GetWinnerCountAsync(
                        prize.DrawingId.Value);

                    if (winnerCount == 0)
                    {
                        await _drawingRepository.SetArchivedAsync(authUserId, prize.DrawingId.Value,
                                                                  true);
                    }
                }
            }
            else
            {
                _logger.LogError($"User {authUserId} cannot remove claimed prize {prize.Id}.");
                throw new GraException("Prizes that have been claimed cannot be removed.");
            }
        }