HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/SBogers10/ijzerenman.komma.pro/app/Custom/Forms/FormController.php
<?php


namespace Komma\Forms;


use Komma\Mailer\FormMailer;
use Komma\Pages\DynamicPage;
use Komma\Pages\PageController;
use Komma\Pages\PageRepository;

class FormController extends PageController
{
    /**
     * @var FormService
     */
    protected $formService;
    /**
     * @var FormMailer
     */
    protected $formMailer;

    /**
     * @var string
     */
    protected $formName = 'contact';

    /**
     * @param FormService $formService
     * @param FormMailer $formMailer
     * @param PageRepository $pageRepository
     * @param DynamicPage $dynamicPage
     */
    public function __construct(
        FormService $formService,
        FormMailer $formMailer,
        PageRepository $pageRepository,
        DynamicPage $dynamicPage
    )
    {
        parent::__construct($dynamicPage, $pageRepository);

        $this->formService = $formService;
        $this->formMailer = $formMailer;
    }

    /**
     * Show form
     */
    public function show()
    {
        // Make sure user cannot access success status without submitting form
        if(\Request::has('status') && ! \Session::has('success'))
            return \Redirect::to(\Route::getCurrentRoute()->uri());

        \Session::forget('success');

        // Get current page entity
        $this->formService->setFormName($this->formName);

        // Get global
        $entity = \Current::pageEntity();
        list($parent) = $this->pageRepository->getParents(
            $entity->page['lft'],
            $entity->page['rgt']
        );

        // Create dynamic page
        $formPage = $this->dynamicPage->createFormFromEntity($entity);
        $blocks = $this->dynamicPage->createFromEntity($entity,[
            'page-link-block',
            'file-block',
            'google-maps-block'
        ]);

        // Render view
        $view =  \View::make('layouts.pages.' . $this->formName)
            ->with([
                'entity' => $entity,
                'global' => $parent,
                'formPage' => $formPage,
                'blocks' => $blocks,
                'data' => $this->formService->fromSession(),
                'bodyClass' => $entity->codeName(),
                'successRoute' => $entity->route . '?status=success'
            ])->render();

        return $this->renderView($view, $entity);
    }

    /**
     * Process form
     */
    public function process()
    {
        $request = \Request::all();
        $request = $this->modifyRequest($request);

        // Set form name
        $this->formService->setFormName($this->formName);

        // Save request in session
        $this->formService->saveInSession($request);

        // Validate request
        if( ! $data = $this->formService->isValid($request))
            return \Redirect::back()->withErrors($this->formService->errors());

        // Send mail
        $data = $this->formService->data($request);
        $config = $this->formService->config();

        // $this->formMailer->reservationToClient($data,$config);
        $this->formMailer->reservationToAdmin($data,$config);

        \Session::put('success',1);
        $this->formService->forgetSession();

        // Redirect to thank you page
        return \Redirect::to('/' . $request['success_route']);
    }

    /**
     * Some forms may have custom data they want to modify
     * Overwrite this method in a custom controller
     */
    protected function modifyRequest($request)
    {
        return $request;
    }
}