. */ namespace FireflyIII\Models; use FireflyIII\User; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\SoftDeletes; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; /** * Class Webhook * * @property int $id * @property \Illuminate\Support\Carbon|null $created_at * @property \Illuminate\Support\Carbon|null $updated_at * @property string|null $deleted_at * @property int $user_id * @property bool $active * @property int $trigger * @property int $response * @property int $delivery * @property string $url * @property-read User $user * @method static \Illuminate\Database\Eloquent\Builder|Webhook newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|Webhook newQuery() * @method static \Illuminate\Database\Eloquent\Builder|Webhook query() * @method static \Illuminate\Database\Eloquent\Builder|Webhook whereActive($value) * @method static \Illuminate\Database\Eloquent\Builder|Webhook whereCreatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|Webhook whereDeletedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|Webhook whereDelivery($value) * @method static \Illuminate\Database\Eloquent\Builder|Webhook whereId($value) * @method static \Illuminate\Database\Eloquent\Builder|Webhook whereResponse($value) * @method static \Illuminate\Database\Eloquent\Builder|Webhook whereTrigger($value) * @method static \Illuminate\Database\Eloquent\Builder|Webhook whereUpdatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|Webhook whereUrl($value) * @method static \Illuminate\Database\Eloquent\Builder|Webhook whereUserId($value) * @mixin \Eloquent */ class Webhook extends Model { use SoftDeletes; // dont forget to update the config in firefly.php // triggers public const TRIGGER_CREATE_TRANSACTION = 100; public const TRIGGER_UPDATE_TRANSACTION = 110; public const TRIGGER_DELETE_TRANSACTION = 120; // actions public const MESSAGE_TRANSACTIONS = 200; public const MESSAGE_ACCOUNTS = 210; // delivery public const DELIVERY_JSON = 300; protected $fillable = ['active', 'trigger', 'response', 'delivery', 'user_id', 'url']; protected $casts = [ 'active' => 'boolean', 'trigger' => 'integer', 'response' => 'integer', 'delivery' => 'integer', ]; /** * Route binder. Converts the key in the URL to the specified object (or throw 404). * * @param string $value * * @throws NotFoundHttpException * @return Webhook */ public static function routeBinder(string $value): Webhook { if (auth()->check()) { $budgetId = (int) $value; /** @var User $user */ $user = auth()->user(); /** @var Webhook $webhook */ $webhook = $user->webhooks()->find($budgetId); if (null !== $webhook) { return $webhook; } } throw new NotFoundHttpException; } /** * @codeCoverageIgnore * @return BelongsTo */ public function user(): BelongsTo { return $this->belongsTo(User::class); } }