<?php
require "database.class.php";
$db = new Database();
header("Content-Type:application/json");

$http_method = $_SERVER['REQUEST_METHOD'];
switch($http_method)
{
    case 'GET':
        if(!empty($_GET['id']))
        {
            $data = $db->getCarnet($_GET['id']);
        }
        else
        {
            $data = $db->getCarnet();
        }
        deliver_response(200, "OK", $data);
        break;
    case 'POST':
        $postedData = $_POST;
        $status = 400;
        $resp = "Bad Request";
        if(!empty($postedData['nom']) && !empty($postedData['prenom']))
        {
            if($db->insererCarnet($postedData['nom'], $postedData['prenom']))
            {
                $status = 201;
                $resp = "Created";
            }
        }
        deliver_response(200, $resp, NULL);
        break;
    case 'PUT':
        parse_str(file_get_contents("php://input"),$postedData);
        $status = 200;
        $resp = "Bad Request";
        if(!empty($postedData['id']) && !empty($postedData['nom']) && !empty($postedData['prenom']))
        {
            $resp = "Bad Request";
            if($db->updateCarnet($postedData['id'], $postedData['nom'], $postedData['prenom']))
            {
                $status = 200;
                $resp = "OK";
            }
        }
        deliver_response($status, $resp, NULL);
        break;
    default:
        $status = 400;
        $resp = "Bad Request";
        if(!empty($_GET['id']))
        {
            if($db->deleteCarnet($_GET['id']))
            {
                $status = 200;
                $resp = "OK";
            }
        }
        deliver_response($status, $resp, NULL);
        break;
}
function deliver_response($status, $status_message, $data)
{
    header("HTTP/1.1 " . $status . " " . $status_message);
    $response['status'] = $status;
    $response['status_message'] = $status_message;
    $response['data'] = $data;
    $json = json_encode($response);
    echo $json;
}
?>