private static void FetchData(string Day) { var connection = ConfigurationManager.ConnectionStrings["PostListe"].ConnectionString; using (SqlConnection db = new SqlConnection(connection)) { db.Open(); string Url = "https://postliste.porsgrunn.kommune.no/api/postliste/" + Day + "/" + Day + "/"; Console.WriteLine("Importing data from: " + Url); //string Url = "https://postliste.porsgrunn.kommune.no/api/postliste/2018-04-12/2018-04-12/"; HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(Url); httpWebRequest.Method = WebRequestMethods.Http.Get; httpWebRequest.Accept = "application/json"; string JsonResponse; var response = (HttpWebResponse)httpWebRequest.GetResponse(); using (var sr = new StreamReader(response.GetResponseStream())) { JsonResponse = sr.ReadToEnd(); } if (JsonResponse.Length > 100) { Console.WriteLine("Response contains data"); //string Date = DateTime.Now.AddDays(-4).ToString("yyyy-MM-ddT00:00:00"); //Date = Date.Replace('.', ':'); string Date = Day + "T00:00:00"; Console.WriteLine(Date); JsonResponse = JsonResponse.Replace("\"Extensions\": {}", "\"Extensions\": null"); Dictionary <string, object> header = Newtonsoft.Json.JsonConvert.DeserializeObject <Dictionary <string, object> >(JsonResponse); Dictionary <string, object> responsData = Newtonsoft.Json.JsonConvert.DeserializeObject <Dictionary <string, object> >(header["response"].ToString()); Dictionary <string, object> responsData1 = Newtonsoft.Json.JsonConvert.DeserializeObject <Dictionary <string, object> >(responsData[Date.ToString()].ToString()); Console.WriteLine("Utgående post"); //Sjekke om JsonResponse inneholder utgående post if (JsonResponse.Contains("\"U\": [") == true) { string Retning = "U"; List <PostListeClass> Utmail = Newtonsoft.Json.JsonConvert.DeserializeObject <List <PostListeClass> >(responsData1["U"].ToString()); int UtMailArrayCounter = 0; foreach (PostListeClass email in Utmail) { Console.WriteLine("Sak"); if (email.SakKontaktEpost == null) { email.SakKontaktEpost = "null"; } SqlCommand InsertSak = new SqlCommand(@"INSERT INTO [dbo].[PostListeSak] ([EksternId] ,[Retning] ,[Avdeling] ,[SakTittel] ,[SakNr] ,[SakId] ,[Tittel] ,[DokumentNr] ,[LopeNr] ,[DokumentDato] ,[JournalDato] ,[PubliseringsDato] ,[SakKontaktNavn] ,[SakKontaktEpost]) Values ( @EksternId ,'Utgående' ,@Avdeling ,@SakTittel ,@SakNr ,@SakId ,@Tittel ,@DokumentNr ,@LopeNr ,@DokumentDato ,@JournalDato ,@PubliseringsDato ,@SakKontaktNavn ,@SakKontaktEpost )", db); InsertSak.Parameters.AddWithValue("@EksternId", email.Id); InsertSak.Parameters.AddWithValue("@Avdeling", email.Avdeling); InsertSak.Parameters.AddWithValue("@SakTittel", email.SakTittel); InsertSak.Parameters.AddWithValue("@SakNr", email.SakNr); InsertSak.Parameters.AddWithValue("@SakId", email.SakId); InsertSak.Parameters.AddWithValue("@Tittel", email.Tittel); InsertSak.Parameters.AddWithValue("@DokumentNr", email.DokumentNr); InsertSak.Parameters.AddWithValue("@LopeNr", email.LopeNr); InsertSak.Parameters.AddWithValue("@DokumentDato", email.DokumentDato); InsertSak.Parameters.AddWithValue("@JournalDato", email.JournalDato); InsertSak.Parameters.AddWithValue("@PubliseringsDato", email.PubliseringsDato); InsertSak.Parameters.AddWithValue("@SakKontaktNavn", email.SakKontaktNavn); InsertSak.Parameters.AddWithValue("@SakKontaktEpost", email.SakKontaktEpost); InsertSak.ExecuteNonQuery(); Console.WriteLine(email.Id); Console.WriteLine(email.SakTittel); Console.WriteLine(email.Avdeling); //Avsendere if (email.Avsendere != null) { Console.WriteLine("Avsendere"); foreach (object Avsender in email.Avsendere) { if (Avsender != null) { Console.WriteLine(email.SakNr); SqlCommand insertAvsender = new SqlCommand(@" INSERT INTO [dbo].[PostListeKommunikasjon] ([SakEksternId] ,[KommunikasjonsType] ,[Navn]) VALUES (@SakEksternId ,@KommunikasjonsType ,@Navn)", db); insertAvsender.Parameters.AddWithValue("@SakEksternId", email.Id); insertAvsender.Parameters.AddWithValue("@KommunikasjonsType", "Avsender"); if (Avsender == null) { insertAvsender.Parameters.AddWithValue("@Navn", "NULL"); } else { insertAvsender.Parameters.AddWithValue("@Navn", Avsender); } insertAvsender.ExecuteNonQuery(); Console.WriteLine("Avsender = " + Avsender.ToString()); } else { SqlCommand insertAvsender = new SqlCommand(@" INSERT INTO [dbo].[PostListeKommunikasjon] ([SakEksternId] ,[KommunikasjonsType] ,[Navn]) VALUES (@SakEksternId ,@KommunikasjonsType ,@Navn)", db); insertAvsender.Parameters.AddWithValue("@SakEksternId", email.Id); insertAvsender.Parameters.AddWithValue("@KommunikasjonsType", "Avsender"); insertAvsender.Parameters.AddWithValue("@Navn", email.Avdeling); insertAvsender.ExecuteNonQuery(); } } } //Mottakere if (email.Mottakere != null) { Console.WriteLine("Mottakere"); foreach (object Mottaker in email.Mottakere) { string MottakerClean = ""; if (Mottaker != null) { Console.WriteLine("Mottaker = " + Mottaker.ToString()); MottakerClean = Mottaker.ToString().Replace("'", ""); } else { Console.WriteLine("Mottaker = " + email.Avdeling.ToString()); } SqlCommand insertMottaker = new SqlCommand(@" INSERT INTO [dbo].[PostListeKommunikasjon] ([SakEksternId] ,[KommunikasjonsType] ,[Navn]) VALUES (@SakEksternId ,@KommunikasjonsType ,@Navn)", db); insertMottaker.Parameters.AddWithValue("@SakEksternId", email.Id); insertMottaker.Parameters.AddWithValue("@KommunikasjonsType", "Mottaker"); insertMottaker.Parameters.AddWithValue("@Navn", MottakerClean); insertMottaker.ExecuteNonQuery(); } } //Dokumenter if (email.Dokumenter != null) { Console.WriteLine("Dokumenter"); int DokumentArrayCount = 0; foreach (Dokumenter docs in email.Dokumenter) { SqlCommand insertDokument = new SqlCommand(@" INSERT INTO [dbo].[PostListeDokumenter] ([SakEksternId] ,[DokumentId] ,[DokumentTittel] ,[Filendelse] ,[URL]) VALUES (@SakEksternId ,@DokumentId ,@DokumentTittel ,@Filendelse ,@Url)", db); insertDokument.Parameters.AddWithValue("@SakEksternId", email.Id); insertDokument.Parameters.AddWithValue("@DokumentId", docs.Id); insertDokument.Parameters.AddWithValue("@DokumentTittel", docs.Tittel); insertDokument.Parameters.AddWithValue("@Filendelse", docs.Filendelse); insertDokument.Parameters.AddWithValue("@Url", "https://postliste.porsgrunn.kommune.no/api/postliste/" + Day + "/_//" + Retning + "/" + UtMailArrayCounter + "/" + DokumentArrayCount); insertDokument.ExecuteNonQuery(); Console.WriteLine("ID = " + docs.Id); Console.WriteLine("Tittel = " + docs.Tittel); Console.WriteLine("Filendelse = " + docs.Filendelse); Console.WriteLine("Offentlig = " + docs.Offentlig); Console.WriteLine("Tilgjengelig = " + docs.Tilgjengelig); DokumentArrayCount = DokumentArrayCount + 1; } } UtMailArrayCounter = UtMailArrayCounter + 1; } } else { Console.WriteLine("Ingen utgående post"); } Console.WriteLine("\n"); db.Close(); db.Open(); Console.WriteLine("\n\n\n"); Console.WriteLine("Inngående post"); Console.WriteLine("\n\n\n"); if (JsonResponse.Contains("\"I\": [") == true) { string Retning = "I"; List <PostListeClass> Innmail = Newtonsoft.Json.JsonConvert.DeserializeObject <List <PostListeClass> >(responsData1["I"].ToString()); int MailArrayCounter = 0; foreach (PostListeClass email in Innmail) { Console.WriteLine("Sak"); if (email.SakKontaktEpost == null) { email.SakKontaktEpost = "null"; } SqlCommand InsertSak = new SqlCommand(@"INSERT INTO [dbo].[PostListeSak] ([EksternId] ,[Retning] ,[Avdeling] ,[SakTittel] ,[SakNr] ,[SakId] ,[Tittel] ,[DokumentNr] ,[LopeNr] ,[DokumentDato] ,[JournalDato] ,[PubliseringsDato] ,[SakKontaktNavn] ,[SakKontaktEpost]) Values ( @EksternId ,'Inngående' ,@Avdeling ,@SakTittel ,@SakNr ,@SakId ,@Tittel ,@DokumentNr ,@LopeNr ,@DokumentDato ,@JournalDato ,@PubliseringsDato ,@SakKontaktNavn ,@SakKontaktEpost )", db); InsertSak.Parameters.AddWithValue("@EksternId", email.Id); InsertSak.Parameters.AddWithValue("@Avdeling", email.Avdeling); InsertSak.Parameters.AddWithValue("@SakTittel", email.SakTittel); InsertSak.Parameters.AddWithValue("@SakNr", email.SakNr); InsertSak.Parameters.AddWithValue("@SakId", email.SakId); InsertSak.Parameters.AddWithValue("@Tittel", email.Tittel); InsertSak.Parameters.AddWithValue("@DokumentNr", email.DokumentNr); InsertSak.Parameters.AddWithValue("@LopeNr", email.LopeNr); InsertSak.Parameters.AddWithValue("@DokumentDato", email.DokumentDato); InsertSak.Parameters.AddWithValue("@JournalDato", email.JournalDato); InsertSak.Parameters.AddWithValue("@PubliseringsDato", email.PubliseringsDato); InsertSak.Parameters.AddWithValue("@SakKontaktNavn", email.SakKontaktNavn); InsertSak.Parameters.AddWithValue("@SakKontaktEpost", email.SakKontaktEpost); InsertSak.ExecuteNonQuery(); Console.WriteLine(email.Id); Console.WriteLine(email.SakTittel); Console.WriteLine(email.Avdeling); //Avsendere if (email.Avsendere != null) { Console.WriteLine("Avsendere"); foreach (object Avsender in email.Avsendere) { if (Avsender != null) { Console.WriteLine(email.SakNr); SqlCommand insertAvsender = new SqlCommand(@" INSERT INTO [dbo].[PostListeKommunikasjon] ([SakEksternId] ,[KommunikasjonsType] ,[Navn]) VALUES (@SakEksternId ,@KommunikasjonsType ,@Navn)", db); insertAvsender.Parameters.AddWithValue("@SakEksternId", email.Id); insertAvsender.Parameters.AddWithValue("@KommunikasjonsType", "Avsender"); if (Avsender == null) { insertAvsender.Parameters.AddWithValue("@Navn", "NULL"); } else { insertAvsender.Parameters.AddWithValue("@Navn", Avsender); } insertAvsender.ExecuteNonQuery(); Console.WriteLine("Avsender = " + Avsender.ToString()); } else { SqlCommand insertAvsender = new SqlCommand(@" INSERT INTO [dbo].[PostListeKommunikasjon] ([SakEksternId] ,[KommunikasjonsType] ,[Navn]) VALUES (@SakEksternId ,@KommunikasjonsType ,@Navn)", db); insertAvsender.Parameters.AddWithValue("@SakEksternId", email.Id); insertAvsender.Parameters.AddWithValue("@KommunikasjonsType", "Avsender"); insertAvsender.Parameters.AddWithValue("@Navn", email.Avdeling); insertAvsender.ExecuteNonQuery(); } } } //Mottakere if (email.Mottakere != null) { Console.WriteLine("Mottakere"); foreach (object Mottaker in email.Mottakere) { string MottakerClean = ""; if (Mottaker != null) { Console.WriteLine("Mottaker = " + Mottaker.ToString()); MottakerClean = Mottaker.ToString().Replace("'", ""); } else { Console.WriteLine("Mottaker = " + email.Avdeling.ToString()); } SqlCommand insertMottaker = new SqlCommand(@" INSERT INTO [dbo].[PostListeKommunikasjon] ([SakEksternId] ,[KommunikasjonsType] ,[Navn]) VALUES (@SakEksternId ,@KommunikasjonsType ,@Navn)", db); insertMottaker.Parameters.AddWithValue("@SakEksternId", email.Id); insertMottaker.Parameters.AddWithValue("@KommunikasjonsType", "Mottaker"); insertMottaker.Parameters.AddWithValue("@Navn", MottakerClean); insertMottaker.ExecuteNonQuery(); } } //Dokumenter if (email.Dokumenter != null) { Console.WriteLine("Dokumenter"); int DokumentArrayCount = 0; foreach (Dokumenter docs in email.Dokumenter) { SqlCommand insertDokument = new SqlCommand(@" INSERT INTO [dbo].[PostListeDokumenter] ([SakEksternId] ,[DokumentId] ,[DokumentTittel] ,[Filendelse] ,[URL]) VALUES (@SakEksternId ,@DokumentId ,@DokumentTittel ,@Filendelse ,@Url)", db); insertDokument.Parameters.AddWithValue("@SakEksternId", email.Id); insertDokument.Parameters.AddWithValue("@DokumentId", docs.Id); insertDokument.Parameters.AddWithValue("@DokumentTittel", docs.Tittel); insertDokument.Parameters.AddWithValue("@Filendelse", docs.Filendelse); insertDokument.Parameters.AddWithValue("@Url", "https://postliste.porsgrunn.kommune.no/api/postliste/" + Day + "/_//" + Retning + "/" + MailArrayCounter + "/" + DokumentArrayCount); insertDokument.ExecuteNonQuery(); Console.WriteLine("ID = " + docs.Id); Console.WriteLine("Tittel = " + docs.Tittel); Console.WriteLine("Filendelse = " + docs.Filendelse); Console.WriteLine("Offentlig = " + docs.Offentlig); Console.WriteLine("Tilgjengelig = " + docs.Tilgjengelig); DokumentArrayCount++; } } Console.WriteLine("\n"); MailArrayCounter++; } } else { Console.WriteLine("Ingen inngående post"); } } else { Console.WriteLine("Empty response"); } } }