
/**
 * 수정된 예산 추적 유틸리티
 */

// 로컬에 저장된 수정된 예산 가져오기
export const getModifiedBudget = (): { monthlyAmount: number; timestamp: number } | null => {
  try {
    const data = localStorage.getItem('modifiedBudget_data');
    if (!data) return null;
    return JSON.parse(data);
  } catch (error) {
    console.error('수정된 예산 데이터 조회 오류:', error);
    return null;
  }
};

// 로컬에 저장된 수정된 카테고리 예산 가져오기
export const getModifiedCategoryBudgets = (): { categories: Record<string, number>; timestamp: number } | null => {
  try {
    const data = localStorage.getItem('modifiedCategoryBudgets_data');
    if (!data) return null;
    return JSON.parse(data);
  } catch (error) {
    console.error('수정된 카테고리 예산 데이터 조회 오류:', error);
    return null;
  }
};

// 예산 수정 여부 확인
export const isModifiedBudget = (): boolean => {
  return localStorage.getItem('modifiedBudget') === 'true';
};

// 카테고리 예산 수정 여부 확인
export const isModifiedCategoryBudgets = (): boolean => {
  return localStorage.getItem('modifiedCategoryBudgets') === 'true';
};

// 예산 수정 여부 설정
export const setModifiedBudget = (modified: boolean = true): void => {
  localStorage.setItem('modifiedBudget', modified ? 'true' : 'false');
};

// 카테고리 예산 수정 여부 설정
export const setModifiedCategoryBudgets = (modified: boolean = true): void => {
  localStorage.setItem('modifiedCategoryBudgets', modified ? 'true' : 'false');
};

// 예산 수정 여부 초기화
export const clearModifiedBudget = (): void => {
  localStorage.setItem('modifiedBudget', 'false');
};

// 카테고리 예산 수정 여부 초기화
export const clearModifiedCategoryBudgets = (): void => {
  localStorage.setItem('modifiedCategoryBudgets', 'false');
};

// 예산 또는 카테고리 예산이 수정되었는지 확인
export const isAnyBudgetModified = (): boolean => {
  return isModifiedBudget() || isModifiedCategoryBudgets();
};

// 모든 예산 수정 여부 초기화
export const clearAllModifiedFlags = (): void => {
  clearModifiedBudget();
  clearModifiedCategoryBudgets();
};

// 월간 예산 수정을 추적하고 저장하는 함수
export const markBudgetAsModified = (monthlyAmount: number): void => {
  setModifiedBudget(true);
  
  // 수정 시간과 함께 데이터 저장
  const modifiedData = {
    monthlyAmount,
    timestamp: Date.now()
  };
  
  localStorage.setItem('modifiedBudget_data', JSON.stringify(modifiedData));
  console.log(`월간 예산 ${monthlyAmount}원으로 수정 완료, 타임스탬프: ${new Date().toISOString()}`);
};

// 개별 카테고리 예산 수정을 추적하는 함수
export const markSingleCategoryBudgetAsModified = (category: string, amount: number): void => {
  setModifiedCategoryBudgets(true);
  
  // 기존 데이터 가져오기
  let modifiedData = getModifiedCategoryBudgets();
  
  if (!modifiedData) {
    modifiedData = {
      categories: {},
      timestamp: Date.now()
    };
  }
  
  // 수정된 카테고리 업데이트
  modifiedData.categories[category] = amount;
  modifiedData.timestamp = Date.now();
  
  localStorage.setItem('modifiedCategoryBudgets_data', JSON.stringify(modifiedData));
  console.log(`카테고리 '${category}' 예산을 ${amount}원으로 수정 완료, 타임스탬프: ${new Date().toISOString()}`);
};
