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');
}
}