public RegistreringType1 Read(CprBroker.Schemas.PersonIdentifier uuid, LaesInputType input, Func <string, Guid> cpr2uuidFunc, out CprBroker.Schemas.QualityLevel?ql) { RegistreringType1 ret = null; if (IPartPerCallDataProviderHelper.CanCallOnline(uuid.CprNumber)) { // TODO: Shall we remove this explicit logging after integration of budget control? Admin.AddNewLog(System.Diagnostics.TraceEventType.Information, "KMD.Read", string.Format("Calling AS78207 with PNR <{0}>", uuid.CprNumber), null, null); var detailsResponse = new EnglishAS78207Response(CallAS78207(uuid.CprNumber)); Admin.AddNewLog(System.Diagnostics.TraceEventType.Information, "KMD.Read", string.Format("Calling AS78205 with PNR <{0}>", uuid.CprNumber), null, null); var addressResponse = CallAS78205(uuid.CprNumber); Admin.AddNewLog(System.Diagnostics.TraceEventType.Information, "KMD.Read", string.Format("Converting PNR <{0}>", uuid.CprNumber), null, null); var kmdResponse = new KmdResponse() { AS78205Response = addressResponse.InnerResponse, AS78207Response = detailsResponse.InnerResponse }; UuidCache cache = new UuidCache(); cache.FillCache(kmdResponse.RelatedPnrs); ret = kmdResponse.ToRegistreringType1(cache.GetUuid); } ql = CprBroker.Schemas.QualityLevel.Cpr; return(ret); }
public void FillCache_Null_Zero() { var cache = new UuidCache(); var ret = cache.FillCache(null); Assert.AreEqual(0, ret); }
public void FillCache_Exception_Propagated([Random(0, 1000, 5)] int count) { var pnrs = Utilities.RandomCprNumbers(count); var cache = new UuidCache() { GetUuidArrayMethod = (kjasdlk) => { throw new Exception("abcdefg"); } }; var ret = cache.FillCache(pnrs); }
public void FillCache_NullMethod_Exception([Random(0, 1000, 5)] int count) { var pnrs = Utilities.RandomCprNumbers(count); var cache = new UuidCache() { GetUuidArrayMethod = null }; var ret = cache.FillCache(pnrs); }
public void FillCache_FakeUuidMethod_ReturnsSameCount([Random(0, 1000, 5)] int count) { var pnrs = Utilities.RandomCprNumbers(count); var cache = new UuidCache() { GetUuidArrayMethod = (arr) => arr.Select(p => Guid.NewGuid() as Guid?).ToArray() }; var ret = cache.FillCache(pnrs); Assert.AreEqual(count, ret); }
public void FillCache_InvalidUuidCount_Zero([Random(10, 1000, 5)] int count) { var cache = new UuidCache() { GetUuidArrayMethod = (arr) => arr.Take(arr.Length - 1).Select(p => Guid.NewGuid() as Guid?).ToArray() }; var pnrs = Utilities.RandomCprNumbers(count); var sss = cache.GetUuidArrayMethod(pnrs); Assert.AreEqual(count - 1, sss.Count()); var ret = cache.FillCache(pnrs); Assert.AreEqual(0, ret); }
public RegistreringType1 Read(CprBroker.Schemas.PersonIdentifier uuid, LaesInputType input, Func <string, Guid> cpr2uuidFunc, out QualityLevel?ql) { ql = QualityLevel.Cpr; IndividualResponseType response = null; response = ExtractManager.GetPerson(uuid.CprNumber); if (response != null) { UuidCache cache = new UuidCache(); cache.FillCache(response.RelatedPnrs); return(response.ToRegistreringType1(cache.GetUuid)); } return(null); }
public RegistreringType1 Read(CprBroker.Schemas.PersonIdentifier uuid, LaesInputType input, Func <string, Guid> cpr2uuidFunc, out QualityLevel?ql) { ql = QualityLevel.Cpr; if (IPartPerCallDataProviderHelper.CanCallOnline(uuid.CprNumber)) { IndividualRequestType request = new IndividualRequestType(true, DataType.DefinedByTask, decimal.Parse(uuid.CprNumber)); IndividualResponseType response = this.GetResponse(request); UuidCache cache = new UuidCache(); cache.FillCache(response.RelatedPnrs); return(response.ToRegistreringType1(cpr2uuidFunc)); } else { return(null); } }
public RegistreringType1 Read(PersonIdentifier uuid, LaesInputType input, Func <string, Guid> cpr2uuidFunc, out QualityLevel?ql) { CprBroker.Schemas.Part.RegistreringType1 ret = null; if (IPartPerCallDataProviderHelper.CanCallOnline(uuid.CprNumber)) { EnsurePersonDataExists(uuid.CprNumber); } using (var dataContext = new DPRDataContext(this.ConnectionString)) { var db = PersonInfo.GetPersonInfo(dataContext, decimal.Parse(uuid.CprNumber)); if (db != null) { UuidCache cache = new UuidCache(); cache.FillCache(db.RelatedPnrs); ret = db.ToRegisteringType1(cache.GetUuid, dataContext); } } ql = QualityLevel.DataProvider; return(ret); }
public RegistreringType1 Read(PersonIdentifier uuid, LaesInputType input, Func <string, Guid> cpr2uuidFunc, out CprBroker.Schemas.QualityLevel?ql) { DateTime effectDate = DateTime.Now; ql = QualityLevel.DataProvider; using (var dataContext = new E_MDataContext(ConnectionString)) { dataContext.SetCitizenLoadOptions(); var dbCitizen = dataContext.Citizens .Where(cit => cit.PNR == decimal.Parse(uuid.CprNumber)) .FirstOrDefault(); if (dbCitizen != null) { var cache = new UuidCache(); cache.FillCache(dbCitizen.RelatedPnrs); return(dbCitizen.ToRegistreringType1(effectDate, cache.GetUuid)); } } return(null); }
public static void ConvertPersons(int batchSize) { Admin.LogFormattedSuccess("ExtractManager.ConvertPersons() started, batch size <{0}>", batchSize); List <Guid> succeeded = new List <Guid>(), failed = new List <Guid>(); using (var dataContext = new ExtractDataContext()) { var dataLoadOptions = new System.Data.Linq.DataLoadOptions(); dataLoadOptions.LoadWith <ExtractItem>(ei => ei.Extract); dataContext.LoadOptions = dataLoadOptions; var persons = ExtractPersonStaging.SelectTop(dataContext, batchSize); Admin.LogFormattedSuccess("ExtractManager.ConvertPersons() - <{0}> persons found", persons.Length); var conversionExtracts = ExtractConversion.CreateFromPersonStagings(persons); ExtractConversion.FillExtractItems(conversionExtracts, dataContext); // Preload UUIDs var pnrs = ExtractConversion.AllPNRs(conversionExtracts); var cache = new UuidCache(); cache.FillCache(pnrs); int personIndex = 0; foreach (var personGroup in conversionExtracts) { Admin.LogFormattedSuccess("ExtractManager.ConvertPersons() - converting persons from extract <{0}>", personGroup.Extract.ExtractId); foreach (var person in personGroup.Persons) { personIndex++; try { Admin.LogFormattedSuccess("ExtractManager.ConvertPersons() - processing PNR <{0}>, person <{1}> of <{2}>", person.ExtractPersonStaging.PNR, personIndex, persons.Length); var uuid = cache.GetUuid(person.ExtractPersonStaging.PNR); var response = Extract.ToIndividualResponseType(person.ExtractPersonStaging.Extract, person.ExtractItems.AsQueryable(), Constants.DataObjectMap); var oioPerson = response.ToRegistreringType1(cache.GetUuid); var personIdentifier = new Schemas.PersonIdentifier() { CprNumber = person.ExtractPersonStaging.PNR, UUID = uuid }; UpdateDatabase.UpdatePersonRegistration(personIdentifier, oioPerson); succeeded.Add(person.ExtractPersonStaging.ExtractPersonStagingId); Admin.LogFormattedSuccess("ExtractManager.ConvertPersons() - finished PNR <{0}>, person <{1}> of <{2}>", person.ExtractPersonStaging.PNR, personIndex, persons.Length); } catch (Exception ex) { failed.Add(person.ExtractPersonStaging.ExtractPersonStagingId); Admin.LogException(ex); } } } } // Delete the staging tables from a new data context to maximize performance using (var dataContext = new ExtractDataContext()) { var persons = dataContext.ExtractPersonStagings.Where(ep => succeeded.Contains(ep.ExtractPersonStagingId)); dataContext.ExtractPersonStagings.DeleteAllOnSubmit(persons); dataContext.SubmitChanges(); } Admin.LogFormattedSuccess("ExtractManager.ConvertPersons() ending, batch size: <{0}>, succeeded: <{1}>, failed: <{2}>", batchSize, succeeded.Count, failed.Count); }