| Current Path : /var/www/v3.cesa.co.za/src/ContentBundle/Services/ |
| Current File : /var/www/v3.cesa.co.za/src/ContentBundle/Services/FormItemFormManager.php |
<?php
namespace App\ContentBundle\Services;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Monolog\Logger;
use App\ContentBundle\Entity\Form;
use App\ContentBundle\Entity\FormItem;
use App\ContentBundle\Entity\FormItemForm;
/**
* Form Item Form manager
*
* @author Otto Saayman <otto@igotafrica.com>
* @package ContentBundle
* @subpackage Form Item Form
* @version 0.0.1
*/
final class FormItemFormManager {
/**
* Service Container
* @var object
*/
private $container = null;
/**
* Entity manager
* @var object
*/
private $em;
/**
* Class construct
*
* @param ContainerInterface $container
* @param Logger $logger
* @return void
*/
public function __construct(
ContainerInterface $container) {
$this->setContainer($container);
$this->setEm($container->get('doctrine')->getManager('default'));
return;
}
/**
* Get Container
*
* @return ContainerInterface $container
*/
public function getContainer() {
return $this->container;
}
/**
* Set Container
*
* @param ContainerInterface $container
* @return void
*/
public function setContainer($container) {
$this->container = $container;
}
/**
* Get Entity Manager
*
* @return string
*/
public function getEm() {
return $this->em;
}
/**
* Set Container
*
* @param string $em
* @return void
*/
public function setEm($em) {
$this->em = $em;
}
/**
* Save form item form object
*
* @param FormItemForm $formItemForm
* @return FormItemForm
*/
public function save(FormItemForm &$formItemForm) {
$this->getEm()->persist($formItemForm);
$this->getEm()->flush();
}
/**
* Save form item form object
*
* @param array $conf
* @param array $orderBy
* @return array
*/
public function findBy($conf = array(), $orderBy = array()) {
return $this->getEm()->getRepository(FormItemForm::class)->findBy($conf, $orderBy);
}
/**
* Link a form item to a form
*
* @param Form $form
* @param FormItem $formItem
* @param integer $orderBy
* @return void
*/
public function linkItemToForm(Form $form, FormItem $formItem, $orderBy) {
$mustAdd = true;
$formItemForms = $formItem->getForms();
foreach ($formItemForms as $formItemForm) {
if ($formItemForm->getForm()->getId() == $form->getId()) {
$mustAdd = false;
}
$formItemForm->setOrderBy($orderBy);
$this->save($formItemForm);
}
if ($mustAdd) {
$formItemForm = new FormItemForm();
$formItemForm->setForm($form);
$formItemForm->setFormItem($formItem);
$formItemForm->setOrderBy($orderBy);
$this->save($formItemForm);
}
}
/**
* Link a form item to a form
*
* @param string $formItemId
* @param Form $form
* @return void
*/
public function unlink($formItemId, Form $form) {
$formItem = $this->getContainer()->get('form_item.manager')->find($formItemId);
if (!is_object($formItem)) {
return;
}
$formItemForms = $formItem->getForms();
foreach ($formItemForms as $formItemForm) {
if ($formItemForm->getForm()->getId() == $form->getId()) {
$this->getEm()->remove($formItemForm);
$this->getEm()->flush();
}
}
}
}