<?php
namespace App\Entity;
use App\Controller\Admin\StatusTrait;
use App\Repository\CabeceraLinkdepagoRepository;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass=CabeceraLinkdepagoRepository::class)
* @ORM\HasLifecycleCallbacks()
*/
class CabeceraLinkdepago
{
use StatusTrait;
use Timestamp;
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity=Cabecera::class, inversedBy="CabeceraLinkdepago")
*/
private $Cabecera;
/**
* @ORM\Column(type="string", length=255)
*/
private $Estado;
/**
* @ORM\Column(type="json", nullable=true)
*/
private $Linkdepago = [];
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $comentario;
public function getId(): ?int
{
return $this->id;
}
public function getCabecera(): ?Cabecera
{
return $this->Cabecera;
}
public function setCabecera(?Cabecera $Cabecera): self
{
$this->Cabecera = $Cabecera;
return $this;
}
public function getEstado(): ?string
{
return $this->Estado;
}
public function setEstado(string $Estado): self
{
$this->Estado = $Estado;
return $this;
}
public function getLinkdepago(): ?array
{
return $this->Linkdepago;
}
public function setLinkdepago(array $Linkdepago): self
{
$this->Linkdepago = $Linkdepago;
return $this;
}
public function getComentario(): ?string
{
return $this->comentario;
}
public function setComentario(string $comentario): self
{
$this->comentario = $comentario;
return $this;
}
public function getGlobalpayId(): ?string
{
return $this->Linkdepago['transaction']['id'] ?? null;
}
public function getGlobalpayLtpId(): ?string
{
return $this->Linkdepago['transaction']['ltp_id'] ?? null;
}
public function getGlobalpayStatus(): ?string
{
// Asegúrate de reemplazar 'parametroEspecifico' con la clave real que buscas.
return $this->Linkdepago['transaction']['status'] ?? null;
}
public function getGlobalpayComment(): ?string
{
return $this->Linkdepago['transaction']['message'] ?? null;
}
public function getGlobalpayStatusName(): ?string
{
// Obtiene el número de estado
$status = $this->getGlobalpayStatus();
return $this->mapStatusNumberToName($status);
}
public function getGlobalpayDate(): ?\DateTime
{
$date = $this->Linkdepago['transaction']['date'] ?? null;
if ($date === null) {
return null;
}
// Usar \DateTime::createFromFormat para manejar el formato de fecha específico
$dateTime = \DateTime::createFromFormat('d/m/Y H:i:s', $date);
if ($dateTime === false) {
throw new \Exception("Failed to parse date string: " . $date);
}
// Restar 5 horas a la fecha y hora
$dateTime->modify('-5 hours');
return $dateTime;
}
public function getBadgeColor(): ?string
{
return $this->getBadgeColorForStatus($this->getGlobalpayStatus());
}
}