public async Task <IEnumerable <User> > GetHouseholdAsync(int householdHeadUserId, bool includePendingQuestionnaire, bool includeVendorCode, bool includeMail, bool includePrize = false) { var authId = GetClaimId(ClaimType.UserId); if (!HasPermission(Permission.ViewParticipantDetails) && householdHeadUserId != authId) { var authUser = await _userRepository.GetByIdAsync(authId); if (authUser.HouseholdHeadUserId != householdHeadUserId) { _logger.LogError($"User {authId} doesn't have permission to view details for {householdHeadUserId}."); throw new GraException("Permission denied."); } } var household = await _userRepository.GetHouseholdAsync(householdHeadUserId); if (includeVendorCode || includeMail || includePrize || includePendingQuestionnaire) { if (includeMail && householdHeadUserId != authId && !HasPermission(Permission.ReadAllMail)) { _logger.LogError($"User {authId} doesn't have permission to view mail for {householdHeadUserId}."); throw new GraException("Permission denied."); } if (includePrize && !HasPermission(Permission.ViewUserPrizes)) { _logger.LogError($"User {authId} doesn't have permission to view prizes for {householdHeadUserId}."); throw new GraException("Permission denied."); } var siteId = GetCurrentSiteId(); foreach (var member in household) { if (includeMail) { member.HasNewMail = await _mailRepository.UserHasUnreadAsync(member.Id); } if (includePrize) { member.HasUnclaimedPrize = (await _prizeWinnerRepository .CountByWinningUserId(GetCurrentSiteId(), member.Id, false)) > 0; } if (includeVendorCode) { await _vendorCodeService.PopulateVendorCodeStatusAsync(member); } if (includePendingQuestionnaire) { member.HasPendingQuestionnaire = (await _requireQuestionnaireRepository .GetForUser(siteId, member.Id, member.Age)).Any(); } } } return(household); }
PageUserPrizes(int userId, BaseFilter filter = default(BaseFilter)) { VerifyManagementPermission(); int siteId = GetCurrentSiteId(); if (filter == null) { filter = new BaseFilter(); } var prizes = await _prizeWinnerRepository .PageByWinnerAsync(siteId, userId, (int)filter.Skip, (int)filter.Take); foreach (var prize in prizes) { if (prize.DrawingId != null) { var drawing = await _drawingRepository.GetByIdAsync((int)prize.DrawingId); prize.PrizeName = drawing.Name; prize.PrizeRedemptionInstructions = drawing.RedemptionInstructions; } else if (prize.TriggerId != null) { var trigger = await _triggerRepository.GetByIdAsync((int)prize.TriggerId); prize.PrizeName = trigger.AwardPrizeName; prize.PrizeRedemptionInstructions = trigger.AwardPrizeRedemptionInstructions; } } return(new DataWithCount <ICollection <PrizeWinner> > { Data = prizes, Count = await _prizeWinnerRepository.CountByWinningUserId(siteId, userId) }); }
PageUserPrizes(int userId, BaseFilter filter = default(BaseFilter)) { VerifyManagementPermission(); int siteId = GetCurrentSiteId(); if (filter == null) { filter = new BaseFilter(); } var prizes = await _prizeWinnerRepository .PageByWinnerAsync(siteId, userId, (int)filter.Skip, (int)filter.Take); foreach (var prize in prizes) { if (prize.DrawingId != null) { var drawing = await _drawingRepository.GetByIdAsync((int)prize.DrawingId); prize.PrizeName = drawing.Name; prize.PrizeRedemptionInstructions = drawing.RedemptionInstructions; var drawingCritera = await _drawingCriterionRepository .GetByIdAsync(drawing.DrawingCriterionId); prize.AvailableAtBranch = drawingCritera.BranchName; prize.AvailableAtSystem = drawingCritera.SystemName; } else if (prize.TriggerId != null) { var trigger = await _triggerRepository.GetByIdAsync((int)prize.TriggerId); prize.AvailableAtBranch = trigger.LimitToBranchName; prize.AvailableAtSystem = trigger.LimitToSystemName; prize.PrizeName = trigger.AwardPrizeName; prize.PrizeRedemptionInstructions = trigger.AwardPrizeRedemptionInstructions; } else if (prize.VendorCodeId != null) { var vendorCode = await _vendorCodeRepository .GetByIdAsync((int)prize.VendorCodeId); var vendorCodeType = await _vendorCodeTypeRepository .GetByIdAsync(vendorCode.VendorCodeTypeId); var branch = await _branchRepository.GetByIdAsync((int)vendorCode.BranchId); var system = await _systemRepository.GetByIdAsync(branch.SystemId); prize.PrizeName = $"{vendorCodeType.Description}: {vendorCode.Details}"; prize.PrizeRedemptionInstructions = $"Give customer {vendorCode.Details} and click the green redemption button."; prize.AvailableAtBranch = branch.Name; prize.AvailableAtSystem = system.Name; } } return(new DataWithCount <ICollection <PrizeWinner> > { Data = prizes, Count = await _prizeWinnerRepository.CountByWinningUserId(siteId, userId) }); }