diff --git a/app/GroupMember.php b/app/GroupMember.php index 74baec8490fa7bd7b84f76b303a1441e497c1439..84e39cecda5d432a0390b6db1edc2b8c601ea29e 100644 --- a/app/GroupMember.php +++ b/app/GroupMember.php @@ -19,6 +19,9 @@ class GroupMember extends Model protected $table = 'group_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/GroupController.php b/app/Http/Controllers/GroupController.php index 58505f4365919673268c461d3d4aaf370abf457d..138eae4a3df44d900f92d115438e91d4afbdb714 100644 --- a/app/Http/Controllers/GroupController.php +++ b/app/Http/Controllers/GroupController.php @@ -4,38 +4,40 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Group; +use App\GroupMember; +use Illuminate\Support\Facades\DB; class GroupController 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 = Group::find($input['group_id']); + + DB::beginTransaction(); - if (is_null($isGroupExist)) { - $group = Group::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 = Group::create([ + 'group_name' => $input['group_name'], + 'description' => $input['description'], + ]); + GroupMember::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) { @@ -56,7 +58,7 @@ class GroupController extends Controller } public function update(Request $request) { - $validator = $this->validate($request); + $validator = $this->validate2($request); if ($validator->fails()) { return response(json_encode([ @@ -101,7 +103,7 @@ class GroupController extends Controller } } - private function validate(Request $request) { + public function validate2(Request $request) { $input = $request->all(); return Validator::make($input, [ 'group_name' => 'required' diff --git a/app/Http/Controllers/GroupMemberController.php b/app/Http/Controllers/GroupMemberController.php index 48c8cfd56bc0b03331bccfaef7c42f804651c81b..f1748b4274d33f635a8b05260ada829f05504eb3 100644 --- a/app/Http/Controllers/GroupMemberController.php +++ b/app/Http/Controllers/GroupMemberController.php @@ -5,12 +5,17 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Group; use App\GroupMember; +use App\User; use Validator; +use Illuminate\Support\Facades\DB; class GroupMemberController 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 GroupMemberController extends Controller ]), 400); } else { $input = $request->all(); - $isGroupMemberExist = GroupMember::find($input['group_id'])::find($input['user_id']); - $groupMember = GroupMember::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 = GroupMember::find($groupId); - - if (is_null($groupMember)) { - return response(json_decode([ - 'statusMessage' => 'Not Found' - ]), 404); - } else { - $member = $group->toArray(); + public function show($groupId) { + $group = Group::find($groupId); + if (!is_null($group)) { + $users = 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('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 GroupMemberController 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/TaskController.php b/app/Http/Controllers/TaskController.php index 6f7c923cdfb88032214d4737a511c0db54465eec..6657927ba48d70f2a65a8b76d900a8404ff15b9f 100644 --- a/app/Http/Controllers/TaskController.php +++ b/app/Http/Controllers/TaskController.php @@ -22,14 +22,15 @@ class TaskController extends Controller $result = $request->has([ 'group_id', 'taskname', - 'description' + 'description', + 'status_kanban' ]); if ($result) { $form = [ 'group_id' => $request->group_id, 'taskname' => $request->taskname, 'description' => $request->description, - 'status_kanban' => Config::get('constants.STATUS_KANBAN.PRODUCT_BACKLOG') + 'status_kanban' => $request->status_kanban ]; $task = Task::create($form); return response(json_encode([ 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/Task.php b/app/Task.php index e6f7d321f0ff31549885523992a203da7bdb017f..6bf23290e9289fd80828d63ee59e2121edc8fe27 100644 --- a/app/Task.php +++ b/app/Task.php @@ -6,6 +6,10 @@ use Illuminate\Database\Eloquent\Model; class Task extends Model { + protected $fillable = [ + 'group_id', 'taskname', + 'description', 'status_kanban' + ]; // public function members() { return $this->hasMany('App\TasksMember', 'task_id'); diff --git a/app/TasksMember.php b/app/TasksMember.php index 4b985580ceb07fe9a22a6c736243a3f0477c7700..b910fbf0494f248ff9e86e9435d2bd7b3dabf04e 100644 --- a/app/TasksMember.php +++ b/app/TasksMember.php @@ -10,6 +10,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 70c22cb34f359599ffc0451cae09dee84cd1da79..0f83c51d5e62e7026d8a381270ce2fa9a55b544c 100644 --- a/app/User.php +++ b/app/User.php @@ -43,7 +43,7 @@ class User extends Authenticatable ]; public static function getGroups($userId) { - $groups = DB::table('group_member')->select('user_id','high_score','groups.created_at','groups.updated_at','id', 'group_name','description')->join('groups','group_member.group_id','=','groups.id')->where('user_id',$userId)->get(); + $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/routes/api.php b/routes/api.php index 2cd2d088d9fabaa138b83df9ab7705da65d05de0..962ae44378fd0da033718b99f6ec4cbff25b919f 100644 --- a/routes/api.php +++ b/routes/api.php @@ -23,31 +23,31 @@ Route::post('/logout', 'UserController@logOut'); //User -Route::get('/user/{userId}/groups', 'UserController@getGroups'); +Route::get('/user/{userId}/groups', 'UserController@getGroups'); //Bisa //Ambil Group yang dipunyai user //Task -Route::post('/tasks', 'TaskController@store'); +Route::post('/tasks', 'TaskController@store'); //Bisa Menambah task Route::get('/tasks/{taskId}', 'TaskController@show'); Route::put('/tasks/{taskId}', 'TaskController@update'); -Route::delete('/tasks/{taskId}', 'TaskController@delete'); +Route::delete('/tasks/{taskId}', 'TaskController@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', 'TaskController@getTasksFromGroupId'); +Route::get('/group/{groupId}/tasks', 'TaskController@getTasksFromGroupId'); //Bisa , ambil tasks dari suatu group //Group -Route::post('/group', 'GroupController@store'); -Route::get('/group/{groupId}', 'GroupController@show'); +Route::post('/group', 'GroupController@store'); //Bisa //Bikin Group +Route::get('/group/{groupId}', 'GroupController@show'); // Bisa , ambil detail group Route::put('/group', 'GroupController@update'); Route::delete('/group', 'GroupController@delete'); //GroupMember -Route::post('/group_member', 'GroupMemberController@store'); -Route::get('/group_member/{groupId}', 'GroupMemberController@show'); +Route::post('/group_member', 'GroupMemberController@store'); //Bisa //Nambah Group Member +Route::get('/group_member/group/{groupId}', 'GroupMemberController@show'); //Bisa //Ambil member dari suatu group Route::put('/group_member/{groupId}/{userId}', 'GroupMemberController@update'); Route::delete('/group_member/{groupId}/{userId}', 'GroupMemberController@delete');