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); }
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); }