private static void OdabirOpcijeZaVlastituFunkcionalnost (int dan, IComponentRaspored program) { Console.WriteLine("\nOdaberite opciju: \n"); Console.WriteLine("(1) Udio pojedine vrste emisije u ovome danu"); Console.WriteLine("(2) Udio profitablinih emisija u ovome danu"); Console.Write("Moj odabir: "); string korisnickiUnos = Console.ReadLine(); if (int.TryParse(korisnickiUnos, out int odabir)) { if (odabir < 1 || odabir > 2) { Console.WriteLine("Ta opcija ne postoji !"); } else { //Stvaranje lanca AbstractStatisticHandler handler = new VrstaStatHandler(AbstractStatisticHandler.VRSTA).SetNext( new ProfitStatHandler(AbstractStatisticHandler.PROFIT)); handler.DoWork(odabir, program.GetChildList()[dan - 1]); } } else { Console.WriteLine("Ne ispravan unos!"); } }
public override void Calculate(IComponentRaspored component) { List <string> listaNazivaVrsta = new List <string>(); List <int> pratecaListaCounterVrsta = new List <int>(); foreach (var emisija in component.GetChildList()) { Emisija em = emisija as Emisija; string vrsta = IspisHelper.DohvatiNazivVrsteEmisije(em.GetVrsta()); if (vrsta == "Nepoznata vrsta") { //onda nista, ovo je za emisije koje predstavljaju TV signal } else if (!listaNazivaVrsta.Contains(vrsta)) { listaNazivaVrsta.Add(vrsta); pratecaListaCounterVrsta.Add(1); } else { pratecaListaCounterVrsta[listaNazivaVrsta.IndexOf(vrsta)] += 1; } } IspisiStatistiku(listaNazivaVrsta, pratecaListaCounterVrsta); }
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 void OdabirDanaProgramaZaIspis(IComponentRaspored program) { Console.WriteLine("\nOdaberite dan: \n"); for (int i = 1; i < 8; i++) { Console.WriteLine("(" + i + ") " + UnesiBrojDobijDan(i)); } Console.Write("Moj odabir: "); string korisnickiUnos = Console.ReadLine(); if (int.TryParse(korisnickiUnos, out int odabir)) { if (odabir < 1 || odabir > 7) { Console.WriteLine("Taj dan ne postoji !"); } else { IspisiVremenskiPlanDana(odabir, program); } } else { Console.WriteLine("Ne ispravan unos!"); } }
private static DateTime DohvatiVrijemeGdjeEmisijuMoguceUbacitiIzmeduDvijeEmisije( IComponentRaspored dan, int trajanje) { DateTime vratiDatum = DateTime.MinValue; List <IComponentRaspored> sortiranDan = dan.GetChildList().OrderBy (o => o.GetVrijemePrikazivanja()).ToList <IComponentRaspored>(); for (int i = 0; i < sortiranDan.Count - 1; i++) { DateTime calcItemKraj = new DateTime(); calcItemKraj = sortiranDan[i].GetVrijemePrikazivanja() .AddMinutes(sortiranDan[i].GetTrajanje()); DateTime vrijemePocetka = new DateTime(); vrijemePocetka = calcItemKraj; DateTime calcNextItemPocetak = new DateTime(); calcNextItemPocetak = sortiranDan[i + 1].GetVrijemePrikazivanja(); DateTime emisijaTrajeDo = new DateTime(); emisijaTrajeDo = vrijemePocetka.AddMinutes(trajanje); if (emisijaTrajeDo.TimeOfDay <= calcNextItemPocetak.TimeOfDay) { vratiDatum = vrijemePocetka; return(vratiDatum); } } return(vratiDatum); }
private static bool PostojiEmisijaKojaSeEmitiraUNavedenoVrijeme( IComponentRaspored dan, DateTime vrijeme, int trajanje) { bool postoji = false; foreach (var item in dan.GetChildList()) { DateTime calcTimePocetak = new DateTime(); calcTimePocetak = item.GetVrijemePrikazivanja(); DateTime calcTimeKraj = new DateTime(); calcTimeKraj = item.GetVrijemePrikazivanja(); calcTimeKraj.AddMinutes(item.GetTrajanje()); if ((calcTimePocetak.TimeOfDay < vrijeme.TimeOfDay) && (calcTimeKraj.TimeOfDay > vrijeme.TimeOfDay)) { postoji = true; } else if ((calcTimePocetak.TimeOfDay > vrijeme.TimeOfDay) && (calcTimeKraj.TimeOfDay < vrijeme.AddMinutes(trajanje).TimeOfDay)) { postoji = true; } } return(postoji); }
private static void OdabirDanaZaVlastituFunkcionalonost(IComponentRaspored program) { Console.WriteLine("\nOdaberite dan: \n"); for (int i = 1; i < 8; i++) { Console.WriteLine("(" + i + ") " + UnesiBrojDobijDan(i)); } Console.Write("Moj odabir: "); string korisnickiUnos = Console.ReadLine(); if (int.TryParse(korisnickiUnos, out int odabir)) { if (odabir < 1 || odabir > 7) { Console.WriteLine("Taj dan ne postoji !"); } else { OdabirOpcijeZaVlastituFunkcionalnost(odabir, program); } } else { Console.WriteLine("Ne ispravan unos!"); } }
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); }
public void PrikaziPodatkeVrsta(int vrsta) { for (ICompositeIterator iter = GetIterator(vrsta); iter.HasNext();) { IComponentRaspored item = (IComponentRaspored)iter.Next(); item.PrikaziPodatkeVrsta(vrsta); } }
public void DoWork(int opcija, IComponentRaspored component) { if (Opcija == opcija) { Calculate(component); } if (Next != null) { Next.DoWork(opcija, component); } }
private static bool PostojiEmisijaKojaPocinjeUNavedenoVrijeme( IComponentRaspored dan, DateTime vrijeme) { bool postoji = false; foreach (var item in dan.GetChildList()) { if (item.GetVrijemePrikazivanja().TimeOfDay == vrijeme.TimeOfDay) { postoji = true; } } return(postoji); }
private static int DohvatiUkBrojMinutaReklama( int dan, IComponentRaspored program) { int brojMaksMinuta = 0; TvKucaSingleton tvKuca = TvKucaSingleton.GetTvKucaInstance(); IEmisijaVisitor visitor = new EmisijaMonetizacijaVizitor(); foreach (var emisija in program.GetChildList()[dan - 1].GetChildList()) { Emisija em = emisija as Emisija; brojMaksMinuta += em.Accept(visitor); } return(brojMaksMinuta); }
private static void IspisPrihodaZaDan(int dan, IComponentRaspored program) { Console.WriteLine("\n" + UnesiBrojDobijDan(dan) + " - analiza prihoda: \n"); PrikaziZaglavljePotencijalnihPrihoda(); int brojProfEmisija = DohvatiBrojProfitabilnihEmisija(dan, program); int ukMinuta = DohvatiUkBrojMinutaReklama(dan, program); IspisHelper.Brojac = 0; IRedakTablice redakTablice = new TekstualniDecorator( new TekstualniDecorator( new ConcreteRedak())); string format = redakTablice.NapraviRedak(); string ispis = String.Format(format, ukMinuta.ToString(), brojProfEmisija.ToString()); Console.WriteLine(ispis); }
private static int DohvatiBrojProfitabilnihEmisija(int dan, IComponentRaspored program) { int brojEmisija = 0; TvKucaSingleton tvKuca = TvKucaSingleton.GetTvKucaInstance(); foreach (var emisija in program.GetChildList()[dan - 1].GetChildList()) { int vrsta = emisija.GetVrsta(); VrstaEmisije vrstaEm = tvKuca.ListaVrstaEmisija.Find(x => x.GetId() == vrsta); if (vrstaEm != null) { if (vrstaEm.GetMozeImatReklame()) { brojEmisija++; } } } return(brojEmisija); }
public override void Calculate(IComponentRaspored component) { int brojEmisija = 0; int brojProfitabilnihEmisija = 0; TvKucaSingleton tvKuca = TvKucaSingleton.GetTvKucaInstance(); foreach (var emisija in component.GetChildList()) { int vrsta = emisija.GetVrsta(); VrstaEmisije vrstaEm = tvKuca.ListaVrstaEmisija.Find(x => x.GetId() == vrsta); if (vrstaEm != null) { brojEmisija++; if (vrstaEm.GetMozeImatReklame()) { brojProfitabilnihEmisija++; } } } IspisiStatistiku(brojEmisija, brojProfitabilnihEmisija); }
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); }
public void AddChild(IComponentRaspored item) { //Emisije ne dodaje nista }
public void AddChild(IComponentRaspored djete) { ChildList.Add(djete); }
private static void IspisiVremenskiPlanDana(int dan, IComponentRaspored program) { Console.WriteLine("\n" + UnesiBrojDobijDan(dan) + " - vremenski plan: \n"); PrikaziZaglavljeDnevnogRasporeda(); program.GetChildList()[dan - 1].PrikaziPodatke(); }
public abstract void Calculate(IComponentRaspored component);