feat: [org-chart] 조직도 관리 API 이관 (8개 엔드포인트)
- OrgChartController + OrgChartService 신규 생성 - FormRequest 5개 (Assign/Unassign/ReorderEmployees/ReorderDepartments/ToggleHide) - Department 모델 options cast 추가 - Swagger 문서 (OrgChartApi.php) 생성 - hr.php 라우트 그룹 추가 (/v1/org-chart)
This commit is contained in:
82
app/Http/Controllers/Api/V1/OrgChartController.php
Normal file
82
app/Http/Controllers/Api/V1/OrgChartController.php
Normal file
@@ -0,0 +1,82 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api\V1;
|
||||
|
||||
use App\Helpers\ApiResponse;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\OrgChart\AssignRequest;
|
||||
use App\Http\Requests\OrgChart\ReorderDepartmentsRequest;
|
||||
use App\Http\Requests\OrgChart\ReorderEmployeesRequest;
|
||||
use App\Http\Requests\OrgChart\ToggleHideRequest;
|
||||
use App\Http\Requests\OrgChart\UnassignRequest;
|
||||
use App\Services\OrgChartService;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class OrgChartController extends Controller
|
||||
{
|
||||
public function __construct(private OrgChartService $service) {}
|
||||
|
||||
// GET /v1/org-chart
|
||||
public function index(Request $request)
|
||||
{
|
||||
return ApiResponse::handle(function () use ($request) {
|
||||
return $this->service->getOrgChart($request->all());
|
||||
}, __('message.fetched'));
|
||||
}
|
||||
|
||||
// GET /v1/org-chart/stats
|
||||
public function stats()
|
||||
{
|
||||
return ApiResponse::handle(function () {
|
||||
return $this->service->getStats();
|
||||
}, __('message.fetched'));
|
||||
}
|
||||
|
||||
// GET /v1/org-chart/unassigned
|
||||
public function unassigned(Request $request)
|
||||
{
|
||||
return ApiResponse::handle(function () use ($request) {
|
||||
return $this->service->getUnassigned($request->all());
|
||||
}, __('message.fetched'));
|
||||
}
|
||||
|
||||
// POST /v1/org-chart/assign
|
||||
public function assign(AssignRequest $request)
|
||||
{
|
||||
return ApiResponse::handle(function () use ($request) {
|
||||
return $this->service->assign($request->validated());
|
||||
}, __('message.updated'));
|
||||
}
|
||||
|
||||
// POST /v1/org-chart/unassign
|
||||
public function unassign(UnassignRequest $request)
|
||||
{
|
||||
return ApiResponse::handle(function () use ($request) {
|
||||
return $this->service->unassign($request->validated());
|
||||
}, __('message.updated'));
|
||||
}
|
||||
|
||||
// PUT /v1/org-chart/reorder-employees
|
||||
public function reorderEmployees(ReorderEmployeesRequest $request)
|
||||
{
|
||||
return ApiResponse::handle(function () use ($request) {
|
||||
return $this->service->reorderEmployees($request->validated());
|
||||
}, __('message.reordered'));
|
||||
}
|
||||
|
||||
// PUT /v1/org-chart/reorder-departments
|
||||
public function reorderDepartments(ReorderDepartmentsRequest $request)
|
||||
{
|
||||
return ApiResponse::handle(function () use ($request) {
|
||||
return $this->service->reorderDepartments($request->validated());
|
||||
}, __('message.reordered'));
|
||||
}
|
||||
|
||||
// PATCH /v1/org-chart/departments/{id}/toggle-hide
|
||||
public function toggleHide(int $id, ToggleHideRequest $request)
|
||||
{
|
||||
return ApiResponse::handle(function () use ($id, $request) {
|
||||
return $this->service->toggleHide($id, $request->validated());
|
||||
}, __('message.updated'));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user