221 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			221 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
namespace api\timeline;
 | 
						|
require_once __DIR__ . "/../utils/routesInterface.php";
 | 
						|
require_once "timelineData.php";
 | 
						|
 | 
						|
use api\utils\routesInterface;
 | 
						|
use Psr\Http\Message\ResponseInterface as Response;
 | 
						|
use Psr\Http\Message\ServerRequestInterface as Request;
 | 
						|
use Slim\App;
 | 
						|
 | 
						|
class timelineRoutes implements routesInterface
 | 
						|
{
 | 
						|
    private timelineData $timelineData;
 | 
						|
 | 
						|
    /**
 | 
						|
     * constructor used to instantiate a base timeline routes, to be used in the index.php file.
 | 
						|
     * @param App $app - the slim app used to create the routes
 | 
						|
     */
 | 
						|
    public function __construct(App $app)
 | 
						|
    {
 | 
						|
        $this->timelineData = new timelineData();
 | 
						|
        $this->createRoutes($app);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * creates the routes for the timeline
 | 
						|
     * @param App $app - the slim app used to create the routes
 | 
						|
     * @return void - returns nothing
 | 
						|
     */
 | 
						|
    public function createRoutes(App $app): void
 | 
						|
    {
 | 
						|
        $app->get("/timelineData/{timeline}", function (Request $request, Response $response, array $args)
 | 
						|
        {
 | 
						|
            //check if route is available if it is get the data
 | 
						|
            //otherwise return an error
 | 
						|
            if ($args["timeline"] == "edu")
 | 
						|
            {
 | 
						|
                $response->getBody()->write(json_encode($this->timelineData->getEduData()));
 | 
						|
                return $response;
 | 
						|
            }
 | 
						|
 | 
						|
            if($args["timeline"] == "work")
 | 
						|
            {
 | 
						|
                $response->getBody()->write(json_encode($this->timelineData->getWorkData()));
 | 
						|
                return $response;
 | 
						|
            }
 | 
						|
 | 
						|
            // something went wrong
 | 
						|
            $response->getBody()->write(json_encode(array("errorMessage" => "Error, timeline data not found")));
 | 
						|
            return $response->withStatus(404);
 | 
						|
        });
 | 
						|
 | 
						|
        $app->patch("/timelineData/{timeline}/{id}", function (Request $request, Response $response, array $args)
 | 
						|
        {
 | 
						|
            $data = $request->getParsedBody();
 | 
						|
            if ($args["timeline"] == "edu" && $args["id"] != null)
 | 
						|
            {
 | 
						|
                if (empty($data["dateFrom"]) || empty($data["dateTo"]) || empty($data["grade"]) || empty($data["course"]))
 | 
						|
                {
 | 
						|
                    // uh oh sent some empty data
 | 
						|
                    $response->getBody()->write(json_encode(array("error" => "Only some of the data was sent")));
 | 
						|
                    return $response->withStatus(400);
 | 
						|
                }
 | 
						|
                $message = $this->timelineData->updateEduData($data["dateFrom"], $data["dateTo"], $data["grade"], $data["course"], $args["id"]);
 | 
						|
 | 
						|
                if ($message == "not found")
 | 
						|
                {
 | 
						|
                    // uh oh sent some empty data
 | 
						|
                    $response->getBody()->write(json_encode(array("error" => "Edu data with ID " . $args["id"] . " was not found")));
 | 
						|
                    return $response->withStatus(404);
 | 
						|
                }
 | 
						|
 | 
						|
                if ($message == "error")
 | 
						|
                {
 | 
						|
                    // uh oh something went wrong
 | 
						|
                    $response->getBody()->write(json_encode(array("error" => "Something went wrong")));
 | 
						|
                    return $response->withStatus(500);
 | 
						|
                }
 | 
						|
 | 
						|
                $response->withStatus(201);
 | 
						|
                return $response;
 | 
						|
            }
 | 
						|
 | 
						|
            if ($args["timeline"] == "work" && $args["id"] != "undefined")
 | 
						|
            {
 | 
						|
                if (empty($data["dateFrom"]) || empty($data["dateTo"]) || empty($data["companyName"]) || empty($data["area"]) || empty($data["title"]))
 | 
						|
                {
 | 
						|
                    // uh oh sent some empty data
 | 
						|
                    $response->getBody()->write(json_encode(array("error" => "Only some of the data was sent")));
 | 
						|
                    return $response->withStatus(400);
 | 
						|
                }
 | 
						|
 | 
						|
                $message = $this->timelineData->updateWorkData($data["dateFrom"], $data["dateTo"], $data["companyName"], $data["area"], $data["title"], $args["id"]);
 | 
						|
 | 
						|
                if ($message == "not found")
 | 
						|
                {
 | 
						|
                    // uh oh sent some empty data
 | 
						|
                    $response->getBody()->write(json_encode(array("error" => "Work data with ID " . $args["id"] . " was not found")));
 | 
						|
                    return $response->withStatus(404);
 | 
						|
                }
 | 
						|
 | 
						|
                if ($message == "error")
 | 
						|
                {
 | 
						|
                    // uh oh something went wrong
 | 
						|
                    $response->getBody()->write(json_encode(array("error" => "Something went wrong")));
 | 
						|
                    return $response->withStatus(500);
 | 
						|
                }
 | 
						|
 | 
						|
                $response->withStatus(201);
 | 
						|
                return $response;
 | 
						|
            }
 | 
						|
 | 
						|
            $response->getBody()->write(json_encode(array("error" => "The correct data was not sent")));
 | 
						|
            return $response->withStatus(400);
 | 
						|
        });
 | 
						|
 | 
						|
        $app->delete("/timelineData/{timeline}/{id}", function (Request $request, Response $response, array $args)
 | 
						|
        {
 | 
						|
            if ($args["timeline"] == "edu" && $args["id"] != null)
 | 
						|
            {
 | 
						|
                $message = $this->timelineData->deleteEduData($args["id"]);
 | 
						|
 | 
						|
                if ($message == "not found")
 | 
						|
                {
 | 
						|
                    // uh oh sent some empty data
 | 
						|
                    $response->getBody()->write(json_encode(array("error" => "Edu data with ID " . $args["id"] . " was not found")));
 | 
						|
                    return $response->withStatus(404);
 | 
						|
                }
 | 
						|
 | 
						|
                if ($message == "error")
 | 
						|
                {
 | 
						|
                    // uh oh something went wrong
 | 
						|
                    $response->getBody()->write(json_encode(array("error" => "Something went wrong")));
 | 
						|
                    return $response->withStatus(500);
 | 
						|
                }
 | 
						|
 | 
						|
                return $response;
 | 
						|
            }
 | 
						|
 | 
						|
            if ($args["timeline"] == "work" && $args["id"] != null)
 | 
						|
            {
 | 
						|
                $message = $this->timelineData->deleteWorkData($args["id"]);
 | 
						|
 | 
						|
                if ($message == "not found")
 | 
						|
                {
 | 
						|
                    // uh oh sent some empty data
 | 
						|
                    $response->getBody()->write(json_encode(array("error" => "Work data with ID " . $args["id"] . " was not found")));
 | 
						|
                    return $response->withStatus(404);
 | 
						|
                }
 | 
						|
 | 
						|
                if ($message == "error")
 | 
						|
                {
 | 
						|
                    // uh oh something went wrong
 | 
						|
                    $response->getBody()->write(json_encode(array("error" => "Something went wrong")));
 | 
						|
                    return $response->withStatus(500);
 | 
						|
                }
 | 
						|
 | 
						|
                return $response;
 | 
						|
            }
 | 
						|
 | 
						|
            $response->getBody()->write(json_encode(array("error" => "The correct data was not sent")));
 | 
						|
            return $response->withStatus(400);
 | 
						|
        });
 | 
						|
 | 
						|
        $app->post("/timelineData/{timeline}", function (Request $request, Response $response, array $args)
 | 
						|
        {
 | 
						|
            $data = $request->getParsedBody();
 | 
						|
            if ($args["timeline"] == "edu")
 | 
						|
            {
 | 
						|
                if (empty($data["dateFrom"]) || empty($data["dateTo"]) || empty($data["grade"]) || empty($data["course"]))
 | 
						|
                {
 | 
						|
                    // uh oh sent some empty data
 | 
						|
                    $response->getBody()->write(json_encode(array("error" => "Only some of the data was sent")));
 | 
						|
                    return $response->withStatus(400);
 | 
						|
                }
 | 
						|
 | 
						|
                $insertedID = $this->timelineData->addEduData($data["dateFrom"], $data["dateTo"], $data["grade"], $data["course"]);
 | 
						|
                if (!is_int($insertedID))
 | 
						|
                {
 | 
						|
                    // uh oh something went wrong
 | 
						|
                    $response->getBody()->write(json_encode(array("error" => "Something went wrong")));
 | 
						|
                    return $response->withStatus(500);
 | 
						|
                }
 | 
						|
 | 
						|
                $response->getBody()->write(json_encode(array("ID" => $insertedID)));
 | 
						|
                $response->withStatus(201);
 | 
						|
                return $response;
 | 
						|
            }
 | 
						|
 | 
						|
            if ($args["timeline"] == "work")
 | 
						|
            {
 | 
						|
                if (empty($data["dateFrom"]) || empty($data["companyName"]) || empty($data["area"]) || empty($data["title"]))
 | 
						|
                {
 | 
						|
                    // uh oh sent some empty data
 | 
						|
                    $response->getBody()->write(json_encode(array("error" => "Only some of the data was sent")));
 | 
						|
                    return $response->withStatus(400);
 | 
						|
                }
 | 
						|
 | 
						|
                if (empty($data["dateTo"]))
 | 
						|
                {
 | 
						|
                    $data["dateTo"] = "";
 | 
						|
                }
 | 
						|
 | 
						|
                $insertedID = $this->timelineData->addWorkData($data["dateFrom"], $data["dateTo"], $data["companyName"], $data["area"], $data["title"]);
 | 
						|
                if (!is_int($insertedID))
 | 
						|
                {
 | 
						|
                    // uh oh something went wrong
 | 
						|
                    $response->getBody()->write(json_encode(array("error" => "Something went wrong")));
 | 
						|
                    return $response->withStatus(500);
 | 
						|
                }
 | 
						|
 | 
						|
                $response->getBody()->write(json_encode(array("ID" => $insertedID)));
 | 
						|
                $response->withStatus(201);
 | 
						|
                return $response;
 | 
						|
            }
 | 
						|
 | 
						|
            $response->getBody()->write(json_encode(array("error" => "The correct data was not sent")));
 | 
						|
            return $response->withStatus(400);
 | 
						|
        });
 | 
						|
    }
 | 
						|
} |