From 24001f692054b022d9f12b9c455706a059fe48a9 Mon Sep 17 00:00:00 2001 From: Lukas Halbritter Date: Thu, 6 Dec 2018 11:49:49 +0100 Subject: [PATCH] Added very basic authorization. --- app/Booking.php | 9 ++ app/Http/Controllers/Auth/LoginController.php | 19 ++- app/Http/Controllers/HomeController.php | 28 +++++ .../Controllers/PersonTargetsController.php | 27 +++-- app/PersonTarget.php | 3 +- routes/web.php | 113 ++++++++++-------- 6 files changed, 140 insertions(+), 59 deletions(-) create mode 100644 app/Http/Controllers/HomeController.php diff --git a/app/Booking.php b/app/Booking.php index 129f928..378a891 100644 --- a/app/Booking.php +++ b/app/Booking.php @@ -118,4 +118,13 @@ class Booking extends Model public static function firstDate() { return Booking::min('date'); } + + /** + * Get the date of the last booking. + * + * @return string + */ + public static function lastDate() { + return Booking::max('date'); + } } diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php index b2ea669..164c32b 100644 --- a/app/Http/Controllers/Auth/LoginController.php +++ b/app/Http/Controllers/Auth/LoginController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\Auth; +use Illuminate\Http\Request; use App\Http\Controllers\Controller; use Illuminate\Foundation\Auth\AuthenticatesUsers; @@ -25,7 +26,7 @@ class LoginController extends Controller * * @var string */ - protected $redirectTo = '/home'; + protected $redirectTo; /** * Create a new controller instance. @@ -34,6 +35,22 @@ class LoginController extends Controller */ public function __construct() { + $this->redirectTo = '/bookings/year-' . date('Y'); $this->middleware('guest')->except('logout'); } + + /** + * Log the user out of the application. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function logout(Request $request) + { + $this->guard()->logout(); + + $request->session()->invalidate(); + + return redirect('/login'); + } } diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php new file mode 100644 index 0000000..a3af7dd --- /dev/null +++ b/app/Http/Controllers/HomeController.php @@ -0,0 +1,28 @@ +middleware('auth'); + } + + /** + * Show the application dashboard. + * + * @return \Illuminate\Http\Response + */ + public function index() + { + return view('home'); + } +} diff --git a/app/Http/Controllers/PersonTargetsController.php b/app/Http/Controllers/PersonTargetsController.php index e8f966f..e899b55 100644 --- a/app/Http/Controllers/PersonTargetsController.php +++ b/app/Http/Controllers/PersonTargetsController.php @@ -28,7 +28,16 @@ class PersonTargetsController extends Controller 'actuals.accountType.accountClass.ioType:id,factor'); } - return view('personTargets.index', compact('personTargets')); + $sums['receivables'] = 0; + $sums['debts'] = 0; + + foreach ($personTargets as $type => $personTargetsList) { + foreach ($personTargetsList as $personTarget) { + $sums[$type] += $personTarget->difference(); + } + } + + return view('personTargets.index', compact('personTargets', 'sums')); } /** @@ -53,15 +62,17 @@ class PersonTargetsController extends Controller */ public function store(PersonTargetCreateOrUpdate $request) { - $personTarget = new PersonTarget(); + foreach (request('person_id') as $personId) { + $personTarget = new PersonTarget(); - $personTarget->reference = request('reference'); - $personTarget->amount = request('amount'); - $personTarget->date = request('date'); - $personTarget->io_type_id = request('io_type_id'); - $personTarget->person_id = request('person_id'); + $personTarget->reference = request('reference'); + $personTarget->amount = request('amount'); + $personTarget->date = request('date'); + $personTarget->io_type_id = request('io_type_id'); + $personTarget->person_id = $personId; - $personTarget->save(); + $personTarget->save(); + } return redirect('/targets'); } diff --git a/app/PersonTarget.php b/app/PersonTarget.php index 2630d45..5101336 100644 --- a/app/PersonTarget.php +++ b/app/PersonTarget.php @@ -209,7 +209,8 @@ class PersonTarget extends Model LEFT JOIN account_classes a_c ON a_c.id = a_t.account_class_id LEFT JOIN i_o_types i_o1 ON i_o1.id = a_c.io_type_id GROUP BY p_t.id - HAVING ' . $having . ';'); + HAVING ' . $having . ' + ORDER BY p_t.date, p_t.reference, p_t.person_id;'); // Remove the unused columns 'target' and 'actual' from the query // result. diff --git a/routes/web.php b/routes/web.php index 77d94d1..5e887a2 100644 --- a/routes/web.php +++ b/routes/web.php @@ -11,55 +11,70 @@ | */ -/****************************************************************************** - * PEOPLE * - ******************************************************************************/ -Route::get('/people', 'PeopleController@index'); -Route::post('/people', 'PeopleController@store'); +Route::middleware(['auth'])->group(function() { + /************************************************************************** + * PEOPLE * + **************************************************************************/ + Route::get('/people', 'PeopleController@index'); + Route::post('/people', 'PeopleController@store'); + + Route::get('/people/create', 'PeopleController@create'); + Route::get('/people/{person}', 'PeopleController@show'); + Route::patch('/people/{person}', 'PeopleController@update'); + Route::delete('/people/{person}', 'PeopleController@destroy'); + + Route::get('/people/{person}/edit', 'PeopleController@edit'); + Route::get('/people/{person}/delete', 'PeopleController@delete'); + + /************************************************************************** + * BOOKINGS * + **************************************************************************/ + Route::get('/bookings/year-{year}', 'BookingsController@index'); + Route::post('/bookings', 'BookingsController@store'); + + Route::get('/bookings/create', 'BookingsController@create'); + Route::patch('/bookings/{booking}', 'BookingsController@update'); + Route::delete('/bookings/{booking}', 'BookingsController@destroy'); + + Route::get('/bookings/{booking}/edit', 'BookingsController@edit'); + Route::get('/bookings/{booking}/delete', 'BookingsController@delete'); + + /************************************************************************** + * PROJECTS * + **************************************************************************/ + Route::get('/projects', 'ProjectsController@index'); + Route::post('/projects', 'ProjectsController@store'); + + Route::get('/projects/create', 'ProjectsController@create'); + Route::patch('/projects/{project}', 'ProjectsController@update'); + Route::delete('/projects/{project}', 'ProjectsController@destroy'); + + Route::get('/projects/{project}/edit', 'ProjectsController@edit'); + Route::get('/projects/{project}/delete', 'ProjectsController@delete'); + + /************************************************************************** + * PERSON TARGETS * + **************************************************************************/ + Route::get('/targets', 'PersonTargetsController@index'); + Route::post('/targets', 'PersonTargetsController@store'); + + Route::get('/targets/create', 'PersonTargetsController@create'); + Route::patch('/targets/{personTarget}', 'PersonTargetsController@update'); + Route::delete('/targets/{personTarget}', 'PersonTargetsController@destroy'); + + Route::get('/targets/{personTarget}/edit', 'PersonTargetsController@edit'); + Route::get('/targets/{personTarget}/delete', 'PersonTargetsController@delete'); +}); -Route::get('/people/create', 'PeopleController@create'); -Route::get('/people/{person}', 'PeopleController@show'); -Route::patch('/people/{person}', 'PeopleController@update'); -Route::delete('/people/{person}', 'PeopleController@destroy'); +// Authentication Routes... +Route::get('login', 'Auth\LoginController@showLoginForm')->name('login'); +Route::post('login', 'Auth\LoginController@login'); +Route::post('logout', 'Auth\LoginController@logout')->name('logout'); -Route::get('/people/{person}/edit', 'PeopleController@edit'); -Route::get('/people/{person}/delete', 'PeopleController@delete'); +// Password Reset Routes... +Route::get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.request'); +Route::post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email'); +Route::get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.reset'); +Route::post('password/reset', 'Auth\ResetPasswordController@reset'); -/****************************************************************************** - * BOOKINGS * - ******************************************************************************/ -Route::get('/bookings/year-{year}', 'BookingsController@index'); -Route::post('/bookings', 'BookingsController@store'); - -Route::get('/bookings/create', 'BookingsController@create'); -Route::patch('/bookings/{booking}', 'BookingsController@update'); -Route::delete('/bookings/{booking}', 'BookingsController@destroy'); - -Route::get('/bookings/{booking}/edit', 'BookingsController@edit'); -Route::get('/bookings/{booking}/delete', 'BookingsController@delete'); - -/****************************************************************************** - * PROJECTS * - ******************************************************************************/ -Route::get('/projects', 'ProjectsController@index'); -Route::post('/projects', 'ProjectsController@store'); - -Route::get('/projects/create', 'ProjectsController@create'); -Route::patch('/projects/{project}', 'ProjectsController@update'); -Route::delete('/projects/{project}', 'ProjectsController@destroy'); - -Route::get('/projects/{project}/edit', 'ProjectsController@edit'); -Route::get('/projects/{project}/delete', 'ProjectsController@delete'); - -/****************************************************************************** - * PERSON TARGETS * - ******************************************************************************/ -Route::get('/targets', 'PersonTargetsController@index'); -Route::post('/targets', 'PersonTargetsController@store'); - -Route::get('/targets/create', 'PersonTargetsController@create'); -Route::patch('/targets/{personTarget}', 'PersonTargetsController@update'); -Route::delete('/targets/{personTarget}', 'PersonTargetsController@destroy'); - -Route::get('/targets/{personTarget}/edit', 'PersonTargetsController@edit'); -Route::get('/targets/{personTarget}/delete', 'PersonTargetsController@delete'); +Route::get('/home', 'HomeController@index')->name('home');