diff --git a/app/GroupsMember.php b/app/GroupsMember.php
index c565c23c53b9024b1a3cbe3a6d11e1c9d3aa5911..8bf1a5144aa02804433b1f991a37bd0fa15738d7 100644
--- a/app/GroupsMember.php
+++ b/app/GroupsMember.php
@@ -19,6 +19,9 @@ class GroupsMember extends Model
     protected $table = 'groups_member';
     public $incrementing = false;
     protected $primaryKey = ['group_id', 'user_id'];
+    protected $fillable = [
+        'group_id', 'user_id'
+    ];
     /**
      * Set the keys for a save update query.
      *
diff --git a/app/Http/Controllers/GroupsController.php b/app/Http/Controllers/GroupsController.php
index 152624eecf7ef29eb3a699d1859e83a5cf98e1a8..c96fa691296ad53a4a19337cf5241fb3f66d73f5 100644
--- a/app/Http/Controllers/GroupsController.php
+++ b/app/Http/Controllers/GroupsController.php
@@ -4,38 +4,39 @@ namespace App\Http\Controllers;
 
 use Illuminate\Http\Request;
 use App\Groups;
+use App\GroupsMember;
+use Illuminate\Support\Facades\DB;
 
 class GroupsController extends Controller
 {
     public function store(Request $request) {
-        $validator = $this->validate($request);
+        $request->validate([
+            'group_name' => 'required',
+            'description' => 'required',
+            'user_id' => 'required',
+        ]);
+        $input = $request->all();
 
-        if ($validator->fails()) {
-            return response(json_encode([
-                'statusMessage' => 'Bad Request'
-            ]), 400);
-        } else {
-            $input = $request->all();
-            $isGroupExist = Groups::find($input['group_id']);
+        
+        DB::beginTransaction();
 
-            if (is_null($isGroupExist)) {
-                $group = Groups::create([
-                    'group_id' => $input['group_id'],
-                    'group_name' => $input['group_name'],
-                    'description' => $input['description']
-                ]);
-                $group->save();
-                
-                return response(json_encode([
-                    'statusMessage' => 'Success',
-                    'data' => $group->toArray()
-                ]), 200);
-            } else {
-                return response(json_encode([
-                    'statusMessage' => 'Bad Request'
-                ]), 400);
-            }
-        }
+        $group = Groups::create([
+            'group_name' => $input['group_name'],
+            'description' => $input['description'],
+        ]);
+        GroupsMember::create([
+            'group_id' => $group['id'],
+            'user_id' => $input['user_id'],
+            'role' => $input['role'],
+            'high_score' => 0
+        ]);
+
+        DB::commit();
+
+        return response(json_encode([
+            'statusMessage' => 'success',
+            'data' => NULL
+        ]), 200);
     }
 
     public function show(Request $request, $groupId) {
@@ -55,22 +56,22 @@ class GroupsController extends Controller
         }
     }
 
-    public function update(Request $request) {
-        $validator = $this->validate($request);
+    public function update(Request $request, $groupId) {
+        $validator = $this->validate2($request);
 
         if ($validator->fails()) {
             return response(json_encode([
                 'statusMessage' => 'Bad Request'
             ]), 400);
         } else {
-            $input = $request->all();
-            $isGroupExist = Groups::find($input['group_id']);
+            $isGroupExist = Groups::find($groupId);
 
             if (is_null($isGroupExist)) {
                 return response(json_encode([
                     'statusMessage' => 'Bad Request'
                 ]), 400);
             } else {
+                $input = $request->all();
                 $group = Groups::create([
                     'group_name' => $input['group_name'],
                     'description' => $input['description']
@@ -101,7 +102,7 @@ class GroupsController extends Controller
         }
     }
 
-    private function validate(Request $request) {
+    public function validate2(Request $request) {
         $input = $request->all();
         return Validator::make($input, [
             'group_name' => 'required'
@@ -109,6 +110,6 @@ class GroupsController extends Controller
     }
 
     public function tasks() {
-        $this->hasMany('App\Task', 'group_id');
+        return $this->hasMany('App\Task', 'group_id');
     }
 }
\ No newline at end of file
diff --git a/app/Http/Controllers/GroupsMemberController.php b/app/Http/Controllers/GroupsMemberController.php
index 3128035535ef4cbf306994b43b721eada26d46d3..f9551355b05ac7c832c3c00f42a8243122b3476a 100644
--- a/app/Http/Controllers/GroupsMemberController.php
+++ b/app/Http/Controllers/GroupsMemberController.php
@@ -5,12 +5,17 @@ namespace App\Http\Controllers;
 use Illuminate\Http\Request;
 use App\Groups;
 use App\GroupsMember;
+use App\User;
 use Validator;
+use Illuminate\Support\Facades\DB;
 
 class GroupsMemberController extends Controller
 {
     public function store(Request $request) {
-        $validator = $this->validate($request);
+        $validator = Validator::make($request->all(), [
+            'group_id' => 'required',
+            'email' => 'required'
+        ]);;
 
         if ($validator->fails()) {
             return response(json_encode([
@@ -18,50 +23,61 @@ class GroupsMemberController extends Controller
             ]), 400);
         } else {
             $input = $request->all();
-            $isGroupMemberExist = GroupsMember::find($input['group_id'])::find($input['user_id']);
-            $groupMember = GroupsMember::create([
-                'group_id' => $input['group_id'],
-                'user_id' => $input['user_id'],
-                'role' => $input['role'],
-                'high_score' => $input['high_score']
-            ]);
+            $user = User::where('email', $input['email'])->first();
+            if (is_null($user)) {
+                return response(json_encode([
+                    'statusMessage' => 'error',
+                    'data' => NULL
+                ]), 404);
+            } 
+            $groupMember = GroupMember::where([
+                'user_id' => $user->id,
+                'group_id' => $input['group_id']
+            ])->first();
+
 
-            $group = Group::find($groupId);
+            $group = Group::find($input['group_id']);
 
             if (is_null($group)) {
                 return response(json_encode([
                     'statusMessage' => 'Bad Request'
                 ]), 400);
             } else {
-                $groupMember->save();
-
+                if (is_null($groupMember)) {
+                    $groupMember = GroupMember::create([
+                        'group_id' => $input['group_id'],
+                        'user_id' => $user->id,
+                        'role' => $input['role'],
+                        'high_score' => 0
+                    ]);
+                }
                 return response(json_encode([
-                    'statusMessage' => ['Success'],
+                    'statusMessage' => 'success',
                     'data' => $groupMember->toArray()
                 ]), 200);
             }
         }
     }
 
-    public function show(Request $request, $groupId) {
-        $isGroupMemberExist = GroupsMember::find($groupId);
-
-        if (is_null($groupMember)) {
-            return response(json_decode([
-                'statusMessage' => 'Not Found'
-            ]), 404);
-        } else {
-            $member = $group->toArray();
+    public function show(Request $request, $groupId, $userId) {
+        $group = Groups::find($groupId);
 
+        if (!is_null($group)) {
+            $users = DB::table('groups_member')->select('user_id', 'role', 'high_score','groups.created_at','groups.updated_at','group_id', 'group_name','description')->join('groups','groups_member.group_id','=','groups.id')->where('group_id',$groupId)->get();
             return response(json_encode([
-                'statusMessage' => 'Success',
-                'data' => $member
+                'statusMessage' => 'success',
+                'data' => $users->toArray()
             ]), 200);
+        } else {
+            return response(json_encode([
+                'statusMessage' => 'error',
+                'data' => null
+            ]), 404);
         }
     }
 
     public function update(Request $request, $groupId, $userId) {
-        $validator = $this->validate($request);
+        $validator = $this->validate2($request);
 
         if ($validator->fails()) {
             return response(json_encode([
@@ -107,7 +123,7 @@ class GroupsMemberController extends Controller
         }
     }
 
-    private function validate(Request $request) {
+    private function validate2(Request $request) {
         $input = $request->all();
         return Validator::make($input, [
             'role' => 'required',
diff --git a/app/Http/Controllers/TasksController.php b/app/Http/Controllers/TasksController.php
index b0ea7ad5460789d304535f499d94551e95a57b33..dbc6aae6d90a9036caf407b84a6b7af2367e0e4c 100644
--- a/app/Http/Controllers/TasksController.php
+++ b/app/Http/Controllers/TasksController.php
@@ -6,7 +6,7 @@ use Illuminate\Http\Request;
 use App\Tasks;
 use App\Groups;
 use App\TasksMember;
-class TaskController extends Controller
+class TasksController extends Controller
 {
 
     /**
@@ -22,14 +22,15 @@ class TaskController extends Controller
         $result = $request->has([
             'group_id',
             'taskname',
-            'description'
+            'description',
+            'kanban_status'
         ]);
         if ($result) {
             $form = [
                 'group_id' => $request->group_id,
                 'taskname' => $request->taskname,
                 'description' => $request->description,
-                'status_kanban' => Config::get('constants.STATUS_KANBAN.PRODUCT_BACKLOG')
+                'kanban_status' => $request->status_kanban
             ];
             $task = Tasks::create($form);
             return response(json_encode([
@@ -82,16 +83,16 @@ class TaskController extends Controller
     {
         $user = $request->user();
         $result = $request->has([
-            'taskname',
+            'task_name',
             'description',
-            'status_kanban',
+            'kanban_status',
             'complexity'
         ]);
         if ($result) {
             $form = [
-                'taskname' => $request->taskname,
+                'task_name' => $request->taskname,
                 'description' => $request->description,
-                'status_kanban' => $request->status_kanban,
+                'kanban_status' => $request->status_kanban,
                 'complexity' => $request->complexity
             ];
             $task = Tasks::find($taskId)->first();
@@ -122,7 +123,7 @@ class TaskController extends Controller
      * @param  int  $id
      * @return \Illuminate\Http\Response
      */
-    public function destroy($taskId)
+    public function destroy(Request $request, $taskId)
     {
         Tasks::destroy($taskId);
         return response(json_encode([
@@ -131,12 +132,11 @@ class TaskController extends Controller
         ]), 200);
     }
 
-
     public function getTasksFromGroupId(Request $req, $groupId) {
-        $tasks = Groups::find($groupId)->tasks;
+        $tasks = Tasks::where('group_id', $groupId)->get();
         return response(json_encode([
             'data' => $tasks->toArray(),
             'statusMessage' => 'success'
-        ]), 400);
+        ]), 200);
     }
 }
diff --git a/app/Http/Controllers/TasksMemberController.php b/app/Http/Controllers/TasksMemberController.php
index e8346e262d0e944db8caa855ecff7eb4238f6fc4..3bed309c378e1a4bffd06781ec634500c9bd9725 100644
--- a/app/Http/Controllers/TasksMemberController.php
+++ b/app/Http/Controllers/TasksMemberController.php
@@ -7,16 +7,21 @@ use App\TasksMember;
 class TasksMemberController extends Controller
 {
     public function addMember(Request $request) {
-        $user = $request->user();
         $result = $request->has([
             'task_id',
             'user_id'
         ]);
         if ($result) {
-            $memberTask = TasksMember::create([
+            $memberTask = TasksMember::where([
                 'task_id' => $request->task_id,
                 'user_id' => $request->user_id
-            ]);
+            ])->first();
+            if (is_null($memberTask)) {
+                $memberTask = TasksMember::create([
+                    'task_id' => $request->task_id,
+                    'user_id' => $request->user_id
+                ]);
+            }
             return response(json_encode([
                 'data' => $memberTask->toArray(),
                 'statusMessage'=> 'success',
@@ -31,7 +36,6 @@ class TasksMemberController extends Controller
 
 
     public function removeMember(Request $request) {
-        $user = $request->user();
         $result = $request->has([
             'task_id',
             'user_id'
@@ -41,7 +45,9 @@ class TasksMemberController extends Controller
                 'task_id' => $request->task_id,
                 'user_id' => $request->user_id
             ])->first();
-            $memberTask->delete();
+            if (!is_null($memberTask)) {
+                $memberTask->delete();
+            }
             return response(json_encode([
                 'data' => NULL,
                 'statusMessage'=> 'success',
diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php
index 98cc4cf80c45e2f70937a88790c58d3507f90178..a9fce09de34fb8f3487d3bd52eb6b077f9c5881c 100644
--- a/app/Http/Controllers/UserController.php
+++ b/app/Http/Controllers/UserController.php
@@ -69,4 +69,11 @@ class UserController extends Controller
             'statusMessage'=> "success",
         ]), 200);
     }
+
+    public function getGroups($userId){
+        return response(json_encode([
+            'data' => User::getGroups($userId)->toArray(),
+            'statusMessage'=> "success",
+        ]), 200);
+    }
 }
diff --git a/app/Tasks.php b/app/Tasks.php
index 11e661dcbe49f578a35ab1b77ffb1cfd50e9d94d..1d539079240a21644bcf990dcbe10e39be60c348 100644
--- a/app/Tasks.php
+++ b/app/Tasks.php
@@ -7,6 +7,11 @@ use Illuminate\Database\Eloquent\Model;
 class Tasks extends Model
 {
 
+    protected $fillable = [
+        'group_id', 'taskname',
+        'description', 'status_kanban'
+    ];
+
     public function groups()
     {
         return $this->belongsTo('App\Groups', 'group_id');
diff --git a/app/TasksMember.php b/app/TasksMember.php
index 3dd994de31799cd5ae94da35f937feae7e062b22..3fc6bb4d753a6c8aa43a541523ee67a1850bbed9 100644
--- a/app/TasksMember.php
+++ b/app/TasksMember.php
@@ -9,6 +9,9 @@ class TasksMember extends Model
     protected $table = 'tasks_member';
     public $incrementing = false;
     protected $primaryKey = ['task_id', 'user_id'];
+    protected $fillable = [
+        'task_id', 'user_id',
+    ];
     /**
      * Set the keys for a save update query.
      *
diff --git a/app/User.php b/app/User.php
index d9f93fa7e28f76b9f26bb078e7d970660eaf4f0e..0f83c51d5e62e7026d8a381270ce2fa9a55b544c 100644
--- a/app/User.php
+++ b/app/User.php
@@ -6,6 +6,10 @@ use Illuminate\Notifications\Notifiable;
 use Laravel\Passport\HasApiTokens;
 use Illuminate\Contracts\Auth\MustVerifyEmail;
 use Illuminate\Foundation\Auth\User as Authenticatable;
+use Nexmo\Network\Number\Request;
+use App\GroupMember;
+use Illuminate\Support\Facades\App;
+use Illuminate\Support\Facades\DB;
 
 class User extends Authenticatable
 {
@@ -37,4 +41,9 @@ class User extends Authenticatable
     protected $casts = [
         'email_verified_at' => 'datetime',
     ];
+
+    public static function getGroups($userId) {
+        $groups = DB::table('group_member')->select('user_id','high_score','groups.created_at','groups.updated_at','group_id', 'group_name','description')->join('groups','group_member.group_id','=','groups.id')->where('user_id',$userId)->get();
+        return $groups;
+    }
 }
diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php
index f44f19b76cfa8edbfc1ce9bbcdf71301942c4e7d..712c15a510fe68cbfacebf69357db07733d1404f 100644
--- a/database/seeds/DatabaseSeeder.php
+++ b/database/seeds/DatabaseSeeder.php
@@ -13,6 +13,5 @@ class DatabaseSeeder extends Seeder
         $this->call(UsersTableSeeder::class);
         $this->call(GroupsTableSeeder::class);
         $this->call(TasksTableSeeder::class);
-        // $users = factory(App\User::class, 6)->create();
     }
 }
diff --git a/routes/api.php b/routes/api.php
index 4ecce869f30f3978371b521cc4b03b67718c1073..abfb33f88bb2bb6ab757221e656d640afed69d93 100644
--- a/routes/api.php
+++ b/routes/api.php
@@ -22,29 +22,32 @@ Route::post('/login', 'UserController@generateToken');
 Route::post('/logout', 'UserController@logOut');
 
 
+//User
+Route::get('/user/{userId}/groups', 'UserController@getGroups'); //Bisa //Ambil Group yang dipunyai user
+
+
 //Task
-Route::post('/tasks', 'TasksController@store');
+Route::post('/tasks', 'TasksController@store'); //Bisa Menambah task
 Route::get('/tasks/{taskId}', 'TasksController@show');
 Route::put('/tasks/{taskId}', 'TasksController@update');
-Route::delete('/tasks/{taskId}', 'TasksController@delete');
+Route::delete('/tasks/{taskId}', 'TasksController@destroy'); //Bisa //Hapus Task
 
 //Task Member
-Route::delete('/task_member', 'TasksMemberController@removeMember');
-Route::post('/task_member', 'TasksMemberController@addMember');
+Route::delete('/task_member', 'TasksMemberController@removeMember'); //Bisa //delete member di task
+Route::post('/task_member', 'TasksMemberController@addMember'); //Bisa //Tambah member task
 
 //Get Group Task
-Route::get('/group/{groupId}/tasks', 'TasksController@getTasksFromGroup');
+Route::get('/group/{groupId}/tasks', 'TasksController@getTasksFromGroupId'); //Bisa , ambil tasks dari suatu group
 
 //Group
-Route::post('/group', 'GroupsController@store');
-Route::get('/group/{groupId}', 'GroupsController@show');
+Route::post('/group', 'GroupsController@store'); //Bisa //Bikin Group 
+Route::get('/group/{groupId}', 'GroupsController@show'); // Bisa , ambil detail group
 Route::put('/group/{groupId}', 'GroupsController@update');
 Route::delete('/group/{groupId}', 'GroupsController@delete');
 
 //GroupMember
-Route::post('/group/member', 'GroupsMemberController@store');
-Route::get('/group/{groupId}/member', 'GroupsMemberController@show');
-Route::get('/group/{groupId}/members', 'GroupsMemberController@showAll');
+Route::post('/group/member', 'GroupsMemberController@store'); //Bisa nambah Group Member
+Route::get('/group/{groupId}/members', 'GroupsMemberController@show'); //Bisa ambil seluruh member dari suatu group
 Route::put('/group/{groupId}/member/{userId}', 'GroupsMemberController@update');
 Route::delete('/group/{groupId}/member/{userId}', 'GroupsMemberController@delete');