2022-08-19 19:52:56 -05:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace App\Data;
|
|
|
|
|
|
|
|
|
|
use App\Exceptions\Quit;
|
|
|
|
|
use Spatie\LaravelData\Attributes\DataCollectionOf;
|
|
|
|
|
use Spatie\LaravelData\Attributes\MapInputName;
|
|
|
|
|
use Spatie\LaravelData\DataCollection;
|
|
|
|
|
use Spatie\LaravelData\Attributes\WithCast;
|
2022-09-07 22:49:21 -05:00
|
|
|
use Spatie\LaravelData\DataPipeline;
|
2022-08-19 19:52:56 -05:00
|
|
|
|
|
|
|
|
class InputData extends Data
|
|
|
|
|
{
|
|
|
|
|
#[DataCollectionOf(FileData::class)]
|
|
|
|
|
#[MapInputName('input')]
|
|
|
|
|
public DataCollection $files;
|
|
|
|
|
public ?string $url = null;
|
|
|
|
|
#[WithCast(Casts\Folder::class)]
|
|
|
|
|
public ?string $destination = null;
|
|
|
|
|
public ?string $title = null;
|
|
|
|
|
public bool $sync = false;
|
2022-08-20 22:51:12 -05:00
|
|
|
public ?int $priority = null;
|
2022-08-19 19:52:56 -05:00
|
|
|
|
|
|
|
|
public function assertValid(): self
|
|
|
|
|
{
|
|
|
|
|
throw_if(
|
|
|
|
|
!$this->hasFiles() && !$this->hasURL(),
|
|
|
|
|
Quit::class,
|
|
|
|
|
'Must have either a valid file or URL'
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
return $this;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function hasURL(): bool
|
|
|
|
|
{
|
|
|
|
|
return !empty($this->url);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function hasFiles(): bool
|
|
|
|
|
{
|
|
|
|
|
return !empty($this->files) && !!$this->files->count();
|
|
|
|
|
}
|
2022-09-07 22:49:21 -05:00
|
|
|
|
|
|
|
|
public static function pipeline(): DataPipeline
|
|
|
|
|
{
|
|
|
|
|
return parent::pipeline()->through(DataPipes\ExtraFiles::class);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static function fillPipeline(): DataPipeline
|
|
|
|
|
{
|
|
|
|
|
return parent::fillPipeline()->through(DataPipes\ExtraFiles::class);
|
|
|
|
|
}
|
2022-08-19 19:52:56 -05:00
|
|
|
}
|