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. 3
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!");
            }
        }
        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. 6
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);
        }
        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. 8
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. 11
0
 private static void IspisiVremenskiPlanDana(int dan, IComponentRaspored program)
 {
     Console.WriteLine("\n" + UnesiBrojDobijDan(dan) + " - vremenski plan: \n");
     PrikaziZaglavljeDnevnogRasporeda();
     program.GetChildList()[dan - 1].PrikaziPodatke();
 }