
import { useCallback } from 'react';
import { BudgetData, BudgetPeriod } from '../types';
import { calculateUpdatedBudgetData } from '../budgetUtils';

// 확장된 예산 업데이트 로직을 제공하는 훅
export const useExtendedBudgetUpdate = (
  budgetData: BudgetData,
  categoryBudgets: Record<string, number>,
  handleBudgetGoalUpdate: (type: BudgetPeriod, amount: number) => void,
  updateCategoryBudgets: (budgets: Record<string, number>) => void
) => {
  // 확장된 예산 업데이트 로직
  const extendedBudgetGoalUpdate = useCallback((
    type: BudgetPeriod,
    amount: number,
    newCategoryBudgets?: Record<string, number>
  ) => {
    console.log(`확장된 예산 목표 업데이트: ${type}, 금액: ${amount}`, newCategoryBudgets);
    
    // 카테고리 예산이 제공된 경우 업데이트
    if (newCategoryBudgets) {
      updateCategoryBudgets(newCategoryBudgets);
      
      // 총액 계산
      const totalAmount = Object.values(newCategoryBudgets).reduce((sum, val) => sum + val, 0);
      console.log('카테고리 총액:', totalAmount);

      // 일/주/월 모든 예산 업데이트를 위해 monthly로 처리
      // (monthly 타입은 모든 예산을 계산해 줌)
      const updatedBudgetData = calculateUpdatedBudgetData(budgetData, 'monthly', totalAmount);
      
      // 각 기간별 예산 업데이트
      handleBudgetGoalUpdate('monthly', totalAmount);
    } else {
      // 카테고리 예산이 없는 경우, 기존 로직 사용
      handleBudgetGoalUpdate(type, amount);
    }
  }, [budgetData, categoryBudgets, handleBudgetGoalUpdate, updateCategoryBudgets]);

  return { extendedBudgetGoalUpdate };
};
