using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using API.Data;
using API.DTOs;
using API.DTOs.KavitaPlus.Manage;
using API.Services.Plus;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace API.Controllers;
/// 
/// All things centered around Managing the Kavita instance, that isn't aligned with an entity
/// 
[Authorize("RequireAdminRole")]
public class ManageController : BaseApiController
{
    private readonly IUnitOfWork _unitOfWork;
    private readonly ILicenseService _licenseService;
    public ManageController(IUnitOfWork unitOfWork, ILicenseService licenseService)
    {
        _unitOfWork = unitOfWork;
        _licenseService = licenseService;
    }
    /// 
    /// Returns a list of all Series that is Kavita+ applicable to metadata match and the status of it
    /// 
    /// 
    [Authorize("RequireAdminRole")]
    [HttpPost("series-metadata")]
    public async Task>> SeriesMetadata(ManageMatchFilterDto filter)
    {
        if (!await _licenseService.HasActiveLicense()) return Ok(Array.Empty());
        return Ok(await _unitOfWork.ExternalSeriesMetadataRepository.GetAllSeries(filter));
    }
}