diff --git a/app/Http/Controllers/PhaseController.php b/app/Http/Controllers/PhaseController.php
index 1230f2a2a648d784582f229227d425e33a0ed79f..b110bd6abcb91698d435c9efb9a75f4df997a6f1 100644
--- a/app/Http/Controllers/PhaseController.php
+++ b/app/Http/Controllers/PhaseController.php
@@ -42,6 +42,8 @@ class PhaseController extends Controller
             $view = PhaseController::phase03View($project, $phaseNumber, $userRole);
         } else if ($phaseNumber == 4) {
             $view = PhaseController::phase04View($project, $phaseNumber, $userRole);
+        } else if ($phaseNumber == 5) {
+            $view = PhaseController::phase05View($project, $phaseNumber, $userRole);
         } else {
             abort(404);
         }
@@ -374,6 +376,64 @@ class PhaseController extends Controller
         return redirect()->route('project', ['id' => $request->projectId])->with('msg', 'Phase 4 submitted successfully');
     }
 
+    /**
+     * Open view fifth phase.
+     */
+    public function phase05View($project, $phaseNumber, $userRole)
+    {
+        if ($userRole == 1) {
+            $members = DB::table('userprojects')->where('idProject', $project->id)->where('role', 2)->get();
+
+            $users = [];
+            foreach($members as $member) {
+                $user = DB::table('users')->where('id', $member->idUser)->first();
+
+                $status = "Done";
+                if ($member->phase == 5) {
+                    $status = "WIP";
+                }
+
+                $userWithStatus = array(
+                    "name" => $user->name,
+                    "status" => $status
+                );
+    
+                $users[] = $userWithStatus;
+            }
+
+            return view('phase.phase05', ['project' => $project, 'phaseNumber' => $phaseNumber, 'phaseName' => 'Submit Weight of Criteria', 'role' => $userRole, 'users' => $users]);
+        } else {
+            $requirements = DB::table('requirements')->where('idProject', $project->id)->get();
+
+            $criterias = DB::table('criterias')->where('idProject', $project->id)->where('used', 1)->get();
+
+            return view('phase.phase05', ['project' => $project, 'phaseNumber' => $phaseNumber, 'phaseName' => 'Submit Weight of Criteria', 'role' => $userRole, 'requirements' => $requirements, 'criterias' => $criterias]);
+        }
+    }
+
+    /**
+     * Submit fifth phase.
+     */
+    public function phase05Submit(Request $request)
+    {
+        $requirements = DB::table('requirements')->where('idProject', $request->projectId)->get();
+
+        for ($i = 1; $i <= count($requirements); $i++) {
+            for ($j = 1; $j <= 5; $j++) {
+                DB::table('userscores')->updateOrInsert([
+                    'idUser' => Auth::id(),
+                    'idRequirement' => $request->input('requirement-' . $i . '-' . $j),
+                    'idCriteria' => $request->input('criteria-' . $i . '-' . $j),
+                    'score' => $request->input('score-' . $i . '-' . $j)
+                ]);
+            }
+        }
+
+        DB::table('userprojects')->where('idUser', Auth::id())->increment('phase');
+
+        return redirect()->route('project', ['id' => $request->projectId])->with('msg', 'Phase 5 submitted successfully');
+    }
+
     /**
      * Calculate criteria votes from second phase.
      */
diff --git a/database/migrations/2021_05_19_035127_create_userscores_table.php b/database/migrations/2021_05_19_035127_create_userscores_table.php
new file mode 100644
index 0000000000000000000000000000000000000000..d486edcff9e0a533a0df4f3926152ef32663d491
--- /dev/null
+++ b/database/migrations/2021_05_19_035127_create_userscores_table.php
@@ -0,0 +1,35 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class CreateUserscoresTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('userscores', function (Blueprint $table) {
+            $table->id();
+            $table->integer('idUser');
+            $table->integer('idRequirement');
+            $table->integer('idCriteria');
+            $table->integer('score');
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('userscores');
+    }
+}
diff --git a/database/migrations/2021_05_19_035530_create_scores_table.php b/database/migrations/2021_05_19_035530_create_scores_table.php
new file mode 100644
index 0000000000000000000000000000000000000000..baecb65189d17fab993eb94d0a97a19607fc8ac6
--- /dev/null
+++ b/database/migrations/2021_05_19_035530_create_scores_table.php
@@ -0,0 +1,35 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class CreateScoresTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('scores', function (Blueprint $table) {
+            $table->id();
+            $table->integer('idRequirement');
+            $table->integer('idCriteria');
+            $table->integer('score');
+            $table->integer('status');
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('scores');
+    }
+}
diff --git a/database/migrations/2021_05_19_040332_create_scorevotes_table.php b/database/migrations/2021_05_19_040332_create_scorevotes_table.php
new file mode 100644
index 0000000000000000000000000000000000000000..d831a625e5960d82d07ad08899bcbd7a8258ff1e
--- /dev/null
+++ b/database/migrations/2021_05_19_040332_create_scorevotes_table.php
@@ -0,0 +1,34 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class CreateScorevotesTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('scorevotes', function (Blueprint $table) {
+            $table->id();
+            $table->integer('idUser');
+            $table->integer('idScore');
+            $table->integer('vote');
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('scorevotes');
+    }
+}
diff --git a/resources/views/phase/phase05.blade.php b/resources/views/phase/phase05.blade.php
new file mode 100644
index 0000000000000000000000000000000000000000..33df0d7117a95311b54ab04df5c3938af05c663b
--- /dev/null
+++ b/resources/views/phase/phase05.blade.php
@@ -0,0 +1,93 @@
+@extends('phase')
+
+@section('childphase')
+    @if($role == 1)
+    <!-- ADMIN VIEW -->
+        <div class="col-md-12">
+            <div class="card mt-4">
+                <div class="card-header font-weight-bold bg-primary text-white">Phase {{ $phaseNumber }}: {{ $phaseName }}</div>
+
+                <div class="card-body">
+                    <table class="table">
+                        <thead>
+                            <tr>
+                                <th scope="col">#</th>
+                                <th scope="col">Name</th>
+                                <th scope="col">Status</th>
+                            </tr>
+                        </thead>
+                        <tbody>
+                        @foreach($users as $index => $user)
+                            <tr>
+                                <th scope="row" class="align-middle">{{ $index + 1 }}</th>
+                                <td class="align-middle">{{ $user['name'] }}</td>
+                                <td class="align-middle">{{ $user['status'] }}</td>
+                            </tr>
+                        @endforeach
+                        </tbody>
+                    </table>
+                </div>
+                <div class="card-footer bg-white">
+                    <a class="btn btn-secondary" href="/project/{{ $project->id }}" role="button">Back to project page</a>
+                </div>
+            </div>
+        </div>
+    @else
+    <!-- MEMBER VIEW -->
+        <div class="col-md-12">
+            <div class="card mt-4">
+                <form action="/project/phase/05" method="post">
+                    {{ csrf_field() }}
+                    <div class="card-header font-weight-bold bg-primary text-white">Phase {{ $phaseNumber }}: {{ $phaseName }}</div>
+
+                    <div class="card-body">
+                        <b>Instruction:</b> <br>
+                        Submit the score for each requirement on each criteria<br>
+                        Rules:
+                        <ul>
+                            <li>0: requirement <b>does not affect</b> the criteria </li>
+                            <li>1: requirement <b>have little effect</b> on the criteria </li>
+                            <li>2: requirement <b>have moderate effect</b> on the criteria </li>
+                            <li>3: requirement <b>have major effect</b> on the criteria </li>
+                        <ul>
+                    </div>
+
+                    <div class="card-body">
+                        <table class="table">
+                            <thead>
+                                <tr>
+                                    <th scope="col">#</th>
+                                    <th scope="col">Requirement</th>
+                                    @foreach($criterias as $criteria)
+                                        <th scope="col">{{$criteria->name}}</th>
+                                    @endforeach
+                                </tr>
+                            </thead>
+                            <tbody>
+                            @foreach($requirements as $indexR => $requirement)
+                                <tr>
+                                    <th scope="row" class="align-middle">R{{ $requirement->number + 1 }}</th>
+                                    <td class="align-middle">{{ $requirement->name }}</td>
+                                    @foreach($criterias as $indexC => $criteria)
+                                        <td class="align-middle">
+                                            <input type="hidden" name="requirement-{{ $indexR + 1 }}-{{ $indexC + 1 }}" value="{{ $requirement->id }}">
+                                            <input type="hidden" name="criteria-{{ $indexR + 1 }}-{{ $indexC + 1 }}" value="{{ $criteria->id }}">
+                                            <input type="number" class="form-control" required="required" id="score-{{ $indexR + 1 }}-{{ $indexC + 1 }}" name="score-{{ $indexR + 1 }}-{{ $indexC + 1 }}" min="0" max="3">
+                                        </td>
+                                    @endforeach
+                                </tr>
+                            @endforeach
+                            </tbody>
+                        </table>
+                        <input type="hidden" id="projectId" name="projectId" value="{{ $project->id }}">
+                    </div>
+
+                    <div class="card-footer bg-white">
+                        <a class="btn btn-secondary" href="/project/{{ $project->id }}" role="button">Back to project page</a>
+                        <button type="submit" class="btn btn-success float-right">Submit</button>
+                    </div>
+                </form>
+            </div>
+        </div>
+    @endif
+@endsection
diff --git a/routes/web.php b/routes/web.php
index 04854e45d10a154ce2b9f83e617941c4afcab7d0..650ab33a1468a179054ec3f1500c3992f50a5887 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -33,6 +33,7 @@ Route::post('/project/phase/01', [PhaseController::class, 'phase01Submit']);
 Route::post('/project/phase/02', [PhaseController::class, 'phase02Submit']);
 Route::post('/project/phase/03', [PhaseController::class, 'phase03Submit']);
 Route::post('/project/phase/04', [PhaseController::class, 'phase04Submit']);
+Route::post('/project/phase/05', [PhaseController::class, 'phase05Submit']);
 Route::post('/requirement/add', [RequirementController::class, 'add']);
 
 // Redirect