/**
  * Create a new job instance.
  *
  * @return void
  */
 public function __construct(Models\Server $server, Models\Task $task)
 {
     $this->server = $server;
     $this->task = $task;
     $task->queued = 1;
     $task->save();
 }
Exemple #2
0
 /**
  * Execute the console command.
  *
  * @return mixed
  */
 public function handle()
 {
     $tasks = Models\Task::where('queued', 0)->where('active', 1)->where('next_run', '<=', Carbon::now()->toAtomString())->get();
     $this->info(sprintf('Preparing to queue %d tasks.', count($tasks)));
     $bar = $this->output->createProgressBar(count($tasks));
     foreach ($tasks as &$task) {
         $bar->advance();
         $this->dispatch(new SendScheduledTask(Models\Server::findOrFail($task->server), $task));
     }
     $bar->finish();
     $this->info("\nFinished queuing tasks for running.");
 }
Exemple #3
0
 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) {
         Log::error($ex);
         return response()->json(['error' => 'A server error occured while attempting to toggle this task.'], 503);
     }
 }
Exemple #4
0
 /**
  * Create a new scheduled task for a given server.
  * @param  int      $id
  * @param  array    $data
  *
  * @throws DisplayException
  * @throws DisplayValidationException
  * @return void
  */
 public function create($id, $data)
 {
     $server = Models\Server::findOrFail($id);
     $validator = Validator::make($data, ['action' => 'string|required', 'data' => 'string|required', 'year' => 'string|sometimes', 'day_of_week' => 'string|sometimes', 'month' => 'string|sometimes', 'day_of_month' => 'string|sometimes', 'hour' => 'string|sometimes', 'minute' => 'string|sometimes']);
     if ($validator->fails()) {
         throw new DisplayValidationException(json_encode($validator->errors()));
     }
     if (!in_array($data['action'], $this->actions)) {
         throw new DisplayException('The action provided is not valid.');
     }
     $cron = $this->defaults;
     foreach ($this->defaults as $setting => $value) {
         if (array_key_exists($setting, $data) && !is_null($data[$setting]) && $data[$setting] !== '') {
             $cron[$setting] = $data[$setting];
         }
     }
     // Check that is this a valid Cron Entry
     try {
         $buildCron = Cron::factory(sprintf('%s %s %s %s %s %s', $cron['minute'], $cron['hour'], $cron['day_of_month'], $cron['month'], $cron['day_of_week'], $cron['year']));
     } catch (\Exception $ex) {
         throw $ex;
     }
     $task = new Models\Task();
     $task->fill(['server' => $server->id, 'active' => 1, 'action' => $data['action'], 'data' => $data['data'], 'queued' => 0, 'year' => $cron['year'], 'day_of_week' => $cron['day_of_week'], 'month' => $cron['month'], 'day_of_month' => $cron['day_of_month'], 'hour' => $cron['hour'], 'minute' => $cron['minute'], 'last_run' => null, 'next_run' => $buildCron->getNextRunDate()]);
     return $task->save();
 }