<?php

namespace App\Entity;

use App\Repository\ContratTarifRepository;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups;

/**
 * @ORM\Entity(repositoryClass=ContratTarifRepository::class)
 * @ORM\Table(schema="sav")
 */
class ContratTarif
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     * @Groups({"api"})
     */
    private $id;

    /**
     * @ORM\ManyToOne(targetEntity=ContratType::class, inversedBy="contratTarifs")
     * @ORM\JoinColumn(name="idcontrat_type")
     * @Groups({"api"})
     */
    private $contrat_type;

    /**
     * @ORM\ManyToOne(targetEntity=EquipementTypePuissance::class, inversedBy="contratTarifs")
     * @ORM\JoinColumn(name="idequipement_type_puissance")
     */
    private $equipement_type_puissance;

    /**
     * @ORM\ManyToOne(targetEntity=ContratPlage::class, inversedBy="contratTarifs")
     * @ORM\JoinColumn(name="idcontrat_plage")
     */
    private $contrat_plage;

    /**
     * @ORM\Column(type="float", nullable=true)
     * @Groups({"api"})
     */
    private $tarif_contrat_ht;

    /**
     * @ORM\Column(type="date", nullable=true)
     */
    private $date_debut;

    /**
     * @ORM\Column(type="date", nullable=true)
     */
    private $date_fin;


    public static function create($date_debut, ContratType $contratType, EquipementTypePuissance $equipementTypePuissance, ContratPlage $contratPlage = null, $tarif) {
        $contratTarif = new ContratTarif();

        $contratTarif
            ->setDateDebut($date_debut)
            ->setTarifContratHt($tarif)
            ->setContratType($contratType)
            ->setContratPlage($contratPlage)
            ->setEquipementTypePuissance($equipementTypePuissance)
        ;
        return $contratTarif;
    }
    public function getId(): ?int
    {
        return $this->id;
    }

    public function getContratType(): ?ContratType
    {
        return $this->contrat_type;
    }

    public function setContratType(?ContratType $contrat_type): self
    {
        $this->contrat_type = $contrat_type;

        return $this;
    }

    public function getEquipementTypePuissance(): ?EquipementTypePuissance
    {
        return $this->equipement_type_puissance;
    }

    public function setEquipementTypePuissance(?EquipementTypePuissance $equipement_type_puissance): self
    {
        $this->equipement_type_puissance = $equipement_type_puissance;

        return $this;
    }

    public function getContratPlage(): ?ContratPlage
    {
        return $this->contrat_plage;
    }

    public function setContratPlage(?ContratPlage $contrat_plage): self
    {
        $this->contrat_plage = $contrat_plage;

        return $this;
    }

    public function getTarifContratHt(): ?float
    {
        return $this->tarif_contrat_ht;
    }

    public function setTarifContratHt(?float $tarif_contrat_ht): self
    {
        $this->tarif_contrat_ht = $tarif_contrat_ht;

        return $this;
    }

    public function getDateDebut(): ?\DateTimeInterface
    {
        return $this->date_debut;
    }

    public function setDateDebut(?\DateTimeInterface $date_debut): self
    {
        $this->date_debut = $date_debut;

        return $this;
    }

    public function getDateFin(): ?\DateTimeInterface
    {
        return $this->date_fin;
    }

    public function setDateFin(?\DateTimeInterface $date_fin): self
    {
        $this->date_fin = $date_fin;

        return $this;
    }
}
