Esempio n. 1
0
        public override void Run()
        {
            string client = ServerAPI.Current.Parameters["client"];
            string url    = ServerAPI.Current.Parameters["url"];
            string html   = string.Empty;

            if (url == string.Empty)
            {
                Me.StopReport("Ingen url");
            }
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

            request.AutomaticDecompression = DecompressionMethods.GZip;
            using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
                using (Stream stream = response.GetResponseStream())
                    using (StreamReader reader = new StreamReader(stream, Encoding.GetEncoding(1252)))
                    {
                        html = reader.ReadToEnd();
                    }
            DataTable    dataTable = new DataTable("Postnummber");
            IServerDbAPI api       = ServerAPI.Current.DatabaseAPI;
            IStatement   sql       = CurrentContext.Database.CreateStatement();

            sql.Append("Select * from aagzipcodes where country_code = 'NO'");
            CurrentContext.Database.Read(sql, dataTable);
            if (html != string.Empty)
            {
                Me.API.WriteLog("Sjekker om det er noe nytt");
                String[] lines = html.Split('\n');
                foreach (string line in lines)
                {
                    String[]   words   = line.Split('\t');
                    bool       zipcode = false;
                    bool       name    = false;
                    bool       komunr  = false;
                    IStatement postsql = CurrentContext.Database.CreateStatement();
                    if (words.Length > 2)
                    {
                        foreach (DataRow row in dataTable.Rows)
                        {
                            if (row["zip_code"].ToString().ToFixedString(4, '0') == words[0])
                            {
                                zipcode = true;
                            }
                            if (row["place"].ToString() == @words[1])
                            {
                                name = true;
                            }
                            if (row["municipal"].ToString().ToFixedString(4, '0') == words[2])
                            {
                                komunr = true;
                            }
                        }
                        if (!zipcode)
                        {
                            postsql.Append("insert into aagzipcodes(country_code, zip_code, place,municipal, user_id, last_update) values ('NO','");
                            postsql.Append(words[0]);
                            postsql.Append("','");
                            postsql.Append(@words[1]);
                            postsql.Append("','");
                            postsql.Append(words[2]);
                            postsql.Append("','POSTNR',getDate())");
                            Me.API.WriteLog("Lagt til postkode: {0}", words[0]);
                        }
                        else
                        {
                            if (!name || !komunr)
                            {
                                postsql.Append("update aagzipcodes set place ='");
                                postsql.Append(@words[1]);
                                postsql.Append("',municipal='");
                                postsql.Append(words[2]);
                                postsql.Append("',user_id='POSTNR', last_update = getDate() where country_code = 'NO' and zip_code ='");
                                postsql.Append(words[0]);
                                postsql.Append("'");
                                Me.API.WriteLog("Oppdatert postkode: {0}", words[0]);
                            }
                        }
                        if (!postsql.IsEmpty())
                        {
                            CurrentContext.Database.Execute(postsql);
                        }
                    }
                }
            }
        }