<?php
namespace App\Entity;
use App\Repository\PcPuntoCulturaRepository;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Symfony\Component\Validator\Constraints as Assert;
use DateTime;
use DateTimeInterface;
#[ORM\Entity(repositoryClass: PcPuntoCulturaRepository::class)]
class PcPuntoCultura
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
private ?int $id = null;
#[Assert\NotBlank(message: "El nombre no puede estar vacío")]
#[Assert\Length(max: 255, maxMessage: "El nombre no puede superar los 255 caracteres")]
#[ORM\Column(type: 'string', length: 255, nullable: false)]
private $nombre;
#[Assert\Length(max: 800, maxMessage: "La reseña no puede superar los 800 caracteres")]
#[ORM\Column(type: 'string', length: 800, nullable: true)]
private $resenia;
#[Assert\NotBlank(message: "La región no puede estar vacía")]
#[Assert\Length(max: 255, maxMessage: "La región no puede superar los 255 caracteres")]
#[ORM\Column(type: 'string', length: 255, nullable: true)]
private $region;
#[Assert\NotBlank(message: "La comuna no puede estar vacía")]
#[Assert\Length(max: 255, maxMessage: "La comuna no puede superar los 255 caracteres")]
#[ORM\Column(type: 'string', length: 255, nullable: true)]
private $comuna;
#[Assert\NotBlank(message: "La dirección no puede estar vacía")]
#[Assert\Length(max: 255, maxMessage: "La dirección no puede superar los 255 caracteres")]
#[ORM\Column(type: 'string', length: 255, nullable: true)]
private $direccion;
#[Assert\Length(max: 255, maxMessage: "El georeferencia no puede superar los 255 caracteres")]
#[ORM\Column(type: 'string', length: 255, nullable: true)]
private $georeferencia;
#[Assert\Length(max: 255, maxMessage: "El nombre de contacto no puede superar los 255 caracteres")]
#[ORM\Column(type: 'string', length: 255, nullable: true)]
private $nombre_contacto;
#[Assert\Email(message: "El email '{{ value }}' no es válido")]
#[ORM\Column(type: 'string', length: 255, nullable: true)]
private $email_contacto;
#[ORM\Column(type: "json", nullable: true)]
private ?array $redes_sociales = [];
#[Assert\Length(max: 255, maxMessage: "El certificado no puede superar los 255 caracteres")]
#[ORM\Column(type: 'string', length: 255, nullable: true)]
private $certificado_punto;
#[Assert\Length(max: 255, maxMessage: "El nombre de la persona jurídica no puede superar los 255 caracteres")]
#[ORM\Column(type: 'string', length: 255, nullable: true)]
private $nombre_persona_juridica;
#[Assert\Length(max: 255, maxMessage: "El nombre del representante legal no puede superar los 255 caracteres")]
#[ORM\Column(type: 'string', length: 255, nullable: true)]
private $nombre_representante_legal;
#[Assert\Length(max: 255, maxMessage: "El RUT de la persona jurídica no puede superar los 255 caracteres")]
#[ORM\Column(type: 'string', length: 255, nullable: true)]
private $rut_persona_juridica;
#[Assert\Length(max: 255, maxMessage: "El RUT del representante legal no puede superar los 255 caracteres")]
#[ORM\Column(type: 'string', length: 255, nullable: true)]
private $rut_representante_legal;
#[Assert\Length(max: 255, maxMessage: "La dirección postal no puede superar los 255 caracteres")]
#[ORM\Column(type: 'string', length: 255, nullable: true)]
private $direccion_postal;
#[Assert\Email(message: "El email '{{ value }}' no es válido")]
#[ORM\Column(type: 'string', length: 255, nullable: true)]
private $correo_electronico_1;
#[Assert\Email(message: "El email '{{ value }}' no es válido")]
#[ORM\Column(type: 'string', length: 255, nullable: true)]
private $correo_electronico_2;
#[Assert\Length(max: 255, maxMessage: "El teléfono no puede superar los 255 caracteres")]
#[ORM\Column(type: 'string', length: 255, nullable: true)]
private $telefono_1;
#[Assert\Length(max: 255, maxMessage: "El teléfono no puede superar los 255 caracteres")]
#[ORM\Column(type: 'string', length: 255, nullable: true)]
private $telefono_2;
#[Assert\NotBlank(message: "El ID de la organización comunitaria no puede estar vacío")]
#[Assert\Type(type: "integer", message: "El ID de la organización debe ser un número entero")]
#[Assert\Positive(message: "El ID de la organización debe ser positivo")]
#[ORM\Column(type: "integer", nullable: false)]
private ?int $organizacion_comunitaria_id = null;
#[ORM\Column(type: "json", nullable: true)]
private ?array $doc_estatuto_organizacion = [];
#[ORM\Column(type: "json", nullable: true)]
private ?array $doc_certificado_vigencia_persona_juridica = [];
#[ORM\Column(type: "json", nullable: true)]
private ?array $doc_acredita_personeria_vigente = [];
#[ORM\Column(type: "json", nullable: true)]
private ?array $doc_listado_personas = [];
#[ORM\Column(type: "json", nullable: true)]
private ?array $documentos = [];
#[ORM\Column(type: 'string', length: 255, nullable: false)]
private $rut;
#[ORM\Column(type: 'string', length: 255, nullable: false)]
private $dv;
#[ORM\OneToMany(mappedBy: 'puntoCultura', targetEntity: "App\Entity\PcPuntoCultura")]
private Collection $postulacion;
#[ORM\OneToOne(targetEntity: Postulacion::class, cascade: ['persist', 'remove'])]
#[ORM\JoinColumn(name: 'postulacion_punto_id', referencedColumnName: 'id', nullable: false)]
private ?Postulacion $postulacionPunto = null;
#[ORM\Column(type: 'boolean', nullable: false, options: ['default' => true])]
private $activo = false;
#[ORM\Column(type: 'boolean', nullable: true)]
private $verificado = false;
#[ORM\Column(type: 'datetime',nullable:true)]
private $fecha_verificacion;
public function getId(): ?int
{
return $this->id;
}
public function getNombre(): ?string
{
return $this->nombre;
}
public function setNombre(?string $nombre): self
{
$this->nombre = $nombre;
return $this;
}
public function getResenia(): ?string
{
return $this->resenia;
}
public function setResenia(string $resenia): self
{
$this->resenia = $resenia;
return $this;
}
public function getRegion(): ?string
{
return $this->region;
}
public function setRegion(string $region): self
{
$this->region = $region;
return $this;
}
public function getComuna(): ?string
{
return $this->comuna;
}
public function setComuna(string $comuna): self
{
$this->comuna = $comuna;
return $this;
}
public function getDireccion(): ?string
{
return $this->direccion;
}
public function setDireccion(string $direccion): self
{
$this->direccion = $direccion;
return $this;
}
public function getGeoreferencia(): ?string
{
return $this->georeferencia;
}
public function setGeoreferencia(string $georeferencia): self
{
$this->georeferencia = $georeferencia;
return $this;
}
public function getNombreContacto(): ?string
{
return $this->nombre_contacto;
}
public function setNombreContacto(string $nombre_contacto): self
{
$this->nombre_contacto = $nombre_contacto;
return $this;
}
public function getEmailContacto(): ?string
{
return $this->email_contacto;
}
public function setEmailContacto(string $email_contacto): self
{
$this->email_contacto = $email_contacto;
return $this;
}
public function getRedesSociales(): ?array
{
return $this->redes_sociales;
}
public function setRedesSociales(array $redes_sociales): self
{
$this->redes_sociales = $redes_sociales;
return $this;
}
public function getCertificadoPunto(): ?string
{
return $this->certificado_punto;
}
public function setCertificadoPunto(?string $certificado_punto): self
{
$this->certificado_punto = $certificado_punto;
return $this;
}
public function getNombrePersonaJuridica(): ?string
{
return $this->nombre_persona_juridica;
}
public function setNombrePersonaJuridica(string $nombre_persona_juridica): self
{
$this->nombre_persona_juridica = $nombre_persona_juridica;
return $this;
}
public function getNombreRepresentanteLegal(): ?string
{
return $this->nombre_representante_legal;
}
public function setNombreRepresentanteLegal(string $nombre_representante_legal): self
{
$this->nombre_representante_legal = $nombre_representante_legal;
return $this;
}
public function getRutPersonaJuridica(): ?string
{
return $this->rut_persona_juridica;
}
public function setRutPersonaJuridica(string $rut_persona_juridica): self
{
$this->rut_persona_juridica = $rut_persona_juridica;
return $this;
}
public function getRutRepresentanteLegal(): ?string
{
return $this->rut_representante_legal;
}
public function setRutRepresentanteLegal(string $rut_representante_legal): self
{
$this->rut_representante_legal = $rut_representante_legal;
return $this;
}
public function getDireccionPostal(): ?string
{
return $this->direccion_postal;
}
public function setDireccionPostal(string $direccion_postal): self
{
$this->direccion_postal = $direccion_postal;
return $this;
}
public function getCorreoElectronico1(): ?string
{
return $this->correo_electronico_1;
}
public function setCorreoElectronico1(string $correo_electronico_1): self
{
$this->correo_electronico_1 = $correo_electronico_1;
return $this;
}
public function getCorreoElectronico2(): ?string
{
return $this->correo_electronico_2;
}
public function setCorreoElectronico2(string $correo_electronico_2): self
{
$this->correo_electronico_2 = $correo_electronico_2;
return $this;
}
public function getTelefono1(): ?string
{
return $this->telefono_1;
}
public function setTelefono1(string $telefono_1): self
{
$this->telefono_1 = $telefono_1;
return $this;
}
public function getTelefono2(): ?string
{
return $this->telefono_2;
}
public function setTelefono2(string $telefono_2): self
{
$this->telefono_2 = $telefono_2;
return $this;
}
public function getOrganizacionComunitariaId(): ?int
{
return $this->organizacion_comunitaria_id;
}
public function setOrganizacionComunitariaId(int $organizacion_comunitaria_id): self
{
$this->organizacion_comunitaria_id = $organizacion_comunitaria_id;
return $this;
}
public function getDocEstatutoOrganizacion(): ?array
{
return $this->doc_estatuto_organizacion;
}
public function setDocEstatutoOrganizacion(array $doc_estatuto_organizacion): self
{
$this->doc_estatuto_organizacion = $doc_estatuto_organizacion;
return $this;
}
public function getDocCertificadoVigenciaPersonaJuridica(): ?array
{
return $this->doc_certificado_vigencia_persona_juridica;
}
public function setDocCertificadoVigenciaPersonaJuridica(array $doc_certificado_vigencia_persona_juridica): self
{
$this->doc_certificado_vigencia_persona_juridica = $doc_certificado_vigencia_persona_juridica;
return $this;
}
public function getDocAcreditaPersoneriaVigente(): ?array
{
return $this->doc_acredita_personeria_vigente;
}
public function setDocAcreditaPersoneriaVigente(array $doc_acredita_personeria_vigente): self
{
$this->doc_acredita_personeria_vigente = $doc_acredita_personeria_vigente;
return $this;
}
public function getDocListadoPersonas(): ?array
{
return $this->doc_listado_personas;
}
public function setDocListadoPersonas(array $doc_listado_personas): self
{
$this->doc_listado_personas = $doc_listado_personas;
return $this;
}
public function getDocumentos(): ?array
{
return $this->documentos;
}
public function setDocumentos(array $documentos): self
{
$this->documentos = $documentos;
return $this;
}
public function getRut(): ?string
{
return $this->rut;
}
public function setRut(?string $rut): self
{
$this->rut = $rut;
return $this;
}
public function getDv(): ?string
{
return $this->dv;
}
public function setDv(?string $dv): self
{
$this->dv = $dv;
return $this;
}
public function getPostulacion()
{
return $this->postulacion;
}
public function getActivo(): ?bool
{
return $this->activo;
}
public function setActivo(?bool $activo): self
{
$this->activo = $activo;
return $this;
}
public function isVerificado(): bool
{
return $this->verificado;
}
public function setVerificado(bool $verificado): self
{
$this->verificado = $verificado;
return $this;
}
public function getFechaVerificacion(): ?DateTimeInterface
{
return $this->fecha_verificacion;
}
public function setFechaVerificacion(?DateTimeInterface $fecha_verificacion): self
{
$this->fecha_verificacion = $fecha_verificacion;
return $this;
}
public function __toString(){
return $this->getNombre();
}
public function getPostulacionPunto(): ?Postulacion
{
return $this->postulacionPunto;
}
public function setPostulacionPunto(?Postulacion $postulacionPunto): self
{
$this->postulacionPunto = $postulacionPunto;
return $this;
}
}