Skip to content

Commit 0077aa2

Browse files
authored
Merge pull request #4 from SaliBhdr/main
store dragging result to database
2 parents 931cd9b + 4d77aad commit 0077aa2

File tree

15 files changed

+166
-75
lines changed

15 files changed

+166
-75
lines changed

app/Http/Controllers/Api/V1/CourseController.php

+50-12
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
use App\Models\Course;
77
use App\Models\Group;
88
use App\Models\User;
9+
use Carbon\Carbon;
910
use Illuminate\Http\Request;
1011

1112
class CourseController extends Controller
@@ -27,11 +28,11 @@ public function index()
2728
/** @var Course $course */
2829
foreach ($courses as $course) {
2930
$response[] = [
30-
'id' => $course->id,
31-
'title' => $course->title,
31+
'id' => $course->id,
32+
'title' => $course->title,
3233
'study_field' => $course->studyField()->first()->title,
33-
'teacher' => $course->teacher()->first()->name,
34-
'lesson' => $course->lesson()->first()->title,
34+
'teacher' => $course->teacher()->first()->name,
35+
'lesson' => $course->lesson()->first()->title,
3536
];
3637
}
3738

@@ -56,14 +57,14 @@ public function show(Course $course)
5657
'name',
5758
'family',
5859
'email'
59-
])->orderBy('group_user.joined_at');
60+
])->orderBy('group_user.joined_at','asc');
6061
}
6162
])->get();
6263

6364
$groupIds = $groups->pluck('id')->toArray();
6465

65-
$users = $course->users()->whereDoesntHave('groups',function ($q) use ($groupIds){
66-
$q->whereIn('id',$groupIds);
66+
$users = $course->users()->whereDoesntHave('groups', function ($q) use ($groupIds) {
67+
$q->whereIn('id', $groupIds);
6768
})->select([
6869
'id',
6970
'name',
@@ -76,12 +77,49 @@ public function show(Course $course)
7677
$lesson = $course->lesson()->first();
7778

7879
return response([
79-
'course' => $course,
80-
'lesson' => $lesson,
81-
'teacher' => $teacher,
80+
'course' => $course,
81+
'lesson' => $lesson,
82+
'teacher' => $teacher,
8283
'studyField' => $studyField,
83-
'users' => $users,
84-
'groups' => $groups,
84+
'users' => $users,
85+
'groups' => $groups,
8586
]);
8687
}
88+
89+
public function updateGroup(Request $request)
90+
{
91+
/**
92+
* @var Group $srcGroup
93+
* @var Group $desGroup
94+
* @var User $user
95+
*/
96+
$srcGroup = Group::query()->find($request->input('srcGroupId'));
97+
$desGroup = Group::query()->find($request->input('destinationGroupId'));
98+
$user = Group::query()->find($request->input('userId'));
99+
100+
$srcGroup->users()->detach([$user->id]);
101+
$desGroup->users()->syncWithoutDetaching([$user->id]);
102+
103+
return response([],200);
104+
}
105+
106+
public function updateUsers(Request $request)
107+
{
108+
/**
109+
* @var Group|null $srcGroup
110+
* @var Group|null $desGroup
111+
* @var User $user
112+
*/
113+
$srcGroup = $request->has('srcGroupId') ? Group::query()->find($request->input('srcGroupId')) : null;
114+
$desGroup = $request->has('destinationGroupId') ? Group::query()->find($request->input('destinationGroupId')) : null;
115+
$user = Group::query()->find($request->input('userId'));
116+
117+
if(!empty($srcGroup)){
118+
$srcGroup->users()->detach([$user->id]);
119+
}elseif (!empty($desGroup)){
120+
$desGroup->users()->syncWithoutDetaching([$user->id]);
121+
}
122+
123+
return response([],200);
124+
}
87125
}

app/Models/Group.php

+1-4
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,6 @@ public function course()
3030

3131
public function users()
3232
{
33-
return $this->belongsToMany(User::class, 'group_user')->withPivot([
34-
'is_leader',
35-
'is_final',
36-
])->withTimestamps(['joined_at']);
33+
return $this->belongsToMany(User::class, 'group_user')->withTimestamps(['joined_at']);
3734
}
3835
}

app/Models/User.php

+1-4
Original file line numberDiff line numberDiff line change
@@ -74,10 +74,7 @@ public function courses()
7474

7575
public function groups()
7676
{
77-
return $this->belongsToMany(Group::class, 'group_user')->withPivot([
78-
'is_leader',
79-
'is_final',
80-
])->withTimestamps(['joined_at']);
77+
return $this->belongsToMany(Group::class, 'group_user')->withTimestamps(['joined_at']);
8178
}
8279

8380
public function scopeUserRole($query)

database/factories/UserFactory.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public function definition()
2525
return [
2626
'role' => $this->faker->randomElement(['admin', 'user']),
2727
'name' => $this->faker->name,
28-
'family' => $this->faker->name,
28+
// 'family' => $this->faker->name,
2929
'student_number' => $this->faker->unique()->randomNumber(5),
3030
'api_token' => Str::random(60),
3131
'email' => $this->faker->unique()->safeEmail,

database/migrations/2021_01_10_231515_create_group_user_table.php

-3
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,6 @@ public function up()
1919
$table->unsignedBigInteger('user_id');
2020
$table->unsignedBigInteger('group_id');
2121

22-
$table->boolean('is_leader')->default(false);
23-
$table->boolean('is_final')->default(false);
24-
2522
$table->timestamp('joined_at')->useCurrent();
2623

2724
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');

public/assets/css/custom.css

+5
Original file line numberDiff line numberDiff line change
@@ -56,3 +56,8 @@ h1, h2, h3, h4, h5, h6 {
5656
.pricing .box {
5757
height: auto;
5858
}
59+
60+
.mobile-nav-toggle {
61+
right: unset;
62+
left: 15px;
63+
}

public/js/app.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

public/js/chunks/3.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)