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); } }
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); } } } }
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)); }
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(); } } }
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); }