public async Task <IActionResult> OnPostAsync(int channelId) { ScheduledStream stream = StreamTime.ToModel(); Channel channel = await _crudRepository.Get <Channel>(channelId); stream.ChannelId = channelId; stream.TimeZoneId = channel.TimeZoneId; int?id = await _scheduledStreamService.AddScheduledStreamToChannel(stream); return(RedirectToPage("./Index", new { channelId })); }
public async Task <IActionResult> OnPostAsync(int channelId) { ScheduledStream stream = StreamTime.ToModel(); var channel = await _context.Channels .Include(x => x.ScheduledStreams) .SingleAsync(x => x.Id == channelId); _scheduledStreamService.AddScheduledStreamToChannel(channel, stream); await _context.SaveChangesAsync(); return(RedirectToPage("./Index")); }
public async Task<IActionResult> OnPostAsync(int channelId) { ScheduledStream stream = StreamTime.ToModel(); var channel = await _context.Channels .Include(x => x.ScheduledStreams) .SingleAsync(x => x.Id == channelId); channel.ScheduledStreams.Add(stream); var zone = DateTimeZoneProviders.Tzdb[channel.TimeZoneId]; var version = DateTimeZoneProviders.Tzdb.VersionId; ZonedClock zonedClock = _clock.InZone(zone); LocalDate today = zonedClock.GetCurrentDate(); LocalDate next = today.With(DateAdjusters.Next(stream.DayOfWeek)); for (int i = 0; i < 52; i++) { LocalDateTime nextLocalStartDateTime = next + stream.LocalStartTime; LocalDateTime nextLocalEndDateTime = next + stream.LocalEndTime; var streamSession = new StreamSession { TzdbVersionId = version, UtcStartTime = nextLocalStartDateTime.InZoneLeniently(zone).ToInstant(), UtcEndTime = nextLocalEndDateTime.InZoneLeniently(zone).ToInstant(), }; stream.Sessions.Add(streamSession); next = next.PlusWeeks(1); } await _context.SaveChangesAsync(); return RedirectToPage("./Index"); }