موقع كراء سيارات بإستعمال laravel الجزء الثالت

فهاد الجزء الثالت من موقع كراء سيارات بإستعمال laravel غادي نكملو الملفات لي غادي يمكنو المستخدم من التسجيل فالموقع ومنبعد يتكونيكطا كما غادي نزيدو الملف لي غادي يمكن المستخدم باش يكون عندو بروفايل ديالو وغادي نزيدو ملفات خاصة بحجوزات المستخدمين.

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


1- الملف users/register.blade.php


فالمجلد views زيد مجلد جديد سميه users فيه زيد ملف جديد سميه register.blade.php هادا الملف لي فيه الفورم لي كتمكن المستخدم من التسجيل فالموقع فمنبعد مكيدخل المعلومات ديالو فالحقول هاد المعلومات كتمشي لل fonction store لي كاينة فالcontroller UsersController وكاين أيضا الكود لي كيعرض رسائل الخطأ يلا كان شي حقل فارغ الكود ديال الملف هو :

                                    
                                        @extends('includes.layout-main')

@section('styles')

@endsection

@section('header')
    @include('includes.header')
@endsection

@section('content')
<div class="row">
    <div class="col-md-6 col-md-offset-3">
        @if(count($errors) > 0)
            @foreach($errors->all() as $error)
                <div class="alert alert-danger">{{$error}}</div>
            @endforeach
        @endif
        <div class="panel panel-primary" style="margin-top:30px">
            <h4 class="panel-heading" style="margin-top:-1px">Inscription</h4>
            <form action="{{route('users.store')}}" method="post" style="padding:20px;">
                <div class="form-group">
                    <label for="name">Nom & Prénom:*</label>
                    <input type="text" class="form-control" name="name" placeholder="Entrer votre nom & prénom">
                </div>
                <div class="form-group">
                    <label for="email">Email:*</label>
                    <input type="email" class="form-control" name="email"  placeholder="Entrer votre email">
                </div>
                <div class="form-group">
                    <label for="passe">Mot de passe:*</label>
                    <input type="password" class="form-control" name="password"  placeholder="Entrer votre mot de passe">
                </div>
                <div class="form-group">
                     <label for="tel">Téléphone:*</label>
                     <input type="tel" class="form-control" name="tel"  placeholder="Entrer votre téléphone">
                </div>
                <div class="form-group">
                    <label for="ville">Ville:*</label>
                    <input type="text" class="form-control" name="ville"  placeholder="Entrer votre ville">
                    <input type="hidden" class="form-control" name="_token" value="{{Session::token()}}">
                </div>
                <div class="form-group">
                    <input type="submit" class="btn btn-primary" name="submit" value="Valider">
                </div>
            </form>
        </div>
    </div>
</div>
@endsection

@section('footer')
    @include('includes.footer')
@endsection

@section('scripts')

@endsection
                                    
                                

2- الملف users/login.blade.php


فالمجلد users فيه زيد ملف جديد سميه login.blade.php هادا الملف لي فيه الفورم لي كتمكن المستخدم باش يتكونيكطا فمنبعد مكيدخل المعلومات ديالو فالحقول هاد المعلومات كتمشي لل fonction login لي كاينة فالcontroller UsersController وكاين أيضا الكود لي كيعرض رسائل الخطأ يلا كان شي حقل فارغ أو الكونيكسيون منجحتش الكود ديال الملف هو :

                                    
                                        @extends('includes.layout-main')

@section('styles')

@endsection

@section('header')
    @include('includes.header')
@endsection

@section('content')
<div class="row">
    <div class="col-md-6 col-md-offset-3">
        @if(count($errors) > 0)
            @foreach($errors->all() as $error)
                <div class="alert alert-danger">{{$error}}</div>
            @endforeach
        @endif
        @if(Session::has('fail'))
            <div class="alert alert-danger">
                {{Session::get('fail')}}
            </div>
        @endif
        <div class="panel panel-primary" style="margin-top:30px">
            <h4 class="panel-heading" style="margin-top:-1px">Connexion</h4>
            <form action="{{route('users.login')}}" method="post" style="padding:20px;">
                <div class="form-group">
                    <label for="email">Email:*</label>
                    <input type="email" class="form-control" name="email"  placeholder="Entrer votre email">
                    <input type="hidden" class="form-control" name="_token" value="{{Session::token()}}">
                </div>
                <div class="form-group">
                    <label for="passe">Mot de passe:*</label>
                    <input type="password" class="form-control" name="password"  placeholder="Entrer votre mot de passe">
                </div>
                <div class="form-group">
                    <input type="submit" class="btn btn-primary" name="submit" value="Valider">
                </div>
            </form>
        </div>
    </div>
</div>
@endsection

@section('footer')
    @include('includes.footer')
@endsection

@section('scripts')

@endsection
                                    
                                

3- الملف users/profile.blade.php


دائما فالمجلد users فيه زيد ملف جديد سميه profile.blade.php هادا الملف لي غادي يمكن المستخدم باش يكون عندو بروفايل فكنسترجع المعلومات ديال المستخدم بواسطة ل fonction show لي كاينة ف UsersController وأيضا السيارات لي دارليهم commande بواسطة ل fonction commands لي كاينة ف User.php كنعرض les commandes فجدول ويمكن للمستخدم يمسح commande منبعد مكيترسل لid ديالها لل fonction deleteCommand لي كاينة ف UsersController الكود ديال الملف هو :

                                      
                                        @extends('includes.layout-main')

@section('styles')

@endsection

@section('header')
    @include('includes.header')
@endsection

@section('content')
<div class="row">
    <div class="col-md-12">
           <h3 class="text-info" style="margin-top:-1px">Profile</h3>
           <hr>
           <div class="row">
             <div class="col-md-4">
                <div>
                    <img class="media-object thumbnail" src="http://lorempixel.com/150/150/" alt="...">
                </div>
            </div>
             <div class="col-md-3">
                <div class="thumbnail">
                    <div class="container">
                        <p><span class="text-danger">Nom & Prénom :</span> {{$user->nom}}</p>
                        <p><span class="text-danger">Email :</span> {{$user->email}}</p>
                        <p><span class="text-danger">Ville :</span> {{$user->ville}}</p>
                        <p><span class="text-danger">Téléphone :</span> {{$user->tel}}</p>
                    </div>
                </div>
            </div>
           </div>
        </div>
    </div>
    <div class="row">
        <div class="col-md-12">
            <h3 class="text-info">Mes réservations</h3>
            <table class="table">
                <tr>
                    <th>Voiture</th>
                    <th>Date location</th>
                    <th>Date restitution</th>
                    <th>Prix TTC</th>
                    <th>Action</th>
                </tr>
                @foreach($user->commands as $command)
                <tr>
                    <td>{{App\Car::find($command->car_id)->marque}}</td>
                    <td>{{$command->dateL}}</td>
                    <td>{{$command->dateR}}</td>
                    <td>{{$command->prixTTC}} dh</td>
                    <td>  
                     {!!Form::open(['method'=>'POST','action'=>['UsersController@deleteCommand',$command->id]])!!}
                        <div class="form-group">
                            {!!Form::hidden('car_id',App\Car::find($command->car_id)->id) !!}
                        </div>
                        <div class="form-group">
                            {!!Form::submit('Supprimer',['class'=>'btn btn-danger']) !!}
                        </div>
                    {!! Form::close() !!} 
                    </td>
                </tr>
                @endforeach
            </table>
        </div>
    </div>
</div>
@endsection

@section('footer')
    @include('includes.footer')
@endsection

@section('scripts')

@endsection
                                      
                                    

4- الملف CommandsController.php


كنمشي ل app/Http/Controllers كنزيد ملف جديد كنسميه CommandsController.php لي غادي تكون فيه fonction index لي كتسترجع les commandes لي عندنا فقاعدة البيانات وكترسلهم للملف index ديال les commandes ديال الأدمن ثم كاين fonction create كتوجه المستخدم للملف الخاص بكراء سيارة لي زدناه فالمجلد cars منبعد كاين fonction store لي كتحقق من أن الحقول مملوئين منبعد كنحول القيم لي استقبلت لتواريخ منبعد كنحسب الفرق ما بين تاريخ الكراء والتاريخ فاش غادي يرجع السيارة باش كنحصل على عدد الأيام لي كنضربهم فالثمن اليومي باش كنحصل على الثمن الإجمالي ثم كنسجل commande جديدة فقاعدة البيانات وكنسترجع السيارة لي تكرات بل id ديالها وكنردها ماشي disponible وكنوجه المستخدم للصفحة الرئيسية مع رسالة نجاح ثم كاين fonction destroy لي كتمكن الأدمن من حدف commande بل id ديالها و السيارة لي كانت فديك الكوموند كنردها disponible الكود ديال الملف هو :

                                        
                                            <?php

namespace App\Http\Controllers;
use DateTime;
use App\Car;
use Illuminate\Http\Request;
use App\Command;
use Auth;
use Session;
class CommandsController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
        $commands = Command::orderBy('created_at','DESC')->get();
        return view ('admin.commandes.index',compact('commands'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
        return view ('cars.hire');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
        $this->validate($request,[
            'dateR'=>'required',
            'dateL'=>'required'
        ]);
        $command = new Command();
        $location = new DateTime($request->dateL);
        $restitution = new DateTime($request->dateR);
        $jours = date_diff($location,$restitution);
        $command->prixTTC = 300 * $jours->format('%d');
        $command->dateL = $location;
        $command->dateR = $restitution;
        $command->user_id = Auth::user()->id;
        $command->car_id = Session::get('car_id');
        $command->save();
        $car = Car::find(Session::get('car_id'));
        $car->dispo = 0;
        $car->update();
        return redirect()->route('commands.create')->with(['success'=>'Réservation effectuée veuillez contactez l\'agence pour validation.']);
    }

    /**
     * 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(Request $request,$id)
    {
        //
        $command = Command::find($id);
        $command->delete();
        $car = Car::find($request->car_id);
        $car->dispo = 1;
        $car->update();
        return redirect()->route('commands.index')->with(['success'=>'Commande supprimée']);
    }
}

                                        
                                    

5- الملف Command.php


من بعد ف app كنزيد ملف كنسميه Command.php ولي عبارة عن model فيه fonction user لي كتدير la relation مابين الجدول users وcommands ولي كتقولنا بلي كل commande هي ملك لمستخدم واحد الكود ديال الملف هو :

                                        
                                            <?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Command extends Model
{
    //
    public function user(){
        return $this->belongsTo('App\User');
    }
}

                                        
                                    

كلمات مفاتيح :