64 lines
2.4 KiB
C#
64 lines
2.4 KiB
C#
// <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
|
||
{
|
||
using Microsoft.AspNetCore.Mvc;
|
||
|
||
using Webzine.Repository.Contracts;
|
||
using Webzine.WebApplication.ViewModels.Recherche;
|
||
|
||
/// <summary>
|
||
/// Controller de la page de recherche d'artistes et de titres.
|
||
/// </summary>
|
||
public class RechercheController : Controller
|
||
{
|
||
private readonly ILogger<RechercheController> logger;
|
||
private readonly ITitreRepository titreRepository;
|
||
private readonly IArtisteRepository artisteRepository;
|
||
|
||
/// <summary>
|
||
/// Constructeur du controller de la page de recherche d'artistes et de titres.
|
||
/// </summary>
|
||
/// <param name="logger">Le logger pour enregistrer les événements.</param>
|
||
/// <param name="titreRepository">Le repository pour gérer les opérations sur les titres.</param>
|
||
/// <param name="artisteRepository">Le repository pour gérer les opérations sur les artistes.</param>
|
||
public RechercheController(
|
||
ILogger<RechercheController> logger,
|
||
ITitreRepository titreRepository,
|
||
IArtisteRepository artisteRepository)
|
||
{
|
||
this.logger = logger;
|
||
this.titreRepository = titreRepository;
|
||
this.artisteRepository = artisteRepository;
|
||
}
|
||
|
||
/// <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);
|
||
|
||
// Recherche des titres.
|
||
var titres = this.titreRepository.Search(mot);
|
||
|
||
// Recherche des artistes.
|
||
var artistes = this.artisteRepository.Search(mot);
|
||
|
||
// Param<61>tres a retourner <20> la vue.
|
||
var vm = new RechercheIndexViewModel
|
||
{
|
||
Mot = mot,
|
||
Artistes = artistes,
|
||
Titres = titres,
|
||
};
|
||
|
||
return this.View(vm);
|
||
}
|
||
}
|
||
} |