Merge branch 'dev' into j2/fix/refactor-routes

# Conflicts:
#	Webzine.WebApplication/Controllers/RechercheController.cs
#	Webzine.WebApplication/Views/Recherche/Index.cshtml
This commit is contained in:
mirage
2026-04-01 14:53:39 +02:00
46 changed files with 907 additions and 618 deletions

View File

@@ -1,7 +1,7 @@
using Microsoft.AspNetCore.Mvc;
namespace Webzine.WebApplication.Controllers;
using Microsoft.AspNetCore.Mvc;
public class ApiController : ControllerBase
{
private readonly ILogger<ApiController> logger;
@@ -29,7 +29,7 @@ public class ApiController : ControllerBase
return this.Ok(new
{
nom = "webzine",
version = "2.0",
version = "3.0",
});
}
}

View File

@@ -1,5 +1,5 @@
// <copyright file="RechercheController.cs" company="PlaceholderCompany">
// Copyright (c) PlaceholderCompany. All rights reserved.
// <copyright file="RechercheController.cs" company="Equipe 1 - BOBIN, MASI, NODON, VETU">
// Copyright (c) Equipe 1 - BOBIN, MASI, NODON, VETU. All rights reserved.
// </copyright>
namespace Webzine.WebApplication.Controllers
@@ -8,53 +8,40 @@ namespace Webzine.WebApplication.Controllers
using Webzine.Repository.Contracts;
using Webzine.WebApplication.ViewModels.Recherche;
using Webzine.WebApplication.ViewModels.Titre;
public class RechercheController : Controller
{
private readonly ILogger<RechercheController> logger;
private readonly ITitreRepository titreRepository;
private readonly IArtisteRepository artisteRepository;
public RechercheController(ILogger<RechercheController> logger, ITitreRepository titreRepository)
public RechercheController(
ILogger<RechercheController> logger,
ITitreRepository titreRepository,
IArtisteRepository artisteRepository)
{
this.logger = logger;
this.titreRepository = titreRepository;
this.artisteRepository = artisteRepository;
}
[HttpPost]
/// <summary>
/// Affichage de la page Recherche depuis le header de l'app.
/// </summary>
/// <param name="mot">Nom d'artiste ou de titre.</param>
/// <returns>Page de recherche avec les r<>sultats.</returns>
public IActionResult Index(string mot)
{
// Logger la recherche.
this.logger.LogInformation("Recherche artistes/titres pour le mot : {Mot}.", mot);
var titres = this.titreRepository.Search(mot)
.Concat(this.titreRepository.SearchByStyle(mot))
.DistinctBy(t => t.IdTitre)
.OrderBy(t => t.Libelle)
.Select(t => new TitreStyleItem
{
IdTitre = t.IdTitre,
Libelle = t.Libelle,
ArtisteNom = t.Artiste?.Nom,
UrlJaquette = t.UrlJaquette,
Duree = t.Duree,
})
.ToList();
// Recherche des titres.
var titres = this.titreRepository.Search(mot);
var artistes = this.titreRepository.FindAll()
.Select(t => t.Artiste)
.Where(a => a != null
&& !string.IsNullOrWhiteSpace(a.Nom)
&& !string.IsNullOrWhiteSpace(mot)
&& a.Nom.Contains(mot, StringComparison.OrdinalIgnoreCase))
.DistinctBy(a => a!.IdArtiste)
.OrderBy(a => a!.Nom)
.Select(a => new RechercheArtisteItem
{
Nom = a!.Nom,
NombreDeTitres = a.Titres?.Count ?? 0,
})
.ToList();
// Recherche des artistes.
var artistes = this.artisteRepository.Search(mot);
// Param<61>tres a retourner <20> la vue.
var vm = new RechercheIndexViewModel
{
Mot = mot,

View File

@@ -1,5 +1,5 @@
// <copyright file="TitreController.cs" company="PlaceholderCompany">
// Copyright (c) PlaceholderCompany. All rights reserved.
// <copyright file="TitreController.cs" company="Equipe 1 - BOBIN, MASI, NODON, VETU">
// Copyright (c) Equipe 1 - BOBIN, MASI, NODON, VETU. All rights reserved.
// </copyright>
namespace Webzine.WebApplication.Controllers