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') +
| Name | +Beginn | +Ende | +Aktionen | +
|---|---|---|---|
| {{ $project->name }} | +{{ formatDate($project->start_date) }} | +{{ formatDate($project->end_date) }} | +
+ Bearbeiten + Löschen + |
+
| Name | +Beginn | +Ende | +Aktionen | +
|---|---|---|---|
| {{ $project->name }} | +{{ formatDate($project->start_date) }} | +{{ formatDate($project->end_date) }} | +
+ Bearbeiten + Löschen + |
+
| Name | +Beginn | +Ende | +Aktionen | +
|---|---|---|---|
| {{ $project->name }} | +{{ formatDate($project->start_date) }} | +{{ formatDate($project->end_date) }} | +
+ Bearbeiten + Löschen + |
+