feat: [finance] 일일업무일지 기간 보기 기능 추가
- 시작일~종료일 설정하여 기간 내 업무일지 한번에 조회 - 데이터 없는 날짜는 자동 필터링 (작성된 일지만 표시) - 카드형 읽기 뷰 (날짜/항목/메모/회고/달성률) - 편집 버튼으로 단건 모드 전환 가능
This commit is contained in:
@@ -72,6 +72,55 @@ public function show(Request $request): JsonResponse
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 기간별 업무일지 조회 (데이터 있는 날짜만)
|
||||
*/
|
||||
public function range(Request $request): JsonResponse
|
||||
{
|
||||
$request->validate([
|
||||
'start_date' => 'required|date',
|
||||
'end_date' => 'required|date|after_or_equal:start_date',
|
||||
]);
|
||||
|
||||
$startDate = $request->input('start_date');
|
||||
$endDate = $request->input('end_date');
|
||||
|
||||
$logs = DailyWorkLog::whereBetween('log_date', [$startDate, $endDate])
|
||||
->orderBy('log_date')
|
||||
->get();
|
||||
|
||||
$result = $logs->map(function (DailyWorkLog $log) {
|
||||
$items = $log->items()->get()->map(fn ($item) => [
|
||||
'id' => $item->id,
|
||||
'sort_order' => $item->sort_order,
|
||||
'category' => $item->category ?? '',
|
||||
'task' => $item->task,
|
||||
'priority' => $item->priority ?? '',
|
||||
'is_completed' => $item->is_completed,
|
||||
'note' => $item->note ?? '',
|
||||
'highlight' => $item->getOption('highlight', ''),
|
||||
]);
|
||||
|
||||
$total = $items->count();
|
||||
$completed = $items->where('is_completed', true)->count();
|
||||
|
||||
return [
|
||||
'id' => $log->id,
|
||||
'log_date' => $log->log_date->format('Y-m-d'),
|
||||
'memo' => $log->memo ?? '',
|
||||
'reflection' => $log->reflection ?? '',
|
||||
'items' => $items->values(),
|
||||
'achievement_rate' => $total > 0 ? round(($completed / $total) * 100, 2) : 0,
|
||||
];
|
||||
});
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'data' => $result->values(),
|
||||
'count' => $result->count(),
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 업무일지 저장 (일지 + 항목 일괄)
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user