<?php
namespace Admin\MainBundle\Controller;
use AppBundle\Controller\AbstractController;
use AppBundle\Entity\Advertising\Advertising;
use AppBundle\Entity\Advertising\AdvertisingAgents;
use AppBundle\Entity\Advertising\AdvertisingManagers;
use AppBundle\Entity\Advertising\AdvertisingModerators;
use AppBundle\Entity\Advertising\AdvertisingObservers;
use AppBundle\Entity\FosUser\FosUser;
use AppBundle\Entity\FosUser\FosUserSettings;
use AppBundle\Entity\FosUser\FosUserSocialInfo;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\HttpFoundation\Response;
class DefaultController extends AbstractController
{
/**
* @Route("/", name="homepage")
* @Template()
*/
public function indexAction()
{
if ($this->isGranted('IS_AUTHENTICATED_FULLY')) {
return $this->redirectToRoute('homepage_logined');
} else {
return $this->redirectToRoute('login');
}
}
/**
* @Route("/a/", name="homepage_logined")
* @Template()
*/
public function indexLoginedAction()
{
$advertisings = $this->getEm()
->getRepository(Advertising::class)
->findBy([], ['id'=>'DESC']);
return ['advertisings'=> $advertisings];
}
/**
* @Route("/a/advertisings", name="advertising_index")
* @Template()
*/
public function promotionsAction()
{
if ($this->isGranted('ROLE_MANAGER')) {
$advertisings = $this->getEm()
->getRepository(Advertising::class)
->findBy([], ['id'=>'DESC']);
return ['advertisings'=> $advertisings];
}
$advertisings = [];
if ($this->isGranted('ROLE_MODERATOR')) {
$advertisings = $this->getEm()
->getRepository(AdvertisingModerators::class)
->findBy([
'userId' => $this->getUser()
], ['advertising'=>'DESC']);
}
if ($this->isGranted('ROLE_PROJECT')) {
$advertisingsByManager = $this->getEm()
->getRepository(AdvertisingManagers::class)
->findBy([
'user' => $this->getUser()
], ['advertising'=>'DESC']);
$advertisingsByObserver = $this->getEm()
->getRepository(AdvertisingObservers::class)
->findBy([
'userId' => $this->getUser()->getId()
], ['advertising'=>'DESC']);
$advertisings = array_merge($advertisingsByManager, $advertisingsByObserver);
}
usort($advertisings, function ($a, $b)
{
if ($a->getId() == $b->getId()) {
return 0;
}
return ($a->getId() > $b->getId()) ? -1 : 1;
});
return [
'advertisingsByManager'=> $advertisings
];
}
/**
* @Route("/a/clear-status")
*/
public function clearStatusAction()
{
$em = $this->getEm();
$fosUserSocial = $em->getRepository(FosUserSocialInfo::class)
->getForClear();
$ids = [];
foreach ($fosUserSocial as $socialInfo) {
/** @var FosUser $user */
$user = $socialInfo->getUser();
$settings = $user->getSettings();
$settings->setSocialCheck(FosUserSettings::SOCIAL_CHECK_NO);
$em->persist($settings);
$ids[] = $user->getId();
}
$em->flush();
$repo = $em->getRepository(AdvertisingAgents::class);
$qb = $repo->createQueryBuilder('aa');
$qb->update()
->where('aa.user IN (:ids )')
->set('aa.statusSocialNetworks', ':statusSocialNetworks')
->setParameter('statusSocialNetworks', AdvertisingAgents::STATUS_SOCIAL_NETWORKS_NOT_CHECKED)
->setParameter('ids', $ids)
;
$qb->getQuery()->execute();
return new Response('done');
}
}