feat:개발 진행중 → 승인대기로 이동 기능 추가
- revertToPending 서비스 메서드 추가
- revertToPending 컨트롤러 액션 추가
- /approvals/{id}/revert-pending 라우트 추가
- progress-list에 "승인대기로" 버튼 추가
- JavaScript revertToPending 함수 추가
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -170,6 +170,41 @@ public function updateStatus(Request $request, int $id)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 승인대기로 되돌리기
|
||||
*/
|
||||
public function revertToPending(Request $request, int $id)
|
||||
{
|
||||
// 권한 체크
|
||||
if (!auth()->user()->isAdmin()) {
|
||||
abort(403, '접근 권한이 없습니다.');
|
||||
}
|
||||
|
||||
try {
|
||||
$management = $this->service->revertToPending($id);
|
||||
$tenantName = $management->tenant?->company_name ?? '알 수 없음';
|
||||
|
||||
if ($request->header('HX-Request')) {
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'message' => "{$tenantName}이(가) 승인대기로 이동되었습니다.",
|
||||
]);
|
||||
}
|
||||
|
||||
return redirect()->route('sales.development.approvals.index')
|
||||
->with('success', "{$tenantName}이(가) 승인대기로 이동되었습니다.");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
if ($request->header('HX-Request')) {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => $e->getMessage(),
|
||||
], 400);
|
||||
}
|
||||
|
||||
return redirect()->back()->with('error', $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 상세 정보 모달
|
||||
*/
|
||||
|
||||
@@ -202,6 +202,30 @@ public function updateHqStatus(int $id, string $status): SalesTenantManagement
|
||||
return $management->fresh();
|
||||
}
|
||||
|
||||
/**
|
||||
* 승인대기로 되돌리기 (진행중 → pending)
|
||||
*/
|
||||
public function revertToPending(int $id): SalesTenantManagement
|
||||
{
|
||||
$management = SalesTenantManagement::findOrFail($id);
|
||||
|
||||
// 이미 pending 상태인 경우
|
||||
if ($management->hq_status === SalesTenantManagement::HQ_STATUS_PENDING) {
|
||||
throw new \InvalidArgumentException('이미 승인대기 상태입니다.');
|
||||
}
|
||||
|
||||
// handover(인계) 상태에서는 되돌리기 불가
|
||||
if ($management->hq_status === SalesTenantManagement::HQ_STATUS_HANDOVER) {
|
||||
throw new \InvalidArgumentException('인계 완료된 항목은 되돌릴 수 없습니다.');
|
||||
}
|
||||
|
||||
$management->update([
|
||||
'hq_status' => SalesTenantManagement::HQ_STATUS_PENDING,
|
||||
]);
|
||||
|
||||
return $management->fresh();
|
||||
}
|
||||
|
||||
/**
|
||||
* 상세 정보 조회
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user