public IActionResult Create(int activityId) { var activity = _dataAccess.GetActivity(activityId); if (activity == null || !User.IsTenantAdmin(activity.TenantId)) { return HttpUnauthorized(); } var viewModel = new TaskEditModel() { ActivityId = activity.Id, ActivityName = activity.Name, CampaignId = activity.CampaignId, CampaignName = activity.Campaign.Name, TenantId = activity.TenantId }; return View("Edit", viewModel); }
public IActionResult Create(int activityId, TaskEditModel model) { if (model.EndDateTime < model.StartDateTime) { ModelState.AddModelError("EndDateTime", "Ending time cannot be earlier than the starting time"); } if (ModelState.IsValid) { if (!User.IsTenantAdmin(model.TenantId)) { return HttpUnauthorized(); } _bus.Send(new EditTaskCommand() { Task = model }); return RedirectToAction("Details", "Activity", new { id = activityId }); } return View("Edit", model); }
public IActionResult Create(int activityId) { var activity = _dataAccess.GetActivity(activityId); if (activity == null || !User.IsOrganizationAdmin(activity.Campaign.ManagingOrganizationId)) { return HttpUnauthorized(); } var viewModel = new TaskEditModel() { ActivityId = activity.Id, ActivityName = activity.Name, CampaignId = activity.CampaignId, CampaignName = activity.Campaign.Name, OrganizationId = activity.Campaign.ManagingOrganizationId, TimeZoneId = activity.Campaign.TimeZoneId, StartDateTime = activity.StartDateTime, EndDateTime = activity.EndDateTime, }; return View("Edit", viewModel); }
public IActionResult Create(int activityId, TaskEditModel model) { if (model.EndDateTime < model.StartDateTime) { ModelState.AddModelError(nameof(model.EndDateTime), "Ending time cannot be earlier than the starting time"); } WarnDateTimeOutOfRange(ref model); if (ModelState.IsValid) { if (!User.IsOrganizationAdmin(model.OrganizationId)) { return HttpUnauthorized(); } _mediator.Send(new EditTaskCommand() { Task = model }); return RedirectToAction("Details", "Activity", new { id = activityId }); } return View("Edit", model); }
public IActionResult Create(int eventId) { var campaignEvent = GetEventBy(eventId); if (campaignEvent == null || !User.IsOrganizationAdmin(campaignEvent.Campaign.ManagingOrganizationId)) { return HttpUnauthorized(); } var viewModel = new TaskEditModel { EventId = campaignEvent.Id, EventName = campaignEvent.Name, CampaignId = campaignEvent.CampaignId, CampaignName = campaignEvent.Campaign.Name, OrganizationId = campaignEvent.Campaign.ManagingOrganizationId, TimeZoneId = campaignEvent.Campaign.TimeZoneId, StartDateTime = campaignEvent.StartDateTime, EndDateTime = campaignEvent.EndDateTime }; return View("Edit", viewModel); }
public async Task<IActionResult> Edit(TaskEditModel model) { if (model.EndDateTime < model.StartDateTime) { ModelState.AddModelError(nameof(model.EndDateTime), "Ending time cannot be earlier than the starting time"); } WarnDateTimeOutOfRange(ref model); if (ModelState.IsValid) { if (!User.IsOrganizationAdmin(model.OrganizationId)) { return HttpUnauthorized(); } await _mediator.SendAsync(new EditTaskCommandAsync { Task = model }); return RedirectToAction(nameof(Details), "Task", new { id = model.Id }); } return View(model); }
public async Task<IActionResult> Create(int activityId, TaskEditModel model) { if (model.EndDateTime < model.StartDateTime) { ModelState.AddModelError(nameof(model.EndDateTime), "Ending time cannot be earlier than the starting time"); } WarnDateTimeOutOfRange(ref model); if (ModelState.IsValid) { if (!User.IsOrganizationAdmin(model.OrganizationId)) { return HttpUnauthorized(); } await _mediator.SendAsync(new EditTaskCommandAsync { Task = model }); //mgmccarthy: I'm assuming this is ActivityController in the Admin area return RedirectToAction(nameof(Details), "Activity", new { id = activityId }); } return View("Edit", model); }
public async Task EditPostRedirectsToCorrectAction() { const int organizationId = 1; var taskSummaryModel = new TaskSummaryModel { OrganizationId = organizationId }; var startDateTime = DateTimeOffset.Now.AddDays(-1); var endDateTime = DateTimeOffset.Now.AddDays(1); var model = new TaskEditModel { Id = 1, StartDateTime = startDateTime, EndDateTime = endDateTime, OrganizationId = organizationId }; var mediator = new Mock<IMediator>(); mediator.Setup(x => x.Send(It.IsAny<EventByIdQuery>())).Returns(new Event { Campaign = new Campaign { TimeZoneId = "Eastern Standard Time" }, StartDateTime = startDateTime.AddDays(-1), EndDateTime = endDateTime.AddDays(1) }); mediator.Setup(x => x.SendAsync(It.IsAny<TaskQueryAsync>())).ReturnsAsync(taskSummaryModel); var sut = new TaskController(mediator.Object); MakeUserOrganizationAdminUser(sut, organizationId.ToString()); var result = await sut.Edit(model) as RedirectToActionResult; var routeValues = new Dictionary<string, object>{ ["id"] = model.Id }; Assert.Equal(result.ControllerName, "Task"); Assert.Equal(result.ActionName, nameof(TaskController.Details)); Assert.Equal(result.RouteValues, routeValues); }
public async Task EditPostSendsEditTaskCommandAsyncWhenModelStateIsValidAndUserIsOrganizationAdmin() { const int organizationId = 1; var taskSummaryModel = new TaskSummaryModel { OrganizationId = organizationId }; var startDateTime = DateTimeOffset.Now.AddDays(-1); var endDateTime = DateTimeOffset.Now.AddDays(1); var model = new TaskEditModel { StartDateTime = startDateTime, EndDateTime = endDateTime, OrganizationId = organizationId }; var mediator = new Mock<IMediator>(); mediator.Setup(x => x.Send(It.IsAny<EventByIdQuery>())).Returns(new Event { Campaign = new Campaign { TimeZoneId = "Eastern Standard Time" }, StartDateTime = startDateTime.AddDays(-1), EndDateTime = endDateTime.AddDays(1) }); mediator.Setup(x => x.SendAsync(It.IsAny<TaskQueryAsync>())).ReturnsAsync(taskSummaryModel); var sut = new TaskController(mediator.Object); MakeUserOrganizationAdminUser(sut, organizationId.ToString()); await sut.Edit(model); mediator.Verify(x => x.SendAsync(It.Is<EditTaskCommandAsync>(y => y.Task == model))); }
public async Task EditPostReturnsHttpUnauthorizedResultWhenModelStateIsValidAndUserIsNotAnOrganizationAdminUser() { var startDateTime = DateTimeOffset.Now.AddDays(-1); var endDateTime = DateTimeOffset.Now.AddDays(1); var model = new TaskEditModel { StartDateTime = startDateTime, EndDateTime = endDateTime, OrganizationId = 1 }; var mediator = new Mock<IMediator>(); mediator.Setup(x => x.Send(It.IsAny<EventByIdQuery>())).Returns(new Event { Campaign = new Campaign { TimeZoneId = "Eastern Standard Time" }, StartDateTime = startDateTime.AddDays(-1), EndDateTime = endDateTime.AddDays(1) }); var sut = new TaskController(mediator.Object); sut.SetDefaultHttpContext(); var result = await sut.Edit(model); Assert.IsType<HttpUnauthorizedResult>(result); }
public async Task EditPostReturnsCorrectViewAndViewModelWhenEndDateTimeIsLessThanStartDateTimeAndModelStateIsInvalid() { var model = new TaskEditModel { EndDateTime = DateTimeOffset.Now.AddDays(-1), StartDateTime = DateTimeOffset.Now.AddDays(1) }; var mediator = new Mock<IMediator>(); mediator.Setup(x => x.Send(It.IsAny<EventByIdQuery>())).Returns(new Event { Campaign = new Campaign { TimeZoneId = "Eastern Standard Time" } }); var sut = new TaskController(mediator.Object); var result = await sut.Edit(model) as ViewResult; var modelResult = result.ViewData.Model as TaskEditModel; Assert.IsType<ViewResult>(result); Assert.Equal(modelResult, model); }
public async Task EditGetReturnsCorrectViewModelAndView() { const int organizationId = 1; var taskEditModel = new TaskEditModel { OrganizationId = organizationId }; var mediator = new Mock<IMediator>(); mediator.Setup(x => x.SendAsync(It.IsAny<EditTaskQueryAsync>())).ReturnsAsync(taskEditModel); var sut = new TaskController(mediator.Object); MakeUserOrganizationAdminUser(sut, organizationId.ToString()); var result = await sut.Edit(It.IsAny<int>()) as ViewResult; var modelResult = result.ViewData.Model as TaskEditModel; Assert.IsType<ViewResult>(result); Assert.IsType<TaskEditModel>(modelResult); Assert.Equal(modelResult, taskEditModel); }
private void WarnDateTimeOutOfRange(ref TaskEditModel model) { if (model.StartDateTime.HasValue || model.EndDateTime.HasValue) { var activity = _dataAccess.GetActivity(model.ActivityId); TimeZoneInfo timeZone = TimeZoneInfo.FindSystemTimeZoneById(activity.Campaign.TimeZoneId); DateTimeOffset? convertedStartDateTime = null; if (model.StartDateTime.HasValue) { var startDateValue = model.StartDateTime.Value; var startDateTimeOffset = timeZone.GetUtcOffset(startDateValue); convertedStartDateTime = new DateTimeOffset(startDateValue.Year, startDateValue.Month, startDateValue.Day, startDateValue.Hour, startDateValue.Minute, 0, startDateTimeOffset); } DateTimeOffset? convertedEndDateTime = null; if (model.EndDateTime.HasValue) { var endDateValue = model.EndDateTime.Value; var endDateTimeOffset = timeZone.GetUtcOffset(endDateValue); convertedEndDateTime = new DateTimeOffset(endDateValue.Year, endDateValue.Month, endDateValue.Day, endDateValue.Hour, endDateValue.Minute, 0, endDateTimeOffset); } if ((convertedStartDateTime < activity.StartDateTime || convertedEndDateTime > activity.EndDateTime) && (model.IgnoreTimeRangeWarning == false)) { ModelState.AddModelError("", "Although valid, task time is out of range for activity time from " + activity.StartDateTime.DateTime.ToString("g") + " to " + activity.EndDateTime.DateTime.ToString("g") + " " + activity.Campaign.TimeZoneId.ToString()); ModelState.Remove("IgnoreTimeRangeWarning"); model.IgnoreTimeRangeWarning = true; } } }
private void WarnDateTimeOutOfRange(ref TaskEditModel model) { if (model.StartDateTime.HasValue || model.EndDateTime.HasValue) { var campaignEvent = GetEventBy(model.EventId); var timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(campaignEvent.Campaign.TimeZoneId); DateTimeOffset? convertedStartDateTime = null; if (model.StartDateTime.HasValue) { var startDateValue = model.StartDateTime.Value; var startDateTimeOffset = timeZoneInfo.GetUtcOffset(startDateValue); convertedStartDateTime = new DateTimeOffset(startDateValue.Year, startDateValue.Month, startDateValue.Day, startDateValue.Hour, startDateValue.Minute, 0, startDateTimeOffset); } DateTimeOffset? convertedEndDateTime = null; if (model.EndDateTime.HasValue) { var endDateValue = model.EndDateTime.Value; var endDateTimeOffset = timeZoneInfo.GetUtcOffset(endDateValue); convertedEndDateTime = new DateTimeOffset(endDateValue.Year, endDateValue.Month, endDateValue.Day, endDateValue.Hour, endDateValue.Minute, 0, endDateTimeOffset); } if ((convertedStartDateTime < campaignEvent.StartDateTime || convertedEndDateTime > campaignEvent.EndDateTime) && (model.IgnoreTimeRangeWarning == false)) { ModelState.AddModelError("", "Although valid, task time is out of range for event time from " + campaignEvent.StartDateTime.DateTime.ToString("g") + " to " + campaignEvent.EndDateTime.DateTime.ToString("g") + " " + campaignEvent.Campaign.TimeZoneId); ModelState.Remove("IgnoreTimeRangeWarning"); model.IgnoreTimeRangeWarning = true; } } }