public static void Main(string[] args) { try { //Read input from user //1. From Time yyyy-MM-dd HH:mm:ss (2019-10-01 10:00:00) //2. To Time yyyy-MM-dd HH:mm:ss (2019-10-01 10:30:00) var mediaRepository = new MediaRepository(); //Create request object based on the above user input then use Media.json from Media folder //to create media object. Construct the below request using both the input var request = new GenerateScheduleRequest(); //Generate schedule var schedule = mediaRepository.GenerateSchedule(new GenerateScheduleRequest()); //Write schedule as plain json file var parsedSchedule = JsonConvert.SerializeObject(schedule); var fileName = $"generated-schedule-{request.FromDate}"; System.IO.File.WriteAllText($@"c:\temp\{fileName}.json", parsedSchedule); Console.WriteLine("Schedule Generated Successfully!"); } catch (Exception e) { Console.WriteLine($"Something went wrong {e}"); } Console.ReadKey(); }
public static void Main(string[] args) { try { //Read input from user //1. From Time yyyy-MM-dd HH:mm:ss (2019-10-01 10:00:00) //2. To Time yyyy-MM-dd HH:mm:ss (2019-10-01 10:30:00) var mediaRepository = new MediaRepository(); //Create request object based on the above user input then use Media.json from Media folder //to create media object. Construct the below request using both the input var request = new GenerateScheduleRequest(); Console.WriteLine("Enter From Date"); request.FromDate = Convert.ToDateTime(Console.ReadLine()); Console.WriteLine("Enter To Date"); request.ToDate = Convert.ToDateTime(Console.ReadLine()); string medias = File.ReadAllText("Media/Medias.json"); request.Medias = JsonConvert.DeserializeObject <List <Media> >(medias); //Generate schedule var schedule = mediaRepository.GenerateSchedule(request); //Write schedule as plain json file var parsedSchedule = JsonConvert.SerializeObject(schedule); var fileName = $"generated-schedule-{request.FromDate.ToString("yyyyMMddHHmmss")}"; System.IO.File.WriteAllText($@"C:\Users\sarn\Desktop\tmp\{fileName}.json", parsedSchedule); Console.WriteLine("Schedule Generated Successfully!"); } catch (Exception e) { Console.WriteLine($"Something went wrong {e}"); } Console.ReadKey(); }
/// <inheritdoc /> public GeneratedScheduleResponse GenerateSchedule(GenerateScheduleRequest request) { DateTime current = request.FromDate; DateTime endVideo = request.FromDate; GeneratedScheduleResponse response = new GeneratedScheduleResponse(); response.ScheduledMedia = new List <ScheduledMedia>(); TimeSpan totalrequestedDuration = request.ToDate - request.FromDate; double totalreqTime = totalrequestedDuration.TotalSeconds; response.TotalRequestedDuration = totalreqTime; foreach (Media media in request.Medias.OrderBy(i => i.Priority)) { for (int i = 0; i < media.NumberOfTimesToPlay; i++) { endVideo = current.AddSeconds(media.Duration); if (endVideo > request.ToDate) { break; } ScheduledMedia schedule = new ScheduledMedia(); schedule.Duration = media.Duration; schedule.MediaName = media.MediaName; schedule.ScheduledTime = current; response.ScheduledMedia.Add(schedule); response.MediaDuration += media.Duration; current = endVideo; } if (endVideo > request.ToDate) { break; } } response.RemainingDuration = response.TotalRequestedDuration - response.MediaDuration; return(response); }
/// <inheritdoc /> public GeneratedScheduleResponse GenerateSchedule(GenerateScheduleRequest request) { //Implement scheduling throw new System.NotImplementedException(); }