public async Task <Absence> AddNewAbsence(NewAbsenceAsset asset) { Absence newAbsence = new Absence() { AbsenceStart = asset.AbsenceStart, AbsenceEnd = asset.AbsenceEnd, WorkerID = _dataContext.Workers.First(x => x.Name == asset.Worker).ID, L4 = asset.isL4 }; if (!asset.isL4) { var absenceSpan = asset.AbsenceEnd.Subtract(asset.AbsenceStart); if (absenceSpan.Days > 0) { _dataContext.Workers.First(x => x.Name == asset.Worker).AbsenceLimit -= (absenceSpan.Days + 1) - FreeDaysCounter.CountFreeDays(asset.AbsenceStart, asset.AbsenceEnd); } else { _dataContext.Workers.First(x => x.Name == asset.Worker).AbsenceLimit -= 1; } } await _dataContext.Absences.AddAsync(newAbsence); await _dataContext.SaveChangesAsync(); return(newAbsence); }
public async Task <List <Absence> > DeleteAbsences(List <Absence> absencestoRemove) { foreach (var absence in absencestoRemove) { _dataContext.Absences.Remove(absence); if (!absence.L4) { var absenceSpan = absence.AbsenceEnd.Subtract(absence.AbsenceStart); _dataContext.Workers.First(x => x.ID == absence.WorkerID).AbsenceLimit += (absenceSpan.Days + 1) - FreeDaysCounter.CountFreeDays(absence.AbsenceStart, absence.AbsenceEnd); } } await _dataContext.SaveChangesAsync(); return(absencestoRemove); }