diff --git a/app/Http/Controllers/PersonTargetsController.php b/app/Http/Controllers/PersonTargetsController.php index f73f8b8..e8f966f 100644 --- a/app/Http/Controllers/PersonTargetsController.php +++ b/app/Http/Controllers/PersonTargetsController.php @@ -3,7 +3,9 @@ namespace App\Http\Controllers; use App\PersonTarget; -use Illuminate\Http\Request; +use App\IOType; +use App\Person; +use App\Http\Requests\PersonTargetCreateOrUpdate; class PersonTargetsController extends Controller { @@ -36,18 +38,32 @@ class PersonTargetsController extends Controller */ public function create() { - // + $personTarget = new PersonTarget(); + + $formArrays = PersonTargetsController::loadFormArrays(); + + return view('personTargets.create', array_merge(compact('personTarget'), $formArrays)); } /** * Store a newly created resource in storage. * - * @param \Illuminate\Http\Request $request + * @param \App\Http\Requests\PersonTargetCreateOrUpdate $request * @return \Illuminate\Http\Response */ - public function store(Request $request) + public function store(PersonTargetCreateOrUpdate $request) { - // + $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->save(); + + return redirect('/targets'); } /** @@ -69,7 +85,9 @@ class PersonTargetsController extends Controller */ public function edit(PersonTarget $personTarget) { - // + $formArrays = PersonTargetsController::loadFormArrays(); + + return view('personTargets.edit', array_merge(compact('personTarget'), $formArrays)); } /** @@ -79,9 +97,18 @@ class PersonTargetsController extends Controller * @param \App\PersonTarget $personTarget * @return \Illuminate\Http\Response */ - public function update(Request $request, PersonTarget $personTarget) + public function update(PersonTargetCreateOrUpdate $request, + PersonTarget $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->save(); + + return redirect('/targets'); } /** @@ -107,4 +134,29 @@ class PersonTargetsController extends Controller return redirect('/targets'); } + + /** + * Load the data about people and IO types and return them as an array, such + * that the data can be used as input for a form dropdowndown field. + * + * @return array + */ + private function loadFormArrays() + { + $ioTypes = IOType::all(); + + $ioTypesArray = []; + foreach ($ioTypes as $ioType) { + $ioTypesArray[$ioType->id] = $ioType->name; + } + + $people = Person::all('id', 'name_or_company', 'surname')->sortBy('name_or_company'); + + $peopleArray = []; + foreach ($people as $person) { + $peopleArray[$person->id] = $person->fullName(true); + } + + return compact('ioTypesArray', 'peopleArray'); + } } diff --git a/app/Http/Requests/PersonTargetCreateOrUpdate.php b/app/Http/Requests/PersonTargetCreateOrUpdate.php new file mode 100644 index 0000000..d2cf097 --- /dev/null +++ b/app/Http/Requests/PersonTargetCreateOrUpdate.php @@ -0,0 +1,59 @@ + 'required', + 'reference' => 'required', + 'amount' => 'required|numeric|min:0', + 'io_type_id' => 'required', + 'person_id' => 'required' + ]; + } + + public function messages() + { + return [ + 'date.required' => + 'Die Zahlungsverpflichtung muss ein Datum haben.', + + 'reference.required' => + 'Die Zahlungsverpflichtung muss eine Position haben.', + + 'amount.required' => + 'Die Zahlungsverpflichtung muss einen Betrag haben.', + 'amount.numeric' => + 'Der Betrag muss eine Zahl sein.', + 'amount.min' => + 'Der Betrag darf kein Vorzeichen haben. Das Vorzeichen der + Zahlungsverpflichtung wird durch den Typ bestimmt.', + + 'io_type_id.required' => + 'Die Zahlungsverpflichtung muss einen Typ haben.', + + 'person_id.required' => + 'Die Zahlungsverpflichtung muss einer Person zugeordnet werden.' + ]; + } +} diff --git a/resources/views/layout/forms/personTarget.blade.php b/resources/views/layout/forms/personTarget.blade.php new file mode 100644 index 0000000..49e4e42 --- /dev/null +++ b/resources/views/layout/forms/personTarget.blade.php @@ -0,0 +1,79 @@ +@extends('layout.master') + +@section('subnav') +