<?php
namespace Plugin\NZCustomPlugin\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use Eccube\Entity\Layout;
/**
* @ORM\Table(name="plg_nzcustomplugin_form")
* @ORM\Entity(repositoryClass="Plugin\NZCustomPlugin\Repository\CustomFormRepository")
*/
class CustomForm
{
/**
* @var int
* @ORM\Column(name="id", type="integer", options={"unsigned":true})
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string
* @ORM\Column(name="name", type="string", length=255)
*/
private $name;
/**
* @var string
* @ORM\Column(name="form_key", type="string", length=255, unique=true)
*/
private $form_key;
/**
* @var string|null
* @ORM\Column(name="description", type="text", nullable=true)
*/
private $description;
/**
* @var bool
* @ORM\Column(name="is_active", type="boolean", options={"default":true})
*/
private $is_active = true;
/**
* @var \DateTime
* @ORM\Column(name="create_date", type="datetime")
*/
private $create_date;
/**
* @var \DateTime
* @ORM\Column(name="update_date", type="datetime")
*/
private $update_date;
/**
* @var bool
* @ORM\Column(name="send_customer_mail", type="boolean", options={"default":true})
*/
private $send_customer_mail = true;
/**
* @var bool
* @ORM\Column(name="send_admin_mail", type="boolean", options={"default":true})
*/
private $send_admin_mail = true;
/**
* @var string|null
* @ORM\Column(name="admin_mail_address", type="string", length=255, nullable=true)
*/
private $admin_mail_address;
/**
* @var string|null
* @ORM\Column(name="mail_subject", type="string", length=255, nullable=true)
*/
private $mail_subject;
/**
* @var string|null
* @ORM\Column(name="mail_template", type="text", nullable=true)
*/
private $mail_template;
/**
* @var string|null
* @ORM\Column(name="complete_message", type="text", nullable=true)
*/
private $complete_message;
/**
* @var \DateTime|null
* @ORM\Column(name="publish_start_date", type="datetime", nullable=true)
*/
private $publish_start_date;
/**
* @var \DateTime|null
* @ORM\Column(name="publish_end_date", type="datetime", nullable=true)
*/
private $publish_end_date;
/**
* @var bool
* @ORM\Column(name="require_login", type="boolean", options={"default":false})
*/
private $require_login = false;
/**
* @var Layout|null
* @ORM\ManyToOne(targetEntity="Eccube\Entity\Layout")
* @ORM\JoinColumn(name="layout_id", referencedColumnName="id", nullable=true)
*/
private $Layout;
/**
* @var Layout|null
* @ORM\ManyToOne(targetEntity="Eccube\Entity\Layout")
* @ORM\JoinColumn(name="layout_id_mobile", referencedColumnName="id", nullable=true)
*/
private $LayoutMobile;
/**
* @var ArrayCollection|FormField[]
* @ORM\OneToMany(targetEntity="Plugin\NZCustomPlugin\Entity\FormField", mappedBy="customForm", cascade={"persist", "remove"})
* @ORM\OrderBy({"sort_no" = "ASC"})
*/
private $formFields;
/**
* @var ArrayCollection|FormSubmission[]
* @ORM\OneToMany(targetEntity="Plugin\NZCustomPlugin\Entity\FormSubmission", mappedBy="customForm", cascade={"remove"})
*/
private $formSubmissions;
public function __construct()
{
$this->formFields = new ArrayCollection();
$this->formSubmissions = new ArrayCollection();
$this->create_date = new \DateTime();
$this->update_date = new \DateTime();
}
public function getId()
{
return $this->id;
}
public function getName()
{
return $this->name;
}
public function setName($name)
{
$this->name = $name;
return $this;
}
public function getFormKey()
{
return $this->form_key;
}
public function setFormKey($form_key)
{
$this->form_key = $form_key;
return $this;
}
public function getDescription()
{
return $this->description;
}
public function setDescription($description)
{
$this->description = $description;
return $this;
}
public function isActive()
{
return $this->is_active;
}
public function getIsActive()
{
return $this->is_active;
}
public function setIsActive($is_active)
{
$this->is_active = $is_active;
return $this;
}
public function getCreateDate()
{
return $this->create_date;
}
public function setCreateDate($create_date)
{
$this->create_date = $create_date;
return $this;
}
public function getUpdateDate()
{
return $this->update_date;
}
public function setUpdateDate($update_date)
{
$this->update_date = $update_date;
return $this;
}
public function isSendCustomerMail()
{
return $this->send_customer_mail;
}
public function getSendCustomerMail()
{
return $this->send_customer_mail;
}
public function setSendCustomerMail($send_customer_mail)
{
$this->send_customer_mail = $send_customer_mail;
return $this;
}
public function isSendAdminMail()
{
return $this->send_admin_mail;
}
public function getSendAdminMail()
{
return $this->send_admin_mail;
}
public function setSendAdminMail($send_admin_mail)
{
$this->send_admin_mail = $send_admin_mail;
return $this;
}
public function getAdminMailAddress()
{
return $this->admin_mail_address;
}
public function setAdminMailAddress($admin_mail_address)
{
$this->admin_mail_address = $admin_mail_address;
return $this;
}
public function getMailSubject()
{
return $this->mail_subject;
}
public function setMailSubject($mail_subject)
{
$this->mail_subject = $mail_subject;
return $this;
}
public function getMailTemplate()
{
return $this->mail_template;
}
public function setMailTemplate($mail_template)
{
$this->mail_template = $mail_template;
return $this;
}
public function getCompleteMessage()
{
return $this->complete_message;
}
public function setCompleteMessage($complete_message)
{
$this->complete_message = $complete_message;
return $this;
}
public function getPublishStartDate()
{
return $this->publish_start_date;
}
public function setPublishStartDate($publish_start_date)
{
$this->publish_start_date = $publish_start_date;
return $this;
}
public function getPublishEndDate()
{
return $this->publish_end_date;
}
public function setPublishEndDate($publish_end_date)
{
$this->publish_end_date = $publish_end_date;
return $this;
}
public function isRequireLogin()
{
return $this->require_login;
}
public function getRequireLogin()
{
return $this->require_login;
}
public function setRequireLogin($require_login)
{
$this->require_login = $require_login;
return $this;
}
/**
* @return Layout|null
*/
public function getLayout()
{
return $this->Layout;
}
/**
* @param Layout|null $Layout
* @return $this
*/
public function setLayout(Layout $Layout = null)
{
$this->Layout = $Layout;
return $this;
}
/**
* @return Layout|null
*/
public function getLayoutMobile()
{
return $this->LayoutMobile;
}
/**
* @param Layout|null $LayoutMobile
* @return $this
*/
public function setLayoutMobile(Layout $LayoutMobile = null)
{
$this->LayoutMobile = $LayoutMobile;
return $this;
}
public function isPublished()
{
if (!$this->is_active) {
return false;
}
$now = new \DateTime();
if ($this->publish_start_date && $now < $this->publish_start_date) {
return false;
}
if ($this->publish_end_date && $now > $this->publish_end_date) {
return false;
}
return true;
}
public function getFormFields()
{
return $this->formFields;
}
public function addFormField(FormField $formField)
{
if (!$this->formFields->contains($formField)) {
$this->formFields->add($formField);
$formField->setCustomForm($this);
}
return $this;
}
public function removeFormField(FormField $formField)
{
if ($this->formFields->contains($formField)) {
$this->formFields->removeElement($formField);
}
return $this;
}
public function getFormSubmissions()
{
return $this->formSubmissions;
}
}