Touranmeldung durchführen + zurückziehen

This commit is contained in:
TorstenS 2020-10-10 11:34:23 +02:00
parent 30cdeab510
commit 2f0a54ed77
6 changed files with 71 additions and 14 deletions

View file

@ -3,6 +3,7 @@
namespace App\Http\Controllers;
use App\Tour;
use App\Booking;
use Illuminate\Http\Request;
use Illuminate\Http\File;
use Illuminate\Support\Facades\Storage;
@ -177,4 +178,16 @@ class TourController extends Controller
//
}
public function join($tour_id) {
$user=Auth::user();
Tour::join($tour_id,$user->id);
return redirect('/tour');
}
public function cancelBooking($tour_id) {
$user=Auth::user();
Booking::where('tour_id', $tour_id)->where('user_id', $user->id)->delete();
return redirect('/tour');
}
}

View file

@ -3,6 +3,7 @@
namespace App;
use Illuminate\Database\Eloquent\Model;
use Carbon\Carbon;
class Tour extends Model
{
@ -25,14 +26,22 @@ class Tour extends Model
}
public static function join($tour_id,$user_id) {
error_log("Tour::join, tour_id=".$tour_id.", user_id=".$user_id);
/*
Booking::firstOrCreate(
['tour_id',$tour_id],
['user_id',$user_id],
['updated_at', \Carbon::now()]
['updated_at', Carbon::now()]
);
*/
$booking = Booking::firstOrCreate(
['tour_id' => $tour_id, 'user_id' => $user_id],
['tour_id' => $tour_id, 'user_id' => $user_id, 'created_at' => Carbon::now(), 'updated_at' => Carbon::now() ]
);
error_log($booking);
}
public static function leave($tour_id, $user_id) {
public static function cancel($tour_id, $user_id) {
Booking::where('tour_id',$tour_id)->where('user_id',$user_id)->delete();
}
}

View file

@ -36,4 +36,12 @@ class User extends Authenticatable
protected $casts = [
'email_verified_at' => 'datetime',
];
public static function has_tour($tour_id, $user_id) {
$tour=Tour::find($tour_id);
$user=User::first($user_id);
$booking=Booking::where('tour_id', $tour_id)->where('user_id', $user_id);
if ($booking) return true;
return false;
}
}

View file

@ -13,38 +13,58 @@ class BookingSeeder extends Seeder
{
DB::table('bookings')->insert([
'user_id' => 1,
'tour_id' => 1
'tour_id' => 1,
'created_at' => Carbon::now(),
'updated_at' => Carbon::now(),
]);
DB::table('bookings')->insert([
'user_id' => 2,
'tour_id' => 1
'tour_id' => 1,
'created_at' => Carbon::now(),
'updated_at' => Carbon::now(),
]);
DB::table('bookings')->insert([
'user_id' => 3,
'tour_id' => 1
'tour_id' => 1,
'created_at' => Carbon::now(),
'updated_at' => Carbon::now(),
]);
DB::table('bookings')->insert([
'user_id' => 4,
'tour_id' => 2
]);DB::table('bookings')->insert([
'tour_id' => 2,
'created_at' => Carbon::now(),
'updated_at' => Carbon::now(),
]);
DB::table('bookings')->insert([
'user_id' => 5,
'tour_id' => 2
'tour_id' => 2,
'created_at' => Carbon::now(),
'updated_at' => Carbon::now(),
]);
DB::table('bookings')->insert([
'user_id' => 2,
'tour_id' => 3
'tour_id' => 3,
'created_at' => Carbon::now(),
'updated_at' => Carbon::now(),
]);
DB::table('bookings')->insert([
'user_id' => 3,
'tour_id' => 3
'tour_id' => 3,
'created_at' => Carbon::now(),
'updated_at' => Carbon::now(),
]);
DB::table('bookings')->insert([
'user_id' => 4,
'tour_id' => 3
'tour_id' => 3,
'created_at' => Carbon::now(),
'updated_at' => Carbon::now(),
]);
DB::table('bookings')->insert([
'user_id' => 6,
'tour_id' => 3
'tour_id' => 3,
'created_at' => Carbon::now(),
'updated_at' => Carbon::now(),
]);
}
}

View file

@ -64,10 +64,15 @@
</textarea>
</div>
<!-- TODO: Only if owner or admin -->
<a href="/tour/{{$tour->id}}/edit"><div type="submit" class="btn btn-danger col-3 mb-2 float-left mr-2">Bearbeiten</div></a>
<a href="/tour" type="submit" class="btn btn-success col-3 mb-2 float-right mr-2">Ok</a>
<a href="#" type="submit" class="btn btn-danger col-3 mb-2 float-right mr-2">Teilnehmen</a>
@if(!App\Tour::has_participant($tour->id, Auth::user()->id))
<a href="/tour/{{$tour->id}}/join" type="submit" class="btn btn-danger col-3 mb-2 float-right mr-2">Teilnehmen</a>
@else
<a href="/tour/{{$tour->id}}/cancelBooking" type="submit" class="btn btn-danger col-3 mb-2 float-right mr-2">Absagen</a>
@endif
</form>

View file

@ -44,6 +44,8 @@ Route::get('/admin/edit_activities', 'AdminController@edit_activities');
Route::post('/admin/store_activities', 'AdminController@store_activities');
Route::resource('/tour', TourController::class);
Route::get('/tour/{tour_id}/join', 'TourController@join');
Route::get('/tour/{tour_id}/cancelBooking', 'TourController@cancelBooking');
Auth::routes();