Exemple #1
0
 private async Task ValidateSheriffActingRankExists(SheriffActingRank actingRank)
 {
     var conflictingRanks = await Db.SheriffActingRank.AsNoTracking().Where(sal =>
              sal.Id != actingRank.Id &&
              sal.SheriffId == actingRank.SheriffId &&
             (sal.StartDate < actingRank.EndDate && actingRank.StartDate < sal.EndDate) &&
             sal.ExpiryDate == null).ToListAsync();
     if (conflictingRanks.Count > 0)
     {
         var start = actingRank.StartDate.ConvertToTimezone(actingRank.Timezone);
         var end = actingRank.EndDate.ConvertToTimezone(actingRank.Timezone);
         throw new BusinessLayerException($"Acting Rank date-range({start.Year}-{start.Month}-{start.Day}" +
             $" to {end.Year}-{end.Month}-{end.Day}) has coflict with current acting ranks.");
     }
 }
Exemple #2
0
        public async Task<SheriffActingRank> UpdateSheriffActingRank(DutyRosterService dutyRosterService, ShiftService shiftService, SheriffActingRank actingRank, bool overrideConflicts)
        {
            ValidateStartAndEndDates(actingRank.StartDate, actingRank.EndDate);
            await ValidateSheriffExists(actingRank.SheriffId);

            var savedActingRank = await Db.SheriffActingRank.FindAsync(actingRank.Id);
            savedActingRank.ThrowBusinessExceptionIfNull($"{nameof(SheriffActingRank)} with the id: {actingRank.Id} could not be found. ");

            if (savedActingRank.ExpiryDate.HasValue)
                throw new BusinessLayerException($"{nameof(SheriffActingRank)} with the id: {actingRank.Id} has been expired");

            await ValidateSheriffActingRankExists(actingRank);

            Db.Entry(savedActingRank).CurrentValues.SetValues(actingRank);
            Db.Entry(savedActingRank).Property(x => x.SheriffId).IsModified = false;
            Db.Entry(savedActingRank).Property(x => x.ExpiryDate).IsModified = false;
            Db.Entry(savedActingRank).Property(x => x.ExpiryReason).IsModified = false;
            await Db.SaveChangesAsync();
            return savedActingRank;
        }
Exemple #3
0
        public async Task<SheriffActingRank> AddSheriffActingRank(DutyRosterService dutyRosterService, ShiftService shiftService, SheriffActingRank actingRank, bool overrideConflicts)
        {
            ValidateStartAndEndDates(actingRank.StartDate, actingRank.EndDate);
            await ValidateSheriffExists(actingRank.SheriffId);

            await ValidateSheriffActingRankExists(actingRank);

            actingRank.Sheriff = await Db.Sheriff.FindAsync(actingRank.SheriffId);
            await Db.SheriffActingRank.AddAsync(actingRank);
            await Db.SaveChangesAsync();
            return actingRank;
        }