2017-09-10 04:55:21 +00:00
|
|
|
<?php
|
2017-09-26 02:43:01 +00:00
|
|
|
/**
|
2017-09-10 04:55:21 +00:00
|
|
|
* Pterodactyl - Panel
|
|
|
|
* Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com>.
|
|
|
|
*
|
2017-09-26 02:43:01 +00:00
|
|
|
* This software is licensed under the terms of the MIT license.
|
|
|
|
* https://opensource.org/licenses/MIT
|
2017-09-10 04:55:21 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
namespace Pterodactyl\Http\Requests\Server;
|
|
|
|
|
2017-10-28 02:42:53 +00:00
|
|
|
class ScheduleCreationFormRequest extends ServerFormRequest
|
2017-09-10 04:55:21 +00:00
|
|
|
{
|
2017-10-28 02:42:53 +00:00
|
|
|
/**
|
|
|
|
* Permission to validate this request aganist.
|
|
|
|
*
|
|
|
|
* @return string
|
|
|
|
*/
|
|
|
|
protected function permission(): string
|
|
|
|
{
|
|
|
|
if ($this->method() === 'PATCH') {
|
|
|
|
return 'edit-schedule';
|
|
|
|
}
|
|
|
|
|
|
|
|
return 'create-schedule';
|
|
|
|
}
|
|
|
|
|
2017-09-10 04:55:21 +00:00
|
|
|
/**
|
|
|
|
* Validation rules to apply to the request.
|
|
|
|
*
|
|
|
|
* @return array
|
|
|
|
*/
|
|
|
|
public function rules()
|
|
|
|
{
|
|
|
|
return [
|
|
|
|
'name' => 'string|max:255',
|
2017-09-13 04:45:19 +00:00
|
|
|
'cron_day_of_week' => 'required|string',
|
|
|
|
'cron_day_of_month' => 'required|string',
|
|
|
|
'cron_hour' => 'required|string',
|
|
|
|
'cron_minute' => 'required|string',
|
|
|
|
'tasks' => 'sometimes|array|size:4',
|
2017-09-14 02:46:43 +00:00
|
|
|
'tasks.time_value' => 'required_with:tasks|max:5',
|
|
|
|
'tasks.time_interval' => 'required_with:tasks|max:5',
|
|
|
|
'tasks.action' => 'required_with:tasks|max:5',
|
|
|
|
'tasks.payload' => 'required_with:tasks|max:5',
|
|
|
|
'tasks.time_value.*' => 'numeric|between:0,59',
|
2017-09-13 04:45:19 +00:00
|
|
|
'tasks.time_interval.*' => 'string|in:s,m',
|
|
|
|
'tasks.action.*' => 'string|in:power,command',
|
|
|
|
'tasks.payload.*' => 'string',
|
2017-09-10 04:55:21 +00:00
|
|
|
];
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Normalize the request into a format that can be used by the application.
|
|
|
|
*
|
|
|
|
* @return array
|
|
|
|
*/
|
|
|
|
public function normalize()
|
|
|
|
{
|
2017-09-13 04:45:19 +00:00
|
|
|
return $this->only('name', 'cron_day_of_week', 'cron_day_of_month', 'cron_hour', 'cron_minute');
|
2017-09-10 04:55:21 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2017-09-13 04:45:19 +00:00
|
|
|
* Return the tasks provided in the request that are associated with this schedule.
|
2017-09-10 04:55:21 +00:00
|
|
|
*
|
|
|
|
* @return array|null
|
|
|
|
*/
|
2017-09-13 04:45:19 +00:00
|
|
|
public function getTasks()
|
2017-09-10 04:55:21 +00:00
|
|
|
{
|
|
|
|
$restructured = [];
|
2017-09-13 04:45:19 +00:00
|
|
|
foreach (array_get($this->all(), 'tasks', []) as $key => $values) {
|
2017-11-05 18:59:51 +00:00
|
|
|
for ($i = 0; $i < count($values); $i++) {
|
2017-09-10 04:55:21 +00:00
|
|
|
$restructured[$i][$key] = $values[$i];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return empty($restructured) ? null : $restructured;
|
|
|
|
}
|
|
|
|
}
|