freescout/freescout-dist/app/Job.php

59 lines
1.3 KiB
PHP

<?php
namespace App;
use App\Thread;
use Illuminate\Database\Eloquent\Model;
class Job extends Model
{
const UPDATED_AT = null;
public $payload_decoded = null;
/**
* Automatically converted into Carbon dates.
*/
protected $dates = ['created_at', 'available_at', 'reserved_at'];
public function getPayloadDecoded()
{
if ($this->payload_decoded !== null) {
return $this->payload_decoded;
}
$this->payload_decoded = json_decode($this->payload, true);
return $this->payload_decoded;
}
public function getCommand()
{
return self::getPayloadCommand($this->getPayloadDecoded());
}
public function getCommandLastThread()
{
$command = $this->getCommand();
if ($command && !empty($command->threads)) {
return Thread::getLastThread($command->threads);
}
return null;
}
public static function getPayloadCommand($payload)
{
if (empty($payload['data']) || empty($payload['data']['command'])) {
return null;
}
try {
// If some record has been deleted from DB, there will be an error:
// No query results for model [App\Conversation].
return unserialize($payload['data']['command']);
} catch (\Exception $e) {
return null;
}
}
}