public async Task <IReferralLinksStatistics> GetStatistics(string senderClientId)
        {
            var statistics = new ReferralLinksStatistics();

            var referralLinksForSender = (await _referralLinkRepository.GetReferralLinksBySenderId(senderClientId)).ToList();

            var invitationLinks = referralLinksForSender.Where(r => r.Type == ReferralLinkType.Invitation.ToString()).ToList();

            statistics.NumberOfInvitationLinksSent = invitationLinks.Count();
            var claims = (await _referralLinkClaimsRepository.GetClaimsForRefLinks(invitationLinks.Select(r => r.Id))).Where(l => l.RecipientClientId != senderClientId);

            statistics.NumberOfInvitationLinksAccepted = claims.Count();

            statistics.NumberOfGiftLinksSent        = referralLinksForSender.Count(r => r.Type == ReferralLinkType.GiftCoins.ToString());
            statistics.AmountOfGiftCoinsDistributed = referralLinksForSender
                                                      .Where(x => x.Type == ReferralLinkType.GiftCoins.ToString() && x.State == ReferralLinkState.Claimed.ToString())
                                                      .Sum(x => x.Amount);

            statistics.NumberOfNewUsersBroughtIn = (await _referralLinkClaimsRepository.GetClaimsForRefLinks(referralLinksForSender.Select(r => r.Id))).Count(r => r.IsNewClient);

            return(statistics);
        }
 public IEnumerable <IReferralLink> GetInvitationLinksForSenderId(string senderClientId)
 {
     return((_referralLinkRepository.GetReferralLinksBySenderId(senderClientId)).Result.Where(r => r.Type == ReferralLinkType.Invitation.ToString()));
 }