src/AdminBundle/Services/BaseService.php line 172

Open in your IDE?
  1. <?php
  2. namespace AdminBundle\Services;
  3. use AdminBundle\Entity\Area;
  4. use AdminBundle\Entity\Booking;
  5. use AdminBundle\Entity\BookingExtra;
  6. use AdminBundle\Entity\BookingRequest;
  7. use AdminBundle\Entity\CarType;
  8. use AdminBundle\Entity\CarTypeAreaPrice;
  9. use AdminBundle\Entity\CarTypePrice;
  10. use AdminBundle\Entity\Driver;
  11. use AdminBundle\Entity\PeriodSettings;
  12. use AdminBundle\Entity\Settings;
  13. use AdminBundle\Entity\User;
  14. use AdminBundle\Entity\Tours;
  15. use AdminBundle\Entity\Zone;
  16. use AdminBundle\Repository\AreaRepository;
  17. use AdminBundle\Repository\BookingExtraRepository;
  18. use AdminBundle\Repository\BookingRepository;
  19. use AdminBundle\Repository\BookingRequestRepository;
  20. use AdminBundle\Repository\CarTypeAreaPriceRepository;
  21. use AdminBundle\Repository\CarTypeRepository;
  22. use AdminBundle\Repository\CarTypePriceRepository;
  23. use AdminBundle\Repository\DriverRepository;
  24. use AdminBundle\Repository\PeriodSettingsRepository;
  25. use AdminBundle\Repository\SettingsRepository;
  26. use AdminBundle\Repository\UserRepository;
  27. use AdminBundle\Repository\ZoneRepository;
  28. use AdminBundle\Repository\ToursRepository;
  29. use FOS\UserBundle\Form\Factory\FactoryInterface;
  30. use FOS\UserBundle\Security\LoginManagerInterface;
  31. use FOS\UserBundle\Util\TokenGeneratorInterface;
  32. use Sonata\UserBundle\Entity\UserManager;
  33. use Symfony\Component\Asset\UrlPackage;
  34. use Symfony\Component\Asset\VersionStrategy\EmptyVersionStrategy;
  35. use Symfony\Component\DependencyInjection\ContainerInterface;
  36. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  37. use Symfony\Component\Security\Core\Authorization\AuthorizationChecker;
  38. class BaseService
  39. {
  40. /**
  41. * @var AuthorizationChecker
  42. */
  43. public $authChecker;
  44. /**
  45. * @var UserManager
  46. */
  47. protected $manager;
  48. /**
  49. * @var TokenGeneratorInterface
  50. */
  51. protected $tokenGenerator;
  52. /**
  53. * @var LoginManagerInterface
  54. */
  55. protected $loginManager;
  56. /**
  57. * @var FactoryInterface
  58. */
  59. protected $resetFormFactory;
  60. /**
  61. * @var TokenStorageInterface
  62. */
  63. private $tokenStorage;
  64. /**
  65. * @var \Symfony\Component\DependencyInjection\ContainerInterface
  66. */
  67. protected $container;
  68. /**
  69. * @var \AdminBundle\Repository\AreaRepository
  70. */
  71. protected $areaRepository;
  72. /**
  73. * @var \AdminBundle\Repository\CarTypeRepository
  74. */
  75. protected $carTypeRepository;
  76. /**
  77. * @var \AdminBundle\Repository\CarTypePriceRepository
  78. */
  79. protected $carTypePriceRepository;
  80. /**
  81. * @var \AdminBundle\Repository\CarTypeAreaPriceRepository
  82. */
  83. protected $carTypeAreaPriceRepository;
  84. /**
  85. * @var \AdminBundle\Repository\ZoneRepository
  86. */
  87. protected $zoneRepository;
  88. /**
  89. * @var \AdminBundle\Repository\BookingExtraRepository
  90. */
  91. protected $bookingExtraRepository;
  92. /**
  93. * @var \AdminBundle\Repository\UserRepository
  94. */
  95. protected $userRepository;
  96. /**
  97. * @var SettingsRepository
  98. */
  99. protected $settingsRepository;
  100. /**
  101. * @var PeriodSettingsRepository
  102. */
  103. protected $periodSettingsRepository;
  104. /**
  105. * @var ToursRepository
  106. */
  107. protected $toursRepository;
  108. /**
  109. * @var DriverRepository
  110. */
  111. protected $driverRepository;
  112. /**
  113. * @var BookingRepository
  114. */
  115. protected $bookingRepository;
  116. /**
  117. * @var BookingRequestRepository
  118. */
  119. protected $bookingRequestRepository;
  120. /**
  121. * @param \Symfony\Component\DependencyInjection\ContainerInterface $container
  122. */
  123. public function __construct(
  124. ContainerInterface $container,
  125. UserManager $usermanager,
  126. AuthorizationChecker $authorizationChecker,
  127. TokenGeneratorInterface $tokenGenerator,
  128. LoginManagerInterface $loginManager,
  129. FactoryInterface $resetFormFactory,
  130. TokenStorageInterface $tokenStorage
  131. ) {
  132. $this->container = $container;
  133. $this->manager = $usermanager;
  134. $this->authChecker = $authorizationChecker;
  135. $this->tokenGenerator = $tokenGenerator;
  136. $this->loginManager = $loginManager;
  137. $this->resetFormFactory = $resetFormFactory;
  138. $this->tokenStorage = $tokenStorage;
  139. $this->areaRepository = $this->getRepo(Area::class);
  140. $this->bookingRepository = $this->getRepo(Booking::class);
  141. $this->bookingExtraRepository = $this->getRepo(BookingExtra::class);
  142. $this->bookingRequestRepository = $this->getRepo(BookingRequest::class);
  143. $this->carTypeRepository = $this->getRepo(CarType::class);
  144. $this->carTypeAreaPriceRepository = $this->getRepo(CarTypeAreaPrice::class);
  145. $this->carTypePriceRepository = $this->getRepo(CarTypePrice::class);
  146. $this->driverRepository = $this->getRepo(Driver::class);
  147. $this->periodSettingsRepository = $this->getRepo(PeriodSettings::class);
  148. $this->settingsRepository = $container->get('settings_repo');
  149. $this->userRepository = $this->getRepo(User::class);
  150. $this->toursRepository = $this->getRepo(Tours::class);
  151. $this->zoneRepository = $this->getRepo(Zone::class);
  152. }
  153. public function getRepo($class) {
  154. $em = $this->get('doctrine')->getManager();
  155. return $em->getRepository($class);
  156. }
  157. protected function setKeyOfArray($array, $key)
  158. {
  159. $result = array();
  160. if (!empty($array)) {
  161. foreach ($array as $item) {
  162. $result[$item[$key]] = $item;
  163. }
  164. }
  165. return $result;
  166. }
  167. protected function getDoctrine()
  168. {
  169. return $this->container->get('doctrine');
  170. }
  171. public function assetsManager() {
  172. return new UrlPackage(
  173. $this->container->getParameter('assets_base_url'),
  174. new EmptyVersionStrategy()
  175. );
  176. }
  177. public function get($service) {
  178. if ($service == 'sonata.user.user_manager') {
  179. return $this->manager;
  180. }
  181. if ($service == 'fos_user.util.token_generator') {
  182. return $this->tokenGenerator;
  183. }
  184. if ($service == 'fos_user.security.login_manager') {
  185. return $this->loginManager;
  186. }
  187. if ($service == 'fos_user.resetting.form.factory') {
  188. return $this->resetFormFactory;
  189. }
  190. if ($service == 'security.token_storage') {
  191. return $this->tokenStorage;
  192. }
  193. return $this->container->get($service);
  194. }
  195. }