Skip to content
Snippets Groups Projects
Commit a64d0834 authored by Luc Burckel's avatar Luc Burckel
Browse files

larabirds

parent b50ee577
Branches
No related merge requests found
Showing
with 286 additions and 2 deletions
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\BirdEloquent;
class BirdController extends Controller
{
/**
* Formulaire bird
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function formbird( Request $request )
{
return view('formbird')
->with('message',$request->session()->get('message'));
}
/**
* Add a bird
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function addBird( Request $request )
{
if ( !$request->filled(['nom','espece','lieuObservation','description']) )
return redirect()->route('formbird')->with('message','Some POST data are missing.');
$bird = new BirdEloquent;
$bird->nom = $request->nom;
$bird->description=$request->description;
$bird->espece=$request->espece;
$bird->lieuObservation = $request->lieuObservation;
$bird->dateObservation=now();
$bird->idOrnithologue=$request->session()->get('user')->id();
try
{
$bird->save();
}
catch (\Illuminate\Database\QueryException $e)
{
return redirect()->route('formbird')
->with('message','Sorry, this bird still exists. Please choose another one.');
}
return redirect()->route('account')->with('message','Bird created!');
}
/**
* Show list bird
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function listbird( Request $request )
{
$listbird = Article::where('idOrnithologue',$request->session()->get('user')->id())
->orderBy('dateObservation','desc')
->get();
return view('listbird')
->with('bird',$listbird)
->with('message',$request->session()->get('message'));
}
/**
* Show bird
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function bird( Request $request, int $id )
{
return view('article')
->with('article',Article::findOrFail($id))
->with('message',$request->session()->get('message'));
}
}
......@@ -96,6 +96,19 @@ class UserController extends Controller
return redirect()->route('account');
}
/**
* Profil
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function profil( Request $request )
{
return view('profil')
->with('user',$request->session()->get('user'))
->with('message',$request->session()->get('message'));
}
/**
* Add a user
......@@ -105,7 +118,7 @@ class UserController extends Controller
*/
public function addUser( Request $request )
{
if ( !$request->filled(['login','password','confirm']) )
if ( !$request->filled(['login','firstname','lastname','password','confirm']) )
return redirect()->route('signup')->with('message','Some POST data are missing.');
if ( $request->password !== $request->confirm )
......@@ -113,6 +126,8 @@ class UserController extends Controller
$user = new UserEloquent;
$user->login = $request->login;
$user->firstname=$request->firstname;
$user->lastname=$request->lastname;
$user->password = Hash::make($request->password);
try
......
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Bird extends Model
{
use HasFactory;
protected $table = 'BirdEloquent';
public $timestamps = false;
}
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class oiseau extends Model
{
use HasFactory;
protected $table = 'OiseauEloquent';
public $timestamps = false;
}
......@@ -18,6 +18,8 @@ class CreateUserEloquentsTable extends Migration
Schema::create(self::USER_TABLE, function (Blueprint $table) {
$table->bigIncrements('user_id');
$table->string('login')->unique();
$table->string('firstname');
$table->string('lastname');
$table->string('password',256);
});
}
......
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateOiseausTable extends Migration
{
private const OISEAU_TABLE = 'OiseauEloquent';
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create(self::OISEAU_TABLE, function (Blueprint $table) {
$table->id();
$table->foreignId('idOrnithologue')->constrained('UserEloquent')->onDelete('cascade');
$table->date('dateObservation')->nullable();
$table->string('lieuObservation');
$table->string('espece');
$table->string('nom');
$table->string('description');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('oiseaus');
}
}
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateBirdsTable extends Migration
{
private const BIRD_TABLE = 'BirdEloquent';
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create(self::BIRD_TABLE, function (Blueprint $table) {
$table->id();
$table->foreignId('idOrnithologue')->constrained('UserEloquent')->onDelete('cascade');
$table->date('dateObservation')->nullable();
$table->string('lieuObservation');
$table->string('espece');
$table->string('nom');
$table->string('description');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('birds');
}
}
No preview for this file type
......@@ -9,6 +9,9 @@
Welcome on your account.
</p>
<ul>
<li><a href="{{ route('profil') }}">Profil.</a></li>
<li><a href="{{ route('formbird') }}">Formulaire bird.</a></li>
<li><a href="{{ route('listbird') }}">List bird.</a></li>
<li><a href="{{ route('formpassword') }}">Change password.</a></li>
<li><a href="{{ route('deleteuser') }}">Delete my account.</a></li>
</ul>
......
@extends('layouts.app')
@section('title',{{ $bird->nom}})
@section('main')
@parent
@include('shared.gohome')
@endsection
\ No newline at end of file
@extends('layouts.app')
@section('title','List Bird in '{{ $bird->lieuObservation }})
@section('main')
@parent
@include('shared.gohome')
@endsection
\ No newline at end of file
@extends('layouts.app')
@section('title','List Bird')
@section('main')
@parent
@foreach ($birds as $bird)
<article>
</article>
@endforeach
@include('shared.gohome')
@endsection
\ No newline at end of file
@extends('layouts.app')
@section('title','Formulaire Bird')
@section('main')
@parent
<form action="{{ route('addBird') }}" method="post">
@csrf
<label for="nom">Nom scientifique </label> <input type="text" id="nom" name="nom" required autofocus>
<label for="espece">Espece </label><input type="text" id="espece" name="espece" required>
<label for="lieuObservation">Lieu d'observation </label><input type="text" id="lieuObservation" name="lieuObservation" required>
<label for="description">Description </label><input type="text" id="description" name="description" required>
<input type="submit" value="add bird">
</form>
@include('shared.gohome')
@endsection
\ No newline at end of file
@extends('layouts.app')
@section('title','My profile')
@section('main')
@parent
<p>
Hello {{ $user->login }} !<br>
Your informations:
</p>
<ul>
<li>Firstname: {{ $user->firstname }}.</li>
<li>Lastname: {{ $user->lastname }}.</li>
</ul>
@include('shared.gohome')
@endsection
\ No newline at end of file
<section>
<p>Go back to <a href="{{ route('account') }}">Home</a>.</p>
</section>
\ No newline at end of file
......@@ -7,6 +7,8 @@
<form action="{{ route('adduser') }}" method="post">
@csrf
<label for="login">Login</label> <input type="text" id="login" name="login" required autofocus>
<label for="firstname">Firstname</label> <input type="text" id="firstname" name="firstname" required>
<label for="lastname">Lastname</label> <input type="text" id="lastname" name="lastname" required>
<label for="password">Password</label> <input type="password" id="password" name="password" required>
<label for="confirm">Confirm password</label><input type="password" id="confirm" name="confirm" required>
<input type="submit" value="Signup">
......
......@@ -32,6 +32,12 @@ Route::prefix('admin')->middleware('auth.myuser')->group( function() {
Route::get('formpassword', [UserController::class,'formpassword'])->name('formpassword');
Route::get('account', [UserController::class,'account'])->name('account');
Route::get('signout', [UserController::class,'signout'])->name('signout');
Route::get('profil', [UserController::class,'profil'])->name('profil');
Route::prefix('bird')->group( function() {
Route::get('formbird', [BirdController::class,'formbird'])->name('formbird');
Route::post('addBird', [BirdController::class,'addBird'])->name('addBird');
Route::get('listbird', [BirdController::class,'listbird'])->name('listbird');
Route::get('bird/{id}', [BirdController::class,'bird'])->name('bird');
});
});
// ------------------------------------------------------------------------
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment