|
@@ -6,6 +6,8 @@ use App\Http\Controllers\Controller;
|
|
|
use App\Http\Resources\API\TeamMemberResource;
|
|
|
use App\Models\Project;
|
|
|
use App\Models\TeamMember;
|
|
|
+use App\Models\User;
|
|
|
+use Carbon\Carbon;
|
|
|
use Illuminate\Http\Request;
|
|
|
use Illuminate\Support\Facades\Auth;
|
|
|
|
|
@@ -36,4 +38,47 @@ class TeamMemberController extends Controller
|
|
|
|
|
|
return $this->noContent();
|
|
|
}
|
|
|
+
|
|
|
+ public function manageMembers(Request $request, string $projectId)
|
|
|
+ {
|
|
|
+ $project = Project::query()->findOrFail($projectId);
|
|
|
+
|
|
|
+ foreach ($request->all() as $item) {
|
|
|
+ if (! isset($item['user_id'])) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ $user = User::query()->where("company_id", Auth::user()->company_id)->find($item['user_id']);
|
|
|
+ if (! $user) {
|
|
|
+ return $this->badRequest("Illegal parameters");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ foreach ($request->all() as $item) {
|
|
|
+ $teamMember = TeamMember::query()->where([
|
|
|
+ 'project_id' => $project->id,
|
|
|
+ 'user_id' => $item['user_id'],
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if ($teamMember) {
|
|
|
+ $teamMember->fill([
|
|
|
+ 'role' => $item['role'] ?? "",
|
|
|
+ 'limited' => data_get($item, "limited", 1) == 1 ? 1 : 0,
|
|
|
+ ]);
|
|
|
+ $teamMember->save();
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ TeamMember::query()->create([
|
|
|
+ 'project_id' => $project->id,
|
|
|
+ 'user_id' => $item['user_id'],
|
|
|
+ 'role' => $item['role'] ?? "",
|
|
|
+ 'limited' => data_get($item, "limited", 1) == 1 ? 1 : 0,
|
|
|
+ 'join_at' => Carbon::now()->toDateString(),
|
|
|
+ 'created_by' => Auth::id(),
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+
|
|
|
+ return $this->created();
|
|
|
+ }
|
|
|
}
|