WIP: Implement uploads
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
namespace App\Model;
|
||||
|
||||
class UploadDto
|
||||
{
|
||||
private string $uuid;
|
||||
private string $filename;
|
||||
private string $originalFilename;
|
||||
private string $mimeType;
|
||||
private int $size;
|
||||
|
||||
public function __construct(
|
||||
string $uuid,
|
||||
string $filename,
|
||||
string $originalFilename,
|
||||
string $mimeType,
|
||||
int $size
|
||||
) {
|
||||
$this->uuid = $uuid;
|
||||
$this->filename = $filename;
|
||||
$this->originalFilename = $originalFilename;
|
||||
$this->mimeType = $mimeType;
|
||||
$this->size = $size;
|
||||
}
|
||||
|
||||
public function getUuid(): string
|
||||
{
|
||||
return $this->uuid;
|
||||
}
|
||||
|
||||
public function getFilename(): string
|
||||
{
|
||||
return $this->filename;
|
||||
}
|
||||
|
||||
public function getOriginalFilename(): string
|
||||
{
|
||||
return $this->originalFilename;
|
||||
}
|
||||
|
||||
public function getMimeType(): string
|
||||
{
|
||||
return $this->mimeType;
|
||||
}
|
||||
|
||||
public function getSize(): int
|
||||
{
|
||||
return $this->size;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
<?php
|
||||
|
||||
namespace App\Model;
|
||||
|
||||
use Doctrine\Common\Collections\ArrayCollection;
|
||||
use Doctrine\Common\Collections\Collection;
|
||||
use Symfony\Component\Uid\Uuid;
|
||||
use Symfony\Component\Validator\Constraints as Assert;
|
||||
|
||||
class UploadSessionDto
|
||||
{
|
||||
private string $uid;
|
||||
|
||||
#[Assert\Count(min: 1, minMessage: 'Bitte mindestens eine Datei hochladen')]
|
||||
private Collection $uploads;
|
||||
|
||||
public function __construct(string $uid = null)
|
||||
{
|
||||
$this->uid = $uid ?? Uuid::v4();
|
||||
$this->uploads = new ArrayCollection();
|
||||
}
|
||||
|
||||
public function getUid(): string
|
||||
{
|
||||
return $this->uid;
|
||||
}
|
||||
|
||||
public function addUpload(UploadDto $upload): static
|
||||
{
|
||||
if (false === $this->uploads->contains($upload)) {
|
||||
$this->uploads[] = $upload;
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function removeUpload(string $uuid): static
|
||||
{
|
||||
$uploadToRemove = $this->uploads->filter(function (UploadDto $upload) use ($uuid) {
|
||||
return $uuid === $upload->getUuid();
|
||||
})->first();
|
||||
|
||||
if (null !== $uploadToRemove) {
|
||||
$this->uploads->removeElement($uploadToRemove);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getUploads(): Collection
|
||||
{
|
||||
return $this->uploads;
|
||||
}
|
||||
|
||||
public function flushUploads(): static
|
||||
{
|
||||
$this->uploads->clear();
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getSize(): int
|
||||
{
|
||||
$size = 0;
|
||||
|
||||
foreach ($this->uploads as $upload) {
|
||||
$size += $upload->getSize();
|
||||
}
|
||||
|
||||
return $size;
|
||||
}
|
||||
|
||||
public function getCount(): int
|
||||
{
|
||||
return $this->uploads->count();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user