Your IP : 216.73.217.79


Current Path : /var/www/v3.cesa.co.za/src/ContentBundle/Services/
Upload File :
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();
            }
        }
    }
}