<?php
namespace App\Service\Kernel;
use App\Entity\Kernel\ConfigurableList;
use App\Entity\Kernel\ListItem;
use App\Entity\Kernel\Setting;
use App\Entity\Kernel\CustomizedEntity;
use App\Entity\Kernel\CustomizedEntityField;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\Persistence\ObjectManager;
use Exception;
use Symfony\Component\HttpKernel\KernelInterface;
use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
use Symfony\Component\Security\Core\Exception\AccessDeniedException;
use Symfony\Component\Security\Core\Security;
class KernelService
{
private $entityManager;
public function __construct(EntityManagerInterface $entityManager)
{
$this->entityManager = $entityManager;
}
public function getApplicationInfoValue($key, $organization = null)
{
try {
$setting = $this->entityManager->getRepository(Setting::class)->findOneBy(
array('identifier' => $key, 'organization' => $organization, 'state' => 0)
);
if (!$setting) {
$setting = $this->entityManager->getRepository(Setting::class)->findOneBy(
array('identifier' => $key, 'state' => 0)
);
if (!$setting) {
return "";
}
}
return $setting->getValue();
} catch (Exception $e) {
return "";
}
}
public function getApplicationInfoFile($key) {
$setting = $this->entityManager->getRepository(Setting::class)->findOneByIdentifier($key);
return $setting->getFileValue();
}
public function getList($list, $organization = null) {
if ($organization == null)
{
$weblist = $this->entityManager->getRepository(ConfigurableList::class)->findOneBy(array('identifier' => $list, 'state' => 0));
}
else
{
$query = $this->entityManager->createQuery("SELECT s FROM App\Entity\Kernel\ConfigurableList s WHERE (((s.state = 0) AND (s.identifier = ?1)) AND ((s.organization = ?2) or (s.organization is null)))");
$query = $query->setParameter(1, $list);
$query = $query->setParameter(2, $organization->getId());
$weblists = $query->getResult();
if ($weblists) {
$weblist = $weblists[0];
}
else
{
$weblist = null;
}
}
if (!$weblist) {
return null;
} else {
return $weblist;
}
}
public function getListItem($list, $item, $organization = null) {
$weblist = $this->getList($list, $organization);
if (!$weblist) {
return null;
} else {
return $this->entityManager->getRepository(ListItem::class)->findOneBy(array('configurablelist' => $weblist, 'name' => $item, 'state' => 0));
}
}
public function getListItemOrCreate($list, $item, $organization = null) {
$weblist = $this->getList($list, $organization);
if (!$weblist) {
return null;
} else {
$listitem = $this->entityManager->getRepository(ListItem::class)->findOneBy(array('configurablelist' => $weblist, 'name' => $item, 'state' => 0));
if (!$listitem) {
$listitem = new ListItem();
$listitem->setName($item);
$listitem->setConfigurablelist($weblist);
$listitem->setState(0);
$this->entityManager->persist($listitem);
$this->entityManager->flush();
}
return $listitem;
}
}
/**
* @param string $name
* @param string $identifier
* @param $integer1
* @param $string1
* @param $string2
* @param $authorizationtype
* @param int $state
* @return ConfigurableList|mixed
*/
public function createList(
string $name,
string $identifier,
$integer1,
$string1,
$string2,
$authorizationtype,
int $state
) {
$list = $this->entityManager->getRepository(ConfigurableList::class)->findOneByIdentifier($identifier);
if (!$list) {
$list = new ConfigurableList();
$list->setName($name);
$list->setIdentifier($identifier);
$list->setInteger1($integer1);
$list->setString1($string1);
$list->setString2($string2);
$list->setAuthorizationtype($authorizationtype);
$list->setState($state);
}
return $list;
}
/**
* @param $object
* @return void
*/
public function persistAndFlush($object)
{
$this->entityManager->persist($object);
$this->entityManager->flush();
}
/**
* @param ConfigurableList $list
* @param string $name
* @return ListItem
*/
public function addToConfigurableList(ConfigurableList $list, string $name)
{
$listitem = $this->entityManager->getRepository(ListItem::class)->findOneBy(
array('name' => $name, 'configurablelist' => $list)
);
if (!$listitem) {
$listitem = new ListItem();
$listitem->setConfigurablelist($list);
$listitem->setName($name);
$listitem->setState(0);
}
return $listitem;
}
/**
* @param string $name
* @param string $indentifier
* @param bool $organizationSpecific
* @param int $state
* @param string $type
* @param $authorizationtype
* @return Setting
*/
public function createSetting(
string $name,
string $indentifier,
bool $organizationSpecific,
int $state,
string $type,
$authorizationtype
) {
$setting = $this->entityManager->getRepository(Setting::class)->findOneByIdentifier($indentifier);
if (!$setting) {
$setting = new Setting();
$setting->setName($name);
$setting->setIdentifier($indentifier);
$setting->setOrganizationSpecific($organizationSpecific);
$setting->setState($state);
$setting->setType($type);
$setting->setAuthorizationtype($authorizationtype);
}
return $setting;
}
public function getCustomizedName($entity, $organization = null, $fallback = null)
{
$item = $this->getCustomizedEntity($entity, $organization);
if (!$item) {
return $fallback;
}
else
{
if (empty($item->getCustomizedName()))
{
return $fallback;
}
else
{
return $item->getCustomizedName();
}
}
}
public function getCustomizedPluralName($entity, $organization = null, $fallback = null)
{
$item = $this->getCustomizedEntity($entity, $organization);
if (!$item) {
return $fallback;
}
else
{
if (empty($item->getCustomizedPluralName()))
{
return $fallback;
}
else
{
return $item->getCustomizedPluralName();
}
}
}
public function getCustomizedString1($entity, $organization = null, $fallback = null)
{
$item = $this->getCustomizedEntity($entity, $organization);
if (!$item) {
return $fallback;
}
else
{
if (empty($item->getSpecificString1()))
{
return $fallback;
}
else
{
return $item->getSpecificString1();
}
}
}
public function getCustomizedString2($entity, $organization = null, $fallback = null)
{
$item = $this->getCustomizedEntity($entity, $organization);
if (!$item) {
return $fallback;
}
else
{
if (empty($item->getSpecificString2()))
{
return $fallback;
}
else
{
return $item->getSpecificString2();
}
}
}
public function getCustomizedEntity($entity, $organization = null)
{
try {
$item = $this->entityManager->getRepository(CustomizedEntity::class)->findOneBy(
array('entity' => $entity, 'organization' => $organization, 'state' => 0)
);
if (!$item) {
$item = $this->entityManager->getRepository(CustomizedEntity::class)->findOneBy(
array('entity' => $entity, 'state' => 0)
);
if (!$item) {
return null;
}
}
return $item;
} catch (Exception $e) {
return null;
}
}
}