public static ArticleDocument GetArticle(string url, ref bool isGetContentSuccess) { try { Html html = Html.CreatHtml(new Uri(url)); if (html == null) { return(null); } ArticleDocument doc = GetRequestArticle(html.SourceCode); isGetContentSuccess = doc.Content.Length > 0; if (doc != null) { doc.Url = url; doc.Content = doc.Content.Length > 0 ? doc.Content : html.Content; doc.Timestamp = html.Timestamp; doc.Site = GetSiteName(html.Title); doc.ChildrenLink = html.ChildrenLink.Select(o => o.ToString()).ToList(); } return(doc); } catch (Exception exception) { Console.WriteLine(exception.Message); } return(null); }
protected void gvDocuments_RowDeleting(object sender, GridViewDeleteEventArgs e) { //Populate dto from session GetSessionValues(); if (ArticleBF.ArticleDto.Documents[e.RowIndex].IsOld) { //Mark for deletion from database ArticleBF.ArticleDto.Documents[e.RowIndex].IsDeleted = true; } else { //Get the document ArticleDocument artDoc = ArticleBF.ArticleDto.Documents[e.RowIndex]; try { File.Delete(artDoc.FullFileName); } catch (IOException ioEx) { DisplayPopup("An error occured deleting the document."); } //Remove from documents list ArticleBF.ArticleDto.Documents.RemoveAt(e.RowIndex); } //Update session SetSessionValues(); //Reload the grid LoadDocGrid(); }
public void ConvertHtmlToDoc(int facultyId, int semesterId) { var listArticleApproved = _articleRepository.GetListArticlesApprovedAfterFinalDateByFaculty(facultyId, semesterId); foreach (var article in listArticleApproved) { var articleDocInDb = _dbContext.ArticleDocuments.Where(d => article.Id.Equals(d.ArticleId)).ToList(); if (articleDocInDb.Any()) { continue; } var fileName = Guid.NewGuid() + ".docx"; var docPath = GetDocPath(fileName); ConvertDocument(article.Content, docPath); var articleDoc = new ArticleDocument() { ArticleId = article.Id, DocumentFile = fileName }; _dbContext.ArticleDocuments.Add(articleDoc); _dbContext.SaveChanges(); } }
public void InitCommand(Database db, Int32 ArticleId, ArticleDocument artDoc) { dbCommand = db.GetStoredProcCommand(sqlCommand); db.AddInParameter(dbCommand, "ArticleId", DbType.Int32, ArticleId); db.AddInParameter(dbCommand, "ArtDocTypeId", DbType.Int32, artDoc.ArtDocTypeId); db.AddInParameter(dbCommand, "DocId", DbType.Int32, artDoc.DocId); }
public void InitCommand(Database db, Int32 articleId, ArticleDocument artDoc) { dbCommand = db.GetStoredProcCommand(sqlCommand); db.AddInParameter(dbCommand, "ArticleId", DbType.Int32, articleId); db.AddInParameter(dbCommand, "ArtDocTypeId", DbType.Int32, artDoc.ArtDocTypeId); db.AddInParameter(dbCommand, "Data", DbType.Binary, artDoc.Data); db.AddInParameter(dbCommand, "FileName", DbType.String, artDoc.FileName); db.AddInParameter(dbCommand, "FileSizeKB", DbType.Int32, artDoc.CalculateFileSizeInKB()); db.AddInParameter(dbCommand, "Comments", DbType.String, artDoc.Comments); db.AddInParameter(dbCommand, "Active", DbType.Int32, ConvBoolToInt32(artDoc.IsActive)); db.AddInParameter(dbCommand, "CreationUserId", DbType.Int32, artDoc.CreationUserId); }
private ArticleDocument GetDocValues() { ArticleDocument artDoc = new ArticleDocument(); artDoc.ArtDocTypeId = Convert.ToInt32(ddlArtDocTypes.SelectedValue); artDoc.Comments = tbComments.Text.Trim(); artDoc.CreationUserId = UserInfo.UserDto.UserId; artDoc.IsActive = Convert.ToBoolean(Convert.ToInt32(ddlDocStatus.SelectedValue)); return(artDoc); }
/// <summary> /// 从给定的Html原始文本中获取正文信息 /// </summary> /// <param name="html"></param> /// <returns></returns> private static ArticleDocument GetRequestArticle(string html) { // 如果换行符的数量小于10,则认为html为压缩后的html // 由于处理算法是按照行进行处理,需要为html标签添加换行符,便于处理 if (html.Count(c => c == '\n') < 10) { html = html.Replace(">", ">\n"); } // 获取html,body标签内容 string body = ""; string bodyFilter = @"(?is)<body.*?</body>"; Match m = Regex.Match(html, bodyFilter); if (m.Success) { body = m.ToString(); } // 过滤样式,脚本等不相干标签 foreach (var filter in Html2Article.Filters) { body = Regex.Replace(body, filter[0], filter[1]); } // 标签规整化处理,将标签属性格式化处理到同一行 // 处理形如以下的标签: // <a // href='http://www.baidu.com' // class='test' // 处理后为 // <a href='http://www.baidu.com' class='test'> body = Regex.Replace(body, @"(<[^<>]+)\s*\n\s*", FormatTag); string content; string contentWithTags; string title1; GetContent(body, out content, out title1, out contentWithTags); string title2 = GetTitle(html); string title = GetMostProTitle(title1, title2, content); ArticleDocument article = new ArticleDocument { Title = title, PublishDate = GetPublishDate(html), Content = content, ContentWithTags = contentWithTags }; return(article); }
public async Task <ActionResult> Search(string s, int i = 0, int ps = 25) { SearchModel m = new SearchModel() { SettingsPath = Server.MapPath("~/articles/settings.json") }; m.SearchText = s; var watch = System.Diagnostics.Stopwatch.StartNew(); m.SearchResults = await ArticleDocument.GetArticleDocumentsAsync(s, i, ps); watch.Stop(); m.SearchTime = watch.Elapsed.TotalSeconds; return(View("~/Views/Articles/Search.cshtml", m)); }
public bool UploadDocument(IFormFileCollection files, int articleId) { var result = true; if (files.Count == 0) { return(false); } foreach (var formFile in files) { var upFileName = formFile.FileName; var fileName = Guid.NewGuid() + Path.GetExtension(upFileName); var saveDir = Path.Combine(_webHostEnvironment.WebRootPath, "files"); var savePath = Path.Combine(saveDir, fileName); try { if (!Directory.Exists(saveDir)) { Directory.CreateDirectory(saveDir); } using var fs = File.Create(savePath); formFile.CopyTo(fs); fs.Flush(); var newDocument = new ArticleDocument { ArticleId = articleId, DocumentFile = fileName }; _dbContext.ArticleDocuments.Add(newDocument); _dbContext.SaveChanges(); } catch (Exception) { result = false; } } return(result); }
/// <summary> /// Indexes an Article in Azure search /// </summary> /// <param name="article"></param> /// <returns></returns> static async Task IndexArticlesAsync(List <Article> articles) { List <ArticleDocument> list = new List <ArticleDocument>(); // create the index if it does not exist Search.CreateIndex(); // Convert to ArticleDocument foreach (Article a in articles) { if (null == a) { continue; } ArticleDocument d = new ArticleDocument(); d.FromArticle(a); list.Add(d); } await Search.MergeOrUploadAsync(list); }
protected void btnAddDoc_Click(object sender, EventArgs e) { if (Page.IsValid) { //Get session values GetSessionValues(); try { if (tbUploadDocument.HasFile && tbUploadDocument.PostedFile != null) { string fileName = SaveDocToTemp(tbUploadDocument); ArticleDocument artDoc = GetDocValues(); artDoc.FullFileName = fileName; ArticleBF.ArticleDto.Documents.Add(artDoc); SetSessionValues(); LoadDocGrid(); ResetDocumentFormValues(); } else { DisplayPopup("The document cannot be empty. Please choose a document with content."); } } catch (IOException ioEx) { throw; } } }
protected void gvDocuments_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType.Equals(DataControlRowType.DataRow)) { if (ArticleBF.ArticleDto.Documents[e.Row.RowIndex].IsDeleted) { e.Row.Visible = false; } Label lblDocType = (Label)e.Row.FindControl("lblDocType"); ArticleDocument artDoc = (ArticleDocument)e.Row.DataItem; if (!(lblDocType == null || artDoc == null)) { ListItem liItem = ddlArtDocTypes.Items.FindByValue(artDoc.ArtDocTypeId.ToString()); if (liItem != null) { lblDocType.Text = liItem.Text; } } } }
public static Article AdminGetArticle(Int32 ArticleId) { Article art = new Article(); try { DataSet articleSet = ArticleQueryHelper.AdminGetArticle(ArticleId); if (articleSet.Tables.Count == 2) { //Get the issue details if (articleSet.Tables[0].Rows.Count > 0) { DataRow artRow = articleSet.Tables[0].Rows[0]; art.ArticleId = (Int32)artRow["ArticleId"]; art.Title = (string)artRow["Title"]; art.Authors = (string)artRow["Authors"]; art.Keywords = (string)artRow["Keywords"]; art.PageNumber = (Int32)artRow["PageNumber"]; art.IsActive = (bool)artRow["Active"]; } //Get the documents if (articleSet.Tables[1].Rows.Count > 0) { ArticleDocument artDoc; art.Documents = new List <ArticleDocument>(); foreach (DataRow docRow in articleSet.Tables[1].Rows) { artDoc = new ArticleDocument(); artDoc.DocId = (Int32)docRow["DocId"]; artDoc.FullFileName = (string)docRow["FileName"]; artDoc.ArtDocTypeDescription = (string)docRow["ArtDocTypeDescription"]; artDoc.ArtDocTypeId = (Int32)docRow["ArtDocTypeId"]; artDoc.IsActive = (bool)docRow["Active"]; artDoc.IsNew = false; art.Documents.Add(artDoc); } } } return(art); } catch (SqlException sqlEx) { Console.WriteLine(sqlEx.ToString()); throw new DataException("An exception occured getting the article details.", sqlEx); } }