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/data/models/response/roles_products/roles_products.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();

  RxList<Map<String, String?>> inventoryItems = [
    {'خریدهای دولتی داخل استان': null},
    {'خریدهای آزاد داخل استان': null},
    {'وزن خریدهای خارج استان': null},
    {'کل ورودی به انبار': null},
    {'کل فروش': null},
    {'مانده انبار': null},
  ].obs;

  RxList<Map<String, String>> broadcastItems = [
    {'وزن دولتی': '2،225،256'},
    {'وزن آزاد': '2،225،256'},
    {'فروش دولتی': '2،225،256'},
    {'فروش آزاد': '2،225،256'},
    {'توزیع داخل استان': '2،225،256'},
    {'توزیع خارج استان': '2،225،256'},
    {'قطعه بندی': '2،225،256'},
  ].obs;

  RxBool isExpanded = false.obs;

  @override
  void onReady() {
    super.onReady();
    refreshData();

  }

  Future<void> refreshData() async {
    await Future.wait([
      getGeneralBarsInformation(),
      getTodayBars(),
      getDistributionInformation(),
      rootLogic.getRolesProducts(),
      rootLogic.getInventory(),
    ]);
  }

  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) {},
    );
  }
}
