예제 #1
0
        public void SendDigitaltPåVegneAvIntegrasjon()
        {
            //Arrange
            const string testDepartementetAvsenderOrgnummer = "987656789";
            const string postenDatabehandlerOrgnummer       = "984661185";
            var          avsender = new Avsender(testDepartementetAvsenderOrgnummer);

            var databehandler = new Databehandler(postenDatabehandlerOrgnummer, DomeneUtility.GetAvsenderSertifikat());
            var forsendelse   = new Forsendelse(avsender, DomeneUtility.GetDigitalPostInfoEnkel(), DomeneUtility.GetDokumentpakkeUtenVedlegg(), Prioritet.Normal, Guid.NewGuid().ToString());
            var klientKonfig  = new Klientkonfigurasjon
            {
                MeldingsformidlerUrl = new Uri(Settings.Default.UrlMeldingsformidler),
                LoggXmlTilFil        = true
            };

            //Act
            var sdpKlient           = new SikkerDigitalPostKlient(databehandler, klientKonfig);
            var transportkvittering = sdpKlient.Send(forsendelse, true);


            //Assert
            Assert.IsNotNull(transportkvittering);
            var kvittering = HentKvitteringOgBekreft(sdpKlient, "Send digital paa vegne av", forsendelse);

            Assert.IsTrue(kvittering is Leveringskvittering, "Klarte ikke hente kvittering eller feilet kvittering");
        }
        public void OppretteForsendelse()
        {
            var hoveddokument = new Dokument(
                tittel: "Dokumenttittel",
                dokumentsti: "/Dokumenter/Hoveddokument.pdf",
                mimeType: "application/pdf",
                språkkode: "NO",
                filnavn: "filnavn"
                );

            var dokumentpakke = new Dokumentpakke(hoveddokument);

            var vedleggssti = "/Dokumenter/Vedlegg.pdf";
            var vedlegg     = new Dokument(
                tittel: "tittel",
                dokumentsti: vedleggssti,
                mimeType: "application/pdf",
                språkkode: "NO",
                filnavn: "filnavn");

            dokumentpakke.LeggTilVedlegg(vedlegg);

            Avsender avsender    = null; //Som initiert tidligere
            PostInfo postInfo    = null; //Som initiert tidligere
            var      forsendelse = new Forsendelse(avsender, postInfo, dokumentpakke);
        }
예제 #3
0
 /// <param name="avsender">
 ///     Ansvarlig avsender av forsendelsen. Dette vil i de aller fleste tilfeller være den offentlige
 ///     virksomheten som er ansvarlig for brevet som skal sendes.
 /// </param>
 /// <param name="postInfo">Informasjon som brukes av postkasseleverandør for å behandle den digitale posten.</param>
 /// <param name="dokumentpakke">Pakke med hoveddokument og ev. vedlegg som skal sendes.</param>
 /// <param name="konversasjonsId">
 ///     Sett en eksplisitt konversasjonsid. Dette er id som kan brukes for spore alle ledd i
 ///     opprettelse av et brev, og vil være i svar fra Meldingsformidler.
 /// </param>
 /// <param name="prioritet">Setter forsendelsens prioritet. Standard er Prioritet.Normal</param>
 /// <param name="språkkode">
 ///     Språkkode i henhold til ISO-639-1 (2 bokstaver). Brukes til å informere postkassen om hvilket
 ///     språk som benyttes, slik at varselet om mulig kan vises i riktig kontekst. Standard er NO.
 /// </param>
 /// <param name="mpcId">
 ///     Brukes til å skille mellom ulike kvitteringskøer for samme tekniske avsender. En forsendelse gjort
 ///     med en MPC Id vil kun dukke opp i kvitteringskøen med samme MPC Id. Standardverdi er "".
 /// </param>
 public Forsendelse(Avsender avsender, PostInfo postInfo, Dokumentpakke dokumentpakke, Guid konversasjonsId, Prioritet prioritet = Prioritet.Normal, string mpcId = "", string språkkode = "NO")
 {
     Avsender        = avsender;
     PostInfo        = postInfo;
     Dokumentpakke   = dokumentpakke;
     Prioritet       = prioritet;
     Språkkode       = språkkode;
     MpcId           = mpcId;
     KonversasjonsId = konversasjonsId;
 }
예제 #4
0
 public Forsendelse(Behandlingsansvarlig avsender, PostInfo postInfo,
                    Dokumentpakke dokumentpakke, Prioritet prioritet = Prioritet.Normal, string mpcId = "", string språkkode = "NO")
 {
     Avsender      = new Avsender(avsender.Organisasjonsnummer);
     PostInfo      = postInfo;
     Dokumentpakke = dokumentpakke;
     Prioritet     = prioritet;
     Språkkode     = språkkode;
     MpcId         = mpcId;
 }
예제 #5
0
        internal static Avsender GetAvsender()
        {
            if (_avsender != null)
            {
                return(_avsender);
            }

            var orgNrAvsender = new Organisasjonsnummer(Settings.Default.OrganisasjonsnummerAvsender);

            return(_avsender = new Avsender(orgNrAvsender));
        }
        public void Initier()
        {
            var orgnummerAvsender = new Organisasjonsnummer("123456789");
            var avsender          = new Avsender(orgnummerAvsender);

            var orgnummerDatabehandler = new Organisasjonsnummer("987654321");
            var avsendersertifikat     = new X509Certificate2();
            var databehandler          = new Databehandler(orgnummerDatabehandler, avsendersertifikat);

            avsender.Avsenderidentifikator = "Avsenderidentifikator.I.Organisasjon";
        }
예제 #7
0
        public void OpprettAvsenderOgBehandler()
        {
            var orgnummerAvsender = new Organisasjonsnummer("123456789");
            var avsender          = new Avsender(orgnummerAvsender);

            var orgnummerDatabehandler = new Organisasjonsnummer("987654321");
            var databehandler          = new Databehandler(orgnummerDatabehandler);

            //Hvis man har flere avdelinger innenfor samme organisasjonsnummer, har disse fått unike avsenderidentifikatorer, og kan settes på følgende måte:
            avsender.Avsenderidentifikator = "Avsenderidentifikator.I.Organisasjon";
        }
예제 #8
0
        /// <param name="avsender">
        ///     Ansvarlig avsender av forsendelsen. Dette vil i de aller fleste tilfeller være den offentlige
        ///     virksomheten som er ansvarlig for brevet som skal sendes.
        /// </param>
        /// <param name="postInfo">Informasjon som brukes av postkasseleverandør for å behandle den digitale posten.</param>
        /// <param name="dokumentpakke">Pakke med hoveddokument og ev. vedlegg som skal sendes.</param>
        /// <param name="konversasjonsId">
        ///     Sett en eksplisitt konversasjonsid. Dette er id som kan brukes for spore alle ledd i
        ///     opprettelse av et brev, og vil være i svar fra Meldingsformidler.
        /// </param>
        /// <param name="prioritet">Setter forsendelsens prioritet. Standard er Prioritet.Normal</param>
        /// <param name="språkkode">
        ///     Språkkode i henhold til ISO-639-1 (2 bokstaver). Brukes til å informere postkassen om hvilket
        ///     språk som benyttes, slik at varselet om mulig kan vises i riktig kontekst. Standard er NO.
        /// </param>
        /// <param name="mpcId">
        ///     Brukes til å skille mellom ulike kvitteringskøer for samme tekniske avsender. En forsendelse gjort
        ///     med en MPC Id vil kun dukke opp i kvitteringskøen med samme MPC Id. Standardverdi er "".
        /// </param>
        public Forsendelse(Avsender avsender, PostInfo postInfo, Dokumentpakke dokumentpakke, Guid konversasjonsId, Prioritet prioritet = Prioritet.Normal, string mpcId = "", string språkkode = "NO")
        {
            Avsender        = avsender;
            PostInfo        = postInfo;
            Dokumentpakke   = dokumentpakke;
            Prioritet       = prioritet;
            Språkkode       = språkkode;
            MpcId           = mpcId;
            KonversasjonsId = konversasjonsId;

            MottakerPersonIdentifikator = postInfo is FysiskPostInfo fysiskPostInfo ? fysiskPostInfo.Personidentifikator : (PostInfo.Mottaker as DigitalPostMottaker).Personidentifikator;
        }
예제 #9
0
        public void OpprettForsendelseMedUtvidelse()
        {
            var raw = "<?xml version=\"1.0\" encoding=\"utf-8\"?><lenke xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://begrep.difi.no/sdp/utvidelser/lenke\"><url>https://www.test.no</url><beskrivelse lang=\"nb\">This was raw string</beskrivelse></lenke>";

            MetadataDocument metadataDocument = new MetadataDocument("lenke.xml", "application/vnd.difi.dpi.lenke", raw);

            Avsender      avsender      = null; //Som initiert tidligere
            PostInfo      postInfo      = null; //Som initiert tidligere
            Dokumentpakke dokumentpakke = null; //Som initiert tidligere
            var           forsendelse   = new Forsendelse(avsender, postInfo, dokumentpakke)
            {
                MetadataDocument = metadataDocument
            };
        }
        private static Forsendelse GenererForsendelse(Avsender avsender, PostInfo postInfo)
        {
            ResourceUtility resourceUtility = new ResourceUtility("Difi.SikkerDigitalPost.Klient.Testklient.Resources");

            var hoveddokument = resourceUtility.ReadAllBytes(true, "Hoveddokument.pdf");
            var vedlegg       = resourceUtility.ReadAllBytes(true, "Vedlegg.txt");

            //Forsendelse
            var dokumentpakke =
                new Dokumentpakke(new Dokument("Sendt" + DateTime.Now, hoveddokument, "application/pdf", "NO",
                                               "OWASP TOP 10.pdf"));

            dokumentpakke.LeggTilVedlegg(new Dokument("Vedlegg", vedlegg, "text/plain", "NO", "Vedlegg.txt"));
            return(new Forsendelse(avsender, postInfo, dokumentpakke, Prioritet.Prioritert, MpcId, "NO"));
        }
예제 #11
0
        private static void SendPost(PostInfo postInfo)
        {
            /*
             * I dette eksemplet er det Posten som er den som produserer informasjon/brev/post som skal formidles (Avsender),
             * Posten som er databehandler, og det er Digipostkassen som skal motta meldingen.
             */

            Log.Debug(@"--- STARTER Å SENDE POST ---");

            /*
             * SETT OPP MOTTAKER OG INNSTILLINGER
             */

            var avsender = new Avsender(new Organisasjonsnummer(Settings.Default.DifiOrgNummer));

            var databehandler = new Databehandler(
                new Organisasjonsnummer(Settings.Default.DifiOrgNummer),
                Settings.Default.DifiSertifikatThumbprint);


            var forsendelse         = GenererForsendelse(avsender, postInfo);
            var klientkonfigurasjon = SettOppKlientkonfigurasjon();

            klientkonfigurasjon.AktiverLagringAvDokumentpakkeTilDisk(@"C:\Users\User\Downloads\");

            var sikkerDigitalPostKlient = new SikkerDigitalPostKlient(databehandler, klientkonfigurasjon);

            /**
             * SEND POST OG MOTTA KVITTERINGER
             */
            SendPost(sikkerDigitalPostKlient, forsendelse);

            Log.Debug(@"--- STARTER Å HENTE KVITTERINGER ---");

            HentKvitteringer(sikkerDigitalPostKlient);

            Console.WriteLine();
            Log.Debug(@"--- FERDIG Å SENDE POST OG MOTTA KVITTERINGER :) --- ");
            Console.ReadKey();
        }
        private static void SendPost()
        {
            /*
             * I dette eksemplet er det Posten som er den som produserer informasjon/brev/post som skal formidles (Avsender),
             * Posten som er databehandler, og det er Digipostkassen som skal motta meldingen.
             */

            Console.WriteLine(@"--- STARTER Å SENDE POST ---");

            /*
             * SETT OPP MOTTAKER OG INNSTILLINGER
             */
            var postInfo = GenererPostInfo(ErDigitalPostMottaker, ErNorskBrev);
            var avsender = new Avsender(Settings.Default.OrgnummerPosten);

            var databehandler = new Databehandler(Settings.Default.OrgnummerPosten,
                                                  Settings.Default.DatabehandlerSertifikatThumbprint);

            avsender.Avsenderidentifikator = "digipost";

            var forsendelse             = GenererForsendelse(avsender, postInfo);
            var klientkonfigurasjon     = SettOppKlientkonfigurasjon();
            var sikkerDigitalPostKlient = new SikkerDigitalPostKlient(databehandler, klientkonfigurasjon);


            /**
             * SEND POST OG MOTTA KVITTERINGER
             */
            SendPost(sikkerDigitalPostKlient, forsendelse);

            Console.WriteLine(@"--- STARTER Å HENTE KVITTERINGER ---");

            HentKvitteringer(sikkerDigitalPostKlient);

            Console.WriteLine();
            Console.WriteLine(@"--- FERDIG Å SENDE POST OG MOTTA KVITTERINGER :) --- ");
            Console.ReadKey();
        }
예제 #13
0
        private static void SendPost()
        {
            /*
             * I dette eksemplet er det Posten som er den som produserer informasjon/brev/post som skal formidles (Avsender),
             * Posten som er teknisk avsender, og det er Digipostkassen som skal motta meldingen.
             */

            Console.WriteLine("--- STARTER Å SENDE POST ---");

            /*
             * SETT OPP MOTTAKER OG INNSTILLINGER
             */
            PostkasseInnstillinger postkasseInnstillinger = PostkasseInnstillinger.GetPosten();
            var postInfo = GenererPostInfo(postkasseInnstillinger, ErDigitalPostMottaker, ErNorskBrev);
            var avsender = new Avsender(postkasseInnstillinger.OrgNummerBehandlingsansvarlig);

            var databehandler = new Databehandler(postkasseInnstillinger.OrgNummerDatabehandler, "8702F5E55217EC88CF2CCBADAC290BB4312594AC");

            avsender.Avsenderidentifikator = "digipost";

            var forsendelse             = GenererForsendelse(avsender, postInfo);
            var klientkonfigurasjon     = SettOppKlientkonfigurasjon();
            var sikkerDigitalPostKlient = new SikkerDigitalPostKlient(databehandler, klientkonfigurasjon);


            /**
             * SEND POST OG MOTTA KVITTERINGER
             */
            SendPost(sikkerDigitalPostKlient, forsendelse);

            Console.WriteLine("--- STARTER Å HENTE KVITTERINGER ---");

            HentKvitteringer(sikkerDigitalPostKlient);

            Console.WriteLine();
            Console.WriteLine("--- FERDIG Å SENDE POST OG MOTTA KVITTERINGER :) --- ");
            Console.ReadKey();
        }
예제 #14
0
 /// <param name="avsender">
 ///     Ansvarlig avsender av forsendelsen. Dette vil i de aller fleste tilfeller være den offentlige
 ///     virksomheten som er ansvarlig for brevet som skal sendes.
 /// </param>
 /// <param name="postInfo">Informasjon som brukes av postkasseleverandør for å behandle den digitale posten.</param>
 /// <param name="dokumentpakke">Pakke med hoveddokument og ev. vedlegg som skal sendes.</param>
 /// <param name="prioritet">Setter forsendelsens prioritet. Standard er Prioritet.Normal</param>
 /// <param name="språkkode">
 ///     Språkkode i henhold til ISO-639-1 (2 bokstaver). Brukes til å informere postkassen om hvilket
 ///     språk som benyttes, slik at varselet om mulig kan vises i riktig kontekst. Standard er NO.
 /// </param>
 /// <param name="mpcId">
 ///     Brukes til å skille mellom ulike kvitteringskøer for samme tekniske avsender. En forsendelse gjort
 ///     med en MPC Id vil kun dukke opp i kvitteringskøen med samme MPC Id. Standardverdi er "".
 /// </param>
 public Forsendelse(Avsender avsender, PostInfo postInfo, Dokumentpakke dokumentpakke, Prioritet prioritet = Prioritet.Normal, string mpcId = "", string språkkode = "NO")
     : this(avsender, postInfo, dokumentpakke, Guid.NewGuid(), prioritet, mpcId, språkkode)
 {
     SetLanguageIfNotSetOnContainingDocuments();
 }
 /// <param name="avsender">
 ///     Ansvarlig avsender av forsendelsen. Dette vil i de aller fleste tilfeller være den offentlige
 ///     virksomheten som er ansvarlig for brevet som skal sendes.
 /// </param>
 /// <param name="postInfo">Informasjon som brukes av postkasseleverandør for å behandle den digitale posten.</param>
 /// <param name="dokumentpakke">Pakke med hoveddokument og ev. vedlegg som skal sendes.</param>
 /// <param name="prioritet">Setter forsendelsens prioritet. Standard er Prioritet.Normal</param>
 /// <param name="språkkode">
 ///     Språkkode i henhold til ISO-639-1 (2 bokstaver). Brukes til å informere postkassen om hvilket
 ///     språk som benyttes, slik at varselet om mulig kan vises i riktig kontekst. Standard er NO.
 /// </param>
 /// <param name="mpcId">
 ///     Brukes til å skille mellom ulike kvitteringskøer for samme tekniske avsender. En forsendelse gjort
 ///     med en MPC Id vil kun dukke opp i kvitteringskøen med samme MPC Id. Standardverdi er "".
 /// </param>
 public Forsendelse(Avsender avsender, PostInfo postInfo, Dokumentpakke dokumentpakke, Prioritet prioritet = Prioritet.Normal, string mpcId = "", string språkkode = "NO")
     : this(avsender, postInfo, dokumentpakke, Guid.NewGuid(), prioritet, mpcId, språkkode)
 {
 }
예제 #16
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");
                }
            }
        }