Esempio n. 1
0
        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);
        }