public static List <dynamic> CreatListOfWorkAdressPersonInputDTO(List <dynamic> adresssListWork) { var resListAdress = new List <dynamic>(); foreach (var adressWork in adresssListWork) { var workPhone = LoadFromOracle.FindWorkPhone(adressWork.ID); var adW = new AdressInputDTO() { Personnummer = adressWork.PERSNR.ToString(), GatuadressInput = new GatuadressInputDTO() { AdressRad1 = adressWork.GADR, Postnummer = adressWork.POSTNR, Stad = adressWork.ORT }, systemId = $"DB{adressWork.KSTNR}{adressWork.KSTTYP}", uppdateradDatum = DateTime.Now.ToString(DateTimeFormat), uppdateradAv = "PSE", skapadDatum = DateTime.Now.ToString(DateTimeFormat), skapadAv = "PSE", AdressVariant = adressWork.ADRTYP == "U" ? "Adress Arbete" : "LeveransAdress" }; resListAdress.Add(adW); foreach (var phone in workPhone) { var adTel = new AdressInputDTO { Personnummer = adressWork.PERSNR.ToString(), TelefonInput = new TelefonInputDTO() { Telefonnummer = phone.TELNR }, systemId = $"DB{phone.KSTNR}{phone.KSTNRKSTTYP}", uppdateradDatum = DateTime.Now.ToString(DateTimeFormat), uppdateradAv = "PSE", skapadDatum = DateTime.Now.ToString(DateTimeFormat), skapadAv = "PSE", AdressVariant = phone.TELTYP == 10 ? "Telefon Arbete" : "Mobil Arbete" }; resListAdress.Add(adTel); } } return(resListAdress); }
public static async Task SendDataToResultatenhetServiceByKstnr(IEnumerable <long> kstnrList) { var resList = new List <ResultatenhetInputDTO>(); var slitList = Split <long>(kstnrList); foreach (var sublist in slitList) { var subOrganisationsList = LoadFromOracle.FindResultatenheterById(sublist); resList.AddRange(from org in subOrganisationsList where org.UPPL_DATUM != null select new ResultatenhetInputDTO() { OrganisationsId = "0", KostnadsstalleNr = org.KSTNR, Namn = org.FNAMN + " " + org.ENAMN, Typ = org.KSTTYP, systemId = $"DB{org.KSTNR}{org.KSTTYP}", uppdateradDatum = DateTime.Now.ToString(DateTimeFormat), uppdateradAv = "PSE", skapadDatum = org.UPPL_DATUM.ToString(DateTimeFormat), skapadAv = "PSE" }); } var stopWatch = new Stopwatch(); stopWatch.Start(); Console.WriteLine("Start -- SendDataToResultatenhetService " + resList.Count); await CallOdlService.Send(resList, "/api/Organisation/resultatenhet"); stopWatch.Stop(); var ts = stopWatch.Elapsed; string elapsedTime = $"{ts.Hours:00}:{ts.Minutes:00}:{ts.Seconds:00}.{ts.Milliseconds / 10:00}"; Console.WriteLine("SendDataToResultatenhetService"); Console.WriteLine("Time to save " + resList.ToList().Count() + " Organisation " + elapsedTime); Console.WriteLine("End -- SendDataToResultatenhetService"); }
static void Main(string[] args) { Console.WriteLine("Start"); var kstnrList = new List <long>(); //Start Load is based on all active persons/user or how many you chose to load. var persons = LoadFromOracle.FindAllActivePersons(); Console.WriteLine("Start -- Personer " + persons.Count); kstnrList.AddRange(persons.Select(org => org.KSTNR).Cast <long>()); Console.WriteLine("Start -- kstnrList " + kstnrList.Count); kstnrList = kstnrList.GroupBy(x => x).Select(g => g.First()).ToList(); Console.WriteLine("After distinct -- kstnrList " + kstnrList.Count); persons = persons.GroupBy(x => x.PERSNR).Select(g => g.First()).ToList(); Console.WriteLine("After distinct -- Personer " + persons.Count); //Tmp solution to avoid oracle limitaions max 999 items IN conditions.. var persNrSubLists = Split <long>(persons); //1.Start save all persons SavePerson.SendDataToPersonService(persons).ContinueWith(task => { task.Wait(); foreach (var sublist in persNrSubLists) { var subAdresssListHome = LoadFromOracle.FindHomeAdressPerson(sublist) as List <dynamic>; var subAdresssListWork = LoadFromOracle.FindWorkAdressPerson(sublist) as List <dynamic>; //if (subAdresssListWork != null) // kstnrList.AddRange(subAdresssListWork.Select(org => org.ID).Cast<long>()); var adressInputHomeDTOList = SaveAdress.CreatListOHomeAdressPersonInputDTO(subAdresssListHome); var adressInputWorkDTOList = SaveAdress.CreatListOfWorkAdressPersonInputDTO(subAdresssListWork); SaveAdress.SendToOdlPerson(adressInputHomeDTOList); SaveAdress.SendToOdlPerson(adressInputWorkDTOList); //2.Save all org related to the persons SaveResultatenhet.SendDataToResultatenhetServiceByKstnr(kstnrList).ContinueWith(task2 => { task2.Wait(); foreach (var kstnr in kstnrList) { var kstNrAdressList = LoadFromOracle.FindResultatEnhetAdress(kstnr); var adressInputOrgDTOList = SaveAdress.CreatListOfAdressResultatEnheterInputDTO(kstNrAdressList); SaveAdress.SendToOdlOrg(adressInputOrgDTOList); } }); SaveAvtal.AvtalsService(sublist, kstnrList); } //var kstnrNrSubLists = Split<long>(kstnrList); //foreach (var subkstnrList in kstnrNrSubLists) //{ //} }); Console.WriteLine("Press any key to exit."); Console.ReadKey(); }