Пример #1
0
        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");
                }
            }
        }