using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Postall.Models;
using System.Security.Claims;
using System.Threading.Tasks;
using System.Collections.Generic;
using Postall.Models;

namespace Postall.Controllers
{
    [Authorize]
    public class VideosController : Controller
    {
        // Simulação de dados para exemplo - em produção, estes dados viriam de uma API ou banco de dados
        private List<VideoViewModel> GetSampleVideos()
        {
            return new List<VideoViewModel>
            {
                new VideoViewModel
                {
                    Id = "video1",
                    Title = "Como usar o PostAll - Tutorial",
                    Description = "Aprenda a usar todas as funcionalidades do PostAll para gerenciar suas redes sociais.",
                    ThumbnailUrl = "https://i.ytimg.com/vi/sample1/maxresdefault.jpg",
                    PublishedAt = DateTime.Now.AddDays(-2)
                },
                new VideoViewModel
                {
                    Id = "video2",
                    Title = "Estratégias de Marketing Digital para 2024",
                    Description = "Conheça as melhores estratégias para alavancar seu negócio nas redes sociais em 2024.",
                    ThumbnailUrl = "https://i.ytimg.com/vi/sample2/maxresdefault.jpg",
                    PublishedAt = DateTime.Now.AddDays(-5)
                },
                new VideoViewModel
                {
                    Id = "video3",
                    Title = "Análise de Métricas nas Redes Sociais",
                    Description = "Aprenda a interpretar as métricas das suas redes sociais e tomar decisões baseadas em dados.",
                    ThumbnailUrl = "https://i.ytimg.com/vi/sample3/maxresdefault.jpg",
                    PublishedAt = DateTime.Now.AddDays(-7)
                }
            };
        }

        public IActionResult Index()
        {
            var userVideos = GetSampleVideos();
            return View(userVideos);
        }

        [HttpGet]
        public IActionResult GetChannelVideos()
        {
            // Em um cenário real, você buscaria os vídeos da API do YouTube
            var channelVideos = GetSampleVideos().OrderByDescending(v => v.PublishedAt).Take(10).ToList();
            return PartialView("_ChannelVideosPartial", channelVideos);
        }

        [HttpPost]
        public IActionResult AddVideos(string[] selectedVideos)
        {
            if (selectedVideos == null || selectedVideos.Length == 0)
            {
                return RedirectToAction("Index");
            }

            // Em um cenário real, você salvaria esses IDs no banco de dados
            // Aqui apenas redirecionamos de volta para o Index

            TempData["Message"] = $"{selectedVideos.Length} vídeo(s) adicionado(s) com sucesso!";
            return RedirectToAction("Index");
        }
    }
}