using System.Diagnostics;
using Microsoft.AspNetCore.Mvc;
using NewsAnalysis.Models;

namespace NewsAnalysis.Controllers;

public class HomeController : Controller
{
    public IActionResult Index()
    {
        return View();
    }

    [HttpGet("seed-news")]
    public IActionResult SeedNews([FromServices] IServiceScopeFactory scopeFactory, int pages = 1000, int startPage = 0)
    {
        // Tarayıcının veya sunucunun (502/Timeout) hatası vermemesi için işlemi arka planda başlatıp hemen yanıt dönüyoruz.
        _ = Task.Run(async () =>
        {
            try
            {
                using var scope = scopeFactory.CreateScope();
                var newsService = scope.ServiceProvider.GetRequiredService<NewsAnalysis.Services.INewsService>();
                await newsService.FetchAndSaveNewsAsync(pages, startPage);
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Arka plan seed işlemi sırasında hata: {ex.Message}");
            }
        });

        return Content($"Seed işlemi arka planda başarıyla başlatıldı! \n\nAPI'den {pages} sayfa ({pages * 8} haber) çekilme işlemi yaklaşık {(pages * 1.5) / 60:F1} dakika sürecektir. Sayfayı kapatabilirsiniz, arka planda veri inmeye devam edecektir.");
    }
    
    [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
    public IActionResult Error()
    {
        return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
    }
}
