static void Main(string[] args) { string connectionString = ConfigurationManager.AppSettings["postgres"]; //string sqlQuery = @"Select * from export.dotacejson;"; var dotaceService = new DotaceService(); string sqlCursor = @"DECLARE export_cur CURSOR FOR Select * from dotace.dotace;"; using (var connection = new NpgsqlConnection(connectionString)) { connection.Open(); using (var transaction = connection.BeginTransaction()) { connection.Execute(sqlCursor); //var dotaceExport = connection.Query<ExportDotace>(sqlQuery); while (true) { List <ExportDotace> dotaceExport = connection.Query <ExportDotace>("FETCH 1000 FROM export_cur;").AsList(); if (dotaceExport.Count == 0) { break; } var dotaceList = new List <Dotace>(); foreach (var record in dotaceExport) { string constructedId = record.IdDotace; constructedId = Devmasters.TextUtil.NormalizeToURL(constructedId); Dotace dotace = JsonConvert.DeserializeObject <Dotace>(record.Data); dotace.IdDotace = constructedId; //dotace.Prijemce.Ico = FullIcoFix(dotace); //dotace.CalculateTotals(); moved to bulksave dotaceList.Add(dotace); } bool anyErrorDuringImport = dotaceService.BulkSave(dotaceList); if (anyErrorDuringImport) { System.Console.WriteLine($"Error during import."); } } transaction.Commit(); } } }
internal static Util.Cache.CouchbaseCacheManager <Analytics.StatisticsSubjectPerYear <Statistics.Dotace>, Firma> DotaceCache() { var cache = Util.Cache.CouchbaseCacheManager <Analytics.StatisticsSubjectPerYear <Statistics.Dotace>, Firma> .GetSafeInstance("Firma_DotaceStatistics", (firma) => Dotace.Create(firma), TimeSpan.FromHours(12), System.Configuration.ConfigurationManager.AppSettings["CouchbaseServers"].Split(','), System.Configuration.ConfigurationManager.AppSettings["CouchbaseBucket"], System.Configuration.ConfigurationManager.AppSettings["CouchbaseUsername"], System.Configuration.ConfigurationManager.AppSettings["CouchbasePassword"], f => f.ICO); return(cache); }
//private static readonly ILog Logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); //private static Devmasters.Core.Logging.Logger logger = new Devmasters.Core.Logging.Logger("HlidacStatu.Downloader"); static void Main(string[] args) { XmlConfigurator.Configure(); string path = @"d:\Hlidac\dotace\output.csv"; //string pathw = @"d:\Hlidac\dotace\ids.csv"; DotaceService ds = new DotaceService(); //using (StreamWriter streamWriter = new StreamWriter(pathw)) int lineNbr = 0; using (StreamReader stream = new StreamReader(path)) using (var csv = new CsvReader(stream)) { csv.Configuration.Delimiter = ","; csv.Configuration.Encoding = Encoding.UTF8; csv.Read(); csv.ReadHeader(); //List<Dotace> dotaceList = new List<Dotace>(); while (csv.Read()) { //streamWriter.WriteLine(csv.GetField("idDotace")); Console.WriteLine(lineNbr++); try { Dotace dotace = ds.Get(csv.GetField("idDotace")); Rozhodnuti rozhodnuti = new Rozhodnuti(); if (!csv.GetField <bool>("rozhodnutiRefundaceIndikator")) //refundace není dotace { rozhodnuti.Id = csv.GetField("idRozhodnuti"); rozhodnuti.Datum = DateTime.Parse($"{csv.GetField<int?>("rozhodnutiRokRozhodnuti")}-1-1"); rozhodnuti.CastkaPozadovana = csv.GetField <float>("rozhodnutiCastkaPozadovana"); rozhodnuti.CastkaRozhodnuta = csv.GetField <float>("rozhodnutiCastkaRozhodnuta"); rozhodnuti.JePujcka = csv.GetField <bool>("rozhodnutiNavratnostIndikator"); rozhodnuti.NazevPoskytovatele = csv.GetField("rozhodnutiDotacePoskytovatelNazev"); } DotacniProgram program = new DotacniProgram() { Id = csv.GetField("idOperacniProgram"), Nazev = csv.GetField("dotaceOperacniProgramNazev"), Kod = csv.GetField("dotaceOperacniProgramKod"), Url = string.IsNullOrWhiteSpace(csv.GetField("dotaceIriOperacniProgram")) ? csv.GetField("dotaceIriProgram") : csv.GetField("dotaceIriOperacniProgram") }; Prijemce prijemce = new Prijemce() { ObchodniJmeno = csv.GetField("prijemceObchodniJmeno"), JmenoPrijemce = csv.GetField("prijemceJmenoPrijemce"), Ico = NormalizeIco(csv.GetField("prijemceIco")), PrijemceObecNazev = csv.GetField("prijemceObecNazev"), PrijemceOkresNazev = csv.GetField("prijemceOkresNazev"), RokNarozeni = csv.GetField <int?>("prijemceRokNarozeni") }; if (dotace is null) { dotace = new Dotace() { IdDotace = $"CEDR-{csv.GetField("idDotace")}", DatumPodpisu = csv.GetField <DateTime?>("dotacePodpisDatum"), Rozhodnuti = new List <Rozhodnuti>() { rozhodnuti }, DotacniProgram = program, Prijemce = prijemce, DatumAktualizace = csv.GetField <DateTime?>("dotaceDTAktualizace"), KodProjektu = csv.GetField("dotaceProjektKod"), NazevProjektu = csv.GetField("dotaceProjektNazev"), IdProjektu = csv.GetField("dotaceProjektIdentifikator"), NazevZdroje = "CEDR", UrlZdroje = "http://cedropendata.mfcr.cz/c3lod/cedr/resource/Dotace/" + csv.GetField("idDotace"), }; } else { // kvůli idObdobi je zde duplicita if (dotace.Rozhodnuti.Any(r => r.Id == rozhodnuti.Id)) { continue; } dotace.Rozhodnuti.Add(rozhodnuti); } dotace.Save(); } catch (Exception ex) { Console.WriteLine(csv.GetField("idObdobi")); Console.WriteLine("error"); } } } }
//private static readonly ILog Logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); //private static Devmasters.Core.Logging.Logger logger = new Devmasters.Core.Logging.Logger("HlidacStatu.Downloader"); static void Main(string[] args) { XmlConfigurator.Configure(); string path = @"d:\Hlidac\dotace\dotInfo.json"; //string pathw = @"d:\Hlidac\dotace\names.csv"; DotaceService ds = new DotaceService(); //using (StreamWriter sw = File.AppendText(pathw)) using (StreamReader file = File.OpenText(path)) using (JsonTextReader reader = new JsonTextReader(file)) { //var serializer = new JsonSerializer(); int counter = 0; while (reader.Read()) { if (reader.TokenType == JsonToken.StartObject) { try { JObject o2 = (JObject)JToken.ReadFrom(reader); // Deserialize each object from the stream individually and process it //var data = serializer.Deserialize<playdata>(reader); //ProcessPlayData(playdata); if ((string)o2["type"] == "detail") { Console.WriteLine(counter++); } else { continue; } string dotaceId = $"DotInfo-{GetTabValue(o2, "tab1", "Identifikátor dot. / Kód IS")}"; // o2["data"]["tab1"]["data"].Where(jt => (string)jt["name"] == "Identifikátor dot. / Kód IS").Select(jt => (string)jt["value"]).FirstOrDefault(); Dotace dotace = ds.Get(dotaceId); Rozhodnuti rozhodnuti = new Rozhodnuti() { CastkaPozadovana = ParseValue(GetTabValue(o2, "tab1", "Částka požadovaná")), CastkaRozhodnuta = ParseValue(GetTabValue(o2, "tab1", "Částka schválená")), Datum = HlidacStatu.Lib.Validators.DateInText( RemoveWhiteSpaces(GetTabValue(o2, "tab1", "Datum vydání rozhodnutí") )), NazevPoskytovatele = GetTabValue(o2, "tab4", "Poskytovatel - Název OS"), IcoPoskytovatele = GetTabValue(o2, "tab4", "IČ poskytovatele") }; DotacniProgram program = new DotacniProgram() { Nazev = GetTabValue(o2, "tab1", "Účel dotace") }; Prijemce prijemce = new Prijemce() { ObchodniJmeno = GetTabValue(o2, "tab2", "Obchodní jméno"), JmenoPrijemce = GetTabValue(o2, "tab2", "Příjemce dotace - Jméno"), Ico = NormalizeIco(GetTabValue(o2, "tab2", "IČ účastníka / IČ zahraniční")), PrijemceObecNazev = GetTabValue(o2, "tab2", "Název obce / Doruč. pošta"), PrijemceOkresNazev = GetTabValue(o2, "tab2", "Název okresu"), RokNarozeni = HlidacStatu.Lib.Validators.DateInText( RemoveWhiteSpaces(GetTabValue(o2, "tab2", "Datum narození") ))?.Year, PSC = GetTabValue(o2, "tab2", "PSČ") }; if (dotace is null) { dotace = new Dotace() { IdDotace = dotaceId, DatumPodpisu = HlidacStatu.Lib.Validators.DateInText( RemoveWhiteSpaces(GetTabValue(o2, "tab1", "Datum vydání rozhodnutí"))), IdProjektu = dotaceId, NazevProjektu = GetTabValue(o2, "tab1", "Název dotace"), DotacniProgram = program, Prijemce = prijemce, Rozhodnuti = new List <Rozhodnuti>() { rozhodnuti }, NazevZdroje = "DotInfo", UrlZdroje = (string)o2["url"] }; } else { continue; //duplicitu přeskočit // kvůli idObdobi je zde duplicita //dotace.Rozhodnuti.Add(rozhodnuti); } dotace.Save(); } catch (Exception ex) { Console.WriteLine(ex); //throw; } } } } }