Esempio n. 1
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 7
0
        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);
        }
Esempio n. 12
0
        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);
        }
Esempio n. 13
0
        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);
        }
Esempio n. 14
0
        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);
        }
Esempio n. 17
0
 public void AddChild(IComponentRaspored item)
 {
     //Emisije ne dodaje nista
 }
 public void AddChild(IComponentRaspored djete)
 {
     ChildList.Add(djete);
 }
Esempio n. 19
0
 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);