<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Playlist 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');
        if (!$this->session->userdata('user_id')) {
            redirect('connexion');
        }
    }

    public function index(){

        
        $userId = $this->session->userdata('user_id');
        $playlists = $this->model_music->getPlaylistsByUser($userId);
        $this->load->view('layout/header');
        $this->load->view('playlist_list', ['playlists' => $playlists]);
        $this->load->view('layout/footer');
    }

    public function create(){
        $name = $this->input->post('name');
        $userId = $this->session->userdata('user_id');
        $this->model_music->createPlaylist($name, $userId);
        redirect('playlist');
    }

    public function delete($playlistId){
        $this->model_music->deletePlaylist($playlistId);
        redirect('playlist');
    }

    public function duplicate($id) {
        $playlist = $this->model_music->getPlaylistById($id);
        if ($playlist) {
            $newName = $playlist->name . '_bis';
            $userId = $this->session->userdata('user_id');
            $newPlaylistId = $this->model_music->createPlaylist($newName, $userId);
            $songs = $this->model_music->getSongsByPlaylist($id);
            foreach ($songs as $song) {
                $this->model_music->addSongToPlaylist($newPlaylistId, $song->id);
            }
            redirect('playlist/view/' . $newPlaylistId);
        } else {
            echo "Playlist non trouvée.";
        }
    }

    public function view($id) {
        if($this->model_music->playlistOfUser($id)){
            $songs = $this->model_music->getSongsByPlaylist($id);
            $playlist = $this->model_music->getPlaylistById($id);
            if ($playlist) {
                $data['playlistName'] = $playlist->name; 
                $data['songs'] = $songs;
                $data['playlistId'] = $id;
                $this->load->view('layout/header');
                $this->load->view('playlist_view', $data);
                $this->load->view('layout/footer');
            } else {
                echo "Playlist non trouvée.";
            }
        }else{
            redirect('playlist');
        }
        
        
    }

    public function add_song(){
        $playlistId = $this->input->post('playlistId');
        $songId = $this->input->post('songId');
        $this->model_music->addSongToPlaylist($playlistId, $songId);
        redirect('playlists/view/' . $playlistId);
    }
    

    public function remove_song(){
        $playlistId = $this->input->post('playlistId');
        $songId = $this->input->post('songId');
        $this->model_music->removeSongFromPlaylist($playlistId, $songId);
        redirect('playlist/view/' . $playlistId);
    }

    public function search_song(){
        $playlistId = $this->input->post('playlistId');
        $songName = $this->input->post('songName');
        $song = $this->model_music->findSongByName($songName);
        if ($song) {
            $this->model_music->addSongToPlaylist($playlistId, $song->id);
        }
        redirect('playlist/view/' . $playlistId);
    }

    public function choose_playlist($songId) {
       
    $playlists = $this->model_music->getPlaylistsByUser($this->session->userdata('user_id'));
    $this->load->view('layout/header');
    $this->load->view('choose_playlist', ['playlists' => $playlists, 'songId' => $songId]);
    $this->load->view('layout/footer');
}


public function choix_playlist($albumId) {
    
    $playlists = $this->model_music->getPlaylistsByUser($this->session->userdata('user_id'));
    $this->load->view('layout/header');
    $this->load->view('choix_playlist', ['playlists' => $playlists, 'albumId' => $albumId]);
    $this->load->view('layout/footer');
}

    public function add_track() {
        $songId = $this->input->post('songId');
        $playlistId = $this->input->post('playlistId');
        if (!empty($songId) && !empty($playlistId)) {
            $this->model_music->addSongToPlaylist($playlistId, $songId);
            redirect('playlist/view/' . $playlistId);
        } else {
            echo "Erreur : Veuillez sélectionner une playlist.";
        }
    }

    public function add_album_to_playlist() {
        $albumId = $this->input->post('albumId');
        $playlistId = $this->input->post('playlistId');
        $songs = $this->model_music->getMusicsByAlbum($albumId);
        foreach ($songs as $song) {
            $this->model_music->addSongToPlaylist($playlistId, $song->songId);
        }
        redirect('playlist/view/' . $playlistId);
    }

  
    public function generate_random(){
        $genres = $this->model_music->getGenres();
        $this->load->view('layout/header');
        $this->load->view('playlist_generate', ['genres' => $genres]);
        $this->load->view('layout/footer');

        $genre = $this->input->post('genre');
        $numSongs = (int)$this->input->post('numSongs');
        $playlistName = $this->input->post('playlistName');
        $userId = $this->session->userdata('user_id');
    
        if ($numSongs > 0 && !empty($playlistName)) {
            $playlistId = $this->model_music->generate_random_playlist($numSongs, $playlistName, $userId, $genre);
            redirect('playlist/view/' . $playlistId);
        } else {
            echo "Erreur : Veuillez entrer un nombre de chansons valide et un nom de playlist.";
        }
    }
    
    
}
?>