Application de gestion d'un hôtel ب laravel 5.5 الجزء الثالت


فهاد الجزء الثالت من Application de gestion d'un hôtel ب laravel 5.5 غادي نشوفو الملفات الخاصين بالغرف غادي نشوفو كيفاش يمكن لمستخدم يحجز غرفة ومنبعد متحجزغادي يمكن للأدمن يشوف لائحة الغرف لي محجوزة ولي مازالا خاوية بالإضافة للتاريخ لي فيه غادي يخواو فيه العامرين.

نظرة سريعة بالفيديو

1- الملف RoomsController.php

من بعد كانزيد ل Controller ديال الصفحة الخاصة بالغرف فكنمشي ل app/Http/Controllers كنزيد ملف جديد كنسميه RoomsController.php لي غادي تكون فيه les fonctions لي كيمكنوا من إضافة تعديل مشاهدة وحدف غرفة وكيف كتشوف les fonctions خاويين المهمة ديالك هي تعمرهم وتزيد les views الكود ديال الملف هو :

                                <?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

من بعد ف app كنزيد ملف كنسميه Room.php ولي عبارة عن model فيه fonction reservation لي كتدير la relation مابين الجدول rooms وreservations ولي كتقولنا بلي كل غرفة تابعة ل reservation الكود ديال الملف هو :

                                <?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

كنمشي ل app/Http/Controllers كنزيد ملف جديد كنسميه ReservationsController.php لي غادي تكون فيه fonction index لي كتسترجع les chambres لي عندنا فقاعدة البيانات وكترسلهم للملف book ديال reservations ولي غادي نزيدوه من بعد ثم كاين fonction store لي كتمكن من إضافة reservation فأولا  كنتحقق من أن الحقول مملوئين ثم كنسجل reservation جديدة فقاعدة البيانات وكنسترجع room لي تحجزت وكنعدل status ديالها كنردها كتساوي 0 يعني resérvée وكنوجه المستخدم  للصفحة الخاصة بالغرف مع رسالة نجاح الكود ديال الملف هو :

                                <?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

من بعد ف app كنزيد ملف كنسميه Reservation.php ولي عبارة عن model فيه fonction client لي كتدير la relation مابين الجدول clients وreservations ولي كتقولنا بلي كل reservation خاصة بمستخدم معين وكاين fonction room لي كتدير la relation مابين الجدول room وreservations ولي كتقولنا بلي كل reservation خاصة بغرفة معينة الكود ديال الملف هو :

                                    <?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

فالمجلد views زيد مجلد جديد سميه reservations فيه زيد ملف جديد سميه book.blade.php هادا الملف لي فيه كيتعرضوا les chambres لي عندنا ولي كيمكن المستخدم من حجز غرفة ولي كيجيونا من ل fonction index لي كاينة ReservationsController.php فكنخدم ب foreach باش كنعرضهم فالجدول وكنتحقق واش الغرفة محجوزة ولا لا ب status ديالها ومنبعد يلا كان المستخدم مكونيكطي وكليكا على réserver كتعرض modal فيها فورم فيها تاريخ الحجز وتاريخ الإفراغ بالإضافة لل id ديال الغرفة ولي كيمشيو لل fonction store لي كاينة ف ReservationsController.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
    
                                


بحث في الموقع


إشترك للتوصل بالجديد