<?php

include_once __ROOT_DIR . '/libs/php-jwt/src/BeforeValidException.php';
include_once __ROOT_DIR . '/libs/php-jwt/src/ExpiredException.php';
include_once __ROOT_DIR . '/libs/php-jwt/src/SignatureInvalidException.php';
include_once __ROOT_DIR . '/libs/php-jwt/src/JWT.php';
use \Firebase\JWT\JWT;

class ResultController extends Controller {

    public function __construct($name, $request) {
        parent::__construct($name, $request);
    }

    // ==============
    // Actions
    // ==============

    public function processRequest()
    {
        switch ($this->request->getHttpMethod()) {
            case 'GET':
                $id = $this->request->getURIParams()[0];
                return $this->returnResultGameID($id);

            case 'POST':
                $id = $this->request->getURIParams()[0];
                $data = json_decode(file_get_contents("php://input"),TRUE);
                return $this->saveAwnser($id, $data);
                break;
            
            case 'DELETE':
                $data = json_decode(file_get_contents("php://input"),TRUE);
                return $this->deleteLine($data);
                break;
            
            case 'OPTIONS':
                return Response::okresponse(json_encode("OPTIONS"));
                            
        }
        return Response::errorResponse("unsupported parameters or method in game");
    }

    public function saveAwnser($id, $data)
    {
        Result::saveAwnser(array(":id" => $id, ":user_id" => $data['USER_ID'], ":awn" => $data['value']));
        return Response::okresponse(json_encode("Result Added"));
    }

    public function returnResultGameID($id)
    {
        $result = Result::returnResultGameID(array(":id" => $id));
        return Response::okresponse(json_encode($result));
    }

    public function deleteLine($data)
    {
        $res = Result::getLigneByUserID(array(":id" => $data['USER_ID']));
        if($res == array()){
            return Response::errorInParametersResponse("Result not found");
        }else {
            Result::deleteLigne(array(":id" => $data['USER_ID']));
            return Response::okresponse(json_encode("Result deleted"));
        }
        
    }
}