using Microsoft.AspNetCore.Mvc;

namespace Webzine.WebApplication.Controllers;

public class ApiController : ControllerBase
{
    private readonly ILogger<ApiController> _logger;

    /// <summary>
    /// Initialise une nouvelle instance du <see cref="ApiController"/> avec un service de journalisation injecté.
    /// </summary>
    /// <param name="logger">Service de journalisation injecté pour enregistrer les événements et les erreurs.</param>
    public ApiController(ILogger<ApiController> logger)
    {
        this._logger = logger;
        this._logger.LogDebug(1, "initialisation du ApiController");
    }

    /// <summary>
    /// Endpoint de test pour vérifier que l'API fonctionne correctement. Retourne une chaîne de caractères "Hello World !".
    /// </summary>
    /// <returns>Une chaîne de caractères "Hello World !".</returns>
    [HttpGet]
    public string HelloWorld()
    {
        return "Hello World !";
    }

    /// <summary>
    /// Endpoint de test pour vérifier que l'API fonctionne correctement. Retourne un objet JSON contenant le nom et la version de l'application.
    /// </summary>
    /// <returns>Un objet JSON avec les propriétés "nom" et "version".</returns>
    [HttpGet]
    public IActionResult Version()
    {
        this._logger.LogInformation("Get Version was called");

        return Ok(new
            {
                nom = "webzine",
                version = "1.0",
            });
    }
}