예제 #1
0
        public async Task <int> AddArticlesToArticlesTableAsync(Article articleToAdd)
        {
            var context = new KnowledgeHubDataBaseContext();

            //context.ChangeTracker.AutoDetectChangesEnabled = false;
            try
            {
                Article articleExists = context.Article.FirstOrDefault(article => article.Url == articleToAdd.Url);
                if (articleExists == null)
                {
                    Microsoft.EntityFrameworkCore.ChangeTracking.EntityEntry <Article> article = context.Article.Add(articleToAdd);
                    await context.SaveChangesAsync();

                    return(article.Entity.Id);
                }
                return(articleExists.Id);
            }
            catch (Exception ex) {
                var fallback = context.Article.FirstOrDefault(article => article.Url == articleToAdd.Url);
                if (fallback != null)
                {
                    return(fallback.Id);
                }
                return(0);
            }
        }
예제 #2
0
        public async Task <IEnumerable <NewsApiResponse> > GetNewsApiArticles(string searchTerm, int tagId)
        {
            try
            {
                var                 context             = new KnowledgeHubDataBaseContext();
                var                 userArticleList     = context.UserArticle.Where(userArticle => userArticle.TagId == tagId).ToList();
                DateTime            startDate           = (userArticleList.Count > 0) ? userArticleList.Max(u => u.CreatedDate) : DateTime.Now.AddDays(-30);
                string              apiKey              = _configuration.GetValue <string>("NewsApiKey");
                string              newsApiURI          = _configuration.GetValue <string>("NewsApiURI");
                string              url                 = newsApiURI + "qInTitle=" + searchTerm + "&language=en&from=" + startDate + "&sortBy=publishedAt&apiKey=" + apiKey;
                HttpResponseMessage httpResponseMessage = await Task <HttpResponseMessage> .FromResult(client.GetAsync(url).Result);

                if (httpResponseMessage.IsSuccessStatusCode)
                {
                    var responseContent             = httpResponseMessage.Content.ReadAsStringAsync().Result;
                    List <NewsApiResponse> response = JsonConvert.DeserializeObject <NewsAPIRootJson>(responseContent).Articles.ToList();
                    return(response);
                }
                return(new List <NewsApiResponse>());
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
예제 #3
0
        public async Task AddArticlesToUserTableAsync(UserArticle userArticle, int tagId, int userId)
        {
            var context = new KnowledgeHubDataBaseContext();

            //context.ChangeTracker.AutoDetectChangesEnabled = false;
            try
            {
                userArticle.TagId = context.UserTag.FirstOrDefault(t => t.UserId == userId && t.TagId == tagId).Id;
                context.UserArticle.Add(userArticle);
                await context.SaveChangesAsync();
            }
            catch (Exception ex)
            {
                return;
            }
        }
예제 #4
0
 public UserArticleAccessor(KnowledgeHubDataBaseContext knowledgeHubDataBaseContext)
 {
     this.knowledgeHubDataBaseContext = knowledgeHubDataBaseContext;
 }
예제 #5
0
 public TagAccessor(KnowledgeHubDataBaseContext knowledgeHubDataBaseContext)
 {
     this.knowledgeHubDataBaseContext = knowledgeHubDataBaseContext;
 }
예제 #6
0
 public CategoryAccessor(KnowledgeHubDataBaseContext knowledgeHubDataBaseContext)
 {
     this.knowledgeHubDataBaseContext = knowledgeHubDataBaseContext;
 }
예제 #7
0
 public ArticleAccessor(IConfiguration configuration, KnowledgeHubDataBaseContext knowledgeHubDataBaseContext)
 {
     _configuration = configuration;
     _knowledgeHubDataBaseContext = knowledgeHubDataBaseContext;
 }