From be76f14c4a198862344a3f78781932d85096fb07 Mon Sep 17 00:00:00 2001
From: charmett <charmett@localhost>
Date: Mon, 17 Jun 2024 15:10:10 +0200
Subject: [PATCH] vraiment bon travail

---
 codeigniter/application/controllers/Music.php |  28 +++++
 .../application/models/Model_music.php        | 100 +++++++++++++-----
 .../application/views/album_musics.php        |  17 +++
 codeigniter/application/views/albums_list.php |  15 ++-
 .../application/views/artistes_list.php       |   3 +-
 5 files changed, 126 insertions(+), 37 deletions(-)
 create mode 100644 codeigniter/application/controllers/Music.php
 create mode 100644 codeigniter/application/views/album_musics.php

diff --git a/codeigniter/application/controllers/Music.php b/codeigniter/application/controllers/Music.php
new file mode 100644
index 0000000..0625bc0
--- /dev/null
+++ b/codeigniter/application/controllers/Music.php
@@ -0,0 +1,28 @@
+<?php
+defined('BASEPATH') OR exit('No direct script access allowed');
+
+class Music extends CI_Controller {
+
+    public function __construct(){
+        parent::__construct();
+        $this->load->model('model_music');
+        $this->load->helper('html');
+        $this->load->helper('url');
+        $this->load->helper('form');
+    }
+
+    public function index(){
+        $musics = $this->model_music->getMusics();
+        $this->load->view('layout/header');
+        $this->load->view('musics_list', ['musics' => $musics]);
+        $this->load->view('layout/footer');
+    }
+
+    public function view($albumId){
+        // Récupérer les musiques pour un album spécifique
+        $musics = $this->model_music->getMusicsByAlbum($albumId);
+        $this->load->view('layout/header');
+        $this->load->view('album_musics', ['musics' => $musics]);
+        $this->load->view('layout/footer');
+    }
+}
diff --git a/codeigniter/application/models/Model_music.php b/codeigniter/application/models/Model_music.php
index 621da0f..8564460 100644
--- a/codeigniter/application/models/Model_music.php
+++ b/codeigniter/application/models/Model_music.php
@@ -1,33 +1,77 @@
-<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');                                             
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 
 class Model_music extends CI_Model {
-	public function __construct(){
-		$this->load->database();
-	}
+    public function __construct(){
+        $this->load->database();
+    }
 
-	public function getAlbums(){
-		$query = $this->db->query(
-			"SELECT album.name,album.id,year,artist.name as artistName, genre.name as genreName,jpeg 
-			FROM album 
-			JOIN artist ON album.artistid = artist.id
-			JOIN genre ON genre.id = album.genreid
-			JOIN cover ON cover.id = album.coverid
-			ORDER BY year
-			"
-		);
-	return $query->result();
-	}
+    public function getAlbums(){
+        $query = $this->db->query(
+            "SELECT album.name, album.id, year, artist.name as artistName, genre.name as genreName, jpeg 
+            FROM album 
+            JOIN artist ON album.artistid = artist.id
+            JOIN genre ON genre.id = album.genreid
+            JOIN cover ON cover.id = album.coverid
+            ORDER BY year"
+        );
+        return $query->result();
+    }
 
-	public function getArtistes(){
-		$query = $this->db->query(
-			"SELECT artist.id AS artistId, artist.name AS artistName, album.name AS albumName, album.year, cover.jpeg
-			FROM album
-			INNER JOIN artist ON album.artistId = artist.id
-			JOIN cover ON cover.id = album.coverId
-			GROUP BY artist.name, album.year
-			"
-		);
-		
-		return $query->result();
-	}
+    public function getArtistes(){
+        $query = $this->db->query(
+            "SELECT artist.id AS artistId, artist.name AS artistName, album.name AS albumName, album.id AS albumId, album.year, cover.jpeg
+            FROM album
+            INNER JOIN artist ON album.artistId = artist.id
+            JOIN cover ON cover.id = album.coverId
+            GROUP BY artist.name, album.year"
+        );
+        return $query->result();
+    }
+
+    public function getMusics(){
+        $query = $this->db->query(
+            "SELECT 
+                track.id AS trackId,
+                track.number AS trackNumber,
+                track.duration AS trackDuration,
+                track.diskNumber AS diskNumber,
+                album.id AS albumId,
+                album.name AS albumName,
+                album.year AS albumYear,
+                artist.name AS artistName,
+                song.id AS songId,
+                song.name AS songName,
+                cover.jpeg AS coverImage
+            FROM track
+            JOIN album ON track.albumId = album.id
+            JOIN artist ON album.artistId = artist.id
+            JOIN song ON track.songId = song.id
+            JOIN cover ON album.coverId = cover.id
+            ORDER BY album.id, track.diskNumber, track.number"
+        );
+        return $query->result();
+    }
+
+    public function getMusicsByAlbum($albumId){
+        $query = $this->db->query(
+            "SELECT 
+                track.id AS trackId,
+                track.number AS trackNumber,
+                track.duration AS trackDuration,
+                track.diskNumber AS diskNumber,
+                album.id AS albumId,
+                album.name AS albumName,
+                artist.name AS artistName,
+                song.id AS songId,
+                song.name AS songName
+            FROM track
+            JOIN album ON track.albumId = album.id
+            JOIN artist ON album.artistId = artist.id
+            JOIN song ON track.songId = song.id
+            WHERE album.id = ?
+            ORDER BY track.diskNumber, track.number",
+            array($albumId)
+        );
+        return $query->result();
+    }
 }
diff --git a/codeigniter/application/views/album_musics.php b/codeigniter/application/views/album_musics.php
new file mode 100644
index 0000000..f9cde1c
--- /dev/null
+++ b/codeigniter/application/views/album_musics.php
@@ -0,0 +1,17 @@
+<h5>Liste des Musiques de l'Album</h5>
+<section class="list">
+<?php
+foreach ($musics as $music) {
+    
+    echo "<div><article>";
+    echo "<ul>";
+    echo "<li>Durée: {$music->trackDuration} secondes</li>";
+    echo "<li>$music->songName</li>";
+    echo "</ul>";
+    echo "</article></div>";
+}
+?>
+</section>
+
+
+// songs/view/{$music->songId},
\ No newline at end of file
diff --git a/codeigniter/application/views/albums_list.php b/codeigniter/application/views/albums_list.php
index 31ba141..92c15ef 100644
--- a/codeigniter/application/views/albums_list.php
+++ b/codeigniter/application/views/albums_list.php
@@ -1,15 +1,14 @@
 <h5>Albums list</h5>
 <section class="list">
 <?php
-     
 foreach($albums as $album){
-	echo "<div><article>";
-	echo "<header class='short-text'>";
-	echo anchor("albums/view/{$album->id}","{$album->name}");
-	echo "</header>";
-	echo '<img src="data:image/jpeg;base64,'.base64_encode($album->jpeg).'" />';
-	echo "<footer class='short-text'>{$album->year} - {$album->artistName}</footer>
-	  </article></div>";
+    echo "<div><article>";
+    echo "<header class='short-text'>";
+    echo anchor("music/view/{$album->id}", "{$album->name}");
+    echo "</header>";
+    echo '<img src="data:image/jpeg;base64,'.base64_encode($album->jpeg).'" />';
+    echo "<footer class='short-text'>{$album->year} - {$album->artistName}</footer>
+      </article></div>";
 }
 ?>
 </section>
diff --git a/codeigniter/application/views/artistes_list.php b/codeigniter/application/views/artistes_list.php
index 68716d7..53d55d1 100644
--- a/codeigniter/application/views/artistes_list.php
+++ b/codeigniter/application/views/artistes_list.php
@@ -10,6 +10,7 @@ foreach ($artistes as $artist) {
     }
     $artistAlbums[$artist->artistName][] = array(
         'albumName' => $artist->albumName,
+        'albumId' => $artist->albumId,
         'year' => $artist->year
     );
 }
@@ -21,7 +22,7 @@ foreach ($artistAlbums as $artistName => $albums) {
     echo "</header>";
     echo "<ul>";
     foreach ($albums as $album) {
-        echo "<li>" . $album['albumName'] . " - " . $album['year'] . "</li>";
+        echo "<li>" . anchor("music/view/{$album['albumId']}", $album['albumName']) . " - " . $album['year'] . "</li>";
     }
     echo "</ul>";
     echo "</article></div>";