Your IP : 216.73.217.79


Current Path : /var/www/v3.cesa.co.za/src/CoreBundle/Services/
Upload File :
Current File : /var/www/v3.cesa.co.za/src/CoreBundle/Services/TempValueManager.php

<?php

namespace App\CoreBundle\Services;

use Symfony\Component\DependencyInjection\ContainerInterface;
use App\CoreBundle\Entity\TempValue;

/**
 * Temp Value  manager
 *
 * @author Otto Saayman <otto@igotafrica.com>
 * @package CoreBundle
 * @subpackage Temp Value
 * @version 0.0.1
 */
final class TempValueManager {

    /**
     * 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;
    }

    /**
     * Find a temp value object
     *
     * @param  string $id
     * @return TempValue
     */
    public function find($id) {

        if (strlen($id) <= 0 || $id == '0') {
            return;
        }

        return $this->em->getRepository(TempValue::class)->find($id);
    }

    /**
     * Find a TempValue object by parameters
     *
     * @param  array $params
     * @return TempValue
     */
    public function findOneBy($params) {
        return $this->em->getRepository(TempValue::class)->findOneBy($params);
    }

    /**
     * Save a temp value object
     *
     * @param  TempValue &$tempValue
     * @return void
     */
    public function save(TempValue &$tempValue) {
        $this->em->persist($tempValue);
        $this->em->flush();
    }

    /**
     * Remove a temp value object
     *
     * @param  TempValue &$tempValue
     * @return void
     */
    public function remove(TempValue &$tempValue) {
        $this->em->remove($tempValue);
        $this->em->flush();
    }

    public function getTempValue($tempValueName, $default = '', $isArray = false) {

        if ($isArray) {
            $default = json_encode($default, true);
        }

        $return = $this->getContainer()->get('system_setting.manager')->getMemCachedValue($tempValueName, $default);

        if (strlen($return) > 0 && $return != '[]') {

            if ($isArray) {
                $return = json_decode($return, true);
            }

            return $return;
        }

        $tempValueObject = $this->findOneBy(array('temp_value_name' => $tempValueName));

        if (is_object($tempValueObject)) {
            $return = $tempValueObject->getTempValueString();
        } else {
            $return = $default;
        }

        if ($isArray) {
            $return = json_decode($return, true);
        }

        return $return;
    }

    public function setTempValue($tempValueName, $tempValueData, $isArray = false) {

        $tempValueObject = $this->findOneBy(array('temp_value_name' => $tempValueName));

        if (!is_object($tempValueObject)) {
            $tempValueObject = new TempValue();
        }

        if (is_object($this->getContainer()->get('user_list.manager')->getLoggedInUser())) {
            $userListId = $this->getContainer()->get('user_list.manager')->getLoggedInUser()->getId();
        } else {
            $userListId = '';
        }

        if ($isArray) {
            $tempValueData = json_encode($tempValueData);
        }

        $tempValueObject->setTempValueName($tempValueName);
        $tempValueObject->setTempValueString($tempValueData);
        $tempValueObject->setCreatedBy($userListId);

        $this->save($tempValueObject);

        $this->getContainer()->get('system_setting.manager')->setMemCachedValue($tempValueName, $tempValueData);
    }

}