Tutoriel de correction du TP4 

Partie 2 - Cas d'utilisation "Voir tous les tickets"

Nouvelles méthodes dans la classe la classe TicketDAO

La méthode findAll() va lire le fichier tickets.csv. Chaque ligne lue correspond à un ticket. On récupère les champs de chaque ticket en utilisant la fonction explode() déjà utilisée dans les précédents TPs.

    /**
     * retourne la  collection (un tableau simple) de tous les tickets
     * (le tableau retourné peut être vide.)
     */
    function findAll() {
        $result = array();
        $fd = fopen($this->filePath, 'r'); // ouverture du fichier en lecture
        if (!$fd)
            return $result;
        while ($line = fgets($fd)) {
            list($ticketID, $applicationID, $login, $priority, $type, $creationDate, $oneLiner, $detailedDescription, $attachmentName) = explode(';', $line);
            $newTicket = new Ticket($applicationID, $login, $priority, $type, $creationDate, $oneLiner, $detailedDescription, $attachmentName, $ticketID);
            $result[] = $newTicket;  // ajoute le nouveau ticket au tableau
        }
        fclose($fd); // fermeture du fichier
        return $result;       
    }

La méthode findById($ticketId) n'est pas explicité ici.

Nouvelles méthodes dans la classe AppService

Ajouter les méthodes suivantes dans AppService.class.php  :

    /**
     * retourne la  collection (un tableau simple) de tous les tickets
     * (le tableau retourné peut être vide.)
     */
    static function getAllTickets() {
        $ticketDAO = new TicketDAO();
        return $ticketDAO->findAll();
    }

    /**
     * retourne l'instance de Ticket d'ID $ticketId
     */
    static function findTicketById($ticketId) {
        $ticketDAO = new TicketDAO();
        return $ticketDAO->findById($ticketId);
    }


Création de la page showAllTickets.php

Sélectionner le répertoire tp4 

File->New->PHP File

Saisir showAllTickets.php pour nom de fichier. Cliquer sur le bouton "Finish".

Rechercher <!DOCTYPE html PUBLIC  dans le fichier editTicketAction.php. Copier la zone  de ce fichier comprise entre cet endroit et la fin du fichier. L'insérer dans le fichier showAllTickets.php

Au début de ce fichier inclure (éventuellement un contrôle d'accès et) les 2 classes utilisées ainsi que la définition du tableau $priorityColorMap :

<?php
include_once 'Ticket.class.php';
include_once 'AppService.class.php';
$priorityColorMap = array(
          5 => 'red', // 'Très urgente'
  //...
?>

Rechercher la ligne contenant un appel à AppService::printTicketAsTableRow. Remplacer cette ligne par les suivantes :

<?php
     $allTickets = AppService::getAllTickets();
     foreach ( $allTickets as $ticket ) {      
        $tableRecordClass = 'tab_bg_' . $priorityColorMap[$ticket->getPriority()];
        AppService::printTicketAsTableRow($ticket, $tableRecordClass);
     }
?>

Tester