private async Task EnsureNotCrossing(WeeklyEventDto item) { var itemfitnessEvent = await _fitnessEventEntityService.GetByIdAsync(item.FitnessEventId); // select every weekly event with the same day var weeklyEventsSameDay = await _weeklyEventEntityService.GetAll() .Where(w => w.DayOfWeek == item.DayOfWeek).ToListAsync(); // get all the fitness events which ids are in weeklyEventsSameDay var fitnessEvents = await _fitnessEventEntityService.GetAll() .Where(fe => weeklyEventsSameDay.Any(m => m.Id != item.Id && item.FitnessEventId == fe.Id)).ToListAsync(); var weeklyFitnessEventsSameDay = from we in weeklyEventsSameDay join fe in fitnessEvents on we.FitnessEventId equals fe.Id select new WeeklyFitnessEventDto { DayOfWeek = we.DayOfWeek, FitnessEventId = fe.Id, Minutes = fe.Minutes, ServiceId = fe.ServiceId, Time = we.Time, VenueId = fe.VenueId, VisitorCapacity = we.VisitorCapacity, WeeklyEventId = we.Id, }; if (weeklyFitnessEventsSameDay.Any(one => (one.Time < item.Time) ? CheckIfAnyTimeCrosses(one.Time, one.Minutes, item.Time) : CheckIfAnyTimeCrosses(item.Time, itemfitnessEvent.Minutes, one.Time))) { throw new BusinessLogicException(StringRes.TimeCrossesMsg, fieldName: nameof(item.Time)); } }
private Task ValidateWeeklyEvent(WeeklyEventDto item) { if (item is null) { throw new BusinessLogicException(StringRes.NullEntityMsg, new ArgumentNullException(nameof(item))); } item.Time = new DateTime(1, 1, 1, item.Time.Hour, item.Time.Minute, 0); if (item.DayOfWeek < Constants.MinDayOfWeek || item.DayOfWeek > Constants.MaxDayOfWeek) { throw new BusinessLogicException(StringRes.IncorrectDayOfWeekMsg, nameof(item.DayOfWeek)); } if (item.VisitorCapacity < Constants.MinVisitorCapacity) { throw new BusinessLogicException(StringRes.IncorrectDayOfWeekMsg, nameof(item.DayOfWeek)); } return(EnsureNotCrossing(item)); }
public async Task UpdateWeeklyEventAsync(WeeklyEventDto item) { await ValidateWeeklyEvent(item); await _weeklyEventEntityService.UpdateAsync(_mapper.Map <WeeklyEvent>(item)); }
// WEEKLYEVENT public async Task <int> CreateWeeklyEventAsync(WeeklyEventDto item) { await ValidateWeeklyEvent(item); return(await _weeklyEventEntityService.CreateAsync(_mapper.Map <WeeklyEvent>(item))); }