src/App/Service/SessionService.php line 22

Open in your IDE?
  1. <?php
  2. namespace App\Service;
  3. use App\Entity\NextStepInfoForAfterSubscription;
  4. use Symfony\Component\HttpFoundation\RequestStack;
  5. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  6. class SessionService
  7. {
  8. public const JOBOFFERER_SEARCH_HINT_STATE_FIRST = 0;
  9. public const JOBOFFERER_SEARCH_HINT_STATE_SECOND = 1;
  10. public function markSessionAsLoginFromAdmin(SessionInterface $session, string $userId): void
  11. {
  12. $session->set('_loginWasFromAdmin', true);
  13. $session->set('_loginFromAdminUserId', $userId);
  14. }
  15. public function loginWasFromAdmin(SessionInterface $session): bool
  16. {
  17. return $session->get('_loginWasFromAdmin', false);
  18. }
  19. public function getLoginFromAdminUserId(SessionInterface $session): ?string
  20. {
  21. return $session->get('_loginFromAdminUserId', null);
  22. }
  23. public function setNextStepInfoForAfterSubscription(SessionInterface $session, NextStepInfoForAfterSubscription $nextStepInfoForAfterSubscription): void
  24. {
  25. $session->set('_nextStepInfoForAfterSubscription', $nextStepInfoForAfterSubscription);
  26. }
  27. public function removeNextStepInfoForAfterSubscription(SessionInterface $session): void
  28. {
  29. $session->remove('_nextStepInfoForAfterSubscription');
  30. }
  31. public function getNextStepInfoForAfterSubscription(SessionInterface $session): ?NextStepInfoForAfterSubscription
  32. {
  33. return $session->get('_nextStepInfoForAfterSubscription');
  34. }
  35. public function addProfileIdForMultiMessageSelection(
  36. SessionInterface $session,
  37. string $profileId
  38. ): void {
  39. $profileIds = is_null($session->get('_profileIdsForMultiMessageSelection'))
  40. ? []
  41. : $session->get('_profileIdsForMultiMessageSelection');
  42. if (!in_array($profileId, $profileIds)) {
  43. $profileIds[] = trim($profileId);
  44. }
  45. $session->set('_profileIdsForMultiMessageSelection', $profileIds);
  46. }
  47. public function deleteProfileIdForMultiMessageSelection(
  48. SessionInterface $session,
  49. string $profileId
  50. ): void {
  51. $profileIds = is_null($session->get('_profileIdsForMultiMessageSelection')) ? [] : $session->get('_profileIdsForMultiMessageSelection');
  52. if (($index = array_search($profileId, $profileIds)) !== false) {
  53. unset($profileIds[$index]);
  54. }
  55. $session->set('_profileIdsForMultiMessageSelection', $profileIds);
  56. }
  57. public function getProfileIdsForMultiMessageSelection(SessionInterface $session): array
  58. {
  59. $profileIds = $session->get('_profileIdsForMultiMessageSelection');
  60. if (is_null($profileIds)) {
  61. return [];
  62. } else {
  63. return $profileIds;
  64. }
  65. }
  66. public function resetProfileIdsForMultiMessageSelection(SessionInterface $session): void
  67. {
  68. $session->set('_profileIdsForMultiMessageSelection', []);
  69. }
  70. public function setUsernamePrefillForLogin(SessionInterface $session, string $usernamePrefill): void
  71. {
  72. $session->set('_usernamePrefillForLogin', $usernamePrefill);
  73. }
  74. public function getUsernamePrefillForLogin(SessionInterface $session): ?string
  75. {
  76. return $session->get('_usernamePrefillForLogin');
  77. }
  78. public function getAndCycleJoboffererSearchHintState(SessionInterface $session): int
  79. {
  80. $currentState = $session->get('_joboffererSearchHintState');
  81. if (is_null($currentState) || $currentState === self::JOBOFFERER_SEARCH_HINT_STATE_FIRST) {
  82. $session->set('_joboffererSearchHintState', self::JOBOFFERER_SEARCH_HINT_STATE_SECOND);
  83. return self::JOBOFFERER_SEARCH_HINT_STATE_FIRST;
  84. } else {
  85. $session->set('_joboffererSearchHintState', self::JOBOFFERER_SEARCH_HINT_STATE_FIRST);
  86. return self::JOBOFFERER_SEARCH_HINT_STATE_SECOND;
  87. }
  88. }
  89. public function addConversionEventId(
  90. SessionInterface $session,
  91. string $conversionEventId,
  92. int $campaignId,
  93. int $subcampaignId,
  94. ?string $relatedRecurrentJobId = null
  95. ): void {
  96. $conversionEventIds = $session->get('_conversionEventIds');
  97. if (is_null($conversionEventIds)) {
  98. $conversionEventIds = [];
  99. }
  100. if (!is_null($relatedRecurrentJobId)) {
  101. $conversionEventIds["$campaignId-$subcampaignId-$relatedRecurrentJobId"] = $conversionEventId;
  102. }
  103. $conversionEventIds["$campaignId-$subcampaignId"] = $conversionEventId;
  104. $session->set('_conversionEventIds', $conversionEventIds);
  105. }
  106. public function getConversionEventId(
  107. SessionInterface $session,
  108. int $campaignId,
  109. int $subcampaignId,
  110. ?string $relatedRecurrentJobId = null
  111. ): ?string {
  112. $conversionEventIds = $session->get('_conversionEventIds');
  113. if (is_null($conversionEventIds)) {
  114. return null;
  115. }
  116. if (!is_null($relatedRecurrentJobId)) {
  117. if (array_key_exists("$campaignId-$subcampaignId-$relatedRecurrentJobId", $conversionEventIds)) {
  118. return $conversionEventIds["$campaignId-$subcampaignId-$relatedRecurrentJobId"];
  119. }
  120. }
  121. if (array_key_exists("$campaignId-$subcampaignId", $conversionEventIds)) {
  122. return $conversionEventIds["$campaignId-$subcampaignId"];
  123. } else {
  124. return null;
  125. }
  126. }
  127. public function removeConversionEventId(
  128. SessionInterface $session,
  129. int $campaignId,
  130. int $subcampaignId,
  131. ?string $relatedRecurrentJobId = null
  132. ): void {
  133. $conversionEventIds = $session->get('_conversionEventIds');
  134. if (is_null($conversionEventIds)) {
  135. return;
  136. }
  137. if (!is_null($relatedRecurrentJobId)) {
  138. unset($conversionEventIds["$campaignId-$subcampaignId-$relatedRecurrentJobId"]);
  139. }
  140. unset($conversionEventIds["$campaignId-$subcampaignId"]);
  141. $session->set('_conversionEventIds', $conversionEventIds);
  142. }
  143. public function getAnonymousUserInfo(SessionInterface $session): ?string
  144. {
  145. return $session->get('anonymousUserInfo');
  146. }
  147. public function setAnonymousUserInfo(SessionInterface $session, string $id): void
  148. {
  149. $session->set('anonymousUserInfo', $id);
  150. }
  151. public function hasSessionAnonymousUserInfo(SessionInterface $session): bool
  152. {
  153. return $session->has('anonymousUserInfo');
  154. }
  155. public function setWasRedirectedFromGoGastro(SessionInterface $session): void
  156. {
  157. $session->set('wasRedirectedFromGoGastro', true);
  158. }
  159. public function getWasRedirectedFromGoGastro(SessionInterface $session): bool
  160. {
  161. if ($session->has('wasRedirectedFromGoGastro')) {
  162. $session->remove('wasRedirectedFromGoGastro');
  163. return true;
  164. }
  165. return false;
  166. }
  167. public function setHasSeenGGInfoPage(SessionInterface $session): void
  168. {
  169. $session->set('hasSeenGGInfoPage', true);
  170. }
  171. public function getHasSeenGGInfoPage(SessionInterface $session): bool
  172. {
  173. if ($session->get('hasSeenGGInfoPage') === true) {
  174. return true;
  175. } else {
  176. $this->setHasSeenGGInfoPage($session);
  177. return false;
  178. }
  179. }
  180. public function setPreventInfoPage(SessionInterface $session): void
  181. {
  182. $session->set('preventInfoPage', true);
  183. }
  184. public function getPreventInfoPage(SessionInterface $session): bool
  185. {
  186. if ($session->has('preventInfoPage')) {
  187. return true;
  188. }
  189. return false;
  190. }
  191. public function getUriOfLastSuccessfulSearchResultsPage(SessionInterface $session): string
  192. {
  193. return (!is_null($session->get('uriOfLastSuccessfulSearchResultsPage'))) ? $session->get('uriOfLastSuccessfulSearchResultsPage') : '';
  194. }
  195. public function setUriOfLastSuccessfulSearchResultsPage(SessionInterface $session, string $uri): void
  196. {
  197. $session->set('uriOfLastSuccessfulSearchResultsPage', $uri);
  198. }
  199. public function getSearchResultsUriToOfferForReturn(SessionInterface $session): string
  200. {
  201. return (!is_null($session->get('searchResultsUriToOfferForReturn'))) ? $session->get('searchResultsUriToOfferForReturn') : '';
  202. }
  203. public function setSearchResultsUriToOfferForReturn(SessionInterface $session, string $uri): void
  204. {
  205. $session->set('searchResultsUriToOfferForReturn', $uri);
  206. }
  207. public function getRecurrentJobUriToOfferForReturn(SessionInterface $session): string
  208. {
  209. return (!is_null($session->get('recurrentJobUriToOfferForReturn'))) ? $session->get('recurrentJobUriToOfferForReturn') : '';
  210. }
  211. public function setRecurrentJobUriToOfferForReturn(SessionInterface $session, string $uri): void
  212. {
  213. $session->set('recurrentJobUriToOfferForReturn', $uri);
  214. }
  215. public static function hasStartedSession(?RequestStack $requestStack): bool
  216. {
  217. if (is_null($requestStack)) {
  218. return false;
  219. }
  220. if (is_null($requestStack->getMainRequest())) {
  221. return false;
  222. }
  223. return $requestStack->getMainRequest()->hasSession()
  224. && $requestStack->getMainRequest()->getSession()->isStarted();
  225. }
  226. }