
import 'package:rasadyar_chicken/chicken.dart';
import 'package:rasadyar_chicken/data/models/response/bar_information/bar_information.dart';
import 'package:rasadyar_chicken/data/models/response/kill_house_distribution_info/kill_house_distribution_info.dart';
import 'package:rasadyar_chicken/presentation/pages/steward/root/logic.dart';
import 'package:rasadyar_core/core.dart';

class HomeLogic extends GetxController {
  StewardRootLogic rootLogic = Get.find<StewardRootLogic>();
  RxnInt totalWeightTodayBars = RxnInt();
  Rxn<KillHouseDistributionInfo> killHouseDistributionInfo = Rxn<KillHouseDistributionInfo>();
  Rxn<BarInformation> barInformation = Rxn();

  RxBool isExpanded = false.obs;

  @override
  void onReady() {
    super.onReady();
    getGeneralBarsInformation();
    getTodayBars();
    getDistributionInformation();
  }

  Future<void> getGeneralBarsInformation() async {
    await safeCall<BarInformation?>(
      call: () async => await rootLogic.chickenRepository.getGeneralBarInformation(
        token: rootLogic.tokenService.accessToken.value!,
        queryParameters: buildQueryParams(role: 'Steward'),
      ),
      onSuccess: (result) {
        if (result != null) {
          barInformation.value = result;
        }
      },
      onError: (error, stackTrace) {},
    );
  }

  Future<void> getTodayBars() async {
    await safeCall<BarInformation?>(
      call: () async => await rootLogic.chickenRepository.getGeneralBarInformation(
        token: rootLogic.tokenService.accessToken.value!,
        queryParameters: buildQueryParams(
          fromDate: DateTime.now(),
          toDate: DateTime.now(),
          role: 'Steward',
        ),
      ),
      onSuccess: (result) {
        if (result != null) {
          totalWeightTodayBars.value = result.totalBarsWeight?.toInt();
        }
      },
      onError: (error, stackTrace) {},
    );
  }

  Future<void> getDistributionInformation() async {
    await safeCall<KillHouseDistributionInfo?>(
      call: () async => await rootLogic.chickenRepository.getKillHouseDistributionInfo(
        token: rootLogic.tokenService.accessToken.value!,
      ),
      onSuccess: (result) {
        if (result != null) {
          killHouseDistributionInfo.value = result;
        }
      },
      onError: (error, stackTrace) {},
    );
  }
}
