<?php
namespace App\Entity\Mantenimiento\Preventivo;
use App\Repository\Mantenimiento\Preventivo\PlanMantenimientoRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use App\Entity\Equipos\Maquinaria as Equipo;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use App\Entity\Mantenimiento\SectorPlanta;
/**
* @ORM\Entity(repositoryClass=PlanMantenimientoRepository::class)
* @ORM\Table(name="mant_prev_planes_mant")
* @UniqueEntity(
* fields={"nombre"},
* errorPath="nombre",
* message="Ya existe una plan con el nombre ingresado"
* )
*/
class PlanMantenimiento
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="integer")
* @Assert\NotNull(message="El campo es requerido")
*/
private $periodicidad;
/**
* @ORM\Column(type="string", length=255)
* @Assert\NotNull(message="El campo es requerido")
*/
private $nombre;
/**
* @ORM\Column(type="boolean")
*/
private $activo = true;
/**
* @ORM\ManyToOne(targetEntity=SectorPlanta::class)
* @ORM\JoinColumn(name="id_sector", referencedColumnName="id", nullable=true)
*/
private $sector;
/**
* @ORM\OneToMany(targetEntity=TareaPlan::class, mappedBy="planMantenimiento", cascade={"persist", "remove"})
*/
private $tareas;
/**
* @ORM\OneToMany(targetEntity=PlanMantenimientoDiagramado::class, mappedBy="planMantenimiento", cascade={"persist", "remove"})
*/
private $planesDiagramados;
/**
* @ORM\ManyToMany(targetEntity=Equipo::class)
* @ORM\JoinTable(name="mant_prev_equipos_planes_mant",
* joinColumns={@ORM\JoinColumn(name="id_plan", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="id_equipo", referencedColumnName="id")}
* )
*/
private $equipos;
public function getFrecuenciaPlan(): string
{
$frecuencia = "";
if ($this->periodicidad == 1)
{
$frecuencia = "Diaria";
}
else if ($this->periodicidad == 7)
{
$frecuencia = "Semanal";
}
else if ($this->periodicidad == 30)
{
$frecuencia = "Mensual";
}
else if ($this->periodicidad == 365)
{
$frecuencia = "Anual";
}
else if ($this->periodicidad == 180)
{
$frecuencia = "Semestral";
}
else if ($this->periodicidad == 90)
{
$frecuencia = "Trimestral";
}
else if ($this->periodicidad == 15)
{
$frecuencia = "Quincenal";
}
else if ($this->periodicidad == 60)
{
$frecuencia = "Bimestral";
}
else
{
$frecuencia = "Unica";
}
return $frecuencia;
}
public function getEquiposAfectados()
{
$equipos = null;
foreach ($this->equipos as $e)
{
if ($equipos)
{
$equipos.= " - $e";
}
else
{
$equipos = $e;
}
}
return $equipos;
}
public function __construct()
{
$this->tareas = new ArrayCollection();
$this->equipos = new ArrayCollection();
$this->planesDiagramados = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getPeriodicidad(): ?int
{
return $this->periodicidad;
}
public function setPeriodicidad(int $periodicidad): self
{
$this->periodicidad = $periodicidad;
return $this;
}
public function getNombre(): ?string
{
return $this->nombre;
}
public function setNombre(string $nombre): self
{
$this->nombre = $nombre;
return $this;
}
/**
* @return Collection<int, TareaPlan>
*/
public function getTareas(): Collection
{
return $this->tareas;
}
public function addTarea(TareaPlan $tarea): self
{
if (!$this->tareas->contains($tarea)) {
$this->tareas[] = $tarea;
$tarea->setPlanMantenimiento($this);
}
return $this;
}
public function removeTarea(TareaPlan $tarea): self
{
if ($this->tareas->removeElement($tarea)) {
// set the owning side to null (unless already changed)
if ($tarea->getPlanMantenimiento() === $this) {
$tarea->setPlanMantenimiento(null);
}
}
return $this;
}
/**
* @return Collection<int, Equipo>
*/
public function getEquipos(): Collection
{
return $this->equipos;
}
public function addEquipo(Equipo $equipo): self
{
if (!$this->equipos->contains($equipo)) {
$this->equipos[] = $equipo;
}
return $this;
}
public function removeEquipo(Equipo $equipo): self
{
$this->equipos->removeElement($equipo);
return $this;
}
/**
* @return Collection<int, PlanMantenimientoDiagramado>
*/
public function getPlanesDiagramados(): Collection
{
return $this->planesDiagramados;
}
public function addPlanesDiagramado(PlanMantenimientoDiagramado $planesDiagramado): self
{
if (!$this->planesDiagramados->contains($planesDiagramado)) {
$this->planesDiagramados[] = $planesDiagramado;
$planesDiagramado->setPlanMantenimiento($this);
}
return $this;
}
public function removePlanesDiagramado(PlanMantenimientoDiagramado $planesDiagramado): self
{
if ($this->planesDiagramados->removeElement($planesDiagramado)) {
// set the owning side to null (unless already changed)
if ($planesDiagramado->getPlanMantenimiento() === $this) {
$planesDiagramado->setPlanMantenimiento(null);
}
}
return $this;
}
public function isActivo(): ?bool
{
return $this->activo;
}
public function setActivo(bool $activo): self
{
$this->activo = $activo;
return $this;
}
public function getSector(): ?SectorPlanta
{
return $this->sector;
}
public function setSector(?SectorPlanta $sector): self
{
$this->sector = $sector;
return $this;
}
}