Event.php 2.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. <?php
  2. namespace Muzich\CoreBundle\Actions\User;
  3. use Muzich\CoreBundle\Entity\User;
  4. use Muzich\CoreBundle\Entity\Event as EventEntity;
  5. use Symfony\Component\DependencyInjection\Container;
  6. /**
  7. * Refactorisation d'actions lié aux événement de l'utilisateur
  8. *
  9. * @author bux
  10. */
  11. class Event
  12. {
  13. /**
  14. *
  15. * @var User
  16. */
  17. protected $user;
  18. protected $event;
  19. protected $new = false;
  20. protected $container;
  21. /**
  22. *
  23. * @param User $user L'utilisateur concerné par l'événement
  24. * @param Container $container
  25. */
  26. public function __construct(User $user, Container $container)
  27. {
  28. $this->user = $user;
  29. $this->container = $container;
  30. }
  31. /**
  32. * Cette méthode récupére (si elle existe) en base l'objet Event
  33. * correspondant a cet événement.
  34. *
  35. * @param string $type
  36. */
  37. protected function initialize($type)
  38. {
  39. $em = $this->container->get('doctrine')->getEntityManager();
  40. try
  41. {
  42. $this->event = $em->createQuery(
  43. 'SELECT e FROM MuzichCoreBundle:Event e
  44. WHERE e.user = :uid AND e.type = :type'
  45. )->setParameters(array(
  46. 'uid' => $this->user->getId(),
  47. 'type' => $type
  48. ))->getSingleResult()
  49. ;
  50. $this->new = false;
  51. }
  52. catch (\Doctrine\ORM\NoResultException $e)
  53. {
  54. $this->event = new EventEntity();
  55. $this->new = true;
  56. }
  57. }
  58. /**
  59. * Procéde a l'ajout de l'événement a la liste de l'utilisateur.
  60. *
  61. * @param string $type
  62. * @param int $element_id
  63. * @return Event
  64. */
  65. public function proceed($type, $element_id)
  66. {
  67. $this->initialize($type);
  68. if ($this->new)
  69. {
  70. $this->initEvent($type, $element_id);
  71. }
  72. else
  73. {
  74. $this->updateEvent($element_id);
  75. }
  76. return $this->event;
  77. }
  78. /**
  79. *
  80. *
  81. * @param int $element_id
  82. */
  83. protected function updateEvent($element_id)
  84. {
  85. $this->event->addId($element_id);
  86. }
  87. /**
  88. * Création d'un objet Event
  89. *
  90. * @param string $type
  91. * @param int $element_id
  92. */
  93. protected function initEvent($type, $element_id)
  94. {
  95. $this->event->addId($element_id);
  96. $this->event->setType($type);
  97. $this->event->setUser($this->user);
  98. }
  99. }