From fa40edc458dcb3ee54639b5ebb9d90b2672203f0 Mon Sep 17 00:00:00 2001
From: W <W>
Date: Sat, 23 Feb 2019 15:24:55 +0700
Subject: [PATCH] fixing query

---
 app/Http/Controllers/TaskController.php | 42 ++++++++++++++++++++++---
 1 file changed, 37 insertions(+), 5 deletions(-)

diff --git a/app/Http/Controllers/TaskController.php b/app/Http/Controllers/TaskController.php
index 6657927..77cdc64 100644
--- a/app/Http/Controllers/TaskController.php
+++ b/app/Http/Controllers/TaskController.php
@@ -6,6 +6,8 @@ use Illuminate\Http\Request;
 use App\Task;
 use App\Group;
 use App\TasksMember;
+use Illuminate\Support\Facades\DB;
+use function GuzzleHttp\json_encode;
 class TaskController extends Controller
 {
 
@@ -134,10 +136,40 @@ class TaskController extends Controller
 
 
     public function getTasksFromGroupId(Request $req, $groupId) {
-        $tasks = Task::where('group_id', $groupId)->get();
-        return response(json_encode([
-            'data' => $tasks->toArray(),
-            'statusMessage' => 'success'
-        ]), 200);
+        if ($req->has(['status_kanban'])) {
+            $idTaskMember = TasksMember::all();
+            $idTaskMemberArr = array();
+            foreach($idTaskMember as $element){
+                array_push($idTaskMemberArr,$element['task_id']);
+            }
+            // echo(json_encode($idTaskMemberArr));
+            $taskNotIn = DB::table('tasks')
+            ->select('tasks.id','tasks.group_id','taskname','description', 'status_kanban', 'work_hour','tasks.created_at','tasks.updated_at', DB::raw('"-" as assignee'))
+            ->where([
+                'status_kanban' => $req->status_kanban,
+                'tasks.group_id'=> $groupId,
+            ])->whereNotIn('id', $idTaskMemberArr);
+
+            $tasksWithName = DB::table('tasks')
+            ->select('tasks.id','tasks.group_id','taskname','description', 'status_kanban', 'work_hour','tasks.created_at','tasks.updated_at','users.name as assignee')
+            ->join('tasks_member','tasks.id','=','task_id')
+            ->join('users','users.id','=','tasks_member.user_id')->where([
+                'status_kanban' => $req->status_kanban,
+                'tasks.group_id'=> $groupId,
+            ])->union($taskNotIn)->get();
+            return response(json_encode([
+                'data' => $tasksWithName->toArray(),
+                'statusMessage' => 'success'
+            ]), 200); 
+        } else {
+            $tasks = DB::table('tasks')
+            ->select('users.id','tasks.group_id','taskname','description', 'status_kanban', 'work_hour','tasks.created_at','tasks.updated_at','users.name')
+            ->join('tasks_member','tasks.id','=','task_id')
+            ->join('users','users.id','=','tasks_member.user_id')->get();            
+            return response(json_encode([
+                'data' => $tasks->toArray(),
+                'statusMessage' => 'success'
+            ]), 200);
+        }
     }
 }
-- 
GitLab