Made it possible to sign up for events.

Added fail and success messages when signing up.
Fixed unique keys in migrate
This commit is contained in:
Anders 2020-07-28 10:13:44 +02:00
parent dcc93ae40c
commit 80725dee12
4 changed files with 36 additions and 7 deletions

View File

@ -2,6 +2,7 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\UserEvent;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Http\Response; use Illuminate\Http\Response;
@ -13,12 +14,28 @@ class UserEventController extends Controller
* Update the specified resource in storage. * Update the specified resource in storage.
* *
* @param \Illuminate\Http\Request $request * @param \Illuminate\Http\Request $request
* @param int $userid
* @param int $eventid
* @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\View\View * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/ */
public function create(Request $request, $userid, $eventid) public function create(Request $request)
{ {
// Get written data from events.index
$data = $request->validate([
"user_id" => "required|max:255",
"event_id" => "required|max:255"
]);
// Check the UserEvent table if there is a row that has the user_id AND the event_id
$getTableInfo = UserEvent::where('user_id', $request->user_id)
->where('event_id', $request->event_id)->get();
// If the row has both, then go back and show an error - Cause you're not allowed to be on the same event twice.
if (count($getTableInfo) > 0)
return redirect()->route("events.index")->with('error#' . $request->event_id, '<p class="text-center">Du har allerede tilmeldt dig denne Aktivitet!</p>');
// If not, then it keeps going and saves and shows a success message
$UserEvent = new UserEvent($data);
$UserEvent->save();
return redirect()->route("events.index")->with('signup#' . $request->event_id, '<p class="text-center">Du er hermed tilmeldt denne aktivitet!</p>');
} }
} }

View File

@ -6,5 +6,13 @@ use Illuminate\Database\Eloquent\Model;
class UserEvent extends Model class UserEvent extends Model
{ {
// /**
* The attributes that are mass assignable.
*
* @var array
*/
//protected variable which contains name of database field(s) to be filled.
protected $fillable = [
'user_id', 'event_id'
];
} }

View File

@ -15,8 +15,8 @@ class CreateUserEventsTable extends Migration
{ {
Schema::create('user_events', function (Blueprint $table) { Schema::create('user_events', function (Blueprint $table) {
$table->id(); $table->id();
$table->integer("user_id")->unique(); $table->integer("user_id");
$table->integer("event_id")->unique(); $table->integer("event_id");
$table->timestamps(); $table->timestamps();

View File

@ -9,10 +9,14 @@
<h1 class="text-center sde-blue mb-0">Aktiviteter</h1> <h1 class="text-center sde-blue mb-0">Aktiviteter</h1>
@if(!$events->isEmpty()) @if(!$events->isEmpty())
@foreach($events as $event) @foreach($events as $event)
<form method="post" action="{{ route("userevents.update", ['user' => Auth::user()], ['event' => $event->id]) }}"> <form method="get" action="{{ route("userevents.create") }}">
<h3 class="sde-blue bold text-center mb-0">{{$event->name}}</h3> <h3 class="sde-blue bold text-center mb-0">{{$event->name}}</h3>
<p class="text-center mt-0">{{$event->date}}</p> <p class="text-center mt-0">{{$event->date}}</p>
<p class="text-center">{{$event->description}}</p> <p class="text-center">{{$event->description}}</p>
<input type="hidden" name="user_id" value="{{ Auth::user()->id }}">
<input type="hidden" name="event_id" value="{{ $event->id }}">
{!! session()->get('error#' . $event->id) !!}
{!! session()->get('signup#' . $event->id) !!}
<button type="submit" class="btn text-center btn-sde-blue" id="tilmeld">Tilmeld</button> <button type="submit" class="btn text-center btn-sde-blue" id="tilmeld">Tilmeld</button>
</form> </form>
@endforeach @endforeach