Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }