Application de gestion d'un hôtel ب laravel 5.5 الجزء الثالت
نظرة سريعة بالفيديو
1- الملف RoomsController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class RoomsController 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 int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}
2- الملف Room.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Room extends Model
{
//
protected $fillable = ['status'];
public function reservation(){
return $this->belongsTo('App\Reservation');
}
}
3- الملف ReservationsController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Room;
use App\Reservation;
use Auth;
class ReservationsController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
$rooms = Room::all();
return view('reservations.book',compact('rooms'));
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
$this->validate($request,[
'dateFrom'=>'required|date',
'dateTo'=>'required|date'
]);
$room = Room::find($request->room_id);
$reservation = new Reservation();
$reservation->date_in = $request->dateFrom;
$reservation->date_out = $request->dateTo;
$reservation->client_id = Auth::user()->id;
$reservation->room_id = $request->room_id;
$reservation->save();
$room->status = 0;
$room->update();
return redirect()->route('reservations.index')->with(['success'=>'Chambre resérvée']);
}
}
4- الملف Reservation.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Reservation extends Model
{
//
public function client(){
return $this->belongsTo('App\Client');
}
public function room(){
return $this->belongsTo('App\Room');
}
}
5- الملف reservations/book.blade.php
@extends('layouts.app')
@section('styles')
@endsection
@section('content')
<div class="row" style="padding:10px;">
<div class="medium-12 columns">
@if(Session::has('success'))
<div class="alert-success">{{Session::get('success')}}</div>
@endif
<table class="stack">
<thead>
<tr>
<th width="200">Chambre</th>
<th width="200">Disponibilité</th>
<th width="200">Action</th>
</tr>
</thead>
<tbody>
@foreach($rooms as $room)
<tr>
<td>{{$room->name}}</td>
<td>
@if($room->status == 1)
<h7><div class="callout success">Disponible</div></h7>
@else
<h7><div class="callout warning">Resérvée</div></h7>
@endif
</td>
<td>
@if(isset(Auth::user()->id))
@if($room->status == 1)
<h7><a href="#" class="button success hollow" data-open="myModal{{$room->id}}">Resérver</a></h7>
<div id="myModal{{$room->id}}" class="reveal" data-reveal aria-labelledby="modalTitle" aria-hidden="true" role="dialog">
<h2 id="modalTitle">Resérvation pour: <b>{{Auth::user()->name}}</b></h2>
<form action="{{route('reservations.store')}}" method="post">
<input type="hidden" name="_token" value="{{Session::token()}}">
<input type="hidden" name="room_id" value="{{$room->id}}">
<div class="medium-1 columns">De:</div>
<div class="medium-2 columns"><input name="dateFrom" value="<?php echo date('Y-m-d');?>" type="date"/></div>
<div class="medium-1 columns">A:</div>
<div class="medium-2 columns"><input name="dateTo" value="<?php echo date('Y-m-d');?>" type="date"/></div>
<div class="medium-2 columns"><input class="button" type="submit" value="Valider" /></div>
</form>
<button class="close-button" data-close aria-label="Close modal" type="button">
<span aria-hidden="true">×</span>
</button>
</div>
@else
<span class="label info">Sera disponible le : {{$reservation = App\Reservation::where('room_id',$room->id)->first()->date_out}}</span>
@endif
</td>
@else
@if($room->status == 1)
<h7><a href="{{route('clients.login')}}" class="button success hollow">Resérver</a></h7>
@endif
@endif
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
@endsection
@section('scripts')
@endsection