diff --git a/app/Http/Controllers/ProjectsController.php b/app/Http/Controllers/ProjectsController.php new file mode 100644 index 0000000..b597687 --- /dev/null +++ b/app/Http/Controllers/ProjectsController.php @@ -0,0 +1,118 @@ +orderBy('name')->get(); + + return view('projects.index', compact('projects')); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Http\Response + */ + public function create() + { + $project = new Project(); + + return view('projects.create', compact('project')); + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function store(ProjectStoreOrUpdate $request) + { + $project = new Project(); + + $project->name = request('name'); + $project->start_date = request('start_date'); + $project->end_date = request('end_date'); + + $project->save(); + + return redirect('/projects'); + } + + /** + * Display the specified resource. + * + * @param \App\Project $project + * @return \Illuminate\Http\Response + */ + public function show(Project $project) + { + // + } + + /** + * Show the form for editing the specified resource. + * + * @param \App\Project $project + * @return \Illuminate\Http\Response + */ + public function edit(Project $project) + { + return view('projects.edit', compact('project')); + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param \App\Project $project + * @return \Illuminate\Http\Response + */ + public function update(ProjectStoreOrUpdate $request, Project $project) + { + $project->name = request('name'); + $project->start_date = request('start_date'); + $project->end_date = request('end_date'); + + $project->save(); + + return redirect('/projects'); + } + + /** + * Show the dialog for deleting the specified resource. + * + * @param \App\Project $project + * @return \Illuminate\Http\Response + */ + public function delete(Project $project) + { + return view('/projects/delete', compact('project')); + } + + /** + * Remove the specified resource from storage. + * + * @param \App\Project $project + * @return \Illuminate\Http\Response + */ + public function destroy(Project $project) + { + $project->delete(); + + return redirect('/projects'); + } +} diff --git a/app/Http/Requests/ProjectStoreOrUpdate.php b/app/Http/Requests/ProjectStoreOrUpdate.php new file mode 100644 index 0000000..51517e4 --- /dev/null +++ b/app/Http/Requests/ProjectStoreOrUpdate.php @@ -0,0 +1,47 @@ + 'required', + 'start_date' => 'required|before_or_equal:end_date', + 'end_date' => 'required', + ]; + } + + public function messages() + { + return [ + 'name.required' => 'Das Projekt muss einen Namen haben.', + + 'start_date.required' => + 'Das Projekt muss einen Beginn haben.', + 'start_date.before_or_equal' => + 'Der Beginn des Projekts muss vor dem Ende des Projekts liegen.', + + 'end_date.required' => + 'Das Projekt muss ein Ende haben.' + ]; + } +} diff --git a/resources/views/layout/forms/projects.blade.php b/resources/views/layout/forms/projects.blade.php new file mode 100644 index 0000000..1cb2953 --- /dev/null +++ b/resources/views/layout/forms/projects.blade.php @@ -0,0 +1,37 @@ +@extends('layout.master') + +@section('subnav') + Zurück +@endsection + +@section('content') +

@yield('title')

+
+ @if (!is_null($project->id)) + {{ method_field('patch') }} + @endif + {{ csrf_field() }} + + + + + + + + + + + + + +
{{ Form::label('name', 'Name') }}{{ Form::text('name', $project->name) }}
{{ Form::label('start_date', 'Beginn') }}{{ Form::date('start_date', $project->start_date) }}
{{ Form::label('end_date', 'Ende') }}{{ Form::date('end_date', $project->end_date) }}
+ + + + +
+@endsection diff --git a/resources/views/layout/nav.blade.php b/resources/views/layout/nav.blade.php index 96d5c3a..95e1a5f 100644 --- a/resources/views/layout/nav.blade.php +++ b/resources/views/layout/nav.blade.php @@ -1,4 +1,5 @@ diff --git a/resources/views/projects/create.blade.php b/resources/views/projects/create.blade.php new file mode 100644 index 0000000..4790bd8 --- /dev/null +++ b/resources/views/projects/create.blade.php @@ -0,0 +1,4 @@ +@extends('layout.forms.projects') + +@section('title', 'Neues Projekt') + diff --git a/resources/views/projects/delete.blade.php b/resources/views/projects/delete.blade.php new file mode 100644 index 0000000..d87786f --- /dev/null +++ b/resources/views/projects/delete.blade.php @@ -0,0 +1,18 @@ +@extends('layout.master') + +@section('title', 'Projekt löschen') + +@section('subnav') + Zurück +@endsection + +@section('content') +
+ {{ method_field('delete') }} + {{ csrf_field() }} +

Soll das Projekt "{{ $project->name }}" wirklich gelöscht + werden?

+ +
+@endsection + diff --git a/resources/views/projects/edit.blade.php b/resources/views/projects/edit.blade.php new file mode 100644 index 0000000..3524e69 --- /dev/null +++ b/resources/views/projects/edit.blade.php @@ -0,0 +1,4 @@ +@extends('layout.forms.projects') + +@section('title', 'Projekt bearbeiten') + diff --git a/resources/views/projects/index.blade.php b/resources/views/projects/index.blade.php new file mode 100644 index 0000000..b1fcc19 --- /dev/null +++ b/resources/views/projects/index.blade.php @@ -0,0 +1,72 @@ +@extends('layout.master') + +@section('title', 'Projekte') + +@section('subnav') + Neues Projekt +@endsection + +@section('content') +

@yield('title')

+

Aktuelle Projekte

+ + + + + + + + @foreach($projects->where('start_date', '<=', now()) + ->where('end_date', '>=', now()) as $project) + + + + + + + @endforeach +
NameBeginnEndeAktionen
{{ $project->name }}{{ formatDate($project->start_date) }}{{ formatDate($project->end_date) }} + Bearbeiten
+ Löschen +
+

Kommende Projekte

+ + + + + + + + @foreach($projects->where('start_date', '>', now()) as $project) + + + + + + + @endforeach +
NameBeginnEndeAktionen
{{ $project->name }}{{ formatDate($project->start_date) }}{{ formatDate($project->end_date) }} + Bearbeiten
+ Löschen +
+

Vergangene Projekte

+ + + + + + + + @foreach($projects->where('end_date', '<', now()) as $project) + + + + + + + @endforeach +
NameBeginnEndeAktionen
{{ $project->name }}{{ formatDate($project->start_date) }}{{ formatDate($project->end_date) }} + Bearbeiten
+ Löschen +
+@endsection diff --git a/routes/web.php b/routes/web.php index 752807b..90a7912 100644 --- a/routes/web.php +++ b/routes/web.php @@ -32,9 +32,21 @@ Route::get('/bookings/year-{year}', 'BookingsController@index'); Route::post('/bookings', 'BookingsController@store'); Route::get('/bookings/create', 'BookingsController@create'); -Route::get('/bookings/{booking}', 'BookingsController@show'); 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');