public static bool DodajEmisijuDnevnomRasporedu(TvProgram tvProgram, Emisija emisija, DnevniRaspored raspored, Dan i) { if (ProvjeriPripadnostEmisijeProgramu(tvProgram, emisija) == false) { return(false); } var daniEmisije = emisija.Dani.Count > 0; //ako ima dane, a trenutni dan nije taj dan if (daniEmisije && !emisija.Dani.Contains(i)) { Console.WriteLine("Emisija se ne izvodi u odabranom danu"); return(false); } //prioritet emisije 1. ( emisija ima i dan i pocetak emitiranja if (DodajPrioritetne(tvProgram, emisija, raspored, out var dodajEmisijuDnevnomRasporedu)) { return(dodajEmisijuDnevnomRasporedu); } //za sve ostale if (DodajPreostale(tvProgram, emisija, raspored)) { return(true); } return(false); }
private static bool DodajPreostale(TvProgram tvProgram, Emisija emisija, DnevniRaspored raspored) { var krajPrograma = tvProgram.KrajPrograma - emisija.TrajanjeEmisije + new TimeSpan(24, 0, 0); for (var j = tvProgram.PocetakPrograma; j <= krajPrograma; j += new TimeSpan(0, 1, 0)) { if (emisija.PocetakEmitiranjaEmisije + emisija.TrajanjeEmisije > tvProgram.KrajPrograma) { continue; } if (!ProvjeriPreklapanja(j, emisija.TrajanjeEmisije, raspored.DohvatiDjecu().Select(c => (EmisijaRasporeda)c).ToList())) { continue; } var trazenaEmisija = new EmisijaRasporeda { IdEmisije = emisija.Id, PocetakEmisije = j, KrajEmisije = j + emisija.TrajanjeEmisije, NazivEmisije = emisija.NazivEmisije, VrstaEmisije = emisija.VrstaEmisije, UnikatniID = UcitaniPodaci.EmisijaUnikatniID, OsobeUloge = DohvatiSveOsobeUloge(emisija) }; raspored.Dodaj(trazenaEmisija); DohvatiSveOsobeUloge(emisija); UcitaniPodaci.EmisijaUnikatniID++; return(true); } return(false); }
public static bool ProvjeriPripadnostEmisijeProgramu(TvProgram tvProgram, Emisija emisija) { if (tvProgram.Emisije.Count(e => e.Id == emisija.Id) < 1) { Console.WriteLine("Tražena emisija ne pripada odabranom programu"); return(false); } else { return(true); } }
public static List <IObserver> DohvatiSveOsobeUloge(Emisija e) { List <IObserver> pomocnaLista = new List <IObserver>(); 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); pomocnaLista.Add(DodajOsobaUlogu(osoba, uloga)); } catch (Exception exception) { Console.WriteLine("Ne postoji takav par osoba i uloga"); } } return(pomocnaLista); }
private static bool DodajPrioritetne(TvProgram tvProgram, Emisija emisija, DnevniRaspored raspored, out bool dodajEmisijuDnevnomRasporedu) { if (emisija.PocetakEmitiranjaEmisije != null) { //ako emisija traje duže od samog programa if (emisija.PocetakEmitiranjaEmisije + emisija.TrajanjeEmisije > tvProgram.KrajPrograma) { dodajEmisijuDnevnomRasporedu = false; return(true); } if (!ProvjeriPreklapanja(emisija.PocetakEmitiranjaEmisije.Value, emisija.TrajanjeEmisije, raspored.DohvatiDjecu().Select(c => (EmisijaRasporeda)c).ToList())) { dodajEmisijuDnevnomRasporedu = false; return(true); } var trazenaEmisija = new EmisijaRasporeda { IdEmisije = emisija.Id, PocetakEmisije = emisija.PocetakEmitiranjaEmisije.Value, KrajEmisije = emisija.PocetakEmitiranjaEmisije.Value + emisija.TrajanjeEmisije, NazivEmisije = emisija.NazivEmisije, VrstaEmisije = emisija.VrstaEmisije, UnikatniID = UcitaniPodaci.EmisijaUnikatniID, OsobeUloge = DohvatiSveOsobeUloge(emisija) }; DohvatiSveOsobeUloge(emisija); raspored.Dodaj(trazenaEmisija); UcitaniPodaci.EmisijaUnikatniID++; { dodajEmisijuDnevnomRasporedu = true; return(true); } } dodajEmisijuDnevnomRasporedu = false; return(false); }