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