<?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); } /** * 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")); } }