// Car public CarRecord TryGetCarByVin(string vin) { VinEcvRecord vinEcv; return(EcvsByVin.TryGetEqual(new VinEcvRecord { Vin = vin }, out vinEcv) ? TryGetCarByEcv(vinEcv.Ecv) : null); }
// Returns true if added new car. public bool AddOrUpdateCar(CarRecord selectedCar) { bool carExists = false; var existingCarVin = TryGetCarByEcv(selectedCar.Ecv)?.Vin; VinEcvRecord vinEcv = null; if (existingCarVin != null) { //selectedCar.Vin = existingCarVin; //existingCarVin = selectedCar.Vin; carExists = true; } else { if (EcvsByVin.TryGetEqual(new VinEcvRecord { Vin = selectedCar.Vin }, out vinEcv)) { //selectedCar.Ecv = vinEcv.Ecv; carExists = true; } } // ak menim klucove atributy if (carExists) { if (existingCarVin != null && !selectedCar.Vin.Equals(existingCarVin)) { // ak menim vin a najdem auto podla ecv TryDeleteCarByEcv(selectedCar.Ecv); // zmazem auto podla ecv // pridam nove auto carExists = false; } else if (vinEcv != null && !selectedCar.Ecv.Equals(vinEcv.Ecv)) { // ak menim ecv a najdem auto podla vin TryDeleteCarByVin(selectedCar.Vin); // zmazem auto podla vin // pridam nove auto carExists = false; } } if (!carExists) { bool addedVinEcv = EcvsByVin.Add(new VinEcvRecord { Vin = selectedCar.Vin, Ecv = selectedCar.Ecv }, updateIfExists: false); //Console.WriteLine("Nenaslo take auto"); Debug.Assert(addedVinEcv); } bool added = CarsByEcv.Add(selectedCar, updateIfExists: true); Debug.Assert(added == !carExists); //Console.WriteLine("Pridane do ECV-VIN tabulky"); return(added); }