Add task toggle and delete
This commit is contained in:
parent
91ad9b3eaa
commit
9b4a0ed143
4 changed files with 174 additions and 2 deletions
|
@ -27,6 +27,7 @@ use Alert;
|
|||
use Log;
|
||||
use Cron;
|
||||
|
||||
use Pterodactyl\Repositories;
|
||||
use Pterodactyl\Models;
|
||||
use Pterodactyl\Exceptions\DisplayException;
|
||||
use Pterodactyl\Exceptions\DisplayValidationException;
|
||||
|
@ -84,4 +85,54 @@ class TaskController extends Controller
|
|||
'task' => Models\Task::where('id', $id)->where('server', $server->id)->firstOrFail()
|
||||
]);
|
||||
}
|
||||
|
||||
public function deleteTask(Request $request, $uuid, $id)
|
||||
{
|
||||
$server = Models\Server::getByUUID($uuid);
|
||||
$this->authorize('delete-task', $server);
|
||||
|
||||
$task = Models\Task::findOrFail($id);
|
||||
|
||||
if (!$task || $server->id !== $task->server) {
|
||||
return response()->json([
|
||||
'error' => 'No task by that ID was found associated with this server.'
|
||||
], 404);
|
||||
}
|
||||
|
||||
try {
|
||||
$repo = new Repositories\TaskRepository;
|
||||
$repo->delete($id);
|
||||
return response()->json([], 204);
|
||||
} catch (\Exception $ex) {
|
||||
return response()->json([
|
||||
'error' => 'A server error occured while attempting to delete this task.'
|
||||
], 503);
|
||||
}
|
||||
}
|
||||
|
||||
public function toggleTask(Request $request, $uuid, $id)
|
||||
{
|
||||
$server = Models\Server::getByUUID($uuid);
|
||||
$this->authorize('toggle-task', $server);
|
||||
|
||||
$task = Models\Task::findOrFail($id);
|
||||
|
||||
if (!$task || $server->id !== $task->server) {
|
||||
return response()->json([
|
||||
'error' => 'No task by that ID was found associated with this server.'
|
||||
], 404);
|
||||
}
|
||||
|
||||
try {
|
||||
$repo = new Repositories\TaskRepository;
|
||||
$resp = $repo->toggle($id);
|
||||
return response()->json([
|
||||
'status' => $resp
|
||||
]);
|
||||
} catch (\Exception $ex) {
|
||||
return response()->json([
|
||||
'error' => 'A server error occured while attempting to toggle this task.'
|
||||
], 503);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -141,6 +141,11 @@ class ServerRoutes {
|
|||
'uses' => 'Server\TaskController@deleteTask'
|
||||
]);
|
||||
|
||||
$router->post('tasks/toggle/{id}', [
|
||||
'as' => 'server.tasks.toggle',
|
||||
'uses' => 'Server\TaskController@toggleTask'
|
||||
]);
|
||||
|
||||
// Assorted AJAX Routes
|
||||
$router->group(['prefix' => 'ajax'], function ($server) use ($router) {
|
||||
// Returns Server Status
|
||||
|
|
|
@ -53,6 +53,43 @@ class TaskRepository
|
|||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes a given task.
|
||||
* @param int $id
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function delete($id)
|
||||
{
|
||||
$task = Models\Task::findOrFail($id);
|
||||
try {
|
||||
$task->delete();
|
||||
return true;
|
||||
} catch (\Exception $ex) {
|
||||
throw $ex;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Toggles a task active or inactive.
|
||||
* @param int $id
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function toggle($id)
|
||||
{
|
||||
$task = Models\Task::findOrFail($id);
|
||||
try {
|
||||
$task->active = ($task->active === 1) ? 0 : 1;
|
||||
$task->queued = 0;
|
||||
$task->save();
|
||||
|
||||
return $task->active;
|
||||
} catch (\Exception $ex) {
|
||||
throw $ex;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new scheduled task for a given server.
|
||||
* @param int $id
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue