private static CompositeRaspored NapraviKopijuCvoraStanja(PohranjenoStanje stanje)
        {
            CompositeRaspored noviPocetniCvor = new CompositeRaspored();
            int indeksPrograma = 0;

            foreach (var program in stanje.GetPocetniCvor().GetChildList())
            {
                CompositeRaspored noviProgram = new CompositeRaspored();
                noviProgram.SetMojNaziv(program.GetMojNaziv());
                noviPocetniCvor.AddChild(noviProgram);
                int indeksDana = 0;
                foreach (var dan in program.GetChildList())
                {
                    CompositeRaspored noviDan = new CompositeRaspored();
                    noviPocetniCvor.GetChildList()[indeksPrograma].AddChild(noviDan);
                    foreach (var emisija in dan.GetChildList())
                    {
                        Emisija em   = emisija as Emisija;
                        Emisija nova = TjedniPlanHelper.VratiNoviKopiraniObjekt(em);
                        nova.SetRedniBroj(em.GetRedniBroj());
                        nova.SetVrijemePrikazivanja(em.GetVrijemePrikazivanja());
                        noviPocetniCvor.GetChildList()[indeksPrograma]
                        .GetChildList()[indeksDana].AddChild(nova);
                    }
                    indeksDana++;
                }
                indeksPrograma++;
            }
            return(noviPocetniCvor);
        }
        public static void IzbrisiEmisiju(int redniBroj)
        {
            TvKucaSingleton tvKuca         = TvKucaSingleton.GetTvKucaInstance();
            int             indeksPrograma = 0;
            int             indeksDana     = 0;

            foreach (var program in tvKuca.GetCompositeRaspored().GetChildList())
            {
                foreach (var dan in program.GetChildList())
                {
                    foreach (var emisija in dan.GetChildList())
                    {
                        Emisija em = emisija as Emisija;
                        if (em.GetRedniBroj() == redniBroj)
                        {
                            ZabiljeziStanje(em, indeksPrograma, indeksDana);
                            dan.GetChildList().Remove(emisija);
                            Console.WriteLine("Emisija uspješno izbrisana iz Composite-a!");
                            break;
                        }
                    }
                    indeksDana++;
                }
                indeksPrograma++;
            }
        }
 protected override void DodajPodatke()
 {
     if (File.Exists(putanja))
     {
         string[] red = File.ReadAllLines(putanja).Skip(1).ToArray();
         foreach (var r in red)
         {
             string[] parametri = r.Split(';');
             if (parametri.Length > 6 || parametri.Length < 3)
             {
                 Console.WriteLine("Neispravno definirani parametri - red: " + r);
             }
             else
             {
                 if (provjeraPostojanjaTrajanja(parametri, r))
                 {
                     return;
                 }
                 if (provjeraPostojanjaVrste(parametri, r))
                 {
                     return;
                 }
                 Emisija e = new Emisija();
                 e.Id           = int.Parse(parametri[0]);
                 e.naziv        = parametri[1];
                 e.VrstaEmisije = int.Parse(parametri[2]);
                 e.trajanje     = int.Parse(parametri[3]);
                 e.OsobaUloga   = definiranjeOsobaUloge(parametri, e);
                 ListaEntiteta.Add(e);
             }
         }
     }
 }
        protected override List <Entitet> PripremiPodatke(string[] redovi)
        {
            string[]       polja;
            Emisija        emisija;
            List <Entitet> listaPodataka = new List <Entitet>();

            foreach (var red in redovi)
            {
                try
                {
                    polja = Array.ConvertAll(red.Split(base._separator), p => p.Trim());
                    //polja[2] su minute
                    var          _vrijeme     = TimeSpan.FromMinutes(double.Parse(polja[3]));
                    VrstaEmisije vrstaEmisije = new VrstaEmisije();
                    vrstaEmisije.Id = int.Parse(polja[2]);
                    emisija         = new Emisija(int.Parse(polja[0]), polja[1], vrstaEmisije,
                                                  Konverzija.PretvoriVrijemeUSekunde(_vrijeme.ToString()), vratiOsobaUloga(polja[4], ','));
                    listaPodataka.Add(emisija);
                }
                catch (Exception e)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.Error.WriteLine("Pogrešan podatak! " + red);
                    Console.ResetColor();
                }
            }
            return(listaPodataka);
        }
示例#5
0
        public void SetPocetniCvor(CompositeRaspored dolazniCvor)
        {
            PocetniCvor = new CompositeRaspored();
            int indeksPrograma = 0;

            foreach (var program in dolazniCvor.GetChildList())
            {
                CompositeRaspored noviProgram = new CompositeRaspored();
                noviProgram.SetMojNaziv(program.GetMojNaziv());
                PocetniCvor.AddChild(noviProgram);
                int indeksDana = 0;
                foreach (var dan in program.GetChildList())
                {
                    CompositeRaspored noviDan = new CompositeRaspored();
                    PocetniCvor.GetChildList()[indeksPrograma].AddChild(noviDan);
                    foreach (var emisija in dan.GetChildList())
                    {
                        Emisija em   = emisija as Emisija;
                        Emisija nova = TjedniPlanHelper.VratiNoviKopiraniObjekt(em);
                        nova.SetRedniBroj(em.GetRedniBroj());
                        nova.SetVrijemePrikazivanja(em.GetVrijemePrikazivanja());
                        PocetniCvor.GetChildList()[indeksPrograma]
                        .GetChildList()[indeksDana].AddChild(nova);
                    }
                    indeksDana++;
                }
                indeksPrograma++;
            }
        }
        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);
        }
 public EmitiranjeEmisija(Emisija emisija, TimeSpan pocetak, TimeSpan kraj, int redniBroj)
 {
     Emisija   = emisija;
     Pocetak   = pocetak;
     Kraj      = kraj;
     RedniBroj = redniBroj;
 }
 protected override void DodajPodatke()
 {
     if (File.Exists(putanja))
     {
         string[] red = File.ReadAllLines(putanja).Skip(1).ToArray();
         foreach (var r in red)
         {
             string[] parametri = r.Trim().Split(';');
             if (parametri.Length > 6 || parametri.Length < 3)
             {
                 Console.ForegroundColor = ConsoleColor.Red;
                 Console.WriteLine("POGREŠKA: prilikom učitavanja emisija - red: " + r);
                 Console.ResetColor();
             }
             else
             {
                 if (provjeraPostojanjaTrajanja(parametri, r))
                 {
                     return;
                 }
                 if (provjeraPostojanjaVrste(parametri, r))
                 {
                     return;
                 }
                 Emisija e = new Emisija();
                 e.Id           = int.Parse(parametri[0]);
                 e.naziv        = parametri[1];
                 e.VrstaEmisije = int.Parse(parametri[2]);
                 e.trajanje     = int.Parse(parametri[3]);
                 e.OsobaUloga   = definiranjeOsobaUloge(parametri, e);
                 ListaEntiteta.Add(e);
             }
         }
     }
 }
示例#9
0
 public EmitiranjeEmisija(Emisija emisija, TimeSpan pocetak)
 {
     Emisija = emisija;
     Pocetak = pocetak;
     if (pocetak != TimeSpan.Zero)
     {
         Kraj = pocetak + TimeSpan.FromMinutes(emisija.trajanje);
     }
 }
示例#10
0
        //TODO REFACTOR
        public static void KreirajRaspored()
        {
            foreach (var tvProgram in TvKuca.Instance.TvProgrami)
            {
                var preostaleEmisije = new List <Emisija>();
                var emisijeBezdana   = tvProgram.Emisije.ToList().Where(e => e.Dani.Count < 1).ToList();
                for (var i = Dan.Ponedjeljak; i <= Dan.Nedjelja; i++)
                {
                    var raspored = new DnevniRaspored
                    {
                        Dan = i, IdPrograma = tvProgram.Id, NazivPrograma = tvProgram.ImePrograma
                    };
                    var emisije = new List <Emisija>();
                    //dodaj emisije u raspored
                    //TODO Provjeri dal radi OrderBy
                    DodajPrioritetne(emisije, tvProgram, i);
                    //koji nisu upali u raspored dodaj u preostale
                    preostaleEmisije.AddRange(emisije.Distinct().Where(emisija =>
                                                                       !Emisija.DodajEmisijuDnevnomRasporedu(tvProgram, emisija, raspored, i)));
                    //makni dane gdje se emisija dodala
                    foreach (var emisija in preostaleEmisije.Where(a => a.Dani.Contains(i)))
                    {
                        if (Emisija.DodajEmisijuDnevnomRasporedu(tvProgram, emisija, raspored, i))
                        {
                            preostaleEmisije.Remove(emisija);
                        }
                    }
                    foreach (var emisija in preostaleEmisije.Distinct())
                    {
                        foreach (var progr in TvKuca.Instance.TvProgrami.Where(pr =>
                                                                               pr.Emisije.Count(e => e.Id == emisija.Id) > 0))
                        {
                            foreach (var rasporedPrograma in progr.DohvatiDjecu().Cast <DnevniRaspored>()
                                     .Where(rasporedPrograma =>
                                            rasporedPrograma.DohvatiDjecu().Count(c => ((EmisijaRasporeda)c).IdEmisije == emisija.Id) >
                                            0))
                            {
                                emisija.Dani.Remove(rasporedPrograma.Dan);
                            }
                        }
                    }
                    tvProgram.Dodaj(raspored);
                }

                foreach (DnevniRaspored raspored in tvProgram.DohvatiDjecu())
                {
                    foreach (var emisija in emisijeBezdana.ToList())
                    {
                        if (Emisija.DodajEmisijuDnevnomRasporedu(tvProgram, emisija, raspored, raspored.Dan))
                        {
                            emisijeBezdana.Remove(emisija);
                        }
                    }
                }
            }
        }
        private static List <int> definiranjeOsobaUloge(string[] parametri, Emisija e)
        {
            List <int> privremena = new List <int>();

            if (parametri[4] != "" && parametri[4] != " ")
            {
                string[] osobaUloga = parametri[4].Split(',');
                foreach (var o in osobaUloga)
                {
                    privremena = e.kreirajOsobaUloga(o);
                }
                return(privremena);
            }
            return(null);
        }
示例#12
0
 public static void DohvatiOsobuUlogu(Emisija e)
 {
     foreach (var VARIABLE in e.UlogeOsoba)
     {
         try
         {
             var osoba = UcitaniPodaci.UcitaneOsobe.First(o => o.Id == VARIABLE.OsobaId);
             var uloga = UcitaniPodaci.UcitaneUloge.First(u => u.Id == VARIABLE.UlogaId);
             AzurirajOsobuUlugu(osoba, uloga);
         }
         catch (Exception exception)
         {
             Console.WriteLine("Ne postoji takav par osoba");
         }
     }
 }
示例#13
0
        public int Visit(Emisija emisija)
        {
            int             profitabilnihMinuta = 0;
            int             vrsta   = emisija.GetVrsta();
            TvKucaSingleton tvKuca  = TvKucaSingleton.GetTvKucaInstance();
            VrstaEmisije    vrstaEm = tvKuca.ListaVrstaEmisija.Find(x => x.GetId() == vrsta);

            if (vrstaEm != null)
            {
                if (vrstaEm.GetMozeImatReklame())
                {
                    profitabilnihMinuta = vrstaEm.GetMaxTrajanjeReklama();
                }
            }
            return(profitabilnihMinuta);
        }
 public void Add(IRasporedEmisija i)
 {
     if (ProvjeriPreklapanje(i))
     {
         i.roditelj = this;
         var          tmp      = (EmitiranjeEmisija)i;
         var          emisija1 = new Emisija(tmp.Emisija);
         VrstaEmisije vrstaTMP = new VrstaEmisije();
         vrstaTMP       = tmp.Emisija.vrsta;
         emisija1.vrsta = vrstaTMP;
         var prototype = new EmitiranjeEmisija(emisija1, tmp.Pocetak);
         prototype.RedniBroj = broj;
         listaEmisija.Add((EmitiranjeEmisija)prototype.clone());
         broj++;
         listaEmisija = listaEmisija.OrderBy(a => ((EmitiranjeEmisija)a).Pocetak).ToList();
     }
 }
示例#15
0
        private EmisijePrograma VratiNovuEmisijuPrograma(EmisijePrograma emisijaPrograma)
        {
            EmisijePrograma ep = new EmisijePrograma();

            ep.Pocetak    = emisijaPrograma.Pocetak;
            ep.ImaPočetak = emisijaPrograma.ImaPočetak;
            ep.OsobeUloge = emisijaPrograma.OsobeUloge;
            ep.RedniBroj  = emisijaPrograma.RedniBroj;

            Emisija em = new Emisija();

            em = emisijaPrograma.Emisija;

            ep.Emisija     = em;
            ep.DaniUTjednu = emisijaPrograma.DaniUTjednu;
            ep.OsobeUloge  = emisijaPrograma.OsobeUloge;

            return(ep);
        }
        private static void ZabiljeziStanje(Emisija brisanaEm, int program, int dan)
        {
            PohranjenoStanje stanje = new PohranjenoStanje();

            stanje.SetRedniBroj(ListaPohranjenihStanja.Count + 1);
            stanje.SetVrijemePohrane(DateTime.Now);

            TvKucaSingleton tvKuca = TvKucaSingleton.GetTvKucaInstance();

            stanje.SetPocetniCvor(tvKuca.GetCompositeRaspored());

            stanje.SetOpis("Stanje prije brisanja emisije (Redni br: " + brisanaEm.GetRedniBroj()
                           + ") '" + brisanaEm.GetNaziv() + "' -> " +
                           tvKuca.GetCompositeRaspored().GetChildList()[program].GetMojNaziv() +
                           " - " + IspisHelper.UnesiBrojDobijDan(dan + 1));

            Console.ForegroundColor = ConsoleColor.Cyan;
            Console.Write("Spremam novo stanje: ");
            Console.ForegroundColor = ConsoleColor.Gray;
            Console.WriteLine(stanje.GetOpis());
            ListaPohranjenihStanja.Add(stanje);
        }
        public static List <Emisija> DohvatiListuSvihEmisijaUCompositeu()
        {
            List <Emisija>  lista  = new List <Emisija>();
            TvKucaSingleton tvKuca = TvKucaSingleton.GetTvKucaInstance();

            foreach (var program in tvKuca.GetCompositeRaspored().GetChildList())
            {
                foreach (var dan in program.GetChildList())
                {
                    foreach (var emisija in dan.GetChildList())
                    {
                        Emisija em = emisija as Emisija;
                        if (em.GetRedniBroj() != -1)
                        {
                            // -1 je fiksno signal TV kuce
                            lista.Add(em);
                        }
                    }
                }
            }
            return(lista.OrderBy(x => x.GetRedniBroj()).ToList());
        }
        public override void UcitajZapise(string filePath)
        {
            String       red;
            Boolean      error   = false;
            string       message = "";
            StreamReader file    = new StreamReader(filePath);

            file.ReadLine();

            while ((red = file.ReadLine()) != null)
            {
                String[] splitLine = red.Split(';', ',');
                String   key;
                String   value;
                if (splitLine.Count() > 1 || splitLine.Count() <= 4)
                {
                    id       = int.Parse(splitLine[0]);
                    naziv    = splitLine[1];
                    trajanje = int.Parse(splitLine[2]);
                    if (splitLine.Length > 3 && !splitLine[3].Equals(""))
                    {
                        osoba1 = e.kreirajOsobaUloga(splitLine[3]);
                        if (splitLine.Length > 4 && !splitLine[4].Equals(""))
                        {
                            osoba2 = e.kreirajOsobaUloga(splitLine[4]);
                        }
                    }
                    e = new Emisija(id, naziv, trajanje, osoba1, osoba2);
                    listaEmisijaParam.Add(e);
                }
                else
                {
                    message = "Svojstvo je preskočeno - " + red + "zbog prevelikog broja argumenata";
                }
            }
        }
 public EmisijaConcreteBuilder()
 {
     emisija = new Emisija();
 }