From 596d01ee39c1fe0bbd260a61f8f4b0a4af875d80 Mon Sep 17 00:00:00 2001
From: Kurniandha Sukma Yunastrian <13516106@std.stei.itb.ac.id>
Date: Tue, 18 May 2021 21:05:54 +0700
Subject: [PATCH] Add phase 03

---
 app/Http/Controllers/PhaseController.php   | 70 ++++++++++++++++++
 app/Http/Controllers/ProjectController.php |  2 +-
 resources/views/phase/phase03.blade.php    | 86 ++++++++++++++++++++++
 routes/web.php                             |  1 +
 4 files changed, 158 insertions(+), 1 deletion(-)
 create mode 100644 resources/views/phase/phase03.blade.php

diff --git a/app/Http/Controllers/PhaseController.php b/app/Http/Controllers/PhaseController.php
index 9d9592b..92e9d3b 100644
--- a/app/Http/Controllers/PhaseController.php
+++ b/app/Http/Controllers/PhaseController.php
@@ -38,6 +38,8 @@ class PhaseController extends Controller
             $view = PhaseController::phase01View($project, $phaseNumber, $userRole);
         } else if ($phaseNumber == 2) {
             $view = PhaseController::phase02View($project, $phaseNumber, $userRole);
+        } else if ($phaseNumber == 3) {
+            $view = PhaseController::phase03View($project, $phaseNumber, $userRole);
         } else {
             abort(404);
         }
@@ -216,6 +218,74 @@ class PhaseController extends Controller
         return redirect()->route('project', ['id' => $request->projectId])->with('msg', 'Phase 2 submitted successfully');
     }
 
+    /**
+     * Open view first phase.
+     */
+    public function phase03View($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 == 3) {
+                    $status = "WIP";
+                }
+
+                $userWithStatus = array(
+                    "name" => $user->name,
+                    "status" => $status
+                );
+    
+                $users[] = $userWithStatus;
+            }
+
+            return view('phase.phase03', ['project' => $project, 'phaseNumber' => $phaseNumber, 'phaseName' => 'Submit Weight of Criteria', 'role' => $userRole, 'users' => $users]);
+        } else {
+            $criterias = DB::table('criterias')->where('idProject', $project->id)->where('used', 1)->get();
+
+            return view('phase.phase03', ['project' => $project, 'phaseNumber' => $phaseNumber, 'phaseName' => 'Submit Weight of Criteria', 'role' => $userRole, 'criterias' => $criterias]);
+        }
+    }
+
+    /**
+     * Submit third phase.
+     */
+    public function phase03Submit(Request $request)
+    {
+        DB::table('criteriaweights')->updateOrInsert(
+            ['idCriteria' => $request->criteria1, 'weight' => $request->weight1],
+            ['idUser' => Auth::id()]
+        );
+
+        DB::table('criteriaweights')->updateOrInsert(
+            ['idCriteria' => $request->criteria2, 'weight' => $request->weight2],
+            ['idUser' => Auth::id()]
+        );
+
+        DB::table('criteriaweights')->updateOrInsert(
+            ['idCriteria' => $request->criteria3, 'weight' => $request->weight3],
+            ['idUser' => Auth::id()]
+        );
+
+        DB::table('criteriaweights')->updateOrInsert(
+            ['idCriteria' => $request->criteria4, 'weight' => $request->weight4],
+            ['idUser' => Auth::id()]
+        );
+
+        DB::table('criteriaweights')->updateOrInsert(
+            ['idCriteria' => $request->criteria5, 'weight' => $request->weight5],
+            ['idUser' => Auth::id()]
+        );
+
+        DB::table('userprojects')->where('idUser', Auth::id())->increment('phase');
+
+        return redirect()->route('project', ['id' => $request->projectId])->with('msg', 'Phase 3 submitted successfully');
+    }
+
     /**
      * Calculate criteria votes from second phase.
      */
diff --git a/app/Http/Controllers/ProjectController.php b/app/Http/Controllers/ProjectController.php
index 9add345..1559c4e 100644
--- a/app/Http/Controllers/ProjectController.php
+++ b/app/Http/Controllers/ProjectController.php
@@ -62,7 +62,7 @@ class ProjectController extends Controller
             }
         }
 
-        return view('project', ['project' => $project, 'requirements' => $requirements, 'id' => $id, 'role' => $role, 'userPhase' => $userPhase, 'moderator' => $moderatorName, 'members' => $memberNames, 'users' => $pickableUsers, 'maxPhase' => 5]);
+        return view('project', ['project' => $project, 'requirements' => $requirements, 'id' => $id, 'role' => $role, 'userPhase' => $userPhase, 'moderator' => $moderatorName, 'members' => $memberNames, 'users' => $pickableUsers, 'maxPhase' => 7]);
     }
 
     /**
diff --git a/resources/views/phase/phase03.blade.php b/resources/views/phase/phase03.blade.php
new file mode 100644
index 0000000..0799262
--- /dev/null
+++ b/resources/views/phase/phase03.blade.php
@@ -0,0 +1,86 @@
+@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/03" 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 weight for each criteria<br>
+                        Rules:
+                        <ul>
+                            <li>1: very unimportant</li>
+                            <li>10: very important</li>
+                        <ul>
+                    </div>
+
+                    <div class="card-body">
+                        <table class="table">
+                            <thead>
+                                <tr>
+                                    <th scope="col">#</th>
+                                    <th scope="col">Criteria</th>
+                                    <th scope="col">Proposed Weight</th>
+                                </tr>
+                            </thead>
+                            <tbody>
+                            @foreach($criterias as $index => $criteria)
+                                <tr>
+                                    <th scope="row" class="align-middle">{{ $index + 1 }}</th>
+                                    <td class="align-middle">{{ $criteria->name }}</td>
+                                    <td class="align-middle">
+                                        <input type="hidden" name="criteria{{ $index + 1 }}" value="{{ $criteria->id }}">
+                                        <input type="number" class="form-control col-md-2" required="required" id="weight{{ $index + 1 }}" name="weight{{ $index + 1 }}" min="1" max="10">
+                                    </td>
+                                </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 aaabfe6..282bd62 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -31,6 +31,7 @@ Route::post('/project/addmember', [ProjectController::class, 'addMember']);
 Route::post('/project/updatephase', [PhaseController::class, 'updatePhase']);
 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('/requirement/add', [RequirementController::class, 'add']);
 
 // Redirect
-- 
GitLab