src/Controller/App/DefaultController.php line 18

Open in your IDE?
  1. <?php
  2. namespace App\Controller\App;
  3. use App\Entity\Reserve;
  4. use App\Form\App\ReserveType;
  5. use App\Repository\ReserveRepository;
  6. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\Mailer\MailerInterface;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. class DefaultController extends AbstractController
  13. {
  14.     #[Route('/'name'top'methods: ['GET''POST'])]
  15.     public function index(Request $requestReserveRepository $reserveRepositoryMailerInterface $mailer): Response
  16.     {
  17.         $now = new \DateTimeImmutable();
  18.         $reserve = new Reserve();
  19.         $reserve
  20.             ->setCarModel('blank')
  21.             ->setStartDate($now)
  22.             ->setStartTime($now)
  23.             ->setEndDate($now)
  24.             ->setEndTime($now)
  25.         ;
  26.         $form $this->createForm(ReserveType::class, $reserve);
  27.         $form->handleRequest($request);
  28.         if ($form->isSubmitted() && $form->isValid()) {
  29.             $reserveRepository->save($reservetrue);
  30.             $email = (new TemplatedEmail())
  31.                 ->from('no-reply@camren.jp')
  32.                 ->to($reserve->getMail())
  33.                 ->subject('【キャンピングカーレンタル ビデオ1】お問い合わせいただきありがとうございます')
  34.                 ->textTemplate('app/default/mail.txt.twig')
  35.                 ->context([
  36.                     'now' => new \DateTime(),
  37.                     'reserve' => $reserve,
  38.                 ])
  39.             ;
  40.             $mailer->send($email);
  41.             $email = (new TemplatedEmail())
  42.                 ->from('no-reply@camren.jp')
  43.                 ->to('info@camren.jp')
  44.                 ->subject('【キャンピングカーレンタル ビデオ1】お問い合わせがありました')
  45.                 ->textTemplate('app/default/admin_mail.txt.twig')
  46.                 ->context([
  47.                     'now' => new \DateTime(),
  48.                     'reserve' => $reserve,
  49.                 ])
  50.             ;
  51.             $mailer->send($email);
  52.             $this->addFlash(
  53.                 'success',
  54.                 'お問い合わせ内容を送信しました。'
  55.             );
  56.             return $this->redirectToRoute('top', [], Response::HTTP_SEE_OTHER);
  57.         }
  58.         $cars = [];
  59.         if (($fp fopen($this->getParameter('kernel.project_dir') . '/public/data/cars.csv''r')) !== FALSE) {
  60.             $index 0;
  61.             while (($line fgetcsv($fp))) {
  62.                 $index++;
  63.                 if ($index == 1) continue;
  64.                 $car = [
  65.                     'key'                => $line[0],   #'minicab',
  66.                     'carName'            => $line[1],   #'三菱ミニキャブバン',
  67.                     'subCarName'         => $line[2],   #'ブラボーキャンパー4WD',
  68.                     'passenger'          => $line[3],   #'乗車定員4人',
  69.                     'passengerDetail'    => $line[4],   #'就寝 大人2人 子供1人',
  70.                     'shift'              => $line[5],   #'AT',
  71.                     'fuel'               => $line[6],   #'レギュラーガソリン',
  72.                     'drive'              => $line[7],   #'4WD(2WD',
  73.                     'displacement'       => $line[8],   #'660cc',
  74.                     'size'               => $line[9],   #'長さ3,390mm 幅1,470mm 高さ1,990mm',
  75.                     'bed'                => $line[10],   #'縦 1810mm x 横 1000mm',
  76.                     'description'        => $line[11],   #'三菱メーカー純正ミニキャブキャンパー!乗車4名可能で、就寝人数は大人2名子供1名可能です。ポップアップルーフを上げると車内は広々とした空間になります。',
  77.                     'equipment1'         => $line[12],   #'・カーナビ・バックカメラ・ETC・ポップアップ・32インチモニター',
  78.                     'equipment2'         => $line[13],   #'・DVDプレイヤー・外部電源・インバーター・ポータブル電源・サブバッテリー・シンク',
  79.                     'description2'       => $line[14],   #'全ての車両にナビ・ETC・バックカメラ搭載!ターボ車ですので高速道路での走行性能に問題なし!',
  80.                     'weekdaysBy12Hour'   => $line[15],   #'6,720', #平日12時間
  81.                     'weekdaysBy1Hour'    => $line[16],   #'560', #平日1時間
  82.                     'holidayBy12Hour'    => $line[17],   #'8,400', #祝日12時間
  83.                     'holidayBy1Hour'     => $line[18],   #'700', #祝日1時間
  84.                     'highSeasonBy12Hour' => $line[19],   #'8,400', #ハイシーズン12時間
  85.                     'highSeasonBy1Hour'  => $line[20],   #'700', #ハイシーズン1時間
  86.                     'images'             => $this->createImagePath($line[21]),   #'img01.jpg'
  87.                 ];
  88.                 $cars[] = $car;
  89.             }
  90.         }
  91.         return $this->renderForm('app/default/index.html.twig', [
  92.             'cars' => $cars,
  93.             'reserve' => $reserve,
  94.             'form' => $form,
  95.         ]);
  96.     }
  97.     /**
  98.      * @param $count
  99.      * @return array
  100.      */
  101.     private function createImagePath($count)
  102.     {
  103.         $images = [];
  104.         for($i 1$i <= $count$i++) {
  105.             $images[] = sprintf("img%02d.jpg"$i);
  106.         }
  107.         return $images;
  108.     }
  109. }