/home/bdqbpbxa/api-uniferx.goodface.com.ua/vendor/laravel/nova/src/Fields/FormData.php
<?php
namespace Laravel\Nova\Fields;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\Date;
use Illuminate\Support\Fluent;
use Illuminate\Support\Str;
use Laravel\Nova\Http\Requests\NovaRequest;
/**
* @template TKey of array-key
* @template TValue
*
* @extends \Illuminate\Support\Fluent<TKey, TValue>
*/
class FormData extends Fluent
{
/**
* The Request instance.
*
* @var \Laravel\Nova\Http\Requests\NovaRequest
*/
protected $request;
/**
* Create a new fluent instance.
*
* @param iterable<TKey, TValue> $attributes
* @param \Laravel\Nova\Http\Requests\NovaRequest $request
* @return void
*/
public function __construct($attributes, NovaRequest $request)
{
parent::__construct($attributes);
$this->request = $request;
}
/**
* Make fluent payload from request.
*
* @param \Laravel\Nova\Http\Requests\NovaRequest $request
* @param array<string, mixed> $fields
* @return static
*/
public static function make(NovaRequest $request, array $fields)
{
if (! is_null($request->resource) && ! is_null($request->resourceId)) {
$fields["resource:{$request->resource}"] = $request->resourceId;
}
if (! is_null($request->viaResource) && ! is_null($request->viaResourceId)) {
$fields["resource:{$request->viaResource}"] = $request->viaResourceId;
}
if (! is_null($request->relatedResource) && ! is_null($request->relatedResourceId)) {
$fields["resource:{$request->relatedResource}"] = $request->relatedResourceId;
}
return new static($fields, $request);
}
/**
* Make fluent payload from request only on specific keys.
*
* @param \Laravel\Nova\Http\Requests\NovaRequest $request
* @param array<int, string> $onlyAttributes
* @return static
*/
public static function onlyFrom(NovaRequest $request, array $onlyAttributes)
{
$fields = $request->method() === 'GET' && ! is_null($dependsOn = $request->query('dependsOn'))
? Arr::only(json_decode(base64_decode($dependsOn), true), $onlyAttributes)
: $request->only($onlyAttributes);
return static::make($request, $fields);
}
/**
* Get a resource attribute from the fluent instance.
*
* @param string $uriKey
* @param mixed $default
* @return mixed
*/
public function resource($uriKey, $default = null)
{
$key = "resource:{$uriKey}";
if (! empty($this->request->viaRelationship)
&& ($uriKey === $this->request->relatedResource || $uriKey === $this->request->viaResource)
) {
return $this->get($key, $this->get($this->request->viaRelationship, $default));
}
return $this->get($key, $default);
}
/**
* Retrieve input from the request as a Stringable instance.
*
* @param string $key
* @param mixed $default
* @return \Illuminate\Support\Stringable
*/
public function str($key, $default = null)
{
return $this->string($key, $default);
}
/**
* Retrieve input from the request as a Stringable instance.
*
* @param string $key
* @param mixed $default
* @return \Illuminate\Support\Stringable
*/
public function string($key, $default = null)
{
return Str::of($this->get($key, $default));
}
/**
* Retrieve input from the request as a json value.
*
* @param string $key
* @param mixed $default
* @return mixed
*/
public function json($key, $default = null)
{
$value = $this->get($key, $default);
return is_string($value) ? json_decode($value, true) : $value;
}
/**
* Retrieve input as a boolean value.
*
* Returns true when value is "1", "true", "on", and "yes". Otherwise, returns false.
*
* @param string|null $key
* @param bool $default
* @return bool
*/
public function boolean($key = null, $default = false)
{
return filter_var($this->get($key, $default), FILTER_VALIDATE_BOOLEAN);
}
/**
* Retrieve input as an integer value.
*
* @param string $key
* @param int $default
* @return int
*/
public function integer($key, $default = 0)
{
return intval($this->get($key, $default));
}
/**
* Retrieve input as a float value.
*
* @param string $key
* @param float $default
* @return float
*/
public function float($key, $default = 0.0)
{
return floatval($this->get($key, $default));
}
/**
* Retrieve input from the request as a Carbon instance.
*
* @param string $key
* @param string|null $format
* @param string|null $tz
* @return \Illuminate\Support\Carbon|null
*
* @throws \Carbon\Exceptions\InvalidFormatException
*/
public function date($key, $format = null, $tz = null)
{
$value = $this->get($key);
if (! filled($value)) {
return null;
}
if (is_null($format)) {
return Date::parse($value, $tz);
}
return Date::createFromFormat($format, $value, $tz);
}
}