private async Task ValidateDateEvent(DateEventDto item) { if (item is null) { throw new BusinessLogicException(StringRes.NullEntityMsg, new ArgumentNullException(nameof(item))); } var weeklyEvent = await _weeklyEventEntityService.GetByIdAsync(item.Id); if ((int)item.DateTime.DayOfWeek != weeklyEvent.DayOfWeek) { throw new BusinessLogicException(StringRes.WrongDayOfWeekMsg, fieldName: nameof(item)); } await EnsureDatesNotCrossing(item); }
private async Task EnsureDatesNotCrossing(DateEventDto item) { var eventsWithTheSameTrainer = await _dateEventEntityService.GetAll() .Where(e => e.Id != item.Id && e.TrainerId == item.TrainerId).ToListAsync(); var itemWeeklyEvent = await _weeklyEventEntityService.GetByIdAsync(item.WeeklyEventId); var itemFitnessEvent = await _fitnessEventEntityService.GetByIdAsync(itemWeeklyEvent.FitnessEventId); foreach (var one in eventsWithTheSameTrainer) { var weeklyEvent = await _weeklyEventEntityService.GetByIdAsync(one.WeeklyEventId); var fitnessEvent = await _fitnessEventEntityService.GetByIdAsync(weeklyEvent.FitnessEventId); if (one.DateTime < item.DateTime ? CheckIfAnyTimeCrosses(one.DateTime, fitnessEvent.Minutes, item.DateTime) : CheckIfAnyTimeCrosses(item.DateTime, itemFitnessEvent.Minutes, one.DateTime)) { throw new BusinessLogicException(StringRes.TimeCrossesMsg, fieldName: nameof(item.DateTime)); } } }
public async Task UpdateDateEventAsync(DateEventDto item) { await ValidateDateEvent(item); await _dateEventEntityService.UpdateAsync(_mapper.Map <DateEvent>(item)); }
// DATEEVENT public async Task <int> CreateDateEventAsync(DateEventDto item) { await ValidateDateEvent(item); return(await _dateEventEntityService.CreateAsync(_mapper.Map <DateEvent>(item))); }