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