Skip to content
Snippets Groups Projects
WowaController.php 3.63 KiB
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
    }

    /**
     * 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'));
    }
Alex's avatar
Alex committed

    public function dropWowas()
    {
        Wowa::truncate();
        return redirect(action("WowaController@index"));
    }