예제 #1
0
        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));
            }
        }
예제 #2
0
        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));
        }
예제 #3
0
        public async Task UpdateWeeklyEventAsync(WeeklyEventDto item)
        {
            await ValidateWeeklyEvent(item);

            await _weeklyEventEntityService.UpdateAsync(_mapper.Map <WeeklyEvent>(item));
        }
예제 #4
0
        // WEEKLYEVENT
        public async Task <int> CreateWeeklyEventAsync(WeeklyEventDto item)
        {
            await ValidateWeeklyEvent(item);

            return(await _weeklyEventEntityService.CreateAsync(_mapper.Map <WeeklyEvent>(item)));
        }