private static void IspisPodatakaSlobodnogVremena(TvProgram program, int i) { Console.WriteLine("\t - Preostalo slobodno vrijeme iznosi ukupno " + DohvatiBrojMinutaSlobodnogVremena ( DohvatiBrojMinutaEmitiranjaEmisija( program.GetTjedan()[i].GetChildList().OrderBy (o => o.GetVrijemePrikazivanja()).ToList <IComponentRaspored>()), DohvatiBrojMinutaEmitSignalaTvKuce( program.GetTjedan()[i].GetChildList().OrderBy (o => o.GetVrijemePrikazivanja()).ToList <IComponentRaspored>()) ) + " minuta, time prekrivajuci oko " + IzracunajUdioMinutaUDanu ( DohvatiBrojMinutaSlobodnogVremena ( DohvatiBrojMinutaEmitiranjaEmisija( program.GetTjedan()[i].GetChildList().OrderBy (o => o.GetVrijemePrikazivanja()).ToList <IComponentRaspored>()), DohvatiBrojMinutaEmitSignalaTvKuce( program.GetTjedan()[i].GetChildList().OrderBy (o => o.GetVrijemePrikazivanja()).ToList <IComponentRaspored>()) ) ) + "% dnevnog vremena."); }
private static bool PrelaziPonocaXkrajPrograma(Emisija emisija, TvProgram program) { DateTime datum; if (program.GetKrajPrikazivanja() == DateTime.MinValue) { datum = new DateTime( emisija.GetVrijemePrikazivanja().Year, emisija.GetVrijemePrikazivanja().Month, emisija.GetVrijemePrikazivanja().AddDays(1).Day, 0, 0, 0); } else { datum = new DateTime( emisija.GetVrijemePrikazivanja().Year, emisija.GetVrijemePrikazivanja().Month, emisija.GetVrijemePrikazivanja().AddDays(0).Day, program.GetKrajPrikazivanja().Hour, program.GetKrajPrikazivanja().Minute, 0); } TimeSpan timespan = datum - emisija.GetVrijemePrikazivanja() .AddMinutes(emisija.GetTrajanje()); if (timespan.TotalMinutes < 0) { return(true); } else { return(false); } }
private static DateTime DohvatiVrijemeEmisijuMoguceUbacitiNakonZadnjeEmisije( IComponentRaspored dan, int trajanje, TvProgram program) { DateTime vratiDatum = DateTime.MinValue; List <IComponentRaspored> sortiranDan = dan.GetChildList().OrderBy (o => o.GetVrijemePrikazivanja()).ToList <IComponentRaspored>(); DateTime krajZadnjeEmisije = new DateTime(); krajZadnjeEmisije = sortiranDan[sortiranDan.Count - 1].GetVrijemePrikazivanja() .AddMinutes(sortiranDan[sortiranDan.Count - 1].GetTrajanje()); DateTime krajPrograma = new DateTime(); krajPrograma = program.GetKrajPrikazivanja(); if (krajPrograma == DateTime.MinValue) { if (!PrelaziPonoca(krajPrograma, trajanje)) { vratiDatum = krajZadnjeEmisije; return(vratiDatum); } } else { if (krajZadnjeEmisije.AddMinutes(trajanje) <= krajPrograma) { vratiDatum = krajZadnjeEmisije; return(vratiDatum); } } return(vratiDatum); }
private static bool ProvjeriMogucnostDodavanja( Emisija emisija, IComponentRaspored dan, TvProgram program) { bool moguceDodati = true; if (program.GetPocetakPrikazivanja().TimeOfDay > emisija.GetVrijemePrikazivanja().TimeOfDay) { moguceDodati = false; } if (PostojiEmisijaKojaPocinjeUNavedenoVrijeme(dan, emisija.GetVrijemePrikazivanja())) { moguceDodati = false; } if (PostojiEmisijaKojaSeEmitiraUNavedenoVrijeme( dan, emisija.GetVrijemePrikazivanja(), emisija.GetTrajanje())) { moguceDodati = false; } if (PrelaziPonocaXkrajPrograma(emisija, program)) { moguceDodati = false; } return(moguceDodati); }
private static void DodajEmisijeBezIcega( TvProgram program, List <VremenskiPlan> listaEmisijeBezIcega) { TvKucaSingleton tvKuca = TvKucaSingleton.GetTvKucaInstance(); foreach (VremenskiPlan plan in listaEmisijeBezIcega) { Emisija trazena = tvKuca.ListaEmisija.Find(x => x.GetId() == plan.GetEmisijaId()); if (trazena == null) { IspisHelper.EmisijaNePostoji(plan.GetEmisijaId()); break; } bool uspioDodati = false; for (int i = 0; i < program.GetTjedan().Count; i++) { if (program.GetTjedan()[i].GetChildList().Count == 0) { DodajEmisijuNaPocetakPrograma(program, trazena, plan, (i + 1)); uspioDodati = true; break; } else if (program.GetTjedan()[i].GetChildList().Count == 1) { if (UspioDodatPrijePrve(program, trazena, plan, (i + 1))) { uspioDodati = true; break; } else if (UspioDodatNakonZadnje(program, trazena, plan, (i + 1))) { uspioDodati = true; break; } } else { if (UspioDodatPrijePrve(program, trazena, plan, (i + 1))) { uspioDodati = true; break; } else if (UspioDodatiIzmeduDvije(program, trazena, plan, (i + 1))) { uspioDodati = true; break; } else if (UspioDodatNakonZadnje(program, trazena, plan, (i + 1))) { uspioDodati = true; break; } } } if (!uspioDodati) { IspisHelper.EmisijaNemoguceDodati(plan.GetEmisijaId(), program.GetNaziv()); } } }
private static void SortirajSveEmisijeUDanu(TvProgram program) { foreach (var dan in program.GetTjedan()) { dan.GetChildList().Sort((a, b) => DateTime.Compare(a.GetVrijemePrikazivanja(), b.GetVrijemePrikazivanja())); } }
private static void DodajEmisijeJedanIliViseDana( TvProgram program, List <VremenskiPlan> listaEmisijeViseDana) { TvKucaSingleton tvKuca = TvKucaSingleton.GetTvKucaInstance(); foreach (VremenskiPlan plan in listaEmisijeViseDana) { foreach (int brojDana in plan.GetListaDanaEmitiranja()) { bool uspioDodati = false; Emisija trazena = tvKuca.ListaEmisija.Find(x => x.GetId() == plan.GetEmisijaId()); if (trazena == null) { IspisHelper.EmisijaNePostoji(plan.GetEmisijaId()); break; } if (program.GetTjedan()[brojDana - 1].GetChildList().Count == 0) { DodajEmisijuNaPocetakPrograma(program, trazena, plan, brojDana); uspioDodati = true; } else if (program.GetTjedan()[brojDana - 1].GetChildList().Count == 1) { if (UspioDodatPrijePrve(program, trazena, plan, brojDana)) { uspioDodati = true; } else if (UspioDodatNakonZadnje(program, trazena, plan, brojDana)) { uspioDodati = true; } } else { if (UspioDodatPrijePrve(program, trazena, plan, brojDana)) { uspioDodati = true; } else if (UspioDodatiIzmeduDvije(program, trazena, plan, brojDana)) { uspioDodati = true; } else if (UspioDodatNakonZadnje(program, trazena, plan, brojDana)) { uspioDodati = true; } } if (!uspioDodati) { IspisHelper.EmisijaNemoguceDodati( plan.GetEmisijaId(), brojDana, program.GetNaziv()); } } } }
private static void DodajEmisijuNaPocetakPrograma(TvProgram program, Emisija orig, VremenskiPlan plan, int brojDana) { Emisija emisijaZaDodat = VratiNoviKopiraniObjekt(orig); DodajNoveOsobeUlogeEmisije(emisijaZaDodat, plan); emisijaZaDodat.SetVrijemePrikazivanja(program.GetPocetakPrikazivanja()); DodjeliRedniBroj(emisijaZaDodat); program.GetTjedan()[(brojDana - 1)].AddChild(emisijaZaDodat); SubjectOsobaUlogaSingleton subject = SubjectOsobaUlogaSingleton.GetInstance(); subject.AddObserver(emisijaZaDodat); }
private static void IspisStatistikeZaProgram(TvProgram program) { Console.WriteLine(program.GetNaziv() + " - Prikaz statistike\n"); for (int i = 0; i < program.GetTjedan().Count; i++) { Console.WriteLine(UnesiBrojDobijDan(i + 1) + " - statiska: "); //dvije emisije su mi uvijek zapravo signal TV kuce Console.WriteLine("\t - Broj emisija: " + (program.GetTjedan()[i].GetChildList().Count - 2)); IspisPodatakaEmitiranjaEmisija(program, i); IspisPodatakaEmitiranjaTvSignala(program, i); IspisPodatakaSlobodnogVremena(program, i); } }
private static void DodajEmitiranjeSingnalaTVKuceKraj(TvProgram program) { List <DateTime> listaKrajevaZadnjihEmisija = PronadiKrajeveZadnjihEmisija(program); for (int i = 0; i < program.GetTjedan().Count; i++) { Emisija emisijaZaDodat = new Emisija(); emisijaZaDodat.SetId(1234); emisijaZaDodat.SetNaziv("SIGNAL S IDENTITETOM TV KUCE"); emisijaZaDodat.SetListaOsobaUloga(new List <KeyValuePair <int, int> >()); emisijaZaDodat.SetVrijemePrikazivanja(listaKrajevaZadnjihEmisija[i]); DateTime sutraPocetka = new DateTime( DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.AddDays(1).Day, 0, 0, 0); TimeSpan timespan = sutraPocetka - emisijaZaDodat.GetVrijemePrikazivanja(); emisijaZaDodat.SetTrajanje(int.Parse(timespan.TotalMinutes.ToString())); program.GetTjedan()[i].GetChildList().Add(emisijaZaDodat); } }
private static List <DateTime> PronadiPocetkePrvihEmisija(TvProgram program) { List <DateTime> listaPocetakaPrvihEmisija = new List <DateTime>(); for (int i = 0; i < program.GetTjedan().Count; i++) { var sortiranDan = program.GetTjedan()[i].GetChildList().OrderBy (o => o.GetVrijemePrikazivanja()).ToList <IComponentRaspored>(); if (sortiranDan.Count == 0) { listaPocetakaPrvihEmisija.Add(program.GetPocetakPrikazivanja()); } else { listaPocetakaPrvihEmisija.Add(sortiranDan[0].GetVrijemePrikazivanja()); } } return(listaPocetakaPrvihEmisija); }
public static void PopuniTjedniPlan(TvProgram program) { List <VremenskiPlan> listaZadaniPocetakDani; List <VremenskiPlan> listaEmisijaViseDana; List <VremenskiPlan> listaEmisijaBezIcega; listaZadaniPocetakDani = DohvatiEmisijeZadPocetIDani(program.GetVremenskiPlan()); listaEmisijaViseDana = DohvatiEmisijeJedanIliViseDana(program.GetVremenskiPlan()); listaEmisijaBezIcega = DohvatiEmisijeBezIcega(program.GetVremenskiPlan()); DodajEmisijeZadaniPocetak(program, listaZadaniPocetakDani); DodajEmisijeJedanIliViseDana(program, listaEmisijaViseDana); DodajEmisijeBezIcega(program, listaEmisijaBezIcega); DodajEmitiranjeSingnalaTVKucePocetak(program); DodajEmitiranjeSingnalaTVKuceKraj(program); SortirajSveEmisijeUDanu(program); TvKucaSingleton tvKuca = TvKucaSingleton.GetTvKucaInstance(); tvKuca.SetCompositeRaspored(); }
private static bool UspioDodatiIzmeduDvije(TvProgram program, Emisija orig, VremenskiPlan plan, int brojDana) { Emisija emisijaZaDodat = VratiNoviKopiraniObjekt(orig); DodajNoveOsobeUlogeEmisije(emisijaZaDodat, plan); emisijaZaDodat.SetVrijemePrikazivanja( DohvatiVrijemeGdjeEmisijuMoguceUbacitiIzmeduDvijeEmisije( program.GetTjedan()[brojDana - 1], emisijaZaDodat.GetTrajanje())); if (emisijaZaDodat.GetVrijemePrikazivanja().TimeOfDay != DateTime.MinValue.TimeOfDay) { DodjeliRedniBroj(emisijaZaDodat); program.GetTjedan()[(brojDana - 1)].AddChild(emisijaZaDodat); SubjectOsobaUlogaSingleton subject = SubjectOsobaUlogaSingleton.GetInstance(); subject.AddObserver(emisijaZaDodat); return(true); } return(false); }
private static List <DateTime> PronadiKrajeveZadnjihEmisija(TvProgram program) { List <DateTime> listaKrajevaZadnjihEmisija = new List <DateTime>(); for (int i = 0; i < program.GetTjedan().Count; i++) { var sortiranDan = program.GetTjedan()[i].GetChildList().OrderBy (o => o.GetVrijemePrikazivanja()).ToList <IComponentRaspored>(); if (sortiranDan.Count == 0) { listaKrajevaZadnjihEmisija.Add(program.GetKrajPrikazivanja()); } else { listaKrajevaZadnjihEmisija.Add( sortiranDan[sortiranDan.Count - 1].GetVrijemePrikazivanja() .AddMinutes(sortiranDan[sortiranDan.Count - 1].GetTrajanje())); } } return(listaKrajevaZadnjihEmisija); }
private static DateTime DohvatiVrijemeEmisijuMoguceUbacitiPrijePrveEmisije( IComponentRaspored dan, int trajanje, TvProgram program) { DateTime vratiDatum = DateTime.MinValue; List <IComponentRaspored> sortiranDan = dan.GetChildList().OrderBy (o => o.GetVrijemePrikazivanja()).ToList <IComponentRaspored>(); DateTime pocetakPrveEmisije = new DateTime(); pocetakPrveEmisije = sortiranDan[0].GetVrijemePrikazivanja(); DateTime pocetakPrograma = new DateTime(); pocetakPrograma = program.GetPocetakPrikazivanja(); if (pocetakPrograma.AddMinutes(trajanje) <= pocetakPrveEmisije) { vratiDatum = pocetakPrograma; return(vratiDatum); } return(vratiDatum); }
private static void DodajEmisijeZadaniPocetak( TvProgram program, List <VremenskiPlan> listaZadaniPocetakDani) { TvKucaSingleton tvKuca = TvKucaSingleton.GetTvKucaInstance(); SubjectOsobaUlogaSingleton subject = SubjectOsobaUlogaSingleton.GetInstance(); foreach (VremenskiPlan plan in listaZadaniPocetakDani) { foreach (int brojDana in plan.GetListaDanaEmitiranja()) { Emisija trazena = tvKuca.ListaEmisija.Find (x => x.GetId() == plan.GetEmisijaId()); if (trazena == null) { Console.WriteLine(" - Emisija sa ID: " + plan.GetEmisijaId() + " ne postoji! -> PRESKAČEM"); break; } Emisija emisijaZaDodat = VratiNoviKopiraniObjekt(trazena); emisijaZaDodat.SetVrijemePrikazivanja(plan.GetPocetak()); DodajNoveOsobeUlogeEmisije(emisijaZaDodat, plan); if (ProvjeriMogucnostDodavanja (emisijaZaDodat, program.GetTjedan()[brojDana - 1], program)) { DodjeliRedniBroj(emisijaZaDodat); program.GetTjedan()[(brojDana - 1)].AddChild(emisijaZaDodat); subject.AddObserver(emisijaZaDodat); } else { Console.WriteLine(" - " + brojDana + ".dan - Emisiju: " + emisijaZaDodat.GetId() + " vrijeme pocetka: " + emisijaZaDodat.GetVrijemePrikazivanja().TimeOfDay + ", " + emisijaZaDodat.GetNaziv() + " - trajanje: " + emisijaZaDodat.GetTrajanje() + " nije bilo moguće dodati u raspored."); } } } }