Skip to content
Snippets Groups Projects
Commit ce1c4b8e authored by W's avatar W
Browse files

merge

parents 11c6c953 65961b3e
No related merge requests found
......@@ -4,7 +4,17 @@ namespace App;
use Illuminate\Database\Eloquent\Model;
/**
* @property int $id
* @property string $group_name
* @property string $description
* @property string $created_at
* @property string $updated_at
*/
class Group extends Model
{
//
}
protected $table = 'groups';
protected $primaryKey = 'id';
protected $fillable = ['group_name', 'description', 'created_at', 'updated_at'];
public $timestamps = true;
}
\ No newline at end of file
......@@ -4,13 +4,22 @@ namespace App;
use Illuminate\Database\Eloquent\Model;
class GroupGameScore extends Model
/**
* @property int $group_id
* @property int $user_id
* @property string $role
* @property int $score
* @property string $created_at
* @property string $updated_at
* @property Group $group
* @property User $user
*/
class GroupMember extends Model
{
//
protected $table = 'group_game_score';
protected $table = 'group_details';
public $incrementing = false;
protected $primaryKey = ['group_id', 'user_id'];
/**
/**
* Set the keys for a save update query.
*
* @param \Illuminate\Database\Eloquent\Builder $query
......@@ -48,4 +57,12 @@ class GroupGameScore extends Model
return $this->getAttribute($keyName);
}
public function group() {
return $this->belongsTo('App\Group', 'group_id', 'group_id');
}
public function user() {
return $this->belongsTo('App\User', 'user_id', 'id');
}
}
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class GroupsMember extends Model
{
//
protected $table = 'groups_member';
public $incrementing = false;
protected $primaryKey = ['group_id', 'user_id'];
/**
* Set the keys for a save update query.
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @return \Illuminate\Database\Eloquent\Builder
*/
protected function setKeysForSaveQuery(Builder $query)
{
$keys = $this->getKeyName();
if(!is_array($keys)){
return parent::setKeysForSaveQuery($query);
}
foreach($keys as $keyName){
$query->where($keyName, '=', $this->getKeyForSaveQuery($keyName));
}
return $query;
}
/**
* Get the primary key value for a save query.
*
* @param mixed $keyName
* @return mixed
*/
protected function getKeyForSaveQuery($keyName = null)
{
if(is_null($keyName)){
$keyName = $this->getKeyName();
}
if (isset($this->original[$keyName])) {
return $this->original[$keyName];
}
return $this->getAttribute($keyName);
}
}
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Group;
class GroupController extends Controller
{
public function store(Request $request) {
$validator = $this->validate($request);
if ($validator->fails()) {
return response(json_encode([
'statusMessage' => 'Bad Request'
]), 400);
} else {
$input = $request->all();
$isGroupExist = Group::find($input['group_id']);
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);
}
}
}
public function show(Request $request, $groupId) {
$isGroupExist = Group::find($groupId);
if (is_null($isGroupExist)) {
return response(json_encode([
'statusMessage' => 'Not Found'
]), 404);
} else {
$group = $isGroupExist->toArray();
return response(json_encode([
'statusMessage' => 'Success',
'data' => $group
]), 200);
}
}
public function update(Request $request) {
$validator = $this->validate($request);
if ($validator->fails()) {
return response(json_encode([
'statusMessage' => 'Bad Request'
]), 400);
} else {
$input = $request->all();
$isGroupExist = Group::find($input['group_id']);
if (is_null($isGroupExist)) {
return response(json_encode([
'statusMessage' => 'Bad Request'
]), 400);
} else {
$group = Group::create([
'group_name' => $input['group_name'],
'description' => $input['description']
]);
$group->save();
return response(json_encode([
'statusMessage' => 'Success',
'data' => $group->toArray()
]), 200);
}
}
}
public function destroy($groupId) {
$group = Group::find($groupId);
if (is_null($group)) {
return response(json_encode([
'statusMessage' => 'Bad Request'
]), 400);
} else {
$group->delete;
return response(json_encode([
'statusMessage' => 'Success'
]), 200);
}
}
private function validate(Request $request) {
$input = $request->all();
return Validator::make($input, [
'group_name' => 'required'
]);
}
}
\ No newline at end of file
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Group;
use App\GroupMember;
use Validator;
class GroupMemberController extends Controller
{
public function store(Request $request) {
$validator = $this->validate($request);
if ($validator->fails()) {
return response(json_encode([
'statusMessage' => 'Bad Request'
]), 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']
]);
$group = Group::find($groupId);
if (is_null($group)) {
return response(json_encode([
'statusMessage' => 'Bad Request'
]), 400);
} else {
$groupMember->save();
return response(json_encode([
'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();
return response(json_encode([
'statusMessage' => 'Success',
'data' => $member
]), 200);
}
}
public function update(Request $request, $groupId, $userId) {
$validator = $this->validate($request);
if ($validator->fails()) {
return response(json_encode([
'statusMessage' => 'Bad Request'
]), 400);
} else {
$input = $request->all();
$groupMember = GroupMember::create([
'role' => $input['role'],
'high_score' => $input['high_score']
]);
$member = GroupMember::find($groupId)->find($userId);
if ($member) {
$member->fill($groupMember);
$member->save();
return response(json_encode([
'statusMessage' => 'Success',
'data' => $member->toArray()
]), 200);
} else {
return response(json_encode([
'statusMessage' => 'Not Found'
]), 404);
}
}
}
public function destroy($groupId, $userId) {
$groupMember = GroupMember::find($groupId);
if (is_null($groupDetails)) {
return response(json_encode([
'statusMessage' => 'Bad Request'
]), 400);
} else {
$groupMember->delete();
return response(json_encode([
'statusMessage' => 'Success'
]), 200);
}
}
private function validate(Request $request) {
$input = $request->all();
return Validator::make($input, [
'role' => 'required',
'high_score' => 'required'
]);
}
}
\ No newline at end of file
......@@ -16,7 +16,7 @@ class CreateGroupsTable extends Migration
Schema::create('groups', function (Blueprint $table) {
$table->increments('id');
$table->string('group_name');
$table->string('description');
$table->string('description')->default("");
$table->timestamps();
});
}
......
......@@ -4,7 +4,7 @@ use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateGroupsMemberTable extends Migration
class CreateGroupsDetailsTable extends Migration
{
/**
* Run the migrations.
......@@ -13,13 +13,14 @@ class CreateGroupsMemberTable extends Migration
*/
public function up()
{
Schema::create('groups_member', function (Blueprint $table) {
Schema::create('group_member', function (Blueprint $table) {
$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->unsignedInteger('high_score')->default(0);
$table->timestamps();
});
}
......@@ -31,6 +32,6 @@ class CreateGroupsMemberTable extends Migration
*/
public function down()
{
Schema::dropIfExists('groups_member');
Schema::dropIfExists('group_member');
}
}
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateGroupGameScoreTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('group_game_score', 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->primary(['group_id', 'user_id']);
$table->integer('score')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('group_game_score');
}
}
......@@ -22,8 +22,6 @@ Route::post('/login', 'UserController@generateToken');
Route::post('/logout', 'UserController@logOut')->middleware('auth:api');
//Task
Route::post('/tasks', 'TaskController@store')->middleware('auth:api');
Route::get('/tasks/{taskId}', 'TaskController@show')->middleware('auth:api');
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment