import 'package:flutter/material.dart';
import 'package:rasadyar_core/core.dart';
import 'package:rasadyar_core/presentation/widget/buttons/fab.dart';
import 'package:rasadyar_inspection/presentation/routes/app_routes.dart';
import 'package:rasadyar_inspection/presentation/widget/custom_chips.dart';

import 'logic.dart';

class SupervisionFilterPage extends GetView<InspectorFilterLogic> {
  const SupervisionFilterPage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
     /* appBar: RAppBar(title: 'نقشه', additionalActions: [_searchButton(), _filterButton()]),*/
      body: PopScope(
        canPop: !controller.bottomSheetManager.isAnyVisible,
        onPopInvokedWithResult: (didPop, result) {
          controller.bottomSheetManager.closeFirstVisible();
        },
        child: Stack(
          children: [_buildMap(), _buildGpsButton(), Obx(() => controller.bottomSheetManager.buildVisibleSheet())],
        ),
      ),
    );
  }

  GestureDetector _searchButton() {
    return GestureDetector(
      onTap: () async{

      },
      child: Assets.vec.searchSvg
          .svg(width: 24, height: 24, colorFilter: ColorFilter.mode(Colors.white, BlendMode.srcIn))
          .paddingOnly(left: 16),
    );
  }

  GestureDetector _filterButton() {
    return GestureDetector(
      onTap: () {
        controller.filterBottomSheetController.toggle();
      },
      child: Assets.vec.filterSvg
          .svg(width: 24, height: 24, colorFilter: ColorFilter.mode(Colors.white, BlendMode.srcIn))
          .paddingOnly(left: 16),
    );
  }

  Widget _buildMap() {
    return ObxValue((currentLocation) {
      return FlutterMap(
        mapController: controller.animatedMapController.mapController,
        options: MapOptions(
          initialCenter: currentLocation.value,
          initialZoom: 18,
          onPositionChanged: (camera, hasGesture) {
            controller.debouncedUpdateVisibleMarkers(center: camera.center);
          },
        ),
        children: [
          TileLayer(urlTemplate: 'https://tile.openstreetmap.org/{z}/{x}/{y}.png'),
          ObxValue((markers) {
            return MarkerLayer(
              markers: markers
                  .map(
                    (e) => markerWidget(
                      marker: e,
                      onTap: () {
                        controller.selectedLocationBottomSheetController.isVisible.value = true;
                      },
                    ),
                  )
                  .toList(),
            );
          }, controller.markers),
        ],
      );
    }, controller.currentLocation);
  }

  Widget _buildGpsButton() {
    return Positioned(
      right: 10,
      bottom: 15,
      child: ObxValue((data) {
        return RFab(
          backgroundColor: AppColor.greenNormal,
          isLoading: data.value,
          icon: Assets.vec.gpsSvg.svg(width: 28, height: 28),
          onPressed: () async {
            controller.isLoading.value = true;
            await controller.determineCurrentPosition();
            controller.isLoading.value = false;
          },
        );
      }, controller.isLoading),
    );
  }
}

Marker markerWidget({required LatLng marker, required VoidCallback onTap}) {
  return Marker(
    point: marker,
    child: GestureDetector(
      onTap: onTap,
      behavior: HitTestBehavior.opaque,
      child: SizedBox(width: 36, height: 36, child: Assets.vec.mapMarkerSvg.svg(width: 30, height: 30)),
    ),
  );
}

Padding filterWidget({required RxInt filterIndex, required RxInt showIndex}) {
  return Padding(
    padding: const EdgeInsets.all(20.0),
    child: Column(
      spacing: 16,
      children: [
        Row(
          mainAxisAlignment: MainAxisAlignment.spaceAround,
          spacing: 16,
          children: [
            Container(
              width: 100,
              height: 64,
              clipBehavior: Clip.antiAlias,
              decoration: BoxDecoration(
                color: AppColor.blueLight,
                borderRadius: BorderRadius.circular(8),
                border: Border.all(width: 1, color: AppColor.blackLightHover),
              ),
              child: Column(
                mainAxisAlignment: MainAxisAlignment.center,
                spacing: 4,
                children: [
                  Text('دامداران', style: AppFonts.yekan10),
                  Text('183 عدد', style: AppFonts.yekan13Bold),
                ],
              ),
            ),
            Container(
              width: 100,
              height: 64,
              clipBehavior: Clip.antiAlias,
              decoration: BoxDecoration(
                color: AppColor.greenLight,
                borderRadius: BorderRadius.circular(8),
                border: Border.all(width: 1, color: AppColor.blackLightHover),
              ),
              child: Column(
                mainAxisAlignment: MainAxisAlignment.center,
                spacing: 4,
                children: [
                  Text('مرغداران', style: AppFonts.yekan10),
                  Text('183 عدد', style: AppFonts.yekan13Bold),
                ],
              ),
            ),
            Container(
              width: 100,
              height: 64,
              clipBehavior: Clip.antiAlias,
              decoration: BoxDecoration(
                color: AppColor.blueLight,
                borderRadius: BorderRadius.circular(8),
                border: Border.all(width: 1, color: AppColor.blackLightHover),
              ),
              child: Column(
                mainAxisAlignment: MainAxisAlignment.center,
                spacing: 4,
                children: [
                  Text('اصناف', style: AppFonts.yekan10),
                  Text('183 عدد', style: AppFonts.yekan13Bold),
                ],
              ),
            ),
          ],
        ),

        Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          spacing: 12,
          children: [
            Text(
              'فیلتر نمایش',
              textAlign: TextAlign.center,
              style: AppFonts.yekan13.copyWith(color: AppColor.blueNormal),
            ),
            ObxValue((data) {
              return Row(
                mainAxisAlignment: MainAxisAlignment.start,
                crossAxisAlignment: CrossAxisAlignment.center,
                spacing: 8,
                children: [
                  customChip(
                    isSelected: data.value == 0,
                    onTap: (data) {
                      filterIndex.value = data;
                    },
                    index: 0,
                    title: 'دامداران',
                  ),
                  customChip(
                    isSelected: data.value == 1,
                    title: 'مرغداران',
                    onTap: (data) {
                      filterIndex.value = data;
                    },
                    index: 1,
                  ),
                  customChip(
                    isSelected: data.value == 2,
                    title: 'اصناف',
                    onTap: (data) {
                      filterIndex.value = data;
                    },
                    index: 2,
                  ),
                ],
              );
            }, filterIndex),
          ],
        ),

        Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          spacing: 12,
          children: [
            Text(
              'نمایش',
              textAlign: TextAlign.center,
              style: AppFonts.yekan13.copyWith(color: AppColor.blueNormal),
            ),
            ObxValue((data) {
              return SingleChildScrollView(
                scrollDirection: Axis.horizontal,
                child: Row(
                  mainAxisAlignment: MainAxisAlignment.start,
                  crossAxisAlignment: CrossAxisAlignment.center,
                  spacing: 8,
                  children: [
                    customChip(
                      isSelected: data.value == 0,
                      title: 'نمایش همه',
                      onTap: (data) {
                        showIndex.value = data;
                      },
                      index: 0,
                    ),
                    customChip(
                      isSelected: data.value == 1,
                      title: 'دارای تراکنش',
                      onTap: (data) {
                        showIndex.value = data;
                      },
                      index: 1,
                    ),
                    customChip(
                      isSelected: data.value == 2,
                      title: 'بازرسی شده ها',
                      onTap: (data) {
                        showIndex.value = data;
                      },
                      index: 2,
                    ),
                    customChip(
                      isSelected: data.value == 3,
                      title: 'بازرسی نشده ها',
                      onTap: (data) {
                        showIndex.value = data;
                      },
                      index: 3,
                    ),
                    customChip(
                      isSelected: data.value == 4,
                      title: 'متخلفین',
                      onTap: (data) {
                        showIndex.value = data;
                      },
                      index: 4,
                    ),
                  ],
                ),
              );
            }, showIndex),
          ],
        ),
      ],
    ),
  );
}

Widget markerDetailsWidget() {
  return Container(
    clipBehavior: Clip.antiAlias,
    margin: EdgeInsets.all(35),
    padding: EdgeInsets.symmetric(horizontal: 20, vertical: 10),
    decoration: ShapeDecoration(
      color: Colors.white,
      shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)),
    ),
    child: Column(
      spacing: 15,
      children: [
        Row(
          mainAxisAlignment: MainAxisAlignment.start,
          spacing: 12,
          children: [
            Text(
              'داود خرم پور',
              textAlign: TextAlign.center,
              style: AppFonts.yekan16.copyWith(color: AppColor.darkGreyDarkHover),
            ),
            Spacer(),
            vecWidgetWithOnTap(
              child: Assets.vec.mapSvg.svg(),
              onTap: () {
                Get.toNamed(InspectionRoutes.inspectionLocationDetails);
              },
              width: 24,
              height: 24,
              color: AppColor.blueNormal,
            ),
            vecWidgetWithOnTap(
              child: Assets.vec.messageAddSvg.svg(),
              width: 24,
              height: 24,
              color: AppColor.greenNormal,
              onTap: () {
                Get.toNamed(InspectionRoutes.inspectionAddSupervision);
              },
            ),

            vecWidgetWithOnTap(
              child: Assets.vec.securityTimeSvg.svg(),
              color: AppColor.warning,
              height: 24,
              width: 24,
              onTap: () {},
            ),
          ],
        ),
        Container(
          height: 32,
          clipBehavior: Clip.antiAlias,
          padding: EdgeInsets.symmetric(horizontal: 10, vertical: 4),
          decoration: ShapeDecoration(
            color: AppColor.blueLight,
            shape: RoundedRectangleBorder(side: BorderSide(width: 1, color: AppColor.blueLightHover)),
          ),
          child: Row(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            children: [
              Text(
                'باقی مانده',
                textAlign: TextAlign.center,
                style: AppFonts.yekan14.copyWith(color: AppColor.darkGreyDarkHover),
              ),
              Text(
                '0 کیلوگرم',
                textAlign: TextAlign.center,
                style: AppFonts.yekan14.copyWith(color: AppColor.darkGreyDarkHover),
              ),
            ],
          ),
        ),

        Row(
          mainAxisAlignment: MainAxisAlignment.spaceBetween,
          crossAxisAlignment: CrossAxisAlignment.center,
          children: [
            Text(
              'شماره همراه',
              textAlign: TextAlign.center,
              style: AppFonts.yekan14.copyWith(color: AppColor.darkGreyDarkHover),
            ),
            Text(
              '0326598653',
              textAlign: TextAlign.center,
              style: AppFonts.yekan14.copyWith(color: AppColor.darkGreyDarkHover),
            ),
          ],
        ),
        Row(
          mainAxisAlignment: MainAxisAlignment.spaceBetween,
          crossAxisAlignment: CrossAxisAlignment.center,

          children: [
            Text(
              'آخرین فعالیت',
              textAlign: TextAlign.center,
              style: AppFonts.yekan14.copyWith(color: AppColor.darkGreyDarkHover),
            ),

            Text(
              '1409/12/12',
              textAlign: TextAlign.center,
              style: AppFonts.yekan14.copyWith(color: AppColor.darkGreyDarkHover),
            ),
          ],
        ),
        Row(
          mainAxisAlignment: MainAxisAlignment.spaceBetween,
          crossAxisAlignment: CrossAxisAlignment.center,

          children: [
            Text(
              'موجودی',
              textAlign: TextAlign.center,
              style: AppFonts.yekan14.copyWith(color: AppColor.darkGreyDarkHover),
            ),
            Text(
              '5کیلوگرم',
              textAlign: TextAlign.center,
              style: AppFonts.yekan14.copyWith(color: AppColor.darkGreyDarkHover),
            ),
          ],
        ),

        ...List.generate(
          5,
          (index) => Row(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            crossAxisAlignment: CrossAxisAlignment.center,

            children: [
              Text(
                'فروش رفته',
                textAlign: TextAlign.center,
                style: AppFonts.yekan14.copyWith(color: AppColor.darkGreyDarkHover),
              ),
              Text(
                '0 کیلوگرم',
                textAlign: TextAlign.center,
                style: AppFonts.yekan14.copyWith(color: AppColor.darkGreyDarkHover),
              ),
            ],
          ),
        ),
      ],
    ),
  );
}
Widget selectedLocationWidget({
  required bool showHint,
  required SlidableController sliderController,
  required VoidCallback trigger,
  required VoidCallback toggle,
}) {
  eLog(showHint);
  if (showHint) {
    trigger.call();
  }
  return Padding(
    padding: const EdgeInsets.symmetric(horizontal: 30, vertical: 20),
    child: Slidable(
      key: Key('selectedLocationWidget'),
      controller: sliderController,
      endActionPane: ActionPane(
        motion: StretchMotion(),
        children: [
          CustomSlidableAction(
            onPressed: (context) {
              Get.toNamed(InspectionRoutes.inspectionLocationDetails);
            },
            backgroundColor: AppColor.blueNormal,
            foregroundColor: Colors.white,
            padding: EdgeInsets.all(16),
            borderRadius: BorderRadius.only(bottomRight: Radius.circular(8), topRight: Radius.circular(8)),
            child: Assets.vec.mapSvg.svg(width: 24, height: 24),
          ),
          CustomSlidableAction(
            onPressed: (context) {
              Get.toNamed(InspectionRoutes.inspectionAddSupervision);
            },
            backgroundColor: AppColor.greenNormal,
            padding: EdgeInsets.all(16),
            child: Assets.vec.messageAddSvg.svg(),
          ),
          CustomSlidableAction(
            onPressed: (context) {},
            backgroundColor: AppColor.warning,
            padding: EdgeInsets.all(16),
            borderRadius: BorderRadius.only(bottomLeft: Radius.circular(8), topLeft: Radius.circular(8)),
            child: Assets.vec.securityTimeSvg.svg(),
          ),
        ],
      ),
      child: GestureDetector(
        onTap: toggle,
        child: Container(
          height: 58,
          padding: EdgeInsets.symmetric(horizontal: 20, vertical: 15),
          decoration: BoxDecoration(
            color: Colors.white,
            borderRadius: BorderRadius.circular(8),
            border: Border.all(width: 1, color: AppColor.blackLightHover),
          ),
          child: Row(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            children: [
              Column(
                children: [
                  Text('داود خرم مهری پور', style: AppFonts.yekan10.copyWith(color: AppColor.blueNormal)),
                  Text('گوشت و مرغ', style: AppFonts.yekan12.copyWith(color: AppColor.darkGreyDarkHover)),
                ],
              ),
              Column(
                children: [
                  Text('باقی مانده', style: AppFonts.yekan10.copyWith(color: AppColor.blueNormal)),
                  Text('0 کیلوگرم', style: AppFonts.yekan12.copyWith(color: AppColor.darkGreyDarkHover)),
                ],
              ),
              Assets.vec.scanBarcodeSvg.svg(),
            ],
          ),
        ),
      ),
    ),
  );
}
