Implemented person target creating and editing.

This commit is contained in:
Lukas Halbritter
2018-10-23 23:33:36 +02:00
parent 3cb6abe52a
commit cda399a9f2
6 changed files with 206 additions and 9 deletions
@@ -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');
}
}