feat(projects): Plan 5 Task 6 — destroy + sync + toggle-active + bulk endpoints
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -5,6 +5,7 @@ declare(strict_types=1);
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\BulkProjectActionRequest;
|
||||
use App\Http\Requests\StoreProjectRequest;
|
||||
use App\Http\Requests\UpdateProjectRequest;
|
||||
use App\Http\Resources\ProjectResource;
|
||||
@@ -109,4 +110,44 @@ class ProjectController extends Controller
|
||||
|
||||
return response()->json(['data' => new ProjectResource($project)]);
|
||||
}
|
||||
|
||||
/** DELETE /api/projects/{id} — soft-archive (sets archived_at, is_active=false) */
|
||||
public function destroy(Request $request, int $id): JsonResponse
|
||||
{
|
||||
$project = Project::where('tenant_id', $request->user()->tenant_id)->findOrFail($id);
|
||||
$this->projects->archive($project);
|
||||
|
||||
return response()->json(null, 204);
|
||||
}
|
||||
|
||||
/** POST /api/projects/{id}/sync — re-dispatch SyncSupplierProjectJob */
|
||||
public function sync(Request $request, int $id): JsonResponse
|
||||
{
|
||||
$project = Project::where('tenant_id', $request->user()->tenant_id)->findOrFail($id);
|
||||
$this->projects->triggerSync($project);
|
||||
|
||||
return response()->json(['queued' => true, 'sync_status' => 'pending'], 202);
|
||||
}
|
||||
|
||||
/** PATCH /api/projects/{id}/toggle-active — flip is_active flag */
|
||||
public function toggleActive(Request $request, int $id): JsonResponse
|
||||
{
|
||||
$request->validate(['is_active' => ['required', 'boolean']]);
|
||||
$project = Project::where('tenant_id', $request->user()->tenant_id)->findOrFail($id);
|
||||
$project->update(['is_active' => $request->boolean('is_active')]);
|
||||
|
||||
return response()->json(['data' => new ProjectResource($project->fresh())]);
|
||||
}
|
||||
|
||||
/** POST /api/projects/bulk — batch pause/resume/archive */
|
||||
public function bulk(BulkProjectActionRequest $request): JsonResponse
|
||||
{
|
||||
$updated = $this->projects->bulkAction(
|
||||
$request->user()->tenant_id,
|
||||
$request->validated('action'),
|
||||
$request->validated('ids'),
|
||||
);
|
||||
|
||||
return response()->json(['updated' => $updated]);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user