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 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);
        }