Example #1
0
        public async Task <Sheriff> UpdateSheriff(Sheriff sheriff)
        {
            _db.Sheriff.Update(sheriff);
            await _db.SaveChangesAsync();

            return(sheriff);
        }
Example #2
0
        public async Task<Sheriff> UpdateSheriff(Sheriff sheriff, bool canEditIdir)
        {
            var savedSheriff = await Db.Sheriff.FindAsync(sheriff.Id);
            savedSheriff.ThrowBusinessExceptionIfNull($"{nameof(Sheriff)} with the id: {sheriff.Id} could not be found. ");

            if (sheriff.BadgeNumber != savedSheriff.BadgeNumber)
                await CheckForBlankOrDuplicateBadgeNumber(sheriff.BadgeNumber);

            if (canEditIdir && savedSheriff.IdirName != sheriff.IdirName)
            {
                await CheckForBlankOrDuplicateIdirName(sheriff.IdirName, sheriff.Id);
                sheriff.IdirName = sheriff.IdirName.ToLower();
                sheriff.IdirId = null;
            }
            else
            {
                sheriff.IdirName = savedSheriff.IdirName;
                sheriff.IdirId = savedSheriff.IdirId;
            }

            Db.Entry(savedSheriff).CurrentValues.SetValues(sheriff);

            Db.Entry(savedSheriff).Property(x => x.HomeLocationId).IsModified = false;
            Db.Entry(savedSheriff).Property(x => x.IsEnabled).IsModified = false;
            Db.Entry(savedSheriff).Property(x => x.Photo).IsModified = false;
            Db.Entry(savedSheriff).Property(x => x.LastPhotoUpdate).IsModified = false;
            Db.Entry(savedSheriff).Property(x => x.KeyCloakId).IsModified = false;
            Db.Entry(savedSheriff).Property(x => x.LastLogin).IsModified = false;

            await Db.SaveChangesAsync();
            return sheriff;
        }
Example #3
0
        static Hero PlayerSetup()
        {
            Console.WriteLine("What is your name?");

            string name   = Console.ReadLine();
            string choice = "0";

            while (choice != "1" && choice != "2" && choice != "3")
            {
                Console.WriteLine("Please type the number of the hero you would ike to be?\n1. Cowboy\n2. Gunslinger\n3. Sheriff");
                choice = Console.ReadLine();
            }

            switch (choice)
            {
            case ("1"):
                Cowboy cowboy = new Cowboy(name);
                return(cowboy);

            case ("2"):
                // Change Ninja to another class of hero.
                Gunslinger gunslinger = new Gunslinger(name);
                return(gunslinger);

            case ("3"):
                // Change Ninja to another class of hero.
                Sheriff sheriff = new Sheriff(name);
                return(sheriff);
            }
            return(null);
        }
Example #4
0
 static void Main(string[] args)
 {
     //Private Static void method
     //IntroductionIntoTheStory();
     //instance of public class sheriff and gunfighter
     Sheriff     Columbia     = new Sheriff();
     Sheriff     Orangeburg   = new Sheriff();
     Gunfighters ColumbiaGF   = new Gunfighters();
     Gunfighters OrangeburgGF = new Gunfighters();
 }
Example #5
0
        private void OnRoundScored(object sender, EventArgs e)
        {
            if (!AllScored())
            {
                return;
            }

            var roundScore = CalculateRoundScore();

            Sheriff.UpdateScoring(roundScore);
        }
Example #6
0
        public async Task<Sheriff> AddSheriff(Sheriff sheriff)
        {
            await CheckForBlankOrDuplicateIdirName(sheriff.IdirName);
            await CheckForBlankOrDuplicateBadgeNumber(sheriff.BadgeNumber);

            sheriff.IdirName = sheriff.IdirName.ToLower();
            sheriff.AwayLocation = null;
            sheriff.ActingRank = null;
            sheriff.Training = null;
            sheriff.Leave = null;
            sheriff.HomeLocation = await Db.Location.FindAsync(sheriff.HomeLocationId);
            sheriff.IsEnabled = true;
            await Db.Sheriff.AddAsync(sheriff);
            await Db.SaveChangesAsync();
            return sheriff;
        }
        private async Task <Guid> CreateSheriff(int locationId)
        {
            var newSheriff = new Sheriff
            {
                FirstName      = "Ted",
                LastName       = "Tums",
                HomeLocationId = locationId,
                IsEnabled      = true
            };

            await Db.Sheriff.AddAsync(newSheriff);

            await Db.SaveChangesAsync();

            return(newSheriff.Id);
        }
Example #8
0
        public async Task CreateSheriffSameIdir()
        {
            var newSheriff = new Sheriff
            {
                FirstName      = "Ted",
                LastName       = "Tums",
                BadgeNumber    = "556",
                Email          = "*****@*****.**",
                Gender         = Gender.Female,
                IdirId         = new Guid(),
                IdirName       = "ted@fakeidir",
                HomeLocationId = null
            };

            var sheriffDto = newSheriff.Adapt <SheriffWithIdirDto>();
            //Debug.Write(JsonConvert.SerializeObject(sheriffDto));

            var response        = HttpResponseTest.CheckForValid200HttpResponseAndReturnValue(await _controller.AddSheriff(sheriffDto));
            var sheriffResponse = response.Adapt <Sheriff>();

            Assert.NotNull(await Db.Sheriff.FindAsync(sheriffResponse.Id));

            newSheriff.BadgeNumber = "554";
            sheriffDto             = newSheriff.Adapt <SheriffWithIdirDto>();
            //Debug.Write(JsonConvert.SerializeObject(sheriffDto));

            BusinessLayerException ble = null;

            try
            {
                response = HttpResponseTest.CheckForValid200HttpResponseAndReturnValue(
                    await _controller.AddSheriff(sheriffDto));
                sheriffResponse = response.Adapt <Sheriff>();
            }
            catch (Exception e)
            {
                Assert.True(e is BusinessLayerException);
                ble = (BusinessLayerException)e;
            }

            Assert.Contains("has IDIR name", ble.Message);
        }
Example #9
0
        /// <summary>
        /// Returns a list of Player objects after asking the user for their name and assignming them a ROLE.
        /// </summary>
        public List <Player> getPlayerNamesAndAssignRandomRoles(int totalPlayers)
        {
            List <Player> registeredPlayers = new List <Player>();

            Random roleRandomGenerator = new Random();

            int count = 1;

            while (count <= totalPlayers)
            {
                Console.WriteLine("Name for Player " + count + ":");

                ROLE   currentRole = getRandomAvailableRole(roleRandomGenerator);
                Player p           = null;

                if (currentRole == ROLE.Civilian)
                {
                    p = new Player(Console.ReadLine(), ROLE.Civilian);
                }
                else if (currentRole == ROLE.Doctor)
                {
                    p = new Doctor(Console.ReadLine());
                }
                else if (currentRole == ROLE.Mafia)
                {
                    p = new MafiaMember(Console.ReadLine());
                }
                else if (currentRole == ROLE.Sheriff)
                {
                    p = new Sheriff(Console.ReadLine());
                }

                registeredPlayers.Add(p);
                count++;

                Prompt.postRegistrationInformation(p.name, currentRole.ToString());
            }

            return(registeredPlayers);
        }
Example #10
0
 public static void clearAndReloadRoles()
 {
     Jester.clearAndReload();
     Mayor.clearAndReload();
     Engineer.clearAndReload();
     Sheriff.clearAndReload();
     Lighter.clearAndReload();
     Godfather.clearAndReload();
     Mafioso.clearAndReload();
     Janitor.clearAndReload();
     Detective.clearAndReload();
     TimeMaster.clearAndReload();
     Medic.clearAndReload();
     Shifter.clearAndReload();
     Swapper.clearAndReload();
     Lovers.clearAndReload();
     Seer.clearAndReload();
     Morphling.clearAndReload();
     Camouflager.clearAndReload();
     Spy.clearAndReload();
     Child.clearAndReload();
 }
Example #11
0
        public async Task CreateSheriff()
        {
            var newSheriff = new Sheriff
            {
                FirstName      = "Ted",
                LastName       = "Tums",
                BadgeNumber    = "555",
                Email          = "*****@*****.**",
                Gender         = Gender.Female,
                IdirId         = new Guid(),
                IdirName       = "ted@fakeidir",
                HomeLocationId = null
            };

            var sheriffDto = newSheriff.Adapt <SheriffWithIdirDto>();
            //Debug.Write(JsonConvert.SerializeObject(sheriffDto));

            var response        = HttpResponseTest.CheckForValid200HttpResponseAndReturnValue(await _controller.AddSheriff(sheriffDto));
            var sheriffResponse = response.Adapt <Sheriff>();

            Assert.NotNull(await Db.Sheriff.FindAsync(sheriffResponse.Id));
        }
Example #12
0
        private async Task <Sheriff> CreateSheriffUsingDbContext()
        {
            var newSheriff = new Sheriff
            {
                FirstName    = "Ted",
                LastName     = "Tums",
                BadgeNumber  = "555",
                Email        = "*****@*****.**",
                Gender       = Gender.Female,
                IdirId       = new Guid(),
                IdirName     = "ted@fakeidir",
                HomeLocation = new Location {
                    Name = "Teds Place", AgencyId = "5555555435353535353535353"
                },
            };

            await Db.Sheriff.AddAsync(newSheriff);

            await Db.SaveChangesAsync();

            Detach();

            return(newSheriff);
        }
        public async Task AddUpdateRemoveDutySlots()
        {
            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 duty = new Duty
            {
                Id         = 1,
                LocationId = 1,
                StartDate  = startDate,
                EndDate    = startDate.AddDays(5),
                Timezone   = "America/Vancouver"
            };

            await Db.Duty.AddAsync(duty);

            await Db.SaveChangesAsync();

            var controllerResult = await _controller.GetDuties(location.Id, startDate, startDate.AddDays(5));

            var getDuties = HttpResponseTest.CheckForValid200HttpResponseAndReturnValue(controllerResult);

            Assert.NotEmpty(getDuties);


            var updateDuty = getDuties.FirstOrDefault(d => d.Id == 1) !.Adapt <UpdateDutyDto>();

            updateDuty.DutySlots = new List <UpdateDutySlotDto>
            {
                //Add.
                new UpdateDutySlotDto
                {
                    StartDate = startDate,
                    EndDate   = startDate.AddDays(5),
                    SheriffId = newSheriff.Id
                },
                //Add.
                new UpdateDutySlotDto
                {
                    StartDate = startDate.AddDays(5),
                    EndDate   = startDate.AddDays(10),
                    SheriffId = newSheriff.Id
                },
            };

            var controllerResult2 = await _controller.UpdateDuties(new List <UpdateDutyDto> {
                updateDuty
            });

            var updateDuty2 = HttpResponseTest.CheckForValid200HttpResponseAndReturnValue(controllerResult2);

            updateDuty.DutySlots = new List <UpdateDutySlotDto>
            {
                //Update
                new UpdateDutySlotDto
                {
                    Id        = updateDuty2.First().DutySlots.First().Id,
                    StartDate = startDate.AddDays(10),
                    EndDate   = startDate.AddDays(15),
                    SheriffId = newSheriff.Id
                },
                //Add
                new UpdateDutySlotDto
                {
                    StartDate = startDate,
                    EndDate   = startDate.AddDays(5),
                    SheriffId = newSheriff.Id
                },
                //Implicit remove of one.
            };

            var controllerResult3 = await _controller.UpdateDuties(new List <UpdateDutyDto> {
                updateDuty
            });

            HttpResponseTest.CheckForValid200HttpResponseAndReturnValue(controllerResult3);
        }
Example #14
0
        // Methods
        private static IEnumerable <string> GetResults(Role role)
        {
            switch (role)
            {
            case Vigilante _:
            case Veteran _:
            case Mafioso _:
            // case Pirate _:
            case Ambusher _:
                return(new[] { Vigilante.GetName(), Veteran.GetName(), Mafioso.GetName(), Ambusher.GetName() });

            case Medium _:
            case Janitor _:
            case Retributionist _:
            // case Necromancer _:
            case Trapper _:
                return(new[] { Medium.GetName(), Janitor.GetName(), Retributionist.GetName(), Trapper.GetName() });

            case Survivor _:
            case VampireHunter _:
            case Amnesiac _:
            // case Medusa _:
            case Psychic _:
                return(new[] { Survivor.GetName(), VampireHunter.GetName(), Amnesiac.GetName(), Psychic.GetName() });

            case Spy _:
            case Blackmailer _:
            case Jailor _:
            case GuardianAngel _:
                return(new[] { Spy.GetName(), Blackmailer.GetName(), Jailor.GetName(), GuardianAngel.GetName() });

            case Sheriff _:
            case Executioner _:
            case Werewolf _:
                // case Poisoner _:
                return(new[] { Sheriff.GetName(), Executioner.GetName(), Werewolf.GetName() });

            case Framer _:
            case Vampire _:
            case Jester _:
                // case HexMaster _:
                return(new[] { Framer.GetName(), Vampire.GetName(), Jester.GetName() });

            case Lookout _:
            case Forger _:
                // case Juggernaut _:
                // case CovenLeader _:
                return(new[] { Lookout.GetName(), Forger.GetName() });

            case Escort _:
            case Transporter _:
            case Consort _:
            case Hypnotist _:
                return(new[] { Escort.GetName(), Transporter.GetName(), Consort.GetName(), Hypnotist.GetName() });

            case Doctor _:
            case Disguiser _:
            case SerialKiller _:
                // case PotionMaster _:
                return(new[] { Doctor.GetName(), Disguiser.GetName(), SerialKiller.GetName() });

            case Investigator _:
            case Consigliere _:
            case Mayor _:
            case Tracker _:
                // case Plaguebearer _:
                return(new[] { Investigator.GetName(), Consigliere.GetName(), Mayor.GetName(), Tracker.GetName() });

            case Bodyguard _:
            case Godfather _:
            case Arsonist _:
            case Crusader _:
                return(new[] { Bodyguard.GetName(), Godfather.GetName(), Arsonist.GetName(), Crusader.GetName() });
            }

            return(new string[] { });
        }
 private static string ConflictingSheriffAndDutySlot(Sheriff sheriff, DutySlot dutySlot)
 => $"Conflict - {nameof(Sheriff)}: {sheriff?.LastName}, {sheriff?.FirstName} - Existing {nameof(DutySlot)} conflicts: {dutySlot.StartDate.ConvertToTimezone(dutySlot.Timezone).PrintFormatDateTime(dutySlot.Timezone)} to {dutySlot.EndDate.ConvertToTimezone(dutySlot.Timezone).PrintFormatDateTime(dutySlot.Timezone)}";
        public async Task DutySlotOverlap()
        {
            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 duty = new Duty
            {
                Id         = 1,
                LocationId = 1,
                StartDate  = startDate,
                EndDate    = startDate.AddDays(5),
                Timezone   = "America/Vancouver"
            };

            var duty2 = new Duty
            {
                Id         = 2,
                LocationId = 1,
                StartDate  = startDate,
                EndDate    = startDate.AddDays(5),
                Timezone   = "America/Vancouver"
            };

            await Db.Duty.AddAsync(duty);

            await Db.Duty.AddAsync(duty2);

            await Db.SaveChangesAsync();

            var controllerResult = await _controller.GetDuties(location.Id, startDate, startDate.AddDays(5));

            var getDuties = HttpResponseTest.CheckForValid200HttpResponseAndReturnValue(controllerResult);

            Assert.NotNull(getDuties);
            Assert.NotNull(getDuties.FirstOrDefault(d => d.Id == 1));
            Assert.NotNull(getDuties.FirstOrDefault(d => d.Id == 2));

            var updateDuty = getDuties.FirstOrDefault(d => d.Id == 1) !.Adapt <UpdateDutyDto>();

            updateDuty.DutySlots = new List <UpdateDutySlotDto>
            {
                new UpdateDutySlotDto
                {
                    StartDate = startDate,
                    EndDate   = startDate.AddDays(5),
                    SheriffId = newSheriff.Id
                }
            };

            var controllerResult2 = await _controller.UpdateDuties(new List <UpdateDutyDto> {
                updateDuty
            });

            HttpResponseTest.CheckForValid200HttpResponseAndReturnValue(controllerResult2);

            var updateDuty2 = getDuties.FirstOrDefault(d => d.Id == 2) !.Adapt <UpdateDutyDto>();

            updateDuty2.DutySlots = new List <UpdateDutySlotDto>
            {
                new UpdateDutySlotDto
                {
                    StartDate = startDate,
                    EndDate   = startDate.AddDays(5),
                    SheriffId = newSheriff.Id
                }
            };

            //Should conflict.
            await Assert.ThrowsAsync <BusinessLayerException>(async() => await _controller.UpdateDuties(new List <UpdateDutyDto> {
                updateDuty2
            }));
        }
Example #17
0
 private static string ConflictingSheriffAndSchedule(Sheriff sheriff, Shift shift)
 {
     shift.Timezone.GetTimezone().ThrowBusinessExceptionIfNull("Shift - Timezone was invalid.");
     return($"{sheriff.LastName}, {sheriff.FirstName} has a shift {shift.StartDate.ConvertToTimezone(shift.Timezone).PrintFormatDate()} {shift.StartDate.ConvertToTimezone(shift.Timezone).PrintFormatTime(shift.Timezone)} to {shift.EndDate.ConvertToTimezone(shift.Timezone).PrintFormatTime(shift.Timezone)}");
 }
Example #18
0
 // Use this for initialization
 void Start()
 {
     sheriffScript = GetComponent <Sheriff>();
 }
Example #19
0
        // Methods
        private static string GetResult(Role role)
        {
            switch (role)
            {
            case Investigator _: return($"{role.Owner.Data.PlayerName} gathers information about people. They must be an {Investigator.GetName()}.");

            case Lookout _: return($"{role.Owner.Data.PlayerName} watches who visits people at night. They must be a {Lookout.GetName()}.");

            case Psychic _: return($"{role.Owner.Data.PlayerName} has the sight. They must be a {Psychic.GetName()}.");

            case Sheriff _: return($"{role.Owner.Data.PlayerName} is a protector of the {Faction.Crew.Name}. They must be a {Sheriff.GetName()}.");

            case Spy _: return($"{role.Owner.Data.PlayerName} secretly watches who someone visits. They must be a {Spy.GetName()}.");

            case Tracker _: return($"{role.Owner.Data.PlayerName} is a skilled in the art of tracking. They must be a {Tracker.GetName()}.");

            case Jailor _:        return($"{role.Owner.Data.PlayerName} detains people at night. They must be a {Jailor.GetName()}.");

            case VampireHunter _: return($"{role.Owner.Data.PlayerName} tracks Vampires. They must be a {VampireHunter.GetName()}!");

            case Veteran _:       return($"{role.Owner.Data.PlayerName} is a paranoid war hero. They must be a {Veteran.GetName()}.");

            case Vigilante _: return($"{role.Owner.Data.PlayerName} will bend the law to enact justice. They must be a {Vigilante.GetName()}.");

            case Bodyguard _: return($"{role.Owner.Data.PlayerName} is a trained protector. They must be a {Bodyguard.GetName()}.");

            case Doctor _:    return($"{role.Owner.Data.PlayerName} is a professional surgeon. They must be a {Doctor.GetName()}.");

            case Crusader _:  return($"{role.Owner.Data.PlayerName} is a divine protector. They must be a {Crusader.GetName()}.");

            case Trapper _:   return($"{role.Owner.Data.PlayerName} is waiting for a big catch. They must be a {Trapper.GetName()}.");

            case Escort _: return($"{role.Owner.Data.PlayerName} is a beautiful person working for the {Faction.Crew.Name}. They must be an {Escort.GetName()}.");

            case Mayor _: return($"{role.Owner.Data.PlayerName} is the leader of the {Faction.Crew.Name}. They must be the {Mayor.GetName()}.");

            case Medium _: return($"{role.Owner.Data.PlayerName} speaks with the dead. They must be a {Medium.GetName()}.");

            case Retributionist _: return($"{role.Owner.Data.PlayerName} wields mystical powers. They must be a {Retributionist.GetName()}.");

            case Transporter _: return($"{role.Owner.Data.PlayerName} specializes in transportation. They must be a {Transporter.GetName()}.");

            case Disguiser _: return($"{role.Owner.Data.PlayerName} makes other people appear to be someone they're not. They must be a {Disguiser.GetName()}");

            case Forger _: return($"{role.Owner.Data.PlayerName} is good at forging documents. They must be a {Forger.GetName()}.");

            case Framer _: return($"{role.Owner.Data.PlayerName} has a desire to deceive. They must be a {Framer.GetName()}!");

            case Hypnotist _: return($"{role.Owner.Data.PlayerName} is skilled at disrupting others. They must be a {Hypnotist.GetName()}.");

            case Janitor _: return($"{role.Owner.Data.PlayerName} cleans up dead bodies. They must be a {Janitor.GetName()}.");

            case Ambusher _: return($"{role.Owner.Data.PlayerName} lies in wait. They must be an {Ambusher.GetName()}.");

            case Godfather _: return($"{role.Owner.Data.PlayerName} is the leader of the {Faction.Mafia.Name}. They must be the {Godfather.GetName()}.");

            case Mafioso _: return($"{role.Owner.Data.PlayerName} does the {Godfather.GetName()}'s dirty work. They must be a {Mafioso.GetName()}.");

            case Blackmailer _: return($"{role.Owner.Data.PlayerName} uses information to silence people. They must be a {Blackmailer.GetName()}.");

            case Consigliere _: return($"{role.Owner.Data.PlayerName} gathers information for the {Faction.Mafia.Name}. They must be a {Consigliere.GetName()}.");

            case Consort _: return($"{role.Owner.Data.PlayerName} is a beautiful person working for the {Faction.Mafia.Name}. They must be a {Consort.GetName()}.");

            case Amnesiac _: return($"{role.Owner.Data.PlayerName} does not remember their role. They must be an {Amnesiac.GetName()}.");

            case GuardianAngel _: return($"{role.Owner.Data.PlayerName} is watching over someone. They must be a {GuardianAngel.GetName()}.");

            case Survivor _: return($"{role.Owner.Data.PlayerName} simply wants to live. They must be a {Survivor.GetName()}.");

            case Vampire _: return($"{role.Owner.Data.PlayerName} drinks blood. They must be a {Vampire.GetName()}!");

            case Executioner _: return($"{role.Owner.Data.PlayerName} wants someone to be lynched at any cost. They must be an {Executioner.GetName()}.");

            case Jester _: return($"{role.Owner.Data.PlayerName} wants to be lynched. They must be a {Jester.GetName()}.");

            case Witch _:  return($"{role.Owner.Data.PlayerName} casts spells on people. They must be a {Witch.GetName()}.");

            case Arsonist _: return($"{role.Owner.Data.PlayerName} likes to watch things burn. They must be an {Arsonist.GetName()}.");

            case SerialKiller _: return($"{role.Owner.Data.PlayerName} wants to kill everyone. They must be a {SerialKiller.GetName()}");

            case Werewolf _: return($"{role.Owner.Data.PlayerName} howls at the moon. They must be a {Werewolf.GetName()}.");

            default: return("No special role found.");
            }
        }
Example #20
0
 private static string PrintSheriffEventConflict <T>(Sheriff sheriff, DateTimeOffset start, DateTimeOffset end,
                                                     string timezone)
 {
     timezone.GetTimezone().ThrowBusinessExceptionIfNull("SheriffEvent - Timezone was invalid.");
     return($"{sheriff.LastName}, {sheriff.FirstName} has {typeof(T).Name.Replace("Sheriff", "").ConvertCamelCaseToMultiWord()} {start.ConvertToTimezone(timezone).PrintFormatDateTime(timezone)} to {end.ConvertToTimezone(timezone).PrintFormatDateTime(timezone)}");
 }
        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);
        }