friend_trend_controller.dart 1.35 KB
import 'package:doublefeel_flutter/data/models/friend/friend_models.dart';
import 'package:get/get.dart';

import '../../health_trend/controllers/health_trend_control.dart';
import '../../report_common/models/health_report_query.dart';
import '../../report_common/models/report_period.dart';

class FriendTrendArguments {
  const FriendTrendArguments({
    required this.friendItem,
    this.initialDate,
    this.initialPeriod,
    this.initialTypeIndex = 0,
  });

  final FriendItem? friendItem;
  final DateTime? initialDate;
  final ReportPeriod? initialPeriod;
  final int initialTypeIndex;
}

class FriendTrendController extends GetxController with HealthTrendControl {
  FriendTrendController({
    required this.friendItem,
    DateTime? initialDate,
    ReportPeriod? initialPeriod,
    int initialTypeIndex = 0,
  }) {
    changeType(initialTypeIndex);
    if (initialPeriod != null) changePeriod(initialPeriod);
    if (initialDate != null) changeDate(initialDate);
  }

  final FriendItem? friendItem;

  HealthReportQuery get query => HealthReportQuery(
        targetUserId: friendItem?.id,
        period: selectedPeriod.value,
        date: selectedDate.value,
      );

  HealthReportQuery queryForType(int typeIndex) => HealthReportQuery(
        targetUserId: friendItem?.id,
        period: periodForType(typeIndex),
        date: dateForType(typeIndex),
      );
}