83 lines
2.7 KiB
PHP
83 lines
2.7 KiB
PHP
|
|
<?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'));
|
||
|
|
}
|
||
|
|
}
|