src/AdminBundle/Helpers/MandrillManager.php line 305

Open in your IDE?
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: laurentiu
  5. * Date: 28.08.2017
  6. * Time: 21:11
  7. */
  8. namespace AdminBundle\Helpers;
  9. use AdminBundle\Entity\Booking;
  10. use AdminBundle\Entity\Company;
  11. use Symfony\Component\Console\Output\OutputInterface;
  12. class MandrillManager
  13. {
  14. /** @var OutputInterface $output */
  15. private $output;
  16. private $mandrill;
  17. /**
  18. * ["passenger_name", "passenger_phone", "passenger_email", "booking_key", "booking_pickup_date", "booking_pickup_time", "booking_pickup_location", "booking_dropoff_location", "booking_vias_content", "booking_passengers", "booking_luggage", "booking_notes", "booking_cost", "booking_duration", "booking_distance", "booking_car_type", "booking_hand_luggage", "return_booking" => false, "return_booking_key", "return_booking_pickup_date", "return_booking_pickup_time", "return_booking_pickup_location", "return_booking_dropoff_location", "return_booking_vias_content", "return_booking_notes", "return_booking_duration", "return_booking_distance", "flight_number", "landing_time", "mg_timeframe". "currency_symbol", "premium_mg", "return_premium_mg"]
  19. *
  20. * @var string
  21. */
  22. public static $TEMPLATE_NEW_BOOKING_CLIENT = '1.NEW-BOOKING-CLIENT';
  23. /**
  24. * ["passenger_name", "passenger_phone", "passenger_email", "booking_key", "booking_creation_date", "booking_creation_time", "booking_origin", "booking_pickup_date", "booking_pickup_time", "booking_pickup_location", "booking_dropoff_location", "booking_vias_content", "booking_passengers", "booking_luggage", "booking_notes", "booking_cost", "booking_duration", "booking_distance", "booking_car_type", "booking_hand_luggage", "flight_number", "landing_time", "mg_timeframe", "currency_symbol"]
  25. *
  26. * @var string
  27. */
  28. public static $TEMPLATE_NEW_BOOKING_OFFICE = '2.NEW-BOOKING-OFFICE';
  29. /**
  30. * ["passenger_name"]
  31. *
  32. * @var string
  33. */
  34. public static $TEMPLATE_BOOKING_COMPLETED = '3.BOOKING-COMPLETED';
  35. /**
  36. * ["passenger_name", "booking_key", "passenger_phone", "passenger_email", "booking_pickup_date", "booking_pickup_time", "booking_pickup_location", "booking_dropoff_location", "booking_cancel_reason", "booking_cancel_charge","booking_review_link"]
  37. *
  38. * @var string
  39. */
  40. public static $TEMPLATE_BOOKING_CANCELLED = '4.BOOKING-CANCELLED';
  41. /**
  42. * ["passenger_name", "passenger_phone", "passenger_email", "booking_key", "booking_creation_date", "booking_creation_time", "booking_origin", "booking_pickup_date", "booking_pickup_time", "booking_pickup_location", "booking_dropoff_location", "booking_vias_content", "booking_passengers", "booking_luggage", "booking_notes", "booking_cost", "booking_duration", "booking_distance", "booking_car_type", "booking_hand_luggage", "currency_symbol"]
  43. *
  44. * @var string
  45. */
  46. public static $TEMPLATE_BOOKING_CANCELLED_AUTO = '4.5.BOOKING-CANCELLED-AUTO';
  47. /**
  48. * ["passenger_name", "booking_key", "booking_pickup_date", "booking_pickup_time", "booking_pickup_location", "driver_name", "driver_PCO", "driver_HACK", "driver_SSN", "driver_phone", "driver_vehicle_name", "driver_vehicle_plate", "driver_vehicle_PHV", "driver_vehicle_LIMO", "driver_vehicle_color", "premium_mg", "return_premium_mg"]
  49. *
  50. * @var string
  51. */
  52. public static $TEMPLATE_DRIVER_ALLOCATED = '5.DRIVER-ALLOCATED';
  53. /**
  54. * ["passenger_name", "booking_key", "booking_pickup_date", "booking_pickup_time", "booking_pickup_location", "driver_name", "driver_PCO", "driver_HACK", "driver_SSN", "driver_phone", "driver_vehicle_name", "driver_vehicle_plate", "driver_vehicle_PHV", "driver_vehicle_LIMO", "driver_vehicle_color", "premium_mg", "return_premium_mg"]
  55. *
  56. * @var string
  57. */
  58. public static $TEMPLATE_DRIVER_REALLOCATED = '6.DRIVER-REALLOCATED';
  59. /**
  60. * ["passenger_name", "booking_key", "booking_pickup_date", "booking_pickup_time", "booking_pickup_location", "driver_name", "driver_PCO", "driver_HACK", "driver_SSN", "driver_phone", "driver_vehicle_name", "driver_vehicle_plate", "driver_vehicle_PHV", "driver_vehicle_LIMO", "premium_mg", "return_premium_mg"]
  61. *
  62. * @var string
  63. */
  64. public static $TEMPLATE_DRIVER_WAITING = '7.5.DRIVER-WAITING';
  65. /**
  66. * ["passenger_name", "booking_key", "booking_pickup_date", "booking_pickup_time", "booking_pickup_location", "driver_name", "driver_PCO", "driver_HACK", "driver_SSN", "driver_phone", "driver_vehicle_name", "driver_vehicle_plate", "driver_vehicle_PHV", "driver_vehicle_LIMO", "premium_mg", "return_premium_mg"]
  67. *
  68. * @var string
  69. */
  70. public static $TEMPLATE_DRIVER_ARRIVED = '7.DRIVER-ARRIVED';
  71. /**
  72. * ["passenger_name", "payment_link", "booking_key", "booking_pickup_date", "booking_pickup_time", "booking_pickup_location", "booking_dropoff_location", "booking_cost", "currency_symbol"]
  73. *
  74. * @var string
  75. */
  76. public static $TEMPLATE_PAYMENT_INITIAL = '8.PAYMENT-INITIAL';
  77. /**
  78. * ["passenger_name", "payment_link", "booking_key", "booking_pickup_date", "booking_pickup_time", "booking_pickup_location", "booking_dropoff_location", "booking_cost", "currency_symbol"]
  79. *
  80. * @var string
  81. */
  82. public static $TEMPLATE_PAYMENT_REMINDER = '9.PAYMENT-REMINDER';
  83. /**
  84. * ["passenger_name", "payment_link", "booking_key", "booking_pickup_date", "booking_pickup_time", "booking_pickup_location", "booking_dropoff_location", "booking_cost", "currency_symbol"]
  85. *
  86. * @var string
  87. */
  88. public static $TEMPLATE_PAYMENT_WARNING = '10.PAYMENT-WARNING';
  89. /**
  90. * ["passenger_name", "booking_key", "booking_pickup_date", "booking_pickup_time", "booking_pickup_location", "booking_dropoff_location", "booking_cost", "payment_link", "currency_symbol"]
  91. *
  92. * @var string
  93. */
  94. public static $TEMPLATE_PENDING_CANCELLED = '11.PENDING-CANCELLED';
  95. /**
  96. * ["passenger_name", "passenger_phone", "passenger_email", "booking_key", "booking_creation_date", "booking_creation_time", "booking_origin", "booking_pickup_date", "booking_pickup_time", "booking_pickup_location", "booking_dropoff_location", "booking_vias_content", "booking_passengers", "booking_luggage", "booking_notes", "booking_cost", "booking_duration", "booking_distance", "booking_car_type", "booking_hand_luggage", "currency_symbol"]
  97. *
  98. * @var string
  99. */
  100. public static $TEMPLATE_PENDING_CANCELLED_EXCEPTION = '11.5.PENDING-CANCELLED-EXCEPTION';
  101. /**
  102. * ["passenger_name", "booking_key", "passenger_phone", "passenger_email", "booking_pickup_date", "booking_pickup_time", "booking_pickup_location", "booking_dropoff_location", "booking_vias_content", "booking_passengers", "booking_luggage", "booking_notes", "booking_cost", "booking_duration", "booking_distance", "booking_car_type", "booking_hand_luggage", "flight_number", "landing_time", "mg_timeframe", "currency_symbol", "premium_mg", "return_premium_mg"]
  103. *
  104. * @var string
  105. */
  106. public static $TEMPLATE_BOOKING_UPDATE = '12.BOOKING-UPDATED';
  107. /**
  108. * ["passenger_name", "booking_key", "passenger_phone", "passenger_email", "booking_pickup_date", "booking_pickup_time", "booking_pickup_location", "booking_dropoff_location", "booking_vias_content", "booking_passengers", "booking_luggage", "booking_notes", "booking_cost", "booking_duration", "booking_distance", "booking_car_type", "booking_hand_luggage", "flight_number", "landing_time", "mg_timeframe", "currency_symbol", "premium_mg", "return_premium_mg"]
  109. *
  110. * @var string
  111. */
  112. public static $TEMPLATE_BOOKING_RECONFIRM = '13.BOOKING-RECONFIRM';
  113. /**
  114. * ["passenger_name", "booking_key", "passenger_phone", "passenger_email", "booking_pickup_date", "booking_pickup_time", "booking_pickup_location", "booking_dropoff_location", "booking_vias_content", "booking_passengers", "booking_luggage", "booking_notes", "booking_cost", "booking_duration", "booking_distance", "booking_car_type", "booking_hand_luggage", "flight_number", "landing_time", "mg_timeframe", "currency_symbol", "premium_mg", "return_premium_mg"]
  115. *
  116. * @var string
  117. */
  118. public static $TEMPLATE_BOOKING_APPROACHING = '14.BOOKING-APPROACHING';
  119. /**
  120. * ["driver_name", "driver_ID", "driver_email", "driver_password"]
  121. *
  122. * @var string
  123. */
  124. public static $TEMPLATE_DRIVER_PASSWORD_RESET = '15.5.DRIVER-PASSWORD-RESET';
  125. /**
  126. * ["driver_name", "driver_ID", "driver_PCO", "driver_HACK", "driver_SSN", "driver_phone", "driver_email", "driver_vehicle_name", "driver_vehicle_plate", "driver_vehicle_PHV", "driver_vehicle_LIMO"]
  127. *
  128. * @var string
  129. */
  130. public static $TEMPLATE_DRIVER_REGISTERED = '15.DRIVER-REGISTERED';
  131. /**
  132. * ["passenger_name", "booking_key", "payment_link"]
  133. *
  134. * @var string
  135. */
  136. public static $TEMPLATE_PENDING_BOOKING = '16.PENDING-BOOKING';
  137. /**
  138. * ["passenger_name", "passenger_phone", "passenger_email", "booking_pickup_date", "booking_pickup_time", "booking_pickup_location", "booking_dropoff_location", "booking_vias_content", "booking_passengers", "booking_luggage", "booking_notes", "booking_cost", "booking_duration", "booking_distance", "currency_symbol"]
  139. *
  140. * @var string
  141. */
  142. public static $TEMPLATE_DRIVER_STATUS_CHECK = '17.DRIVER-STATUS-CHECK';
  143. /**
  144. * ["driver_ID", "driver_name", "driver_vehicle_name", "driver_vehicle_plate"]
  145. *
  146. * @var string
  147. */
  148. public static $TEMPLATE_DRIVER_DOCUMENT_UPLOAD = '18.5.DRIVER-DOCUMENT-UPLOAD';
  149. /**
  150. * ["passenger_name"]
  151. *
  152. * @var string
  153. */
  154. public static $TEMPLATE_RESEND_JOURNEY_INVOICE = '19.RESEND-JOURNEY-INVOICE';
  155. /**
  156. * ["passenger_name", "passenger_email", "passenger_phone", "passenger_password"]
  157. *
  158. * @var string
  159. */
  160. public static $TEMPLATE_CLIENT_PASSWORD_RESET = '20.CLIENT-PASSWORD-RESET';
  161. /**
  162. * ["booking_key", "booking_creation_date", "booking_creation_time", "booking_origin", "passenger_name", "passenger_phone", "passenger_email", "booking_pickup_date", "booking_pickup_time", "booking_pickup_location", "booking_dropoff_location", "booking_vias_content", "booking_passengers", "booking_luggage", "booking_notes", "booking_cost", "booking_duration", "booking_distance", "booking_car_type", "booking_hand_luggage", "flight_number", "landing_time", "mg_timeframe", "currency_symbol"]
  163. *
  164. * @var string
  165. */
  166. public static $TEMPLATE_OPERATOR_BOOKING_CHECK = '21.OPERATOR-BOOKING-CHECK';
  167. /**
  168. * ["booking_key", "booking_creation_date", "booking_creation_time", "booking_origin", "passenger_name", "passenger_phone", "passenger_email", "booking_pickup_date", "booking_pickup_time", "booking_pickup_location", "booking_dropoff_location", "booking_vias_content", "booking_passengers", "booking_luggage", "booking_notes", "booking_cost", "booking_duration", "booking_distance", "booking_car_type", "booking_hand_luggage", "flight_number", "landing_time", "mg_timeframe", "currency_symbol"]
  169. *
  170. * @var string
  171. */
  172. public static $DRIVER_DEALLOCATE = '21.5.DRIVER-DEALLOCATE';
  173. /**
  174. * ["driver_name", "week_number", "week_period", "current_week_saturday"]
  175. *
  176. * @var string
  177. */
  178. public static $TEMPLATE_DRIVER_INVOICE = '22.DRIVER-INVOICE';
  179. /**
  180. * ["booking_key", "passenger_name", "booking_pickup_date", "booking_pickup_time", "booking_pickup_location", "booking_dropoff_location", "booking_cost", "currency_symbol"]
  181. *
  182. * @var string
  183. */
  184. public static $TEMPLATE_PAYMENT_CONFIRMED_CARD = '23.PAYMENT-CONFIRMED-CARD';
  185. /**
  186. * ["passenger_name", "passenger_phone", "passenger_email", "booking_key", "booking_pickup_date", "booking_pickup_time", "booking_pickup_location", "booking_dropoff_location", "booking_vias_content", "booking_passengers", "booking_luggage", "booking_notes", "booking_cost", "booking_duration", "booking_distance", "booking_car_type", "booking_hand_luggage", "return_booking" => false, "return_booking_key", "return_booking_pickup_date", "return_booking_pickup_time", "return_booking_pickup_location", "return_booking_dropoff_location", "return_booking_vias_content", "return_booking_notes", "return_booking_duration", "return_booking_distance", "flight_number", "landing_time", "mg_timeframe","drivers", "currency_symbol"]
  187. *
  188. * @var string
  189. */
  190. public static $TEMPLATE_SEND_BOOKING_REQUEST = '24.SEND-BOOKING-REQUEST';
  191. /**
  192. * ["passenger_name", "passenger_phone", "passenger_email", "booking_key", "booking_pickup_date", "booking_pickup_time", "booking_pickup_location", "booking_dropoff_location", "booking_vias_content", "booking_passengers", "booking_luggage", "booking_notes", "booking_cost", "booking_duration", "booking_distance", "booking_car_type", "booking_hand_luggage", "return_booking" => false, "return_booking_key", "return_booking_pickup_date", "return_booking_pickup_time", "return_booking_pickup_location", "return_booking_dropoff_location", "return_booking_vias_content", "return_booking_notes", "return_booking_duration", "return_booking_distance", "flight_number", "landing_time", "mg_timeframe","drivers", "currency_symbol"]
  193. *
  194. * @var string
  195. */
  196. public static $TEMPLATE_NEW_BOOKING_REQUEST = '24.5.NEW-BOOKING-REQUEST';
  197. /**
  198. * ["passenger_name", "passenger_phone", "passenger_email", "booking_key", "booking_pickup_date", "booking_pickup_time", "booking_pickup_location", "booking_dropoff_location", "booking_vias_content", "booking_passengers", "booking_luggage", "booking_notes", "booking_cost", "booking_duration", "booking_distance", "booking_car_type", "booking_hand_luggage", "return_booking" => false, "return_booking_key", "return_booking_pickup_date", "return_booking_pickup_time", "return_booking_pickup_location", "return_booking_dropoff_location", "return_booking_vias_content", "return_booking_notes", "return_booking_duration", "return_booking_distance", "flight_number", "landing_time", "mg_timeframe", "currency_symbol"]
  199. *
  200. * @var string
  201. */
  202. public static $TEMPLATE_SHUTTLE_ENQUIRY = '25.SHUTTLE-ENQUIRY';
  203. /**
  204. * ["passenger_name", "passenger_phone", "passenger_email", "booking_key", "booking_pickup_date", "booking_pickup_time", "booking_pickup_location", "booking_dropoff_location", "booking_cost", "booking_duration", "booking_distance", "driver_name", "driver_internal_name", "driver_email", "driver_PCO", "driver_HACK", "driver_SSN", "driver_phone", "driver_vehicle_name", "driver_vehicle_plate", "driver_vehicle_PHV", "driver_vehicle_LIMO", "driver_vehicle_color"]
  205. *
  206. * @var string
  207. */
  208. public static $TEMPLATE_DRIVER_AUTO_CONFIRM = '26.DRIVER-AUTO-CONFIRM';
  209. /**
  210. * ["department", "bookingID", "message", "first_name", "last_name", "user_email", "user_phone"]
  211. *
  212. * @var string
  213. */
  214. public static $CLIENT_SUPPORT_REQUEST = '27.CLIENT-SUPPORT-REQUEST';
  215. /**
  216. * [ticket_id, ticket_subject, ticket_description, ticket_creation_date, ticket_creation_time, booking_key, ticket_department, ticket_message]
  217. *
  218. * @var string
  219. */
  220. public static $TICKETS = '28.TICKETS-EMAIL';
  221. /**
  222. * ["driver_ID", "driver_name", "driver_phone", "driver_email"]
  223. *
  224. * @var string
  225. */
  226. public static $TEMPLATE_NEW_DRIVER_REGISTERED = '29.NEW-DRIVER-REGISTERED';
  227. /**
  228. * ["booking_key", "booking_creation_date", "booking_creation_time", "booking_origin", "passenger_name", "passenger_phone", "passenger_email", "booking_pickup_date", "booking_pickup_time", "booking_pickup_location", "booking_dropoff_location", "booking_vias_content", "booking_passengers", "booking_luggage", "booking_notes", "booking_cost", "booking_duration", "booking_distance", "booking_car_type", "booking_hand_luggage", "flight_number", "landing_time", "mg_timeframe", "currency_symbol", "error_message"]
  229. *
  230. * @var string
  231. */
  232. public static $TEMPLATE_CHECK_PAYMENT_OPERATOR = '30.CHECK-PAYMENT-OPERATOR';
  233. /**
  234. * ["passenger_name", "passenger_email", "passenger_phone"]
  235. *
  236. * @var string
  237. */
  238. public const TEMPLATE_NEW_CLIENT_ACCOUNT = '31.NEW-CLIENT-ACCOUNT';
  239. /**
  240. * ["client_email", "client_name", "client_phone", "document_type", "link_edit_account"]
  241. *
  242. * @var string
  243. */
  244. public static $TEMPLATE_CLIENT_DOCUMENT_UPLOAD = '32.CLIENT-DOCUMENT-UPLOAD';
  245. /**
  246. * ["request_type", "request_email", "request_name", "request_phone"]
  247. *
  248. * @var string
  249. */
  250. public static $TEMPLATE_DELETE_REQUEST = '33.DELETE-REQUEST';
  251. /**
  252. * ["request_email", "subject", "content"]
  253. *
  254. * @var string
  255. */
  256. public static $TEMPLATE_EMAIL_NOTIFICATION_GENERAL = '34.EMAIL-NOTIFICATION-GENERAL';
  257. public function __construct($apiKey)
  258. {
  259. $this->mandrill = new \Mandrill($apiKey);
  260. }
  261. public function getClient()
  262. {
  263. return $this->mandrill;
  264. }
  265. public function setOutput(OutputInterface $output)
  266. {
  267. $this->output = $output;
  268. }
  269. /**
  270. * @param $template_name
  271. * @param $template_content
  272. * @param $message
  273. * @param bool $async
  274. * @param null $ip_pool
  275. * @param null $send_at
  276. * @return array|bool
  277. */
  278. public function sendTemplate($template_name, $template_content, $message, $async = false, $ip_pool = null, $send_at = null)
  279. {
  280. // mapping from simple key => value to [ name => $key, content => $value]
  281. if (!empty($message['global_merge_vars']) && is_array($message['global_merge_vars'])) {
  282. foreach ($message['global_merge_vars'] as $key => $value) {
  283. if (!is_array($value)) {
  284. $message['global_merge_vars'][$key] = [
  285. 'name' => $key,
  286. 'content' => $value,
  287. ];
  288. }
  289. }
  290. }
  291. // mapping from simple to into [ $messate['to'] ]
  292. if (!empty($message['to']) && is_array($message['to']) && !empty($message['to']['email'])) {
  293. $message['to'] = [
  294. $message['to'],
  295. ];
  296. } else if (!empty($message['to']) && is_string($message['to']) && preg_match('/(.+)@(.+)\.(.+)/', $message['to'])) {
  297. $message['to'] = [
  298. [
  299. 'email' => $message['to'],
  300. 'name' => $message['to'],
  301. 'type' => 'to',
  302. ],
  303. ];
  304. }
  305. try {
  306. $response = $this->mandrill->messages->sendTemplate($template_name, $template_content, $message, $async, $ip_pool, $send_at);
  307. if (!empty($this->output)) {
  308. $this->output->writeln('[' . date('Y-m-d H:i:s') . '][MandrillManager][sendTemplate] ' . json_encode($response));
  309. }
  310. return $response;
  311. } catch (\Exception $e) {
  312. if (!empty($this->output)) {
  313. $this->output->writeln('[' . date('Y-m-d H:i:s') . '][MandrillManager][sendTemplate] ' . $e->getMessage());
  314. }
  315. return false;
  316. }
  317. }
  318. /**
  319. * Return all senders with to and CC + BCC
  320. *
  321. * @param Booking $booking
  322. * @param int $template
  323. * @return array
  324. */
  325. public function getToListByBooking(Booking $booking, $template = null)
  326. {
  327. $to = [
  328. [
  329. 'email' => $booking->getClientEmail(),
  330. 'name' => $booking->getClientFirstName() . ' ' . $booking->getClientLastName(),
  331. 'type' => 'to',
  332. ],
  333. ];
  334. if ($booking->getClientAlternativeEmail()) {
  335. $to[] = [
  336. 'email' => $booking->getClientAlternativeEmail(),
  337. 'name' => $booking->getClientFirstName() . ' ' . $booking->getClientLastName(),
  338. 'type' => 'bcc',
  339. ];
  340. }
  341. if ($template !== null && $booking->getClientUser() && $booking->getClientUser()->getAccount()) {
  342. $company = $booking->getClientUser()->getAccount()->getCompany();
  343. if ($company &&
  344. (
  345. $company->getConfigBookingEmails() == Company::CONFIG_BOOKING_EMAIL_ALL ||
  346. ($company->getConfigBookingEmails() == Company::CONFIG_BOOKING_EMAIL_CONFIRMATION && $template == MandrillManager::$TEMPLATE_NEW_BOOKING_CLIENT)
  347. )
  348. ) {
  349. $to[] = [
  350. 'email' => $company->getUser()->getEmail(),
  351. 'name' => $booking->getClientFirstName() . ' ' . $booking->getClientLastName(),
  352. 'type' => 'bcc',
  353. ];
  354. }
  355. }
  356. return $to;
  357. }
  358. /**
  359. * @param string $templateName
  360. * @param array $vars
  361. *
  362. * @return string
  363. */
  364. public function getEmailContent($templateName, array $vars = [])
  365. {
  366. $info = $this
  367. ->mandrill
  368. ->templates
  369. ->info($templateName)
  370. ;
  371. $templateVars = [];
  372. foreach ($vars as $name => $value) {
  373. $templateVars[] = [
  374. 'name' => $name,
  375. 'content' => $value,
  376. ];
  377. }
  378. $result = $this
  379. ->mandrill
  380. ->templates
  381. ->render($templateName, [[
  382. 'name' => 'content',
  383. 'content' => $info['code'],
  384. ]], $templateVars)
  385. ;
  386. return $result['html'];
  387. }
  388. /**
  389. * @return array
  390. */
  391. public static function getTemplates()
  392. {
  393. return [
  394. self::$TEMPLATE_NEW_BOOKING_CLIENT,
  395. self::$TEMPLATE_NEW_BOOKING_OFFICE,
  396. self::$TEMPLATE_BOOKING_COMPLETED,
  397. self::$TEMPLATE_BOOKING_CANCELLED,
  398. self::$TEMPLATE_BOOKING_CANCELLED_AUTO,
  399. self::$TEMPLATE_DRIVER_ALLOCATED,
  400. self::$TEMPLATE_DRIVER_REALLOCATED,
  401. self::$TEMPLATE_DRIVER_WAITING,
  402. self::$TEMPLATE_DRIVER_ARRIVED,
  403. self::$TEMPLATE_PAYMENT_INITIAL,
  404. self::$TEMPLATE_PAYMENT_REMINDER,
  405. self::$TEMPLATE_PAYMENT_WARNING,
  406. self::$TEMPLATE_PENDING_CANCELLED,
  407. self::$TEMPLATE_PENDING_CANCELLED_EXCEPTION,
  408. self::$TEMPLATE_BOOKING_UPDATE,
  409. self::$TEMPLATE_BOOKING_RECONFIRM,
  410. self::$TEMPLATE_BOOKING_APPROACHING,
  411. self::$TEMPLATE_DRIVER_PASSWORD_RESET,
  412. self::$TEMPLATE_DRIVER_REGISTERED,
  413. self::$TEMPLATE_PENDING_BOOKING,
  414. self::$TEMPLATE_DRIVER_STATUS_CHECK,
  415. self::$TEMPLATE_DRIVER_DOCUMENT_UPLOAD,
  416. self::$TEMPLATE_RESEND_JOURNEY_INVOICE,
  417. self::$TEMPLATE_CLIENT_PASSWORD_RESET,
  418. self::$TEMPLATE_OPERATOR_BOOKING_CHECK,
  419. self::$DRIVER_DEALLOCATE,
  420. self::$TEMPLATE_DRIVER_INVOICE,
  421. self::$TEMPLATE_PAYMENT_CONFIRMED_CARD,
  422. self::$TEMPLATE_SEND_BOOKING_REQUEST,
  423. self::$TEMPLATE_NEW_BOOKING_REQUEST,
  424. self::$TEMPLATE_SHUTTLE_ENQUIRY,
  425. self::$TEMPLATE_DRIVER_AUTO_CONFIRM,
  426. self::$CLIENT_SUPPORT_REQUEST,
  427. self::$TICKETS,
  428. self::$TEMPLATE_NEW_DRIVER_REGISTERED,
  429. self::$TEMPLATE_CHECK_PAYMENT_OPERATOR,
  430. self::TEMPLATE_NEW_CLIENT_ACCOUNT,
  431. self::$TEMPLATE_DELETE_REQUEST,
  432. self::$TEMPLATE_EMAIL_NOTIFICATION_GENERAL,
  433. ];
  434. }
  435. }