Ejemplo n.º 1
0
        public async Task <IEnumerable <CalendarSlot> > ApplyScheduleAsync(int id, DateTimeOffset startDate)
        {
            var endDate = startDate.AddDays(DaysOnDisplay).AddMinutes(-1);
            var slots   = (await _repository.GetAllAsync <CalendarSlot>())
                          .Where(slot => slot.StartAt >= startDate && slot.StartAt < endDate).ToList();
            var newSlots = new List <CalendarSlot>();

            var scheduledDays = (await _repository.GetAsync <Schedule>(id)).Days;

            for (var i = 0; i < DaysOnDisplay; i++)
            {
                var dt          = startDate.AddDays(i);
                var scheduleDay = scheduledDays.SingleOrDefault(sd => sd.DayOfWeek == dt.DayOfWeek);
                if (scheduleDay == null)
                {
                    continue;
                }
                foreach (var scheduleSlot in scheduleDay.Slots)
                {
                    if (!slots.Any(s => s.StartAt.Date == dt.Date &&
                                   s.StartAt.TimeOfDay.Hours == scheduleSlot.StartTime.Hours &&
                                   s.StartAt.TimeOfDay.Minutes == scheduleSlot.StartTime.Minutes))
                    {
                        newSlots.Add(new CalendarSlot
                        {
                            StartAt = dt + scheduleSlot.StartTime,
                            Status  = SlotStatus.Vacant
                        });
                    }
                }
            }
            using (var transaction = _transactionFactory.Begin())
            {
                await _repository.AddSomeAsync(newSlots);

                transaction.Save();
            }


            return(newSlots);
        }
Ejemplo n.º 2
0
 public async Task AddSomeAsync(Shop entities)
 => await _entityRepo.AddSomeAsync(entities);
Ejemplo n.º 3
0
 public async Task AddSomeAsync(InventoryItem entities)
 => await _entityRepo.AddSomeAsync(entities);
Ejemplo n.º 4
0
 public async Task AddSomeAsync(Article entities)
 => await _entityRepo.AddSomeAsync(entities);
Ejemplo n.º 5
0
 public async Task AddSomeAsync(Permission entities)
 => await _entityRepo.AddSomeAsync(entities);