public ActionResult <IEnumerable <CountDTO> > SourceCount([FromQuery] SearchByDateDTO searchByDate) { if (searchByDate.EndingDate != null && searchByDate.StartingDate != null) { DateTime startDate; DateTime endDate; if (!DateTime.TryParse(searchByDate.StartingDate, out startDate)) { return(BadRequest("StartingDate tarih formatında değil")); } else if (!DateTime.TryParse(searchByDate.EndingDate, out endDate)) { return(BadRequest("EndingDate tarih formatında değil")); } if (startDate >= endDate) { return(BadRequest("StartingDate, EndingDate tarihinden ileri bir tarih olamaz")); } } var sourceCount = _dbContext.Sources .Count(); if (sourceCount == 0) { return(NotFound()); } return(Ok(sourceCount)); }
public ActionResult <IEnumerable <CountDTO> > NewsCount([FromQuery] SearchByDateDTO searchByDate) { var query = _dbContext.News.Where(x => x.NewsKeywords.Count > 0).AsQueryable(); if (searchByDate.EndingDate != null && searchByDate.StartingDate != null) { DateTime startDate; DateTime endDate; if (!DateTime.TryParse(searchByDate.StartingDate, out startDate)) { return(BadRequest("StartingDate tarih formatında değil")); } else if (!DateTime.TryParse(searchByDate.EndingDate, out endDate)) { return(BadRequest("EndingDate tarih formatında değil")); } if (startDate >= endDate) { return(BadRequest("StartingDate, EndingDate tarihinden ileri bir tarih olamaz")); } query = query.Where(c => c.NewsDate >= startDate && c.NewsDate < endDate); } var newsCount = query.Count(); if (newsCount == 0) { return(NotFound()); } return(Ok(new Response <int>(newsCount))); }
public ActionResult <IEnumerable <GraphDTO> > NewsCountBySource([FromQuery] SearchByDateDTO searchByDate) { DateTime startDate; DateTime endDate; var query = _dbContext.News.AsQueryable(); if (searchByDate.StartingDate != null || searchByDate.StartingDate != null) { if (!DateTime.TryParse(searchByDate.StartingDate, out startDate)) { return(BadRequest("StartingDate tarih formatında değil")); } else if (!DateTime.TryParse(searchByDate.EndingDate, out endDate)) { return(BadRequest("EndingDate tarih formatında değil")); } if (startDate >= endDate) { return(BadRequest("StartingDate, EndingDate tarihinden ileri bir tarih olamaz")); } query = query.Where(c => c.NewsDate >= startDate && c.NewsDate < endDate); } var getNewsCountBySource = query.Where(x => x.NewsKeywords.Count > 0) .GroupBy(x => new { x.SourceId }) .Select(c => new GraphDTO { Id = c.Key.SourceId.ToString(), Key = _dbContext.Sources.Where(x => x.Id == c.Key.SourceId).Select(x => x.SourceName).FirstOrDefault(), Value = c.Count().ToString() }) .OrderByDescending(x => x.Value) .Take(20) .ToList(); if (getNewsCountBySource?.Count == 0) { return(NotFound()); } return(Ok(getNewsCountBySource)); }
public ActionResult <IEnumerable <GraphDTO> > KeywordCount([FromQuery] SearchByDateDTO searchByDate) { DateTime startDate; DateTime endDate; var query = _dbContext.NewsKeywords.AsQueryable(); if (searchByDate.StartingDate != null || searchByDate.StartingDate != null) { if (!DateTime.TryParse(searchByDate.StartingDate, out startDate)) { return(BadRequest("StartingDate tarih formatında değil")); } else if (!DateTime.TryParse(searchByDate.EndingDate, out endDate)) { return(BadRequest("EndingDate tarih formatında değil")); } if (startDate >= endDate) { return(BadRequest("StartingDate, EndingDate tarihinden ileri bir tarih olamaz")); } query = query.Where(c => c.News.NewsDate >= startDate && c.News.NewsDate < endDate); } var topKeywordCounts = query .GroupBy(x => x.Keyword.KeywordValue) .Select(z => new GraphDTO { Id = _dbContext.Keywords.FirstOrDefault(x => x.KeywordValue.Contains(z.Key)).Id.ToString(), Key = z.Key, Value = z.Count().ToString() }) .ToList(); if (topKeywordCounts?.Count == 0) { return(NotFound()); } return(Ok(new Response <IEnumerable <GraphDTO> >(topKeywordCounts))); }
public async Task <IActionResult> Get([FromQuery] PaginationQuery pagination, [FromQuery] SearchByDateDTO searchByDate) { if (searchByDate.EndingDate != null && searchByDate.StartingDate != null) { DateTime startDate; DateTime endDate; if (!DateTime.TryParse(searchByDate.StartingDate, out startDate)) { return(BadRequest("StartingDate tarih formatında değil")); } else if (!DateTime.TryParse(searchByDate.EndingDate, out endDate)) { return(BadRequest("EndingDate tarih formatında değil")); } if (startDate >= endDate) { return(BadRequest("StartingDate, EndingDate tarihinden ileri bir tarih olamaz")); } } var paginationFilter = _mapper.Map <PaginationFilter>(pagination); var getallnews = await _newsService.GetAllNews(paginationFilter); var getallnewsDto = _mapper.Map <IEnumerable <News>, IEnumerable <NewsDTO> >(getallnews); foreach (var item in getallnewsDto) { var source = await _sourceService.GetSourceById(item.SourceId); item.SourceName = source.SourceName; } if (pagination == null || pagination.PageNumber < 1 || pagination.PageSize < 1) { return(Ok(new PagedResponse <NewsDTO>(getallnewsDto))); } var paginationResponse = PaginationHelpers.CreatePaginationResponse(_uriService, paginationFilter, getallnewsDto); return(Ok(paginationResponse)); }
public async Task <IActionResult> GetFromRss([FromQuery] PaginationQuery pagination, [FromQuery] string searchTerm, [FromQuery] SearchByDateDTO searchByDate) { var link = $"https://news.google.com/rss/search?q={searchTerm}&hl=tr&gl=TR&ceid=TR:tr"; var newsList = new List <NewsDTO>(); XmlDocument xml = new XmlDocument(); var client = _httpClientFactory.CreateClient(); client.BaseAddress = new Uri(link); string result = await client.GetStringAsync(""); xml.LoadXml(result); XmlNodeList entries = xml.DocumentElement.GetElementsByTagName("item"); if (entries.Count == 0) { return(NotFound()); } foreach (XmlNode entry in entries) { var random = new Random(); 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 NewsDTO { Id = random.Next(1000, 3000), NewsTitle = cleanString, NewsDate = DateTime.Parse(entry["pubDate"].InnerText), NewsUrl = entry["link"].InnerText, SourceName = entry["source"].InnerText }; newsList.Add(news); } return(Ok(new Response <IEnumerable <NewsDTO> >(newsList.OrderByDescending(x => x.NewsDate)))); }