private void RetrieveAndPersistAllLanguagesForThisVin(string vin) { List <string> requiredNativeLangCodes = new List <string>(); foreach (SupportedLanguage value in Enum.GetValues(typeof(SupportedLanguage))) { CharacteristicsLanguageMapper mapper = new CharacteristicsLanguageMapper( VinChecker.GetManufacturer(vin)); string nativeLangValue = mapper.GetSpecificCode(value); if (!requiredNativeLangCodes.Contains(nativeLangValue)) { requiredNativeLangCodes.Add(nativeLangValue); } } foreach (string code in requiredNativeLangCodes) { IVendorCharacteristicsProvider provider = VendorCharacteristicsProviderFactory.Create( VinChecker.GetManufacturer(vin)); VehicleCharacteristics chars = provider.GetByVin(vin, code); PersistVehicleCharacteristics(chars); } }
private void PersistVehicleCharacteristics(VehicleCharacteristics chars) { VehicleCharacteristicsEntity entity = VehicleCharacteristicsAssembler.FromDomainObjectToEntity(chars); using (VTSDatabase database = new VTSDatabase()) { database.VehicleCharacteristics.Add(entity); try { database.SaveChanges(); } catch (DbEntityValidationException e) { string result = String.Empty; foreach (DbEntityValidationResult eve in e.EntityValidationErrors) { string entityTypename = eve.Entry.Entity.GetType().Name; string errorString = String.Empty; foreach (DbValidationError error in eve.ValidationErrors) { errorString = error.PropertyName + " : " + error.ErrorMessage; } result = String.Format("{0} | {1}", result, entityTypename + " -> " + errorString); } throw new Exception(result); } } }
public VehicleCharacteristics GetVehicleCharacteristicsForVin( string vin, SupportedLanguage preferredLanguage) { CharacteristicsLanguageMapper mapper = new CharacteristicsLanguageMapper( VinChecker.GetManufacturer(vin)); string langCode = mapper.GetSpecificCode(preferredLanguage); // 1. check our database VehicleCharacteristics charsFromDatabase = GetExactMatchFromDatabase(vin, langCode); if (charsFromDatabase != null) { return(charsFromDatabase); } // 2. Do we have anything at all for this vin? bool haveAnything = DoWeHaveAnythingForThisVin(vin); if (haveAnything) { RetrieveAndPersistAllLangsWeDoNotHaveYetForThisVin(vin); } else { RetrieveAndPersistAllLanguagesForThisVin(vin); } // 3. Get best match return(GetBestMatchFromOurDatabase(vin, langCode)); }
public VehicleInfoRecognizer( string vin, VehicleCharacteristics characteristics) { if (characteristics == null) { throw new ArgumentNullException("characteristics"); } this.characteristics = characteristics; this.vin = vin; }
private void RetrieveAndPersistAllLangsWeDoNotHaveYetForThisVin(string vin) { IList <SupportedLanguage> langsWeLackForThisVin = GetLangsWeDoNotHaveForVin(vin); foreach (SupportedLanguage language in langsWeLackForThisVin) { IVendorCharacteristicsProvider provider = VendorCharacteristicsProviderFactory.Create( VinChecker.GetManufacturer(vin)); CharacteristicsLanguageMapper mapper = new CharacteristicsLanguageMapper(VinChecker.GetManufacturer(vin)); VehicleCharacteristics chars = provider.GetByVin(vin, mapper.GetSpecificCode(language)); PersistVehicleCharacteristics(chars); } }