Example #1
0
        public async Task <IEnumerable <InvitationResponse> > GetMemberInvitations(string email)
        {
            var invitationResponses = new List <InvitationResponse>();
            var member = await GetMemberByEmail(email);

            if (member == null)
            {
                return(invitationResponses);
            }

            IdentityRole coachRole = await _membersRepository.GetMemberRole(m => m.Name == Role.Coach.ToString());

            IEnumerable <Invitation> invitations = Enumerable.Empty <Invitation>();
            bool isCoach = member.IdentityUser.Roles.Any(r => coachRole.Id == r.RoleId);

            if (!isCoach && member.Club != null)
            {
                return(invitationResponses);
            }

            if (member.IdentityUser.Roles.Any(r => coachRole.Id == r.RoleId))
            {
                invitations = _invitationsRepository.GetInvitations(i =>
                                                                    i.InvitingClub.Id == member.Club.Id && i.Status == InvitationStatus.NotReplied);
            }
            else
            {
                invitations = _invitationsRepository.GetInvitations(i =>
                                                                    i.InvitedPlayer.IdentityUser.Email == email && i.Status == InvitationStatus.NotReplied);
            }

            if (invitations.Any())
            {
                invitationResponses = invitations.Select(i => new InvitationResponse
                {
                    ClubName   = i.InvitingClub.Name,
                    PlayerName = $"{i.InvitedPlayer.FirstName} {i.InvitedPlayer.LastName}",
                    Id         = i.Id,
                    Thumbnail  = isCoach ?
                                 File.ReadAllBytes(i.InvitedPlayer.PhotoThumbnailPath) :
                                 File.ReadAllBytes(i.InvitingClub.PhotoThumbnailPath),
                    Description = i.Description
                }).ToList();
            }

            return(invitationResponses);
        }