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/netwerkbrabant.komma.pro/app/KommaApp/Auth/RegisterController.php
<?php

namespace App\KommaApp\Auth;

use App\Http\Controllers\Controller;
use App\Http\Requests\RegisterRequest;
use App\KommaApp\Companies\CompanyService;
use App\KommaApp\Users\UserService;
use App\KommaApp\WeFact\WeFactService;
use Illuminate\Support\Facades\Auth;
use Illuminate\Foundation\Auth\RegistersUsers;

class RegisterController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Register Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles the registration of new users as well as their
    | validation and creation. By default this controller uses a trait to
    | provide this functionality without requiring any additional code.
    |
    */

    use RegistersUsers;


    /**
     * Where to redirect users after registration.
     *
     * @var string
     */
    protected $redirectTo = '/lid-worden/bedankt';

    /**
     * Show the application registration form.
     *ju
     * @return \Illuminate\Http\Response
     */
    public function showRegistrationForm()
    {
        return view('site.auth.register');
    }

    /**
     * Handle a registration request for the application.
     *
     * @param  RegisterRequest $request
     * @return \Illuminate\Http\Response
     */
    public function register(RegisterRequest $request)
    {
        list($userData, $companyData) = $this->convertRequestInput($request);

        /** @var UserService $userService */
        $userService = \App::make(UserService::class);

        /** @var CompanyService $companyService */
        $companyService = \App::make(CompanyService::class);

        /** @var WeFactService $weFactService */
        $weFactService = app()->make(WeFactService::class);

        // Create the user
        $user = $userService->createUser($userData);

        // Create the company
        $company = $companyService->createCompany($companyData);

        // Gattai! Link company to user.
        $companyService->linkToCompanyByUserId($company, $user->id);

        // Create debtor in WeFact
        $weFactDebtor = $weFactService->addDebtor([
            'CompanyName'       => $company->name,
            'Initials'    => $user->first_name,
            'SurName'     => $user->last_name,
            'Address'       => $company->invoice_address,
            'ZipCode'        => $company->invoice_postal,
            'City'          => $company->invoice_city,
            'EmailAddress' => $company->invoice_email,
        ]);

        // Add Subscription for debtor
        $invoice = $weFactService->addSubscription($weFactDebtor->DebtorCode);
        $weFactService->sendInvoiceByMail($invoice->Identifier);

        // Send the registered mails
        $companyService->sendRegisteredMails($company);

        Auth::guard('siteUser')->login($user);

        return $this->registered($request, $user)
            ?: redirect($this->redirectPath());
    }


    private function convertRequestInput(RegisterRequest $request)
    {
        $formData = $request->except('_token', '_method', 'accept_legal', 'user_repeat_password');

        // Pull the user data from the input
        $userData = [
            'first_name' => array_pull($formData, 'user_first_name'),
            'last_name' => array_pull($formData, 'user_last_name'),
            'email' => array_pull($formData, 'user_email'),
            'phone' => array_pull($formData, 'user_phone'),
            'password' => array_pull($formData, 'user_password'),
        ];

        // The rest of the input should be for the company
        return [$userData, $formData];
    }

    public function success()
    {
        return view('site.auth.success');
    }
}