<?php
// src/Entity/UploadBatch.php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Uid\Uuid;
/**
* @ORM\Entity
* @ORM\Table(name="upload_batch")
*/
class UploadBatch
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private ?int $id = null;
/**
* @ORM\Column(type="string", length=36, unique=true)
*/
private string $uuid;
/**
* @ORM\Column(type="string", length=255)
*/
private string $originalFilename;
/**
* @ORM\Column(type="string", length=255)
*/
private string $storedFilename;
/**
* @ORM\Column(type="string", length=10)
*/
private string $extension;
/**
* @ORM\Column(type="string", length=100)
*/
private string $mimeType;
/**
* @ORM\Column(type="integer")
*/
private int $fileSize;
/**
* @ORM\Column(type="string", length=20, options={"default":"pending"})
*/
private string $status = 'pending';
/**
* @ORM\Column(type="datetime_immutable")
*/
private \DateTimeImmutable $uploadedAt;
/**
* @ORM\OneToOne(targetEntity=DeclarationConducteur::class, mappedBy="uploadBatch", cascade={"persist"})
*/
private ?DeclarationConducteur $declaration = null;
public function __construct()
{
// use a safe string cast to ensure compatibility with tooling/versions
$this->uuid = sprintf(
'%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
mt_rand(0, 0xffff), mt_rand(0, 0xffff),
mt_rand(0, 0xffff),
mt_rand(0, 0x0fff) | 0x4000,
mt_rand(0, 0x3fff) | 0x8000,
mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
);
$this->uploadedAt = new \DateTimeImmutable();
}
// ───── Getters & Setters ─────
public function getId(): ?int { return $this->id; }
public function getUuid(): string { return $this->uuid; }
public function getOriginalFilename(): string { return $this->originalFilename; }
public function setOriginalFilename(string $v): self { $this->originalFilename = $v; return $this; }
public function getStoredFilename(): string { return $this->storedFilename; }
public function setStoredFilename(string $v): self { $this->storedFilename = $v; return $this; }
public function getExtension(): string { return $this->extension; }
public function setExtension(string $v): self { $this->extension = strtolower($v); return $this; }
public function getMimeType(): string { return $this->mimeType; }
public function setMimeType(string $v): self { $this->mimeType = $v; return $this; }
public function getFileSize(): int { return $this->fileSize; }
public function setFileSize(int $v): self { $this->fileSize = $v; return $this; }
public function getStatus(): string { return $this->status; }
public function setStatus(string $v): self { $this->status = $v; return $this; }
public function getUploadedAt(): \DateTimeImmutable { return $this->uploadedAt; }
public function setUploadedAt(\DateTimeImmutable $uploadedAt): self
{
$this->uploadedAt = $uploadedAt;
return $this;
}
public function getDeclaration(): ?DeclarationConducteur { return $this->declaration; }
public function setDeclaration(?DeclarationConducteur $d): self { $this->declaration = $d; return $this; }
}