private static List<DogsInClass> AllocateDogsToClassParts(List<DogClasses> dogClassList, List<ClassParts> classParts) { PartCount = 0; List<DogsInClass> allDogsInClass = new List<DogsInClass>(); foreach (DogClasses dogClass in dogClassList) { Guid show_Entry_Class_ID = new Guid(dogClass.Show_Entry_Class_ID.ToString()); List<DogOwners> dogOwnersList = new List<DogOwners>(); DogOwners dogOwners = new DogOwners(); Guid dog_ID = new Guid(dogClass.Dog_ID.ToString()); dogOwnersList = dogOwners.GetDogOwnersByDog_ID(dog_ID); foreach (DogOwners owner in dogOwnersList) { List<DogOwners> dogOwnerDogList = new List<DogOwners>(); DogOwners dogOwnerDogs = new DogOwners(); dogOwnerDogList = dogOwnerDogs.GetDogOwnersByOwner_ID(owner.Owner_ID); List<Dogs> ownerDogsInClassList = new List<Dogs>(); ownerDogsInClassList = OwnerDogsInCurrentClass(dogOwnerDogList, show_Entry_Class_ID); if (ownerDogsInClassList.Count == 1) { if (!FoundInList(allDogsInClass, ownerDogsInClassList[0].Dog_ID)) { Dogs dog = new Dogs(ownerDogsInClassList[0].Dog_ID); DogsInClass dogInClass = new DogsInClass(); dogInClass.Dog = dog; dogInClass.Dog_Class_ID = GetDogClassID(dog.Dog_ID, show_Entry_Class_ID); dogInClass.Show_Final_Class_ID = NextPart(classParts); dogInClass.AddToPart = PartCount; allDogsInClass.Add(dogInClass); } } else if (ownerDogsInClassList.Count == 2) { if (!FoundInList(allDogsInClass, ownerDogsInClassList[0].Dog_ID)) { Dogs dog1 = new Dogs(ownerDogsInClassList[0].Dog_ID); DogsInClass dogInClass1 = new DogsInClass(); dogInClass1.Dog = dog1; dogInClass1.Dog_Class_ID = GetDogClassID(dog1.Dog_ID, show_Entry_Class_ID); dogInClass1.Show_Final_Class_ID = NextPart(classParts); dogInClass1.AddToPart = PartCount; allDogsInClass.Add(dogInClass1); } if (!FoundInList(allDogsInClass, ownerDogsInClassList[1].Dog_ID)) { Dogs dog2 = new Dogs(ownerDogsInClassList[1].Dog_ID); DogsInClass dogInClass2 = new DogsInClass(); dogInClass2.Dog = dog2; dogInClass2.Dog_Class_ID = GetDogClassID(dog2.Dog_ID, show_Entry_Class_ID); dogInClass2.Show_Final_Class_ID = NextPart(classParts); dogInClass2.AddToPart = PartCount; allDogsInClass.Add(dogInClass2); } } else { foreach (Dogs ownerDog in ownerDogsInClassList) { if (!FoundInList(allDogsInClass, ownerDog.Dog_ID)) { Dogs dog = new Dogs(ownerDog.Dog_ID); DogsInClass dogInClass = new DogsInClass(); dogInClass.Dog = dog; dogInClass.Dog_Class_ID = GetDogClassID(dog.Dog_ID, show_Entry_Class_ID); dogInClass.Show_Final_Class_ID = NextPart(classParts); dogInClass.AddToPart = PartCount; allDogsInClass.Add(dogInClass); } } } } } return allDogsInClass; }
private static List <DogsInClass> AllocateDogsToClassParts(string connString, List <DogClasses> dogClassList, List <ClassParts> classParts, Guid show_ID) { List <DogsInClass> retVal = new List <DogsInClass>(); try { PartCount = 0; int[] dogsInPart = new int[classParts.Count]; foreach (DogClasses dogClass in dogClassList) { Guid show_Entry_Class_ID = new Guid(dogClass.Show_Entry_Class_ID.ToString()); List <DogOwners> dogOwnersList = new List <DogOwners>(); DogOwners dogOwners = new DogOwners(connString); Guid dog_ID = new Guid(dogClass.Dog_ID.ToString()); dogOwnersList = dogOwners.GetDogOwnersByDog_ID(dog_ID); foreach (DogOwners owner in dogOwnersList) { List <DogOwners> dogOwnerDogList = new List <DogOwners>(); DogOwners dogOwnerDogs = new DogOwners(connString); dogOwnerDogList = dogOwnerDogs.GetDogOwnersByOwner_ID(owner.Owner_ID); List <Dogs> ownerDogsInClassList = new List <Dogs>(); ownerDogsInClassList = OwnerDogsInCurrentClass(connString, dogOwnerDogList, show_ID, show_Entry_Class_ID); if (dogClass.Preferred_Part > 0) { foreach (Dogs ownerDog in ownerDogsInClassList) { if (!FoundInList(retVal, ownerDog.Dog_ID)) { Dogs dog = new Dogs(connString, ownerDog.Dog_ID); DogsInClass dogInClass = new DogsInClass(); dogInClass.Dog = dog; dogInClass.Dog_Class_ID = GetDogClassID(connString, dog.Dog_ID, show_Entry_Class_ID); dogInClass.Show_Final_Class_ID = classParts[dogClass.Preferred_Part - 1].Show_Final_Class_ID; dogInClass.AddToPart = dogClass.Preferred_Part; retVal.Add(dogInClass); dogsInPart[dogClass.Preferred_Part - 1]++; } } } } } foreach (DogClasses dogClass in dogClassList) { Guid show_Entry_Class_ID = new Guid(dogClass.Show_Entry_Class_ID.ToString()); List <DogOwners> dogOwnersList = new List <DogOwners>(); DogOwners dogOwners = new DogOwners(connString); Guid dog_ID = new Guid(dogClass.Dog_ID.ToString()); dogOwnersList = dogOwners.GetDogOwnersByDog_ID(dog_ID); foreach (DogOwners owner in dogOwnersList) { List <DogOwners> dogOwnerDogList = new List <DogOwners>(); DogOwners dogOwnerDogs = new DogOwners(connString); dogOwnerDogList = dogOwnerDogs.GetDogOwnersByOwner_ID(owner.Owner_ID); List <Dogs> ownerDogsInClassList = new List <Dogs>(); ownerDogsInClassList = OwnerDogsInCurrentClass(connString, dogOwnerDogList, show_ID, show_Entry_Class_ID); if (dogClass.Preferred_Part > 0) { foreach (Dogs ownerDog in ownerDogsInClassList) { if (!FoundInList(retVal, ownerDog.Dog_ID)) { Dogs dog = new Dogs(connString, ownerDog.Dog_ID); DogsInClass dogInClass = new DogsInClass(); dogInClass.Dog = dog; dogInClass.Dog_Class_ID = GetDogClassID(connString, dog.Dog_ID, show_Entry_Class_ID); dogInClass.Show_Final_Class_ID = classParts[dogClass.Preferred_Part - 1].Show_Final_Class_ID; dogInClass.AddToPart = dogClass.Preferred_Part; retVal.Add(dogInClass); dogsInPart[dogClass.Preferred_Part - 1]++; } } } if (ownerDogsInClassList.Count == 1) { if (!FoundInList(retVal, ownerDogsInClassList[0].Dog_ID)) { Dogs dog = new Dogs(connString, ownerDogsInClassList[0].Dog_ID); DogsInClass dogInClass = new DogsInClass(); dogInClass.Dog = dog; dogInClass.Dog_Class_ID = GetDogClassID(connString, dog.Dog_ID, show_Entry_Class_ID); dogInClass.Show_Final_Class_ID = GetEmptiestClassPart(classParts, dogsInPart); dogInClass.AddToPart = PartCount; retVal.Add(dogInClass); dogsInPart[PartCount - 1]++; } } else if (ownerDogsInClassList.Count == 2) { if (!FoundInList(retVal, ownerDogsInClassList[0].Dog_ID)) { Dogs dog1 = new Dogs(connString, ownerDogsInClassList[0].Dog_ID); DogsInClass dogInClass1 = new DogsInClass(); dogInClass1.Dog = dog1; dogInClass1.Dog_Class_ID = GetDogClassID(connString, dog1.Dog_ID, show_Entry_Class_ID); dogInClass1.Show_Final_Class_ID = NextPart(classParts); dogInClass1.AddToPart = PartCount; retVal.Add(dogInClass1); dogsInPart[PartCount - 1]++; } if (!FoundInList(retVal, ownerDogsInClassList[1].Dog_ID)) { Dogs dog2 = new Dogs(connString, ownerDogsInClassList[1].Dog_ID); DogsInClass dogInClass2 = new DogsInClass(); dogInClass2.Dog = dog2; dogInClass2.Dog_Class_ID = GetDogClassID(connString, dog2.Dog_ID, show_Entry_Class_ID); dogInClass2.Show_Final_Class_ID = NextPart(classParts); dogInClass2.AddToPart = PartCount; retVal.Add(dogInClass2); dogsInPart[PartCount - 1]++; } } else { foreach (Dogs ownerDog in ownerDogsInClassList) { if (!FoundInList(retVal, ownerDog.Dog_ID)) { Dogs dog = new Dogs(connString, ownerDog.Dog_ID); DogsInClass dogInClass = new DogsInClass(); dogInClass.Dog = dog; dogInClass.Dog_Class_ID = GetDogClassID(connString, dog.Dog_ID, show_Entry_Class_ID); dogInClass.Show_Final_Class_ID = NextPart(classParts); dogInClass.AddToPart = PartCount; retVal.Add(dogInClass); dogsInPart[PartCount - 1]++; } } } } } } catch (Exception ex) { throw ex; } return(retVal); }