コード例 #1
0
        public async Task PostSuggestionAsync(CommitteeSuggestionPostDto dto, string userId)
        {
            var committee = await _committeeRepository
                            .Get(c => c.Id == dto.CommitteeId, includeProperties : "Suggestions, Members")
                            .FirstOrDefaultAsync();

            if (committee == null)
            {
                throw new ServiceException(Resources.Models.Committee.Committee.SuggestionCommiteNotFound);
            }

            var suggestion = _mapper.Map <CommitteeSuggestion>(dto);

            suggestion.User = await _applicationUserRepository.GetByIdAsync(userId);

            suggestion.Date = DateTime.UtcNow;

            committee.Suggestions.Add(suggestion);

            _committeeRepository.Update(committee);
            await _unitOfWork.SaveAsync();

            var suggestionDto = new CommitteeSuggestionCreatedDto
            {
                CommitteeId  = committee.Id,
                SuggestionId = suggestion.Id
            };

            _asyncRunner.Run <ICommitteeNotificationService>(async notifier => await notifier.NotifyCommitteeMembersAboutNewSuggestionAsync(suggestionDto), _uow.ConnectionName);
        }
コード例 #2
0
        public async Task NotifyCommitteeMembersAboutNewSuggestionAsync(CommitteeSuggestionCreatedDto createdDto)
        {
            var committee = await _committeeDbSet.Include(inc => inc.Members).FirstOrDefaultAsync(wh => wh.Id == createdDto.CommitteeId);

            if (committee == null)
            {
                throw new ServiceException(Resources.Models.Committee.Committee.SuggestionCommiteNotFound);
            }

            var suggestion = await _suggestionDbSet.FindAsync(createdDto.SuggestionId);

            if (suggestion == null)
            {
                throw new ServiceException($"Suggestion {createdDto.SuggestionId} for committee {createdDto.CommitteeId} not found");
            }

            await NotifyCommitteeMembersAboutNewSuggestionAsync(committee, suggestion);
        }