src/Event/EmailSendingSubscriber.php line 88

Open in your IDE?
  1. <?php
  2. namespace App\Event;
  3. use Swift_Attachment;
  4. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  5. use Twig\Environment;
  6. class EmailSendingSubscriber implements EventSubscriberInterface
  7. {
  8.     private $mailer;
  9.     private $twig;
  10.     /**
  11.      * @param \Swift_Mailer $mailer
  12.      */
  13.     public function __construct(\Swift_Mailer $mailerEnvironment $environment)
  14.     {
  15.         $this->mailer $mailer;
  16.         $this->twig $environment;
  17.     }
  18.     public static function getSubscribedEvents()
  19.     {
  20.         return [
  21.             EmailEvent::REMOVE_MISSION => 'onDeleteMission',
  22.             EmailEvent::USER_ACTION => 'onUserAction',
  23.             EmailEvent::CHANGE_DATE => 'onChangeDate',
  24.             EmailEvent::REST_PASSWORD => 'onChangePassword',
  25.             EmailEvent::INTERRUPT_MISSION => 'onInterruptMission',
  26.             EmailEvent::AFFECT_CANDIDAT => 'onAffectCandidat',
  27.             EmailEvent::ACCEPT_INTERVIEW => 'onAcceptInterview',
  28.             EmailEvent::REJECT_INTERVIEW => 'onRejectInterview',
  29.             EmailEvent::REJECT_INTERVIEW_RECRUITER => 'onRejectInterviewRecrteur',
  30.             EmailEvent::ADD_MISSION => 'onAddMission',
  31.             EmailEvent::INTERRUPT_MISSION_RECRUITER => 'onInterruptMissionRecruiter',
  32.             EmailEvent::ADMIN_CONTRAT => 'onSendContrat',
  33.             EmailEvent::PASSWORD_CHANGED => 'onPasswordChanged',
  34.             EmailEvent::ADD_INTERVIEW => 'onAddInterview',
  35.             EmailEvent::MISSION_REJECT_CONDIDAT => 'onRejectMissionCondidat',
  36.             EmailEvent::MISSION_HIRE_CONDIDAT => 'onHireMissionCondidat',
  37.             EmailEvent::CANDIDAT_INSCRIPTION => 'onCreateCandidat',
  38.             EmailEvent::MISSION_AFFECTED => 'onAffectMission',
  39.             EmailEvent::RECRUITER_CONTRAT => 'onSendToRecruiter',
  40.             EmailEvent::RECRUITEMENT_FOR_MISSION => 'onRecruteForMission',
  41.             EmailEvent::PREFERRED_MISSION => 'onPreferedMission',
  42.         ];
  43.     }
  44.     public function onPreferedMission(EmailEvent $event)
  45.     {
  46.         $param $event->getParam();
  47.         $receivers = [
  48.             [
  49.                 'email' => 'talent@agence-inspire.com',
  50.                 'email_template' => 'email_templates/mission_prefere_admin.html.twig'
  51.             ],
  52.             [
  53.                 'email' => $event->getUser()->getEmail(),
  54.                 'email_template' => 'email_templates/mission_prefere_condidat.html.twig'
  55.             ],
  56.         ];
  57.         foreach ($receivers as $receiver) {
  58.             $mail = (new \Swift_Message())
  59.                 ->setFrom(['no-reply@agence-inspire.com' => 'Inspire Talent'])
  60.                 ->setTo($receiver['email'])
  61.                 ->setSubject("mission préférée")
  62.                 ->setContentType('text/html')
  63.                 ->setBody(
  64.                     $this->twig->render(
  65.                         $receiver['email_template'],
  66.                         [
  67.                             'condidat' => $event->getUser()->getProfil()->getLastname() . ' ' $event->getUser()->getProfil()->getName(),
  68.                             'type_mission' => $param['type_mission'],
  69.                             'place' => $param['place'],
  70.                             'skills' => 'test',
  71.                             'skills' => implode(","$param['skills']),
  72.                         ]
  73.                     ),
  74.                     'text/html'
  75.                 );
  76.             $this->mailer->send($mail);
  77.         }
  78.     }
  79.     public function onSendToRecruiter(EmailEvent $event)
  80.     {
  81.         $files $event->getParam();
  82.         $user $event->getUser();
  83.         $email_template 'email_templates/recuiter_contrat.html.twig';
  84.         $mail = (new \Swift_Message())
  85.             ->setFrom(['no-reply@agence-inspire.com' => 'Inspire Talent'])
  86.             ->setTo($user->getEmail())
  87.             ->setSubject("Contrat")
  88.             ->setContentType('text/html')
  89.             ->setBody(
  90.                 $this->twig->render(
  91.                     $email_template,
  92.                     $params = [
  93.                         'full_name' => $files['company_name'],
  94.                     ]
  95.                 ),
  96.                 'text/html'
  97.             );
  98.         foreach ($files as $key => $file) {
  99.             if ($key != "company_name") {
  100.                 $mail->attach(
  101.                     Swift_Attachment::fromPath($files[$key]->getPathName())->setFilename($files[$key]->getClientOriginalName())
  102.                 );
  103.             }
  104.         }
  105.         $this->mailer->send($mail);
  106.     }
  107.     public function onDeleteMission(EmailEvent $event)
  108.     {
  109.         $user $event->getUser();
  110.         $param $event->getParam();
  111.         $mail = (new \Swift_Message())
  112.             ->setFrom(['no-reply@agence-inspire.com' => 'Inspire Talent'])
  113.             ->setTo('talent@agence-inspire.com')
  114.             ->setSubject('Suppression d’une mission')
  115.             ->setContentType('text/html')
  116.             ->setBody(
  117.                 $this->twig->render(
  118.                     'email_templates/email_delete_mission.html.twig',
  119.                     [
  120.                         'title' => $param->getTitle(),
  121.                         'recruiter' => $param->getEntreprise()->getCompanyName()
  122.                     ]
  123.                 ),
  124.                 'text/html'
  125.             );
  126.         $this->mailer->send($mail);
  127.     }
  128.     public function onUserAction(EmailEvent $event)
  129.     {
  130.         $user $event->getUser();
  131.         $param $event->getParam();
  132.         if ($param['action'] == "accept") {
  133.             $template 'email_templates/user_action_accept.html.twig';
  134.             $subject "Confirmation de création de compte";
  135.         } else {
  136.             $template 'email_templates/user_action_refuse.html.twig';
  137.             $subject "Refus d’inscription";
  138.         }
  139.         if (in_array('ROLE_RECR'$user->getRoles())) {
  140.             $userName $user->getEmail();
  141.         } elseif (in_array('ROLE_USER'$user->getRoles())) {
  142.             $userName $user->getEmail();
  143.         }
  144.         $mail = (new \Swift_Message())
  145.             ->setFrom(['no-reply@agence-inspire.com' => 'Inspire Talent'])
  146.             ->setTo($user->getEmail())
  147.             ->setSubject($subject)
  148.             ->setContentType('text/html')
  149.             ->setBody(
  150.                 $this->twig->render(
  151.                     $template,
  152.                     [
  153.                         'message' => $param['message'],
  154.                         'username' => $userName,
  155.                         'password' => $user->getPassword()
  156.                     ]
  157.                 ),
  158.                 'text/html'
  159.             );
  160.         $this->mailer->send($mail);
  161.     }
  162.     public function onAffectMission(EmailEvent $event)
  163.     {
  164.         $params $event->getParam();
  165.         $date_end $params['mission_end'];
  166.         $date_start $params['mission_start'];
  167.         $user $event->getUser();
  168.         $email_template count($params['nbr_terminatedMissions']) > 'email_templates/first_mission.html.twig' 'email_templates/relance_mission.html.twig';
  169.         $mail = (new \Swift_Message())
  170.             ->setFrom(['no-reply@agence-inspire.com' => 'Inspire Talent'])
  171.             ->setTo($user->getEmail())
  172.             ->setSubject("Affectation Mission")
  173.             ->setContentType('text/html')
  174.             ->setBody(
  175.                 $this->twig->render(
  176.                     $email_template,
  177.                     $params = [
  178.                         'user_name' => $user->getUsername(),
  179.                         'mission_title' => $params['mission_title'],
  180.                         'mission_start' => $date_start,
  181.                         'mission_end' => $date_end,
  182.                         'place' => $params['place'],
  183.                         'mission_description' => $params['mission_description'],
  184.                     ]
  185.                 ),
  186.                 'text/html'
  187.             );
  188.         $this->mailer->send($mail);
  189.     }
  190.     public function onChangeDate(EmailEvent $event)
  191.     {
  192.         $param $event->getParam();
  193.         $receivers = [
  194.             [
  195.                 'email' => 'talent@agence-inspire.com',
  196.                 'email_template' => 'email_templates/admin_user_change_date.html.twig'
  197.             ],
  198.             [
  199.                 'email' => $param['recuiter'],
  200.                 'email_template' => 'email_templates/user_change_date.html.twig'
  201.             ],
  202.         ];
  203.         foreach ($receivers as $receiver) {
  204.             $mail = (new \Swift_Message())
  205.                 ->setFrom(['no-reply@agence-inspire.com' => 'Inspire Talent'])
  206.                 ->setTo($receiver['email'])
  207.                 ->setSubject("Demande du report de rendez-vous")
  208.                 ->setContentType('text/html')
  209.                 ->setBody(
  210.                     $this->twig->render(
  211.                         $receiver['email_template'],
  212.                         [
  213.                             'raison' => $param['raison'],
  214.                             'name' => $param['mission']->getEntreprise()->getCompanyName(),
  215.                             'interview_first_date' => $param['interview']->getFirstDate()->format('Y-m-d H:i:s'),
  216.                             'title' => $param['mission']->getTitle(),
  217.                             'condidat' => $param['condidat']->getProfil()->getLastname() . ' ' $param['condidat']->getProfil()->getName()
  218.                         ]
  219.                     ),
  220.                     'text/html'
  221.                 );
  222.             $this->mailer->send($mail);
  223.         }
  224.     }
  225.     public function onChangePassword(EmailEvent $event)
  226.     {
  227.         $user $event->getUser();
  228.         $param $event->getParam();
  229.         $mail = (new \Swift_Message())
  230.             ->setFrom(['no-reply@agence-inspire.com' => 'Inspire Talent'])
  231.             ->setTo($user->getEmail())
  232.             ->setSubject('changer mot de passe !')
  233.             ->setContentType('text/html')
  234.             ->setBody(
  235.                 $this->twig->render(
  236.                     'email_templates/reset_password.html.twig',
  237.                     ['param' => $param]
  238.                 ),
  239.                 'text/html'
  240.             );
  241.         $this->mailer->send($mail);
  242.     }
  243.     public function onPasswordChanged(EmailEvent $event)
  244.     {
  245.         $user $event->getUser();
  246.         $param $event->getParam();
  247.         $mail = (new \Swift_Message())
  248.             ->setFrom(['no-reply@agence-inspire.com' => 'Inspire Talent'])
  249.             ->setTo($user->getEmail())
  250.             ->setSubject('Changement du mot de passe')
  251.             ->setContentType('text/html')
  252.             ->setBody(
  253.                 $this->twig->render(
  254.                     'email_templates/password_changed.html.twig',
  255.                     [
  256.                         'login_url' => $param
  257.                     ]
  258.                 ),
  259.                 'text/html'
  260.             );
  261.         $this->mailer->send($mail);
  262.     }
  263.     public function onInterruptMission(EmailEvent $event)
  264.     {
  265.         $user $event->getUser();
  266.         $param $event->getParam();
  267.         $users = [$user->getEmail()];
  268.         foreach ($param[1] as $profil) {
  269.             array_push($users$profil['email']);
  270.         }
  271.         $mail = (new \Swift_Message())
  272.             ->setFrom(['no-reply@agence-inspire.com' => 'Inspire Talent'])
  273.             ->setTo($users)
  274.             ->setSubject('mission a été interrompue')
  275.             ->setContentType('text/html')
  276.             ->setBody(
  277.                 $this->twig->render(
  278.                     'email_templates/admin_interruped_mission.html.twig',
  279.                     [
  280.                         'param' => $param[0],
  281.                         'mission_title' => $param[0]->getTitle(),
  282.                         'name' => $param[0]->getEntreprise()->getCompanyName()
  283.                     ]
  284.                 ),
  285.                 'text/html'
  286.             );
  287.         $this->mailer->send($mail);
  288.     }
  289.     public function onInterruptMissionRecruiter(EmailEvent $event)
  290.     {
  291.         $user $event->getUser();
  292.         $param $event->getParam();
  293.         $users = ['talent@agence-inspire.com''talent@agence-inspire.com'];
  294.         foreach ($param[1] as $profil) {
  295.             array_push($users$profil['email']);
  296.         }
  297.         $mail = (new \Swift_Message())
  298.             ->setFrom(['no-reply@agence-inspire.com' => 'Inspire Talent'])
  299.             ->setTo($users)
  300.             ->setSubject('Interruption d’une mission')
  301.             ->setContentType('text/html')
  302.             ->setBody(
  303.                 $this->twig->render(
  304.                     'email_templates/interruped_mission.html.twig',
  305.                     [
  306.                         'mission_title' => $param[0]->getTitle(),
  307.                         'recuiter_name' => $param[0]->getEntreprise()->getCompanyName()
  308.                     ]
  309.                 ),
  310.                 'text/html'
  311.             );
  312.         $this->mailer->send($mail);
  313.     }
  314.     public function onAffectCandidat(EmailEvent $event)
  315.     {
  316.         $user $event->getUser();
  317.         $param $event->getParam();
  318.         $receivers = [
  319.             [
  320.                 'email' => $param['mission']->getEntreprise()->getEmail(),
  321.                 'email_template' => 'email_templates/admin_affect_candidat.html.twig'
  322.             ],
  323.             [
  324.                 'email' => $param['profil']->getEmail(),
  325.                 'email_template' => 'email_templates/condidat_affect_candidat.html.twig'
  326.             ],
  327.         ];
  328.         foreach ($receivers as $key => $receiver) {
  329.             $mail = (new \Swift_Message())
  330.                 ->setFrom(['no-reply@agence-inspire.com' => 'Inspire Talent'])
  331.                 ->setTo($receiver['email'])
  332.                 ->setSubject('Assignation d’un nouveau candidat')
  333.                 ->setContentType('text/html')
  334.                 ->setBody(
  335.                     $this->twig->render(
  336.                         $receiver['email_template'],
  337.                         [
  338.                             'param' => $param,
  339.                             'condidat' => $param['profil']->getEmail(),
  340.                             'name' => $param['mission']->getTitle()
  341.                         ]
  342.                     ),
  343.                     'text/html'
  344.                 );
  345.             $this->mailer->send($mail);
  346.         }
  347.     }
  348.     public function onAcceptInterview(EmailEvent $event)
  349.     {
  350.         $user $event->getUser();
  351.         $param $event->getParam();
  352.         if (in_array('ROLE_RECR'$user->getRoles())) {
  353.             $condidatFullName $param->getEntreprise()->getFullName();
  354.         } elseif (in_array('ROLE_USER'$user->getRoles())) {
  355.             $condidatFullName $user->getProfil()->getLastname() . ' ' $user->getProfil()->getName();
  356.         }
  357.         //admin + recruter
  358.         $receivers = ['talent@agence-inspire.com'$param->getEntreprise()->getEmail()];
  359.         foreach ($receivers as $receiver) {
  360.             $mail = (new \Swift_Message())
  361.                 ->setFrom(['no-reply@agence-inspire.com' => 'Inspire Talent'])
  362.                 //->setTo($user->getEmail())
  363.                 ->setTo($receiver)
  364.                 ->setSubject('Date d’entretien acceptée')
  365.                 ->setContentType('text/html')
  366.                 ->setBody(
  367.                     $this->twig->render(
  368.                         'email_templates/accept_interview.html.twig',
  369.                         [
  370.                             'param' => $param,
  371.                             'condidat_full_name' => $condidatFullName,
  372.                             'mission_date' => $param->getDateStart()->format('Y-m-d H:i:s'),
  373.                             'mission_title' => $param->getTitle(),
  374.                             'name' => $param->getEntreprise()->getCompanyName()
  375.                         ]
  376.                     ),
  377.                     'text/html'
  378.                 );
  379.             $this->mailer->send($mail);
  380.         }
  381.     }
  382.     public function onAddInterview(EmailEvent $event)
  383.     {
  384.         $user $event->getUser();
  385.         $param $event->getParam();
  386.         $receivers = [
  387.             [
  388.                 'email' => 'talent@agence-inspire.com',
  389.                 'email_template' => 'email_templates/add_interview.html.twig'
  390.             ],
  391.             [
  392.                 'email' => $param['condidat']->getEmail(),
  393.                 'email_template' => 'email_templates/condidat_add_interview.html.twig'
  394.             ]
  395.         ];
  396.         foreach ($receivers as $receiver) {
  397.             $mail = (new \Swift_Message())
  398.                 ->setFrom(['no-reply@agence-inspire.com' => 'Inspire Talent'])
  399.                 ->setTo($receiver['email'])
  400.                 ->setSubject('Proposition d’un nouveau rendez-vous')
  401.                 ->setContentType('text/html')
  402.                 ->setBody(
  403.                     $this->twig->render(
  404.                         $receiver['email_template'],
  405.                         [
  406.                             'first_date' => $param['interview']->getFirstDate()->format('Y-m-d H:i:s'),
  407.                             'second_date' => $param['interview']->getSecondDate()->format('Y-m-d H:i:s'),
  408.                             'user_interviews_url' => $param['interviewUrl'] . $param['condidat']->getId(),
  409.                             'condidat_full_name' => $param['condidat']->getProfil()->getLastname() . ' ' $param['condidat']->getProfil()->getName(),
  410.                             'mission_title' => $param['mission']->getTitle(),
  411.                         ]
  412.                     ),
  413.                     'text/html'
  414.                 );
  415.             $this->mailer->send($mail);
  416.         }
  417.     }
  418.     public function onRejectMissionCondidat(EmailEvent $event)
  419.     {
  420.         $user $event->getUser();
  421.         $param $event->getParam();
  422.         $mail = (new \Swift_Message())
  423.             ->setFrom(['no-reply@agence-inspire.com' => 'Inspire Talent'])
  424.             ->setTo([$user->getEmail()])
  425.             ->setSubject('Rejet de recrutement')
  426.             ->setContentType('text/html')
  427.             ->setBody(
  428.                 $this->twig->render(
  429.                     'email_templates/mission_reject_condidat.html.twig',
  430.                     [
  431.                         'recruiter' => $param['mission']->getEntreprise()->getCompanyName(),
  432.                         'title' => $param['mission']->getTitle(),
  433.                     ]
  434.                 ),
  435.                 'text/html'
  436.             );
  437.         $this->mailer->send($mail);
  438.     }
  439.     public function onRecruteForMission(EmailEvent $event)
  440.     {
  441.         $user $event->getUser();
  442.         $param $event->getParam();
  443.         if ($param['status'] == "recruited") {
  444.             $receivers = [
  445.                 [
  446.                     'email' => 'talent@agence-inspire.com',
  447.                     'email_template' => 'email_templates/recrute_for_mission_admin.html.twig'
  448.                 ],
  449.                 [
  450.                     'email' => $user->getEmail(),
  451.                     'email_template' => 'email_templates/recrute_for_mission_condidat.html.twig'
  452.                 ],
  453.                 [
  454.                     'email' => $param['mission']->getEntreprise()->getEmail(),
  455.                     'email_template' => 'email_templates/recrute_for_mission_recruiter.html.twig'
  456.                 ],
  457.             ];
  458.             $subject "Recrutement à une nouvelle mission";
  459.         } elseif ($param['status'] == "rejected") {
  460.             $receivers = [
  461.                 [
  462.                     'email' => 'talent@agence-inspire.com',
  463.                     'email_template' => 'email_templates/recrute_for_mission_admin_rejected.html.twig'
  464.                 ],
  465.                 [
  466.                     'email' => $user->getEmail(),
  467.                     'email_template' => 'email_templates/recrute_for_mission_condidat_rejected.html.twig'
  468.                 ],
  469.                 [
  470.                     'email' => $param['mission']->getEntreprise()->getEmail(),
  471.                     'email_template' => 'email_templates/recrute_for_mission_recruiter_rejected.html.twig'
  472.                 ],
  473.             ];
  474.             $subject "Rejet de recrutement";
  475.         }
  476.         foreach ($receivers as $receiver) {
  477.             $mail = (new \Swift_Message())
  478.                 ->setFrom(['no-reply@agence-inspire.com' => 'Inspire Talent'])
  479.                 ->setTo($receiver['email'])
  480.                 ->setSubject($subject)
  481.                 ->setContentType('text/html')
  482.                 ->setBody(
  483.                     $this->twig->render(
  484.                         $receiver['email_template'],
  485.                         [
  486.                             'recruiter' => $param['mission']->getEntreprise()->getCompanyName(),
  487.                             'title' => $param['mission']->getTitle(),
  488.                             'condidat' => $user->getProfil()->getName() . ' ' $user->getProfil()->getLastname()
  489.                         ]
  490.                     ),
  491.                     'text/html'
  492.                 );
  493.             $this->mailer->send($mail);
  494.         }
  495.     }
  496.     public function onHireMissionCondidat(EmailEvent $event)
  497.     {
  498.         $user $event->getUser();
  499.         $param $event->getParam();
  500.         $receivers = [
  501.             [
  502.                 'email' => $user->getEmail(),
  503.                 'email_template' => 'email_templates/mission_hire_condidat.html.twig'
  504.             ],
  505.             [
  506.                 'email' => $param['mission']->getEntreprise()->getEmail(),
  507.                 'email_template' => 'email_templates/recruiter_mission_hire_condidat.html.twig'
  508.             ],
  509.         ];
  510.         foreach ($receivers as $receiver) {
  511.             $mail = (new \Swift_Message())
  512.                 ->setFrom(['no-reply@agence-inspire.com' => 'Inspire Talent'])
  513.                 ->setTo($receiver['email'])
  514.                 ->setSubject('Recrutement à une nouvelle mission')
  515.                 ->setContentType('text/html')
  516.                 ->setBody(
  517.                     $this->twig->render(
  518.                         $receiver['email_template'],
  519.                         [
  520.                             'recruiter' => $param['mission']->getEntreprise()->getCompanyName(),
  521.                             'title' => $param['mission']->getTitle(),
  522.                             'condidat' => $user->getProfil()->getName() . ' ' $user->getProfil()->getLastname()
  523.                         ]
  524.                     ),
  525.                     'text/html'
  526.                 );
  527.             $this->mailer->send($mail);
  528.         }
  529.     }
  530.     public function onRejectInterview(EmailEvent $event)
  531.     {
  532.         $user $event->getUser();
  533.         $param $event->getParam();
  534.         $receivers = [
  535.             [
  536.                 'email' => 'talent@agence-inspire.com',
  537.                 'email_template' => 'email_templates/admin_user_reject_interview.html.twig'
  538.             ],
  539.             [
  540.                 'email' => $user->getEmail(),
  541.                 'email_template' => 'email_templates/user_reject_interview.html.twig'
  542.             ],
  543.         ];
  544.         foreach ($receivers as $receiver) {
  545.             $mail = (new \Swift_Message())
  546.                 ->setFrom(['no-reply@agence-inspire.com' => 'Inspire Talent'])
  547.                 ->setTo($receiver['email'])
  548.                 ->setSubject('Rejet d’un entretien')
  549.                 ->setContentType('text/html')
  550.                 ->setBody(
  551.                     $this->twig->render(
  552.                         $receiver['email_template'],
  553.                         [
  554.                             'raison' => $param['raison'],
  555.                             'name' => $param['mission']->getEntreprise()->getCompanyName(),
  556.                             'title' => $param['mission']->getTitle(),
  557.                             'condidat' => $param['condidat'],
  558.                         ]
  559.                     ),
  560.                     'text/html'
  561.                 );
  562.             $this->mailer->send($mail);
  563.         }
  564.     }
  565.     public function onRejectInterviewRecrteur(EmailEvent $event)
  566.     {
  567.         $user $event->getUser();
  568.         $param $event->getParam();
  569.         $mail = (new \Swift_Message())
  570.             ->setFrom(['no-reply@agence-inspire.com' => 'Inspire Talent'])
  571.             ->setTo(['talent@agence-inspire.com'$param['profil']['email']])
  572.             ->setSubject('Rejet d’un entretien')
  573.             ->setContentType('text/html')
  574.             ->setBody(
  575.                 $this->twig->render(
  576.                     'email_templates/recruiter_reject_Interview.html.twig',
  577.                     [
  578.                         'raison' => $param['raison'],
  579.                         'title' => $param['mission']->getTitle(),
  580.                         'recruiter' => $param['mission']->getEntreprise()->getCompanyName()
  581.                     ]
  582.                 ),
  583.                 'text/html'
  584.             );
  585.         $this->mailer->send($mail);
  586.     }
  587.     public function onAddMission(EmailEvent $event)
  588.     {
  589.         $user $event->getUser();
  590.         $param $event->getParam();
  591.         $receivers = [
  592.             [
  593.                 'email' => 'talent@agence-inspire.com',
  594.                 'email_template' => 'email_templates/admin_add_mission.html.twig'
  595.             ],
  596.             [
  597.                 'email' => $user->getEmail(),
  598.                 'email_template' => 'email_templates/add_mission.html.twig'
  599.             ],
  600.         ];
  601.         foreach ($receivers as $key => $receiver) {
  602.             $mail = (new \Swift_Message())
  603.                 ->setFrom(['no-reply@agence-inspire.com' => 'Inspire Talent'])
  604.                 ->setTo($receiver['email'])
  605.                 ->setSubject('Ajout d’une mission de la part du recruteur')
  606.                 ->setContentType('text/html')
  607.                 ->setBody(
  608.                     $this->twig->render(
  609.                         $receiver['email_template'],
  610.                         [
  611.                             'recruiter' => $user->getEntreprise()->getCompanyName(),
  612.                             'title' => $param->getTitle()
  613.                         ]
  614.                     ),
  615.                     'text/html'
  616.                 );
  617.             $this->mailer->send($mail);
  618.         }
  619.     }
  620.     public function onCreateCandidat(EmailEvent $event)
  621.     {
  622.         $user $event->getUser();
  623.         $param $event->getParam();
  624.         $receivers = [
  625.             [
  626.                 'email' => 'talent@agence-inspire.com',
  627.                 'email_template' => 'email_templates/admin_create_candidat.html.twig'
  628.             ],
  629.             [
  630.                 'email' => $user->getEmail(),
  631.                 'email_template' => 'email_templates/create_candidat.html.twig'
  632.             ],
  633.         ];
  634.         foreach ($receivers as $key => $receiver) {
  635.             $mail = (new \Swift_Message())
  636.                 ->setFrom(['no-reply@agence-inspire.com' => 'Inspire Talent'])
  637.                 ->setTo($receiver['email'])
  638.                 ->setSubject('Nouvelle demande d’inscription')
  639.                 ->setContentType('text/html')
  640.                 ->setBody(
  641.                     $this->twig->render(
  642.                         $receiver['email_template'],
  643.                         [
  644.                             'email' => $user->getEmail(),
  645.                             'type' => $param['type'],
  646.                             'condidat_name' => $user->getProfil() ? $user->getProfil()->getName() . ' ' $user->getProfil()->getLastname() : $user->getEntreprise()->getFullName()
  647.                         ]
  648.                     ),
  649.                     'text/html'
  650.                 );
  651.             $this->mailer->send($mail);
  652.         }
  653.     }
  654.     public function onSendContrat(EmailEvent $event)
  655.     {
  656.         $files $event->getParam();
  657.         $user $event->getUser();
  658.         $email_template 'email_templates/contrat.html.twig';
  659.         $mail = (new \Swift_Message())
  660.             ->setFrom(['no-reply@agence-inspire.com' => 'Inspire Talent'])
  661.             ->setTo($user->getEmail())
  662.             ->setSubject("Contrat")
  663.             ->setContentType('text/html')
  664.             ->setBody(
  665.                 $this->twig->render(
  666.                     $email_template,
  667.                     $params = [
  668.                         'full_name' => $user->getProfil()->getUsername(),
  669.                     ]
  670.                 ),
  671.                 'text/html'
  672.             );
  673.         foreach ($files as $key => $file) {
  674.             $mail->attach(
  675.                 Swift_Attachment::fromPath($files[$key]->getPathName())->setFilename($files[$key]->getClientOriginalName())
  676.             );
  677.         }
  678.         $this->mailer->send($mail);
  679.     }
  680. }