import 'dart:math';

import 'package:PiliPlus/models/common/search/user_search_type.dart';
import 'package:PiliPlus/models/search/result.dart';
import 'package:PiliPlus/pages/search/widgets/search_text.dart';
import 'package:PiliPlus/pages/search_panel/controller.dart';
import 'package:PiliPlus/utils/extension/context_ext.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';

class SearchUserController
    extends SearchPanelController<SearchUserData, SearchUserItemModel> {
  SearchUserController({
    required super.keyword,
    required super.searchType,
    required super.tag,
  });

  @override
  void onInit() {
    super.onInit();
    userType = UserType.all.obs;
    userOrderType = UserOrderType.def.obs;
  }

  void onShowFilterDialog(BuildContext context) {
    showModalBottomSheet(
      context: context,
      useSafeArea: true,
      isScrollControlled: true,
      constraints: BoxConstraints(
        maxWidth: min(640, context.mediaQueryShortestSide),
      ),
      builder: (context) {
        final theme = Theme.of(context);
        return SingleChildScrollView(
          padding: EdgeInsets.only(
            top: 20,
            left: 16,
            right: 16,
            bottom: 100 + MediaQuery.viewPaddingOf(context).bottom,
          ),
          child: Column(
            mainAxisSize: MainAxisSize.min,
            crossAxisAlignment: CrossAxisAlignment.stretch,
            children: [
              const SizedBox(height: 10),
              const Text('用户粉丝数及等级排序顺序', style: TextStyle(fontSize: 16)),
              const SizedBox(height: 10),
              Wrap(
                spacing: 8,
                runSpacing: 8,
                children: UserOrderType.values.map(
                  (e) {
                    final isCurr = e == userOrderType!.value;
                    return SearchText(
                      text: e.label,
                      onTap: (_) {
                        userOrderType!.value = e;
                        order = e.order;
                        onSortSearch(label: e.label);
                      },
                      bgColor: isCurr
                          ? theme.colorScheme.secondaryContainer
                          : null,
                      textColor: isCurr
                          ? theme.colorScheme.onSecondaryContainer
                          : null,
                    );
                  },
                ).toList(),
              ),
              const SizedBox(height: 20),
              const Text('用户分类', style: TextStyle(fontSize: 16)),
              const SizedBox(height: 10),
              Wrap(
                spacing: 8,
                runSpacing: 8,
                children: UserType.values.map(
                  (e) {
                    final isCurr = e == userType!.value;
                    return SearchText(
                      text: e.label,
                      onTap: (_) {
                        userType!.value = e;
                        onSortSearch(label: e.label);
                      },
                      bgColor: isCurr
                          ? theme.colorScheme.secondaryContainer
                          : null,
                      textColor: isCurr
                          ? theme.colorScheme.onSecondaryContainer
                          : null,
                    );
                  },
                ).toList(),
              ),
            ],
          ),
        );
      },
    );
  }
}
