<?php

namespace RxConnexionBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use RxConnexionBundle\Entity\Base\BaseEntity;
use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToStringTransformer;
use JMS\Serializer\Annotation\Groups;
use JMS\Serializer\Annotation\MaxDepth;

/**
 * @ORM\Entity(repositoryClass="RxConnexionBundle\Repository\PatientChartIsDoneRepository")
 * @ORM\Table(name="patient_chart_is_done")
 */

class PatientChartIsDoneEntity extends BaseEntity
{
    const IS_DONE = array(
        'Done'  => TRUE,
        'Not Done'  => FALSE,
    );
    const TASK_TYPE_ENCOUNTER_CALL = 'Encounter Call';
    const TASK_TYPE_ENCOUNTER_CALL_1_DAY = 'Encounter Call 1 Day';
    const TASK_TYPE_APPOINTMENT_NOTICE = 'Appointment Notice';
    const TASK_TYPE_FOR_REBOOKING = 'For Rebooking';
    const TASK_TYPE_72_HOURS_FOLLOW_UP = '72 Hours Follow-up';
    const TASK_TYPE_3_MONTH_FOLLOW_UP = '3 Month Follow-up';
    const TASK_TYPE_6_MONTH_FOLLOW_UP = '6 Month Follow-up';

    /**
     * @ORM\Column(name="is_done", type="boolean", nullable=true, options={"default":false})
     * @Groups("forAudit")
     */
    protected $isDone;

    /**
     * @ORM\Column(name="task_type", type="string")
     * @Groups("forAudit")
     */
    protected $taskType;

    /**
     * @ORM\ManyToOne(targetEntity="PatientChartEntity", inversedBy="patientChartsIsDone")
     * @ORM\JoinColumn(name="patient_chart_id", referencedColumnName="id")
     * @Groups("forAudit")
     * @MaxDepth(1)
     */
    protected $patientChart;



    /*--------------------------------------------------------------------------------------------------------*/
    /*					Use Defined Setters and Getters														  */
    /*--------------------------------------------------------------------------------------------------------*/


    /*--------------------------------------------------------------------------------------------------------*/
    /*					Setters and Getters																	  */
    /*--------------------------------------------------------------------------------------------------------*/

    /**
     * Set isDone
     *
     * @param boolean $isDone
     *
     * @return PatientChartIsDoneEntity
     */
    public function setIsDone($isDone)
    {
        $this->isDone = $isDone;

        return $this;
    }

    /**
     * Get isDone
     *
     * @return boolean
     */
    public function getIsDone()
    {
        return $this->isDone;
    }

    /**
     * Set taskType
     *
     * @param string $taskType
     *
     * @return PatientChartIsDoneEntity
     */
    public function setTaskType($taskType)
    {
        $this->taskType = $taskType;

        return $this;
    }

    /**
     * Get taskType
     *
     * @return string
     */
    public function getTaskType()
    {
        return $this->taskType;
    }

    /**
     * Get id
     *
     * @return integer
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set createdBy
     *
     * @param string $createdBy
     *
     * @return PatientChartIsDoneEntity
     */
    public function setCreatedBy($createdBy)
    {
        $this->createdBy = $createdBy;

        return $this;
    }

    /**
     * Get createdBy
     *
     * @return string
     */
    public function getCreatedBy()
    {
        return $this->createdBy;
    }

    /**
     * Set createdAt
     *
     * @param \DateTime $createdAt
     *
     * @return PatientChartIsDoneEntity
     */
    public function setCreatedAt($createdAt)
    {
        $this->createdAt = $createdAt;

        return $this;
    }

    /**
     * Get createdAt
     *
     * @return \DateTime
     */
    public function getCreatedAt()
    {
        return $this->createdAt;
    }

    /**
     * Set updatedBy
     *
     * @param string $updatedBy
     *
     * @return PatientChartIsDoneEntity
     */
    public function setUpdatedBy($updatedBy)
    {
        $this->updatedBy = $updatedBy;

        return $this;
    }

    /**
     * Get updatedBy
     *
     * @return string
     */
    public function getUpdatedBy()
    {
        return $this->updatedBy;
    }

    /**
     * Set updatedAt
     *
     * @param \DateTime $updatedAt
     *
     * @return PatientChartIsDoneEntity
     */
    public function setUpdatedAt($updatedAt)
    {
        $this->updatedAt = $updatedAt;

        return $this;
    }

    /**
     * Get updatedAt
     *
     * @return \DateTime
     */
    public function getUpdatedAt()
    {
        return $this->updatedAt;
    }

    /**
     * Set patientChart
     *
     * @param \RxConnexionBundle\Entity\PatientChartEntity $patientChart
     *
     * @return PatientChartIsDoneEntity
     */
    public function setPatientChart(\RxConnexionBundle\Entity\PatientChartEntity $patientChart = null)
    {
        $this->patientChart = $patientChart;

        return $this;
    }

    /**
     * Get patientChart
     *
     * @return \RxConnexionBundle\Entity\PatientChartEntity
     */
    public function getPatientChart()
    {
        return $this->patientChart;
    }
}
