/// <summary> /// Schedule a livestream to occur regularly /// </summary> /// <param name="request"></param> /// <returns></returns> public string ScheduleLiveStream(LiveSermonsSchedulingRequest request) { var hangfireCreationResponse = CreateLiveStreamStartHangfire(request); var hangfireEndingResponse = CreateLiveStreamEndHangfire(request); var hangfireResponse = $"Start Job ID: {hangfireCreationResponse}\nEnd Job ID: {hangfireEndingResponse}"; return(hangfireResponse); }
private string CreateLiveStreamEndHangfire(LiveSermonsSchedulingRequest request) { var jobId = request.EndSchedule; // Upserts the recurring job data RecurringJob.AddOrUpdate(jobId, () => EndLiveHangfire(request), request.EndSchedule, TimeZoneInfo.Local ); return(jobId); }
public Task GoLiveHangfire(LiveSermonsSchedulingRequest request) { var jobId = request.StartSchedule; CrontabSchedule schedule = CrontabSchedule.Parse(request.EndSchedule); DateTime endTime = schedule.GetNextOccurrence(DateTime.Now); var liveStreamUpdate = new LiveSermonsUpdateRequest { ExpirationTime = endTime }; return(GoLive(liveStreamUpdate)); }
public async Task EndLiveHangfire(LiveSermonsSchedulingRequest request) { CrontabSchedule schedule = CrontabSchedule.Parse(request.StartSchedule); DateTime nextLocal = schedule.GetNextOccurrence(DateTime.Now); List <RecurringJobDto> recurringJobs = JobStorage.Current.GetConnection().GetRecurringJobs(); var nextJobExecTime = recurringJobs.OrderBy(i => i.NextExecution.Value).First().NextExecution.Value; // make sure that we're using UTC DateTime nextLive = nextJobExecTime.ToUniversalTime(); var liveStreamCompletedResponse = await _sermonsRepository.UpdateLiveSermonsInactive(nextLive); return; }
public ActionResult <string> ScheduleLivestreams([FromBody] LiveSermonsSchedulingRequest request) { var response = _sermonsService.ScheduleLiveStream(request); return(response); }