diff --git a/app/Http/Controllers/TaskController.php b/app/Http/Controllers/TaskController.php new file mode 100644 index 0000000000000000000000000000000000000000..3492eeaf602c14e7e92315c3e8285e6e84ab32ec --- /dev/null +++ b/app/Http/Controllers/TaskController.php @@ -0,0 +1,127 @@ +<?php + +namespace App\Http\Controllers; + +use Illuminate\Http\Request; +use App\Task; +use App\TasksMember; +class TaskController extends Controller +{ + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function store(Request $request) + { + // + $user = $request->user(); + $result = $request->has([ + 'group_id', + 'taskname', + 'description' + ]); + if ($result) { + $form = [ + 'group_id' => $request->group_id, + 'taskname' => $request->taskname, + 'description' => $request->description, + 'status_kanban' => Config::get('constants.STATUS_KANBAN.PRODUCT_BACKLOG') + ]; + $task = Task::create($form); + return response(json_encode([ + 'data' => $task->toArray(), + 'msg' => ['Success'] + ]), 200); + } else { + return response(json_encode([ + 'err' => ['Bad Request'] + ]), 400); + } + } + + /** + * Display the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function show(Request $request, $taskId) + { + // + $user = $request->user(); + + $task = Task::find($taskId)->first(); + + if ($task) { + $taskArr = $task->toArray(); + $taskArr['members'] = $task->toArray(); + return response(json_encode([ + 'data' => $taskArr, + 'msg' => ['success'] + ]), 200); + } else { + return response(json_encode([ + 'err' => ['Not Found'] + ]), 404); + } + + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param int $id + * @return \Illuminate\Http\Response + */ + public function update(Request $request, $taskId) + { + $user = $request->user(); + $result = $request->has([ + 'taskname', + 'description', + 'status_kanban' + ]); + if ($result) { + $form = [ + 'taskname' => $request->taskname, + 'description' => $request->description, + 'status_kanban' => $request->status_kanban + ]; + $task = Task::find($taskId)->first(); + if ($task) { + $task->fill($form); + $task->save(); + return response(json_encode([ + 'data' => $task->toArray(), + 'msg' => ['Success'] + ]), 200); + } else { + return response(json_encode([ + 'err' => ['Not Found'] + ]), 404); + } + } else { + return response(json_encode([ + 'err' => ['Bad Request'] + ]), 400); + } + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy($taskId) + { + Task::destroy($taskId); + return response(json_encode([ + 'msg' => ['deleted'] + ]), 200); + } +} diff --git a/app/Http/Controllers/TasksMemberController.php b/app/Http/Controllers/TasksMemberController.php new file mode 100644 index 0000000000000000000000000000000000000000..53244c70c418f332e277e48de2479334d93eb6a1 --- /dev/null +++ b/app/Http/Controllers/TasksMemberController.php @@ -0,0 +1,30 @@ +<?php + +namespace App\Http\Controllers; + +use Illuminate\Http\Request; +use App\TasksMember; +class TasksMemberController extends Controller +{ + public function add(Request $req) { + $user = $request->user(); + $result = $request->has([ + 'task_id', + 'user_id' + ]); + if ($result) { + $memberTask = TasksMember::create([ + 'task_id' => $req->task_id, + 'user_id' => $req->user_id + ]); + return response(json_encode([ + 'data' => $memberTask->toArray(), + 'msg' => ['success'] + ]), 200); + } else { + return response(json_encode([ + 'err' => ['Bad Request'] + ]), 400); + } + } +} diff --git a/app/Task.php b/app/Task.php index a30435d2b4068ba4ce72d0dc2a5fbd0041174d28..716e830a7c0577cf43e7a08b902f700e6887e909 100644 --- a/app/Task.php +++ b/app/Task.php @@ -7,4 +7,8 @@ use Illuminate\Database\Eloquent\Model; class Task extends Model { // + + public function members() { + return $this->hasMany('App\TasksMember', 'task_id'); + } } diff --git a/app/TasksMember.php b/app/TasksMember.php index 0b084c8f0b04a83904950ac84bc49e73bc8a8c5f..10d268c24d00955ab04c1c06867140c862fb072f 100644 --- a/app/TasksMember.php +++ b/app/TasksMember.php @@ -10,7 +10,7 @@ class TasksMember extends Model protected $table = 'tasks_member'; public $incrementing = false; protected $primaryKey = ['task_id', 'user_id']; - /** + /** * Set the keys for a save update query. * * @param \Illuminate\Database\Eloquent\Builder $query diff --git a/config/constants.php b/config/constants.php new file mode 100644 index 0000000000000000000000000000000000000000..c9ff232c2710a2dae732df435dc26e6534ea9245 --- /dev/null +++ b/config/constants.php @@ -0,0 +1,10 @@ +<?php + +return [ + 'STATUS_KANBAN' => [ + 'PRODUCT_BACKLOG' => 'PRODUCT_BACKLOG', + 'OPEN' => 'OPEN', + 'WIP' => 'WIP', + 'DONE' => 'DONE', + ] +]; \ No newline at end of file diff --git a/database/migrations/2019_02_19_140125_create_groups_member_table.php b/database/migrations/2019_02_19_140125_create_groups_member_table.php index c46dc8af4d628c90e52dce01e2e93b6323229d2f..f38b6a8ab083a9ace6ab0cc8cc01861e49fd3b3e 100644 --- a/database/migrations/2019_02_19_140125_create_groups_member_table.php +++ b/database/migrations/2019_02_19_140125_create_groups_member_table.php @@ -14,8 +14,10 @@ class CreateGroupsMemberTable extends Migration public function up() { Schema::create('groups_member', function (Blueprint $table) { - $table->integer('group_id')->foreign('group_id')->references('id')->on('groups'); - $table->integer('user_id')->foreign('user_id')->references('id')->on('users'); + $table->unsignedInteger('group_id'); + $table->foreign('group_id')->references('id')->on('groups'); + $table->unsignedInteger('user_id'); + $table->foreign('user_id')->references('id')->on('users'); $table->primary(['group_id', 'user_id']); $table->string('role'); $table->timestamps(); diff --git a/database/migrations/2019_02_19_140448_create_tasks_table.php b/database/migrations/2019_02_19_140448_create_tasks_table.php index 59fc3e3549d6bd9a341704d4d7f0fc6e01718f78..c63d9df2525047c44a3bedfcb9bb38ccdb20036e 100644 --- a/database/migrations/2019_02_19_140448_create_tasks_table.php +++ b/database/migrations/2019_02_19_140448_create_tasks_table.php @@ -15,7 +15,8 @@ class CreateTasksTable extends Migration { Schema::create('tasks', function (Blueprint $table) { $table->increments('id'); - $table->integer('group_id')->foreign('group_id')->references('id')->on('groups'); + $table->unsignedInteger('group_id'); + $table->foreign('group_id')->references('id')->on('groups'); $table->string('taskname'); $table->string('description'); $table->string('status_kanban'); diff --git a/database/migrations/2019_02_19_141233_create_tasks_member_table.php b/database/migrations/2019_02_19_141233_create_tasks_member_table.php index 0de93c09d31537ce12e529ac586015bf72090cd3..3e9ecf469f5d3f865bd9a5bac9c3f5b28047cfac 100644 --- a/database/migrations/2019_02_19_141233_create_tasks_member_table.php +++ b/database/migrations/2019_02_19_141233_create_tasks_member_table.php @@ -14,8 +14,10 @@ class CreateTasksMemberTable extends Migration public function up() { Schema::create('tasks_member', function (Blueprint $table) { - $table->integer('task_id')->foreign('task_id')->references('id')->on('tasks'); - $table->integer('user_id')->foreign('user_id')->references('id')->on('users'); + $table->unsignedInteger('task_id'); + $table->foreign('task_id')->references('id')->on('tasks'); + $table->unsignedInteger('user_id'); + $table->foreign('user_id')->references('id')->on('users'); $table->timestamps(); }); } diff --git a/routes/api.php b/routes/api.php index e984efadae77adb87bdb4a42e613bbe31d7387fe..5cc149ce5102ea7bc6216222b4455a58ed7bf8f7 100644 --- a/routes/api.php +++ b/routes/api.php @@ -12,7 +12,7 @@ use Illuminate\Http\Request; | is assigned the "api" middleware group. Enjoy building your API! | */ - +Route::get('/wildan', 'UserController@testMasukAuthAPI')->middleware('auth:api'); Route::middleware('auth:api')->get('/user', function (Request $request) { return $request->user(); }); @@ -20,4 +20,17 @@ Route::middleware('auth:api')->get('/user', function (Request $request) { Route::post('/login', 'UserController@generateToken'); Route::post('/logout', 'UserController@logOut')->middleware('auth:api'); -Route::get('/wildan', 'UserController@testMasukAuthAPI')->middleware('auth:api'); \ No newline at end of file + + + + +//Task +Route::post('/tasks', 'TaskController@store')->middleware('auth:api'); +Route::get('/tasks/{taskId}', 'TaskController@show')->middleware('auth:api'); +Route::put('/tasks/{taskId}', 'TaskController@update')->middleware('auth:api'); +Route::delete('/tasks/{taskId}', 'TaskController@delete')->middleware('auth:api'); + +// Route::group(['middleware' => 'auth:api'], function() +// { +// Route::resource('tasks','TaskController', ['except' => ['index', 'edit', 'create']]); +// }); \ No newline at end of file