File: D:/HostingSpaces/SBogers10/ehbo.today/app/KommaApp/Users/UserController.php
<?php
namespace App\KommaApp\Users;
use App\KommaApp\Courses\Models\Course;
use App\KommaApp\Events\Models\Event;
use App\KommaApp\IBAN\IBANRule;
use App\KommaApp\Users\Kms\UserService;
use App\KommaApp\Users\Models\User;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
/**
* Class UserController
*
*
*
* @package App\KommaApp\Users
*/
class UserController
{
/**
* @var UserCourseService
*/
private $userCourseService;
/**
* @var UserEventService
*/
private $userEventService;
/** @var UserService $userService */
private $userService;
public function __construct(UserCourseService $userCourseService, UserEventService $userEventService, UserService $userService)
{
$this->userCourseService = $userCourseService;
$this->userEventService = $userEventService;
$this->userService = $userService;
}
public function save(Request $request, User $user)
{
$input = $request->all();
//Validate request
$this->validator($input)->validate();
//Request validated successfully.
$input['birthdate'] = Carbon::parse($input['birth_date_year'].'-'.$input['birth_date_month'].'-'.$input['birth_date_day'])->format('Y-m-d H:i:s');
$input['telephone'] = $input['phone'];
array_forget($input, ['phone','age','birth_date_year', 'birth_date_month', 'birth_date_day']);
$user->fill($input);
$this->userService->sendMailsAboutEditedUserIfNeeded($user);
$user->save();
return redirect('/');
}
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return \Illuminate\Contracts\Validation\Validator
*/
protected function validator(array $data)
{
return Validator::make($data, [
'gender' => 'required',
'email' => 'required|email|max:255|unique:users,email,'.\Auth::user()->id.'',
'bank_account_number' => ['required', new IBANRule()],
// 'certificate_number' => 'required|string'
]);
}
/**
* (Un)subscribe a user for a certain course
*
* Determined by post parameter subscribe
* @param Course $course
* @param User $user
* @return \Illuminate\Http\RedirectResponse
*/
public function updateCourseSubscription(User $user, Course $course)
{
$subscribed = \Input::get('subscribed');
$this->userCourseService->subscribeUser($user, $course, $subscribed);
return redirect()->back()->with('message', $subscribed ? 'Je bent uitgeschreven.' : 'Je bent ingeschreven.');
}
/**
* (Un)subscribe a user for a certain course
*
* Determined by post parameter subscribe
* @param Course $course
* @param User $user
* @return \Illuminate\Http\RedirectResponse
*/
public function updateEventSubscription(User $user, Event $event)
{
$subscribed = \Input::get('subscribed');
$this->userEventService->subscribeUser($user, $event, $subscribed);
return redirect()->back()->with('message', $subscribed ? 'Je bent uitgeschreven.' : 'Je bent ingeschreven.');
}
public function removeEventSubscription(User $user, Event $event) {
$this->userEventService->subscribeUser($user, $event, 1);
return redirect()->back()->with('message', 'Gebruiker is uitgeschreven.');
}
}