From 9cc7e87a8498d8b51aac3b9f450b0b1760ce61de Mon Sep 17 00:00:00 2001
From: David <davidkwan95@gmail.com>
Date: Tue, 17 May 2016 00:44:44 +0700
Subject: [PATCH] Add recommended feature

---
 .../Http/Controllers/VendorUserController.php | 21 +++++++++++-
 IES-Bandung/app/Http/routes.php               |  1 +
 IES-Bandung/app/Model/Recommendation.php      | 30 +++++++++++++++++
 .../2016_05_16_164123_recommendation.php      | 32 +++++++++++++++++++
 .../resources/views/vendorUser.blade.php      |  6 +++-
 5 files changed, 88 insertions(+), 2 deletions(-)
 create mode 100644 IES-Bandung/app/Model/Recommendation.php
 create mode 100644 IES-Bandung/database/migrations/2016_05_16_164123_recommendation.php

diff --git a/IES-Bandung/app/Http/Controllers/VendorUserController.php b/IES-Bandung/app/Http/Controllers/VendorUserController.php
index 5303236..32a7800 100644
--- a/IES-Bandung/app/Http/Controllers/VendorUserController.php
+++ b/IES-Bandung/app/Http/Controllers/VendorUserController.php
@@ -9,6 +9,7 @@ use App\User;
 use App\Model\VendorUser;
 use App\Model\VendorRateAndReview;
 use App\Model\ObjectSell;
+use App\Model\Recommendation;
 use Auth;
 
 class VendorUserController extends Controller
@@ -27,12 +28,30 @@ class VendorUserController extends Controller
         if(is_null($rating))
             $rating = -1;
 
+        $loggedInUserId = Auth::user()['id'];
+        $recommended = count(Recommendation::getRecommendation($loggedInUserId, $vendorId))>0;
+
         return view('vendorUser', [
             'editable' => $editable,
             'user' => $user,
             'rating' => $rating,
             'objects' => $objects,
-            'updatedObjects' => $updatedObjects]);
+            'updatedObjects' => $updatedObjects,
+            'userId' => $loggedInUserId,
+            'vendorId' => $vendorId,
+            'recommended' => $recommended]);
+    }
+
+    public function recommend(Request $request){
+        $userId = Auth::user()["id"];
+        $vendorId = $request["vendorId"];
+        Recommendation::addRecommendation($userId, $vendorId);
+        $vendorUsername = VendorUser::
+                            join('users', 'users.id', '=', 'vendor_users.user_id')->
+                            where('vendor_users.id', '=', $vendorId)
+                            ->select('users.username')
+                            ->first()["username"];
+        return redirect('/profile/'.$vendorUsername);
     }
 
     public function showProfile($username){
diff --git a/IES-Bandung/app/Http/routes.php b/IES-Bandung/app/Http/routes.php
index c8dcc48..7173042 100755
--- a/IES-Bandung/app/Http/routes.php
+++ b/IES-Bandung/app/Http/routes.php
@@ -24,6 +24,7 @@ Route::get('/home', 'HomeController@index');
 Route::get('/profile', 'ProfileController@index');
 Route::get('/profile/{username}', ['uses' => 'ProfileController@showProfile']);
 Route::post('/profile/edit', ['uses' => 'ProfileController@editProfile']);
+Route::post('/profile/recommend', ['uses' => 'VendorUserController@recommend']);
 
 // Vendor's object sell
 Route::post('/item/add', 'ObjectSellController@createObjectSell');
diff --git a/IES-Bandung/app/Model/Recommendation.php b/IES-Bandung/app/Model/Recommendation.php
new file mode 100644
index 0000000..3c28208
--- /dev/null
+++ b/IES-Bandung/app/Model/Recommendation.php
@@ -0,0 +1,30 @@
+<?php
+
+namespace App\Model;
+
+use Illuminate\Database\Eloquent\Model;
+use App\User;
+
+class Recommendation extends Model
+{
+    protected $table = 'recommendation';
+
+    public static function getRecommendation($userId, $vendorId) {
+    	return Recommendation::
+            where('user_id', '=', $userId)
+            ->where('vendor_id', '=', $vendorId)
+            ->first();
+    }
+
+    public static function addRecommendation($userId, $vendorId) {
+        if(count(Recommendation::getRecommendation($userId, $vendorId)) > 0)
+            return;
+        
+        $model = new Recommendation;
+        $model->user_id = $userId;
+        $model->vendor_id = $vendorId;
+        $model->save();
+        return $model;
+    }
+
+}
diff --git a/IES-Bandung/database/migrations/2016_05_16_164123_recommendation.php b/IES-Bandung/database/migrations/2016_05_16_164123_recommendation.php
new file mode 100644
index 0000000..47525a8
--- /dev/null
+++ b/IES-Bandung/database/migrations/2016_05_16_164123_recommendation.php
@@ -0,0 +1,32 @@
+<?php
+
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Database\Migrations\Migration;
+
+class Recommendation extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('recommendation', function (Blueprint $table) {
+            $table->increments('id');
+            $table->integer('user_id');
+            $table->integer('vendor_id');
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        //
+    }
+}
diff --git a/IES-Bandung/resources/views/vendorUser.blade.php b/IES-Bandung/resources/views/vendorUser.blade.php
index 85d3887..1a0e2e1 100755
--- a/IES-Bandung/resources/views/vendorUser.blade.php
+++ b/IES-Bandung/resources/views/vendorUser.blade.php
@@ -67,7 +67,11 @@
 
                   <div class="pull-right  text-right">
                     <button class="btn btn-sm inline m-t-lg m-r-sm btn-default"><i class="m-r-xs fa fa-envelope"></i>Message</button>
-                    <button class="btn btn-sm inline m-t-lg btn-warning "><i class="m-r-xs fa fa-star"></i>Rekomendasikan</button>
+                    <form style="margin:0; padding:0; display:inline" action="recommend" method="post">
+                      {{ csrf_field() }}
+                      <input type="hidden" name="vendorId" value="{{$vendorId}}">
+                      <button class="btn btn-sm inline m-t-lg {{ $recommended?"btn-warning":"btn-default" }}"><i class="m-r-xs fa fa-star"></i>Rekomendasikan</button>
+                    </form>
                   </div>
                 </div>
               </div>
-- 
GitLab