public bool CreateBuilding(Building building) { //Building already exists if (Enumerable.Any <Building>(_buildingRepository.Buildings(), b => b.Address.City == building.Address.City && b.Address.Country == building.Address.Country && b.Address.State == building.Address.State && b.Address.StreetName == building.Address.StreetName && b.Address.Suffix == building.Address.Suffix && b.Address.ZipCode == building.Address.ZipCode && b.Address.HouseNumber == building.Address.HouseNumber)) { return(false); } var halls = building.Halls; foreach (Hall h in halls) { for (int i = h.HallOpeningHours.Count - 1; i >= 0; i--) { var repoOpeningHours = Enumerable.FirstOrDefault <OpeningHours>(_hallManager.OpeningHours(), repOh => repOh.Day == h.HallOpeningHours[i].OpeningHours.Day && repOh.OpeningTime == h.HallOpeningHours[i].OpeningHours.OpeningTime && repOh.ClosingTime == h.HallOpeningHours[i].OpeningHours.ClosingTime); if (repoOpeningHours != null) { h.HallOpeningHours.RemoveAt(i); h.HallOpeningHours.Add(new HallOpeningHours() { HallId = h.HallId, OpeningHoursId = repoOpeningHours.OpeningHoursId }); } } } return(_buildingRepository.CreateBuilding(building)); }