<?php
namespace App\Controller\API;
use App\Controller\BaseController;
use Empire\Access\Access;
use Empire\Core\Core;
use Empire\Core\Stance;
use Exception;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
/**
* Class StanceAPI
* @package App\Controller\API
* @Route("/api/stance")
*/
class StanceAPI extends BaseController
{
/**
* @return JsonResponse
* @throws Exception
* @Route("/list")
*/
public function list() {
return $this->api(Stance::loadAll());
}
/**
* @param $id
* @return JsonResponse
* @Route("/delete/{id}", requirements={"id"="\d+"})
*/
public function delete($id) {
if(!Core::user()->hasAccess('stances')) {
return $this->api(["error" => "User needs 'stances' key."], 403);
}
try {
Stance::load([$id])->delete();
return $this->api(["status" => "success"]);
} catch (Exception $e) {
return $this->api(["error" => "Encountered an error trying to delete this faction", "message" => $e->getMessage()], 403);
}
}
/**
* @param $id
* @param $value
* @return JsonResponse
* @Route("/update/{id}/{value}", requirements={"id"="\d+", "value"="\d+"})
*/
public function update($id, $value) {
if(!Core::user()->hasAccess('stances')) {
return $this->api(["error" => "User needs 'stances' key."], 403);
}
$stance = Stance::load([$id]);
$stance->set($value);
return $this->api(["status" => "success"]);
}
/**
* @param Request $request
* @return JsonResponse
* @Route("/new", methods={"POST"})
*/
public function new(Request $request) {
if(!Access::hasAccess(Core::user(), 'stances')) {
return $this->api(['error' => "Access key 'stances' required."], 403);
}
$name = $request->request->get('name');
$status = $request->request->get('status');
return $this->api(["stance" => Stance::addStance($name, $status)]);
}
}