<?php

class CommentDataGateway {
	
    public function getNumber($fileID, $parentID)
    {
        $whereComments = "file_id   = :file_id_bind AND
                          parent_id = :parent_id_bind";
        if (empty($parentID)) {
            $whereComments  = "file_id = :file_id_bind AND
                               parent_id is null";
        }
        $query = "SELECT COUNT(*) + 1
                    FROM comments
                   WHERE {$whereComments}";
        $stmt = $this->pdo->prepare($query);
        $stmt->bindValue(":file_id_bind",   $fileID,   \PDO::PARAM_STR);
        if (!empty($parentID)) {
            $stmt->bindValue(":parent_id_bind", $parentID, \PDO::PARAM_INT);
        }
        $stmt->execute();
        $number = $stmt->fetchColumn();
        return $number;
    }

    public function getPath($fileID, $parentID, $number)
    {
        return $this->getParentPath($fileID, $parentID) . "." . $this->getNumberForPath($number);
    }

    private function getParentPath($fileID, $parentID)
    {
        $query = "SELECT path
                    FROM comments
                   WHERE file_id   = :file_id_bind
                     AND parent_id = :parent_id_bind";
        $stmt = $this->pdo->prepare($query);
        $stmt->bindValue(":file_id_bind",   $fileID,   \PDO::PARAM_STR);
        $stmt->bindValue(":parent_id_bind", $parentID, \PDO::PARAM_INT);
        $stmt->execute();
        $path = $stmt->fetchColumn();
        return $path;
    }

    private function getNumberForPath($number)
    {
        return str_pad((string)$number, 3, "0", STR_PAD_LEFT);
    }
}
