Tour.index (list of tours)

This commit is contained in:
TorstenS 2020-10-01 09:40:16 +02:00
parent f7d0eb2fc7
commit b205aedb5d
13 changed files with 320 additions and 46 deletions

View file

@ -0,0 +1,11 @@
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Booking extends Model
{
public $timestamps=true;
protected $fillable=['tour_id','user_id','created_at','updated_at'];
}

View file

@ -0,0 +1,85 @@
<?php
namespace App\Http\Controllers;
use App\Booking;
use Illuminate\Http\Request;
class BookingController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param \App\Booking $booking
* @return \Illuminate\Http\Response
*/
public function show(Booking $booking)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Booking $booking
* @return \Illuminate\Http\Response
*/
public function edit(Booking $booking)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Booking $booking
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Booking $booking)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param \App\Booking $booking
* @return \Illuminate\Http\Response
*/
public function destroy(Booking $booking)
{
//
}
}

View file

@ -17,7 +17,8 @@ class TourController extends Controller
*/
public function index()
{
//
$tours=Tour::all();
return view('tour.index')->with('tours',$tours);
}
/**

View file

@ -0,0 +1,12 @@
<?php
/** @var \Illuminate\Database\Eloquent\Factory $factory */
use App\Booking;
use Faker\Generator as Faker;
$factory->define(Booking::class, function (Faker $faker) {
return [
//
];
});

View file

@ -15,6 +15,11 @@ class CreateToursTable extends Migration
{
Schema::create('tours', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->text('beschreibung');
$table->string('user_id');
$table->string('status');
$table->date('start')->nullable();
$table->timestamps();
});
}
@ -26,6 +31,6 @@ class CreateToursTable extends Migration
*/
public function down()
{
Schema::dropIfExists('tours');
Schema::dropIfExists('tour');
}
}

View file

@ -0,0 +1,33 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateBookingsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('bookings', function (Blueprint $table) {
$table->id();
$table->integer('tour_id');
$table->integer('user_id');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('bookings');
}
}

View file

@ -0,0 +1,50 @@
<?php
use Illuminate\Database\Seeder;
class BookingSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
DB::table('bookings')->insert([
'user_id' => 1,
'tour_id' => 1
]);
DB::table('bookings')->insert([
'user_id' => 2,
'tour_id' => 1
]);
DB::table('bookings')->insert([
'user_id' => 3,
'tour_id' => 1
]);
DB::table('bookings')->insert([
'user_id' => 4,
'tour_id' => 2
]);DB::table('bookings')->insert([
'user_id' => 5,
'tour_id' => 2
]);
DB::table('bookings')->insert([
'user_id' => 2,
'tour_id' => 3
]);
DB::table('bookings')->insert([
'user_id' => 3,
'tour_id' => 3
]);
DB::table('bookings')->insert([
'user_id' => 4,
'tour_id' => 3
]);
DB::table('bookings')->insert([
'user_id' => 6,
'tour_id' => 3
]);
}
}

View file

@ -55,43 +55,11 @@ class DatabaseSeeder extends Seeder
'password' => Hash::make('12345678'),
]);
DB::table('pages')->insert([
'name' => 'home',
'content' => 'Das alte Problem: Die Sonne scheint und Dein Motorrad ruft, '
.'doch alle Deine Freunde sind plötzlich verhindert oder haben keine Zeit. '
.'Hier wollen wir Abhilfe schaffen. Unser Ziel: Kontaktvermittlung unter '
.'Motorradfahrer/innen für gemeinsame Touren. Auf diesen Seiten erfährst '
.'Du alles Wissenswerte über uns, unser Angebot für unsere Mitglieder sowie sonstige Aktivitäten.'
$this->call([
PageSeeder::class,
TourSeeder::class,
BookingSeeder::class
]);
DB::table('pages')->insert([
'name' => 'activities',
'content' => 'Selber anrufen und angerufen werden. '
.'Einmal im Jahr erhältst Du eine Liste aller IG-Mitglieder inkl. Telefonnummern.'
.'Die Erscheinungstermine unserer Mitgliederliste + News sind natürlich auf die Motorrad-Saison'
.'abgestimmt, ca: März, Juni und September (Saisonstart, -mitte, -ende). Für Eure (Urlaubs) Planung und'
.'damit der Winter nicht zu lange wird, halten wir in der November- Dezember-Ausgabe schon den'
.'Tourenkalender für das nächste Jahr für Euch bereit.'
.'<p>&nbsp;</p>'
.'<h5>Zusätzlich eröffnet Dir die Liste die Möglichkeit zur'
.'Teilnahme an einem regelmäßigen Stammtisch, gemeinsame Ausfahrten an Wochenenden, einer'
.'Urlaubsbörse sowie Saisonauftakt- und Jahrestreffen. Eigeninitiative ist hierbei erwünscht.</h5>'
.'<p>&nbsp;</p>'
.'<h5>Da leider auch diese Art der Adressenvermittlung nicht ganz ohne Kostenaufwand geht,'
.'müssen wir einmal jährlich einen Selbstkostenbeitrag in Höhe von 20,- EUR erheben.'
.'Diese Kosten entstehen durch Werbung, Porto, Erfassungsmaterialien etc..</h5>'
.'<p>&nbsp;</p>'
.'<h5>Hast Du jetzt immer noch eine positive Einstellung zu dieser Idee? Dann nichts wie hin.'
.'Stammtisch Düsseldorf: </h5>'
.'<p>&nbsp;</p>'
.'<h5>Wir treffen uns jeden 2. Mittwoch im Monat ab ca. 19 Uhr in der'
.'Trattoria and Bar Antonio, Roßstr. 87, 40476 Düsseldorf-Derendorf, Tel.: 0211/43637525.'
.'Stadtplan und Anfahrt mit öffentlichen Verkehrsmitteln findet ihr unter:<br/>'
.'<a href="#">http://???/</a>'
.'<p>&nbsp;</p><h5>Da Antonio befindet sich direkt neben der Kirche.'
.'Parkmöglichkeiten sind im Umkreis um den Italiener genügend vorhanden.'
]);
}
}

View file

@ -11,6 +11,42 @@ class PageSeeder extends Seeder
*/
public function run()
{
//
DB::table('pages')->insert([
'name' => 'home',
'content' => 'Das alte Problem: Die Sonne scheint und Dein Motorrad ruft, '
.'doch alle Deine Freunde sind plötzlich verhindert oder haben keine Zeit. '
.'Hier wollen wir Abhilfe schaffen. Unser Ziel: Kontaktvermittlung unter '
.'Motorradfahrer/innen für gemeinsame Touren. Auf diesen Seiten erfährst '
.'Du alles Wissenswerte über uns, unser Angebot für unsere Mitglieder sowie sonstige Aktivitäten.'
]);
DB::table('pages')->insert([
'name' => 'activities',
'content' => 'Selber anrufen und angerufen werden. '
.'Einmal im Jahr erhältst Du eine Liste aller IG-Mitglieder inkl. Telefonnummern.'
.'Die Erscheinungstermine unserer Mitgliederliste + News sind natürlich auf die Motorrad-Saison'
.'abgestimmt, ca: März, Juni und September (Saisonstart, -mitte, -ende). Für Eure (Urlaubs) Planung und'
.'damit der Winter nicht zu lange wird, halten wir in der November- Dezember-Ausgabe schon den'
.'Tourenkalender für das nächste Jahr für Euch bereit.'
.'<p>&nbsp;</p>'
.'<h5>Zusätzlich eröffnet Dir die Liste die Möglichkeit zur'
.'Teilnahme an einem regelmäßigen Stammtisch, gemeinsame Ausfahrten an Wochenenden, einer'
.'Urlaubsbörse sowie Saisonauftakt- und Jahrestreffen. Eigeninitiative ist hierbei erwünscht.</h5>'
.'<p>&nbsp;</p>'
.'<h5>Da leider auch diese Art der Adressenvermittlung nicht ganz ohne Kostenaufwand geht,'
.'müssen wir einmal jährlich einen Selbstkostenbeitrag in Höhe von 20,- EUR erheben.'
.'Diese Kosten entstehen durch Werbung, Porto, Erfassungsmaterialien etc..</h5>'
.'<p>&nbsp;</p>'
.'<h5>Hast Du jetzt immer noch eine positive Einstellung zu dieser Idee? Dann nichts wie hin.'
.'Stammtisch Düsseldorf: </h5>'
.'<p>&nbsp;</p>'
.'<h5>Wir treffen uns jeden 2. Mittwoch im Monat ab ca. 19 Uhr in der'
.'Trattoria and Bar Antonio, Roßstr. 87, 40476 Düsseldorf-Derendorf, Tel.: 0211/43637525.'
.'Stadtplan und Anfahrt mit öffentlichen Verkehrsmitteln findet ihr unter:<br/>'
.'<a href="#">http://???/</a>'
.'<p>&nbsp;</p><h5>Da Antonio befindet sich direkt neben der Kirche.'
.'Parkmöglichkeiten sind im Umkreis um den Italiener genügend vorhanden.'
]);
}
}

View file

@ -1,6 +1,7 @@
<?php
use Illuminate\Database\Seeder;
use Carbon\Carbon;
class TourSeeder extends Seeder
{
@ -11,6 +12,31 @@ class TourSeeder extends Seeder
*/
public function run()
{
//
}
DB::table('tours')->insert([
'name' => 'Eifeltour1',
'user_id' => 3,
'start' => Carbon::parse('2020-11-11'),
'status' => 'FINDET STATT',
'beschreibung' => 'Hier kann ein sehr langer Text stehen.'
]);
DB::table('tours')->insert([
'name' => 'Powertrip am Nürburgring',
'user_id' => 2,
'beschreibung' => 'Hier kann ein sehr langer Text stehen.',
'start' => Carbon::parse('2020-12-01'),
'status' => 'FINDET STATT',
]);
DB::table('tours')->insert([
'name' => 'Gemütliche Anfängertour am Unterbacher See',
'user_id' => 1,
'beschreibung' => 'Hier kann ein wirklich sehr langer Text stehen. <p>&nbsp;</p> Es sind auch mehrere Abschnitte möglich.',
'start' => Carbon::parse('2020-12-15'),
'status' => 'GECANCELT',
]);
}
}

View file

@ -54,7 +54,7 @@
<a class="nav-link {{ Request::is('member') ? 'active' : '' }}" href="/member">Mitgliederliste</a>
</li>
<li class="nav-item" style="font-size:1.5rem">
<a class="nav-link {{ Request::is('tourplan') ? 'active' : '' }}" href="/tourplan">Tourenplan</a>
<a class="nav-link {{ Request::is('tour') ? 'active' : '' }}" href="/tour">Tourenplan</a>
</li>
@endif
@endauth

View file

@ -0,0 +1,46 @@
@extends('layouts.app')
@section('content')
<div class="container text-center text-light mt-5">
<h1 class="text-center">Tourenplan</h1>
<a href="/pdf/tourenplan.pdf" class="text-center text-light">Download</a>
<div class="container text-primary">
.<ul class="list-group offset-2 col-8">
@foreach($tours as $tour)
<li class="list-group-item d-flex justify-content-between align-items-center">
{{ $tour->start }} - {{ $tour->name }} [?/?]
<span class="badge {{ $tour->status=="FINDET STATT" ? "badge-success" : "badge-danger" }} badge-pill">{{ $tour->status }}</span>
</li>
@endforeach
<!--
<li class="list-group-item d-flex justify-content-between align-items-center">
11.11.2020 - Eifeltour mit Dirk [10/10]
<span class="badge badge-success badge-pill">FINDET STATT</span>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center">
01.12.2020 - Nürburgring mit Ross [8/10]
<span class="badge badge-success badge-pill">FINDET STATT</span>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center">
15.12.2020 - Unterbacher See mit Torsten [1/10]
<span class="badge badge-danger badge-pill">GECANCELT</span>
</li>
-->
</ul>
</div>
@if(Auth::user()->role=="ADMIN" or Auth::user()->rolde=="MEMBER")
<div class="container text-primary">
<button type="submit" class="btn btn-danger col-2 mt-2 ">Neue Tour anlegen</button>
</div>
@endif
</div>
@endsection

View file

@ -22,7 +22,8 @@ Route::get('/test', 'PageController@page_home');
* */
Route::get('/', 'PageController@page_home')->name('home');
Route::get('/', 'PageController@page_home');
Route::get('/home', 'PageController@page_home')->name('home');
Route::post('/admin/store_home','AdminController@store_home');
Route::get('/activities', 'PageController@page_activities');
@ -30,8 +31,6 @@ Route::get('/become_member', function () { return view('users.become_member');
Route::get('/meetings', function () { return view('meetings'); });
Route::get('/tourplan', function () { return view('tourplan'); });
//Route::get('/memberlist','UserController@index');
//Route::get('/member/{user_id}','UserController@show');
Route::resource('/member',UserController::class);
Route::get('/admin/upload_tourplan', 'AdminController@upload_tourplan');
@ -44,6 +43,8 @@ Route::get('/admin/edit_home', 'AdminController@edit_home');
Route::get('/admin/edit_activities', 'AdminController@edit_activities');
Route::post('/admin/store_activities', 'AdminController@store_activities');
Route::resource('/tour', TourController::class);
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
//Route::get('/home', 'HomeController@index')->name('home');