public async Task <ActionResult <DutyDto> > AddDuty(AddDutyDto newDuty) { if (newDuty == null) { return(BadRequest(InvalidDutyErrorMessage)); } if (!PermissionDataFiltersExtensions.HasAccessToLocation(User, Db, newDuty.LocationId)) { return(Forbid()); } var duty = await DutyRosterService.AddDuty(newDuty.Adapt <Duty>()); return(Ok(duty.Adapt <DutyDto>())); }
public async Task AddDuty() { var locationId = await CreateLocation(); var startDate = DateTimeOffset.UtcNow; var addDuty = new AddDutyDto { StartDate = startDate, EndDate = startDate.AddDays(5), LocationId = locationId, Timezone = "America/Vancouver" }; var response = HttpResponseTest.CheckForValid200HttpResponseAndReturnValue(await _controller.AddDuties(new List <AddDutyDto> { addDuty })); Assert.NotNull(response); Assert.Equal(addDuty.StartDate, response.First().StartDate); Assert.Equal(addDuty.EndDate, response.First().EndDate); }
public async Task AddDuty() { var location = new Location { Id = 1, AgencyId = "5555", Name = "dfd" }; await Db.Location.AddAsync(location); await Db.SaveChangesAsync(); var startDate = DateTimeOffset.UtcNow; var addDuty = new AddDutyDto { StartDate = startDate, EndDate = startDate.AddDays(5), LocationId = 1, Timezone = "America/Vancouver" }; var response = HttpResponseTest.CheckForValid200HttpResponseAndReturnValue(await _controller.AddDuty(addDuty)); Assert.NotNull(response); Assert.Equal(addDuty.StartDate, response.StartDate); Assert.Equal(addDuty.EndDate, response.EndDate); }
public async Task DutySlotOverlapSelf() { var locationId = await CreateLocation(); var newSheriffId = await CreateSheriff(locationId); var startDate = DateTimeOffset.UtcNow.AddYears(5); var addDuty = new AddDutyDto { LocationId = locationId, StartDate = startDate, EndDate = startDate.AddDays(5), Timezone = "America/Vancouver" }; HttpResponseTest.CheckForValid200HttpResponseAndReturnValue(await _controller.AddDuties(new List <AddDutyDto> { addDuty })); var controllerResult = await _controller.GetDuties(locationId, startDate, startDate.AddDays(5)); var getDuties = HttpResponseTest.CheckForValid200HttpResponseAndReturnValue(controllerResult); Assert.Single(getDuties); var duty = getDuties.First().Adapt <UpdateDutyDto>(); duty.DutySlots = new List <UpdateDutySlotDto>() { new UpdateDutySlotDto { StartDate = startDate, EndDate = startDate.AddDays(5), SheriffId = newSheriffId }, new UpdateDutySlotDto { StartDate = startDate, EndDate = startDate.AddDays(5), SheriffId = newSheriffId } }; //Should throw self conflicting exception. await Assert.ThrowsAsync <BusinessLayerException>(async() => await _controller.UpdateDuties(new List <UpdateDutyDto> { duty })); duty.DutySlots = new List <UpdateDutySlotDto>() { new UpdateDutySlotDto { StartDate = startDate, EndDate = startDate.AddDays(5), SheriffId = newSheriffId }, new UpdateDutySlotDto { StartDate = startDate.AddDays(5), EndDate = startDate.AddDays(6), SheriffId = newSheriffId } }; //Shouldn't overlap. var controllerResult2 = await _controller.UpdateDuties(new List <UpdateDutyDto> { duty }); var getDuties2 = HttpResponseTest.CheckForValid200HttpResponseAndReturnValue(controllerResult2); }
public async Task DutySlotOverlapSelf() { var location = new Location { Id = 1, AgencyId = "5555", Name = "dfd" }; await Db.Location.AddAsync(location); var newSheriff = new Sheriff { FirstName = "Ted", LastName = "Tums", HomeLocationId = location.Id, IsEnabled = true }; await Db.Sheriff.AddAsync(newSheriff); await Db.SaveChangesAsync(); var startDate = DateTimeOffset.UtcNow.AddYears(5); var addDuty = new AddDutyDto { LocationId = 1, StartDate = startDate, EndDate = startDate.AddDays(5), Timezone = "America/Vancouver" }; HttpResponseTest.CheckForValid200HttpResponseAndReturnValue(await _controller.AddDuty(addDuty)); var controllerResult = await _controller.GetDuties(location.Id, startDate, startDate.AddDays(5)); var getDuties = HttpResponseTest.CheckForValid200HttpResponseAndReturnValue(controllerResult); Assert.Single(getDuties); var duty = getDuties.First().Adapt <UpdateDutyDto>(); duty.DutySlots = new List <UpdateDutySlotDto>() { new UpdateDutySlotDto { StartDate = startDate, EndDate = startDate.AddDays(5), SheriffId = newSheriff.Id }, new UpdateDutySlotDto { StartDate = startDate, EndDate = startDate.AddDays(5), SheriffId = newSheriff.Id } }; //Should throw self conflicting exception. await Assert.ThrowsAsync <BusinessLayerException>(async() => await _controller.UpdateDuties(new List <UpdateDutyDto> { duty })); duty.DutySlots = new List <UpdateDutySlotDto>() { new UpdateDutySlotDto { StartDate = startDate, EndDate = startDate.AddDays(5), SheriffId = newSheriff.Id }, new UpdateDutySlotDto { StartDate = startDate.AddDays(5), EndDate = startDate.AddDays(6), SheriffId = newSheriff.Id } }; //Shouldn't overlap. var controllerResult2 = await _controller.UpdateDuties(new List <UpdateDutyDto> { duty }); var getDuties2 = HttpResponseTest.CheckForValid200HttpResponseAndReturnValue(controllerResult2); }