private void PrepareReport(AnalyzeResponce responce)
        {
            String path = Path.GetFullPath(SettingsHelper.ReportTemplate);
            var    doc  = new HtmlDocument();

            doc.Load(path);
            doc.GetElementbyId("SiteUrl").InnerHtml    = responce.Url;
            doc.GetElementbyId("LastUpdate").InnerHtml = responce.LastUpdate.ToShortDateString();
            doc.GetElementbyId("CY").InnerHtml         = responce.Results[RequestType.CY] != "" ? responce.Results[RequestType.CY] : "-";
            doc.GetElementbyId("PR").InnerHtml         = responce.Results[RequestType.PR] != "" ? responce.Results[RequestType.PR] : "-";
            doc.GetElementbyId("Links").InnerHtml      = responce.Results[RequestType.Links] != "" ? responce.Results[RequestType.Links] : "-";
            doc.GetElementbyId("Clients").InnerHtml    = responce.Results[RequestType.Customers] != "" ? responce.Results[RequestType.Customers] : "-";

            if (!Directory.Exists(SettingsHelper.TempFilesDirectory))
            {
                Directory.CreateDirectory(SettingsHelper.TempFilesDirectory);
            }

            string fileName = responce.LastUpdate.ToShortDateString();

            fileName = PrepareFileName(fileName);

            //String tmpFile = String.Format(@"{0}\{1}{2}.html", SettingsHelper.TempFilesDirectory, responce.Url, responce.LastUpdate.ToShortDateString());
            String tmpFile = String.Format(@"{0}\{1}{2}.html", SettingsHelper.TempFilesDirectory, responce.Url, fileName);

            doc.Save(tmpFile, Encoding.Unicode);

            ReportBrowser.Navigate(Path.GetFullPath(tmpFile));
        }
        public void DeleteReport(AnalyzeResponce responce)
        {
            var findQuery = Connection.CreateCommand();

            findQuery.CommandText = String.Format("Delete from Sites Where URL='{0}'", responce.Url);
            int k = findQuery.ExecuteNonQuery();

            if (k == 1)
            {
                _reports.Remove(responce);
            }
        }
Exemple #3
0
        public int SaveReport(AnalyzeResponce resp)
        {
            OleDbCommand findQuery = Connection.CreateCommand();
            var          types     = new StringBuilder(String.Empty);
            var          values    = new StringBuilder(String.Empty);

            foreach (var item in resp.Results)
            {
                types.AppendFormat("{0}, ", item.Key);
                values.AppendFormat("'{0}', ", item.Value);
            }
            types.Remove(types.Length - 2, 2);
            values.Remove(values.Length - 2, 2);
            String insertCommand = String.Format(@"INSERT INTO Sites (URL, LastUpdate, {0}) VALUES ('{1}', '{2}', {3})",
                                                 types,
                                                 resp.Url,
                                                 resp.LastUpdate,
                                                 values
                                                 );

            while (true)
            {
                try
                {
                    findQuery.CommandText = insertCommand;
                    findQuery.ExecuteNonQuery();
                    return(0);
                }
                catch (OleDbException exc)
                {
                    if (exc.ErrorCode == -2147467259)
                    {
                        findQuery.CommandText = String.Format("DELETE FROM Sites WHERE URL='{0}'", resp.Url);
                        try
                        {
                            findQuery.ExecuteNonQuery();
                        }
                        catch (OleDbException)
                        {
                            return(-1);
                        }
                    }
                    else
                    {
                        return(-1);
                    }
                }
            }
        }
Exemple #4
0
 public override void Proceed()
 {
     Responce = GetResponceFromDb();
     if (Responce == null)
     {
         Responce = new AnalyzeResponce();
         foreach (Analyzer a in Analyzers)
         {
             a.Proceed();
         }
         MakeResponce();
         Dbprovider.SaveReport(Responce as AnalyzeResponce);
     }
     OnProceedingFinished(new ResponceEventArgs(Responce, RequestIProceed));
 }
Exemple #5
0
        public AnalyzeResponce GetReport(String url)
        {
            OleDbCommand findQuery = Connection.CreateCommand();

            findQuery.CommandText = String.Format(@"SELECT * FROM Sites Where URL = '{0}'", url);

            OleDbDataReader infoReader = null;

            try
            {
                infoReader = findQuery.ExecuteReader();
                if (infoReader != null)
                {
                    infoReader.Read();
                    var resp = new AnalyzeResponce
                    {
                        Url        = infoReader["URL"].ToString(),
                        LastUpdate = DateTime.Parse(infoReader["LastUpdate"].ToString())
                    };
                    foreach (var item in Enum.GetValues(typeof(RequestType)))
                    {
                        String columnName = item.ToString();
                        String buffer     = infoReader[columnName].ToString();
                        if (buffer == String.Empty)
                        {
                            continue;
                        }
                        resp.Results.Add((RequestType)item, buffer);
                    }
                    return(resp);
                }
                else
                {
                    return(null);
                }
            }
            catch (InvalidOperationException)
            {
                return(null);
            }
            finally
            {
                if (infoReader != null)
                {
                    infoReader.Close();
                }
            }
        }
Exemple #6
0
        private void MakeResponce()
        {
            var request     = RequestIProceed.Request as AnalyzeRequest;
            var newresponce = new AnalyzeResponce();

            foreach (var a in Analyzers)
            {
                newresponce.Results.Add(a.AnalyzerType, a.Result);
            }
            newresponce.LastUpdate = DateTime.Now;
            if (request != null)
            {
                newresponce.Url = request.SiteUrl;
            }
            Responce = newresponce;
        }
        public void Update()
        {
            var list = GetReportsList();

            foreach (var analyzeResponce in list)
            {
                AnalyzeResponce toReplace = _reports.FirstOrDefault(x => x.Url == analyzeResponce.Url);
                if (toReplace == null)
                {
                    _reports.Add(analyzeResponce);
                }
                else if (!analyzeResponce.Equals(toReplace))
                {
                    _reports.Remove(toReplace);
                    _reports.Add(analyzeResponce);
                }
            }
        }
        private AnalyzeResponce GetResponceFromDb(AnalyzeRequest toCompare)
        {
            AnalyzeResponce respFromDb = _dbprovider.GetReport(toCompare.SiteUrl);

            if (respFromDb == null)
            {
                return(null);
            }
            if (toCompare.Requests.Any(item => !respFromDb.Results.ContainsKey(item)))
            {
                return(null);
            }
            if ((DateTime.Now - respFromDb.LastUpdate).TotalHours <= 1)
            {
                return(respFromDb);
            }
            return(null);
        }