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); }
public async Task AddSomeAsync(Shop entities) => await _entityRepo.AddSomeAsync(entities);
public async Task AddSomeAsync(InventoryItem entities) => await _entityRepo.AddSomeAsync(entities);
public async Task AddSomeAsync(Article entities) => await _entityRepo.AddSomeAsync(entities);
public async Task AddSomeAsync(Permission entities) => await _entityRepo.AddSomeAsync(entities);