public IActionResult Index(int categoryId = 4)
 {
     ViewBag.Subcategories = _categoryService.GetAllSubcategories(categoryId).ToList();
     ViewBag.Keywords      = _keywordService.GetAllKeywords().ToList();
     ViewBag.Tones         = Enum.GetNames(typeof(Tone)).ToList();
     ViewBag.CategoryName  = _categoryService.GetCatgoryName(categoryId);
     return(View());
 }
Beispiel #2
0
        /// <summary>
        /// GET api/{entitiy}
        /// HTTP Get Call that returns an IEnumerable list of all the entities
        /// </summary>
        /// <returns>IEnumerable collection of the entitiy objects</returns>
        public IEnumerable <DisplayKeywordViewModel> Get()
        {
            var result = _keywordService.GetAllKeywords();

            if (result.Status == ResultStatus.Success)
            {
                // get the data from the result
                var allKeywords = result.GetData();

                // translate the keyword domain list to the view model
                var viewModelKeywords = allKeywords.Select(Mapper.Map <DisplayKeywordViewModel>);

                // return the keywords
                return(viewModelKeywords);
            }
            else
            {
                // return an empty list of keywords
                return(new List <DisplayKeywordViewModel>());
            }
        }
Beispiel #3
0
        public async Task <IActionResult> GetAll()
        {
            var keywords = await keywordService.GetAllKeywords();

            if (keywords == null)
            {
                return(NotFound());
            }

            var keywordDTO = _mapper.Map <IEnumerable <Keyword>, IEnumerable <KeywordDTO> >(keywords);

            return(Ok(new Response <IEnumerable <KeywordDTO> >(keywordDTO)));
        }
 public ActionResult <List <KeywordDTO> > GetAllKeywords()
 {
     return(Ok(_keywordService.GetAllKeywords().Select(keyword => KeywordDTO.Of(keyword)).ToList()));
 }
        public async Task CollectNewsByKeywordAsync()
        {
            BaseHelper baseHelper = new BaseHelper();
            var        keywords   = await _keywordService.GetAllKeywords();

            string link = "";

            _logger.LogInformation("{0} Adet anahtar kelime bulundu", keywords.Count());

            foreach (var item in keywords)
            {
                int newNews = 0;
                //dinamik link oluşturmak için tüm keywordleri foreach ile dolaşıyorum
                link = $"https://news.google.com/rss/search?q=%7B{item.KeywordValue}%7D&hl=tr&gl=TR&ceid=TR:tr";

                //oluşturduğumuz linkteki rss dosyasını xml parse edip döndüren fonksiyon
                XmlDocument xml    = new XmlDocument();
                var         client = _httpClientFactory.CreateClient();
                client.BaseAddress = new Uri(link);
                string result = await client.GetStringAsync("");

                xml.LoadXml(result);

                //google rss de haber içerikleri item elementlerinden oluşur xml içinden item node bilgilerini diziye alıyorum
                XmlNodeList entries = xml.DocumentElement.GetElementsByTagName("item");

                // _logger.LogInformation("{0} anahtar kelimesi içeren {1} adet haber bulundu. ", item.KeywordValue, entries.Count);

                foreach (XmlNode entry in entries)
                {
                    try
                    {
                        //haber linki uniq değerimiz haber db de varsa kayıt işlemi yapmayıp sıradaki habere geçiyorum
                        var isExistNews = await _newsService.GetNewsByUrlWithNewsKeyword(entry["link"].InnerText);

                        if (isExistNews != null)
                        {
                            if (isExistNews.NewsKeywords.FirstOrDefault(x => x.KeywordId == item.Id) != null)
                            {
                                continue;
                            }

                            await _newsKeywordService.CreateNewsKeyword(new NewsKeyword
                            {
                                Keyword = item,
                                News    = isExistNews
                            });

                            continue;
                        }
                        newNews++;
                        var title       = entry["title"].InnerText;
                        var index       = title.Split("-").Reverse().FirstOrDefault().Length;
                        var cleanString = title.Remove(title.Length - index - 1, index + 1);

                        var news = new News
                        {
                            NewsTitle = cleanString,
                            NewsDate  = DateTime.Parse(entry["pubDate"].InnerText),
                            NewsUrl   = entry["link"].InnerText,
                            //GetSource methodu ile ilgili kaynak db de mevcut değilse db ye kayıt edip News tablosuna haberle beraber yazılıyor
                            Source = await GetSource(entry)
                        };

                        await _newsService.CreateNews(news);

                        await _newsKeywordService.CreateNewsKeyword(new NewsKeyword
                        {
                            Keyword = item,
                            News    = news
                        });
                    }
                    catch (Exception ex)
                    {
                        _logger.LogError(ex.Message);
                        continue;
                    }
                }
                _logger.LogInformation("{0} anahtar kelimesi içeren {1} adet yeni haber bulundu. ", item.KeywordValue, newNews);
            }
        }