private async Task AddImplementationMailToQueue(IProjectData project)
        {
            var following = await GetProjectFollows(project.Id);

            var participants = await _participantsRepository.GetProjectParticipantsAsync(project.Id);

            var projectParticipateData = participants as IList <IProjectParticipateData> ?? participants.ToList();

            foreach (var follower in following)
            {
                if (_emailsQueue != null)
                {
                    var participant = projectParticipateData.FirstOrDefault(x => x.ProjectId == project.Id && x.UserId == follower.UserId);

                    var templateType = "";
                    templateType = participant != null ? "ImplementationParticipant" : "ImplementationFollower";

                    var message = NotificationMessageHelper.GenerateImplementationMessage(project, follower,
                                                                                          templateType);
                    await _emailsQueue.PutMessageAsync(message);
                }
            }
        }
        private async Task <List <ProjectCompactViewModel> > GetParticipatedProjects(string userId)
        {
            var participatedProjects = new List <IProjectData>();
            var projects             = await _projectRepository.GetProjectsAsync();

            foreach (var project in projects)
            {
                if (project.ProjectStatus != Status.Draft.ToString())
                {
                    var participants = await _participantsRepository.GetProjectParticipantsAsync(project.Id);

                    foreach (var participant in participants)
                    {
                        if (participant.UserId == userId)
                        {
                            participatedProjects.Add(project);
                        }
                    }
                }
            }

            return(await GetCompactProjectsList(participatedProjects));
        }