/// <summary> /// Funkcija koja daje određeni model kamere /// </summary> /// <param name="category">Kategorija kamere</param> /// <returns>Objekt IFotoaparat-a</returns> private IFotoaparat GetCamera(string category) { string directoryLocation = DirectoryLocator.GetDirectory("Cameras", Directory.GetCurrentDirectory(), 0, 3); if (string.Equals(directoryLocation, "ERROR")) { Console.WriteLine("Ne može se pronaći direktorij s kamerama!"); } string[] files = Directory.GetFiles(directoryLocation); List <IFotoaparat> cameraList = new List <IFotoaparat>(); foreach (string file in files) { XmlTextReader reader = new XmlTextReader(file); while (reader.Read()) { if (XmlNodeType.Element == reader.NodeType) { reader.MoveToAttribute("type"); string elementType = reader.Value; if (string.Equals(elementType, category)) { CameraFactory cameraFactory; if (string.Equals(category, "DSLR")) { cameraFactory = new CreatorDSLR(); } else if (string.Equals(category, "MILC")) { cameraFactory = new CreatorMILC(); } else { cameraFactory = new CreatorCompact(); } IFotoaparat newCamera = cameraFactory.Create(); for (int attInd = 0; attInd < reader.AttributeCount; attInd++) { reader.MoveToAttribute(attInd); newCamera.SetValue(reader.Name, reader.Value); } cameraList.Add(newCamera); } } } } Randomizer rnd = Randomizer.GetInstance(); int cameraIndex = rnd.GetNumber(0, cameraList.Count); return(cameraList[cameraIndex]); }
/// <summary> /// Funkcija koja generira prijave /// </summary> /// <param name="listOfCompetitors">Lista natjecatelja</param> /// <param name="maxThemeNumberPerCompetitor">Maksimalni broj tema po natjecatelju</param> /// <param name="maxCategoryNumberPerCompetitor">Maksimalni broj kategorija po natjecatelju</param> /// <param name="numberOfThemes">Broj tema</param> /// <param name="listOfThemes">Lista tema</param> /// <param name="numberOfCategories">Broj kategorija</param> /// <param name="listOfCategories">Lista odabranih kategorija</param> /// <returns>Lista generiranih prijava</returns> private List <Registration> GenerateRegistrations(List <Competitor> listOfCompetitors, int maxThemeNumberPerCompetitor, int maxCategoryNumberPerCompetitor, int numberOfThemes, List <Theme> listOfThemes, int numberOfCategories, List <string> listOfCategories) { Randomizer rnd = Randomizer.GetInstance(); List <Registration> listOfRegistrations = new List <Registration>(); Console.WriteLine("\nPrijave natjecatelja:"); foreach (Competitor competitor in listOfCompetitors) { Console.WriteLine("\nNatjecatelj: " + competitor.Name); int numberOfRegistratedThemes; if (maxThemeNumberPerCompetitor < numberOfThemes) { numberOfRegistratedThemes = rnd.GetNumber(1, maxThemeNumberPerCompetitor); } else { numberOfRegistratedThemes = rnd.GetNumber(1, numberOfThemes); } List <Theme> listOfRegistratedThemes = new List <Theme>(); Console.WriteLine("Registrirane teme:"); while (listOfRegistratedThemes.Count < numberOfRegistratedThemes) { int themeIndex = rnd.GetNumber(0, numberOfThemes); Theme registratedTheme = listOfThemes[themeIndex]; if (listOfRegistratedThemes.Contains(registratedTheme)) { continue; } listOfRegistratedThemes.Add(registratedTheme); Console.WriteLine(registratedTheme.Name); int numberOfRegistratedCategories; if (maxThemeNumberPerCompetitor < numberOfCategories) { numberOfRegistratedCategories = rnd.GetNumber(1, maxCategoryNumberPerCompetitor); } else { numberOfRegistratedCategories = rnd.GetNumber(1, numberOfCategories); } List <string> listOfregistratedCategories = new List <string>(); while (listOfregistratedCategories.Count < numberOfRegistratedCategories) { int categoryIndex = rnd.GetNumber(0, numberOfCategories); string registratedCategory = listOfCategories[categoryIndex]; if (listOfregistratedCategories.Contains(registratedCategory)) { continue; } listOfregistratedCategories.Add(registratedCategory); Console.WriteLine("Kategorija: " + registratedCategory); IFotoaparat camera = GetCamera(registratedCategory); Console.WriteLine("Koristi fotoaparat: " + camera.GetModelName()); Registration registration = new Registration(competitor, registratedTheme, registratedCategory, camera, new Photo()); listOfRegistrations.Add(registration); } } } return(listOfRegistrations); }