93 lines
3.6 KiB
Dart
93 lines
3.6 KiB
Dart
import 'package:flutter/material.dart';
|
|
|
|
import '../models/category.dart';
|
|
|
|
/// Утилиты для работы с категориями
|
|
class CategoryUtils {
|
|
/// Возвращает список предопределенных категорий для конкретного пользователя
|
|
/// Включает как категории доходов, так и расходов
|
|
/// [userId] - идентификатор пользователя, для которого создаются категории
|
|
static List<Category> getDefaultCategories() {
|
|
return [
|
|
// Категории доходов
|
|
Category(
|
|
id: 'income_salary',
|
|
name: 'Зарплата',
|
|
color: Colors.green,
|
|
iconCode: Icons.attach_money.codePoint, // Используем код иконки вместо IconData
|
|
isIncome: true,
|
|
),
|
|
Category(
|
|
id: 'income_gift',
|
|
name: 'Подарки',
|
|
color: Colors.blue,
|
|
iconCode: Icons.card_giftcard.codePoint, // Используем код иконки вместо IconData
|
|
isIncome: true,
|
|
),
|
|
Category(
|
|
id: 'income_freelance',
|
|
name: 'Фриланс',
|
|
color: Colors.teal,
|
|
iconCode: Icons.computer.codePoint, // Используем код иконки вместо IconData
|
|
isIncome: true,
|
|
),
|
|
|
|
// Категории расходов
|
|
Category(
|
|
id: 'expense_food',
|
|
name: 'Еда',
|
|
color: Colors.red,
|
|
iconCode: Icons.fastfood.codePoint, // Используем код иконки вместо IconData
|
|
isIncome: false,
|
|
),
|
|
Category(
|
|
id: 'expense_transport',
|
|
name: 'Транспорт',
|
|
color: Colors.orange,
|
|
iconCode: Icons.directions_car.codePoint, // Используем код иконки вместо IconData
|
|
isIncome: false,
|
|
),
|
|
Category(
|
|
id: 'expense_entertainment',
|
|
name: 'Развлечения',
|
|
color: Colors.purple,
|
|
iconCode: Icons.movie.codePoint, // Используем код иконки вместо IconData
|
|
isIncome: false,
|
|
),
|
|
Category(
|
|
id: 'expense_utilities',
|
|
name: 'Коммунальные',
|
|
color: Colors.blueGrey,
|
|
iconCode: Icons.home.codePoint, // Используем код иконки вместо IconData
|
|
isIncome: false,
|
|
),
|
|
Category(
|
|
id: 'expense_shopping',
|
|
name: 'Покупки',
|
|
color: Colors.pink,
|
|
iconCode: Icons.shopping_bag.codePoint, // Используем код иконки вместо IconData
|
|
isIncome: false,
|
|
),
|
|
Category(
|
|
id: 'ai_category',
|
|
name: 'AI Транзакция',
|
|
color: Colors.black,
|
|
iconCode: Icons.smart_toy.codePoint, // Используем код иконки вместо IconData
|
|
isIncome: false,
|
|
),
|
|
];
|
|
}
|
|
|
|
/// Возвращает только категории доходов для конкретного пользователя
|
|
/// [userId] - идентификатор пользователя
|
|
static List<Category> getIncomeCategories(String userId) {
|
|
return getDefaultCategories().where((c) => c.isIncome).toList();
|
|
}
|
|
|
|
/// Возвращает только категории расходов для конкретного пользователя
|
|
/// [userId] - идентификатор пользователя
|
|
static List<Category> getExpenseCategories(String userId) {
|
|
return getDefaultCategories().where((c) => !c.isIncome).toList();
|
|
}
|
|
}
|