public async Task <IActionResult> MessageAllVolunteers(MessageEventVolunteersViewModel viewModel) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var authorizableEvent = await _mediator.SendAsync(new AuthorizableEventQuery(viewModel.EventId)); if (!await authorizableEvent.UserCanEdit()) { return(new ForbidResult()); } await _mediator.SendAsync(new MessageEventVolunteersCommand { ViewModel = viewModel }); return(Ok()); }
public async Task <IActionResult> MessageAllVolunteers(MessageEventVolunteersViewModel viewModel) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var eventsOrganizationId = await _mediator.SendAsync(new OrganizationIdByEventIdQuery { EventId = viewModel.EventId }); if (!User.IsOrganizationAdmin(eventsOrganizationId)) { return(Unauthorized()); } await _mediator.SendAsync(new MessageEventVolunteersCommand { ViewModel = viewModel }); return(Ok()); }
public async Task MessageAllVolunteers_SendsMessageEventVolunteersCommandWithCorrectViewModel_WhenAuthorized() { var model = new MessageEventVolunteersViewModel { EventId = 1, Message = "Hello", Subject = "A Subject" }; var mediator = new Mock <IMediator>(); mediator.Setup(x => x.SendAsync(It.IsAny <AuthorizableEventQuery>())) .ReturnsAsync(new FakeAuthorizableEvent(true, true, true, true)); var sut = GetInstance(mediator: mediator.Object); await sut.MessageAllVolunteers(model); mediator.Verify(x => x.SendAsync(It.Is <MessageEventVolunteersCommand>(c => c.ViewModel.Subject == model.Subject)), Times.Once); }
public async Task MessageAllVolunteers_SendsMessageEventVolunteersCommandWithCorrectViewModel_WhenAuthorized() { var model = new MessageEventVolunteersViewModel { EventId = 1, Message = "Hello", Subject = "A Subject" }; var mediator = new Mock <IMediator>(); mediator.Setup(x => x.SendAsync(It.IsAny <AuthorizableEventQuery>())) .ReturnsAsync(new FakeAuthorizableEvent(true, true, true, true)); var sut = new EventController( Mock.Of <IImageService>(), mediator.Object, Mock.Of <IValidateEventEditViewModels>(), Mock.Of <IUserAuthorizationService>()); await sut.MessageAllVolunteers(model); mediator.Verify(x => x.SendAsync(It.Is <MessageEventVolunteersCommand>(c => c.ViewModel.Subject == model.Subject)), Times.Once); }
public async Task <IActionResult> MessageAllVolunteers(MessageEventVolunteersViewModel viewModel) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } //TODO: Query only for the organization Id rather than the whole event detail var campaignEvent = await _mediator.SendAsync(new EventDetailQuery { EventId = viewModel.EventId }); if (campaignEvent == null) { return(NotFound()); } if (!User.IsOrganizationAdmin(campaignEvent.OrganizationId)) { return(Unauthorized()); } await _mediator.SendAsync(new MessageEventVolunteersCommand { ViewModel = viewModel }); return(Ok()); }