Newer
Older
<?php
namespace App\Http\Controllers;
use App\Feedback;
use App\Jobs\WowaJob;
use App\Wowa;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Validator;
use Illuminate\Http\Request;
class WowaController extends Controller
{
public function __construct()
{
// Uncomment to require authentication
$this->middleware('auth');
}
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return \Illuminate\Contracts\Validation\Validator
*/
protected function validator(array $data)
{
return Validator::make($data, [
//'name' => 'required|string|regex:/^[a-zA-Z0-9\s-\.]+$/|max:255'
'population' => 'required|integer|min:10|max:250',
'crossover' => 'required|integer|min:1|max:99',
'mutation' => 'required|integer|min:1|max:99',
'generation' => 'required|integer|min:10|max:500'
]);
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
return view("wowa.index", ["wowas" => Wowa::all()->sortBy("id")]);
}
/**
* Show the form for creating a new resource.
* We use the same view for create and update => provide an empty Wowa.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
$wowa = new Wowa();
return view("wowa.edit", ["wowa" => $wowa]);
//return $this->saveAndQueue($wowa);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$wowa = new Wowa();
return $this->saveAndQueue($wowa, $request);
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
}
/**
* Display the specified resource.
*
* @param Wowa $wowa * @return \Illuminate\Http\Response
*/
public function show(Wowa $wowa)
{
return view("wowa.show", ["wowa" => $wowa]);
}
/**
* Show the form for editing the specified resource.
*
* @param Wowa $wowa * @return \Illuminate\Http\Response
*/
public function edit(Wowa $wowa)
{
return view("wowa.edit", ["wowa" => $wowa]);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param Wowa $wowa * @return \Illuminate\Http\Response
*/
public function update(Request $request, Wowa $wowa)
{
$this->validator($request->all())->validate();
$wowa->name = $request->name;
$wowa->save();
return redirect(action('WowaController@index'));
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
Wowa::find($id)->delete();
return redirect(action("WowaController@index"));
}
public function saveAndQueue(Wowa $wowa, Request $request)
$this->validator($request->all())->validate();
$wowa->user_id = Auth::user()->id;
$wowa->status = Wowa::STATE_QUEUED;
$wowa->population = $request->population;
$wowa->crossover_rate = $request->crossover;
$wowa->mutation_rate = $request->mutation;
$wowa->generation_number = $request->generation;
$wowa->save();
WowaJob::dispatch($wowa);
return redirect(action('WowaController@index'));
}
public function dropWowas()
{
Wowa::truncate();
return redirect(action("WowaController@index"));
}