import 'package:flutter/material.dart';
import 'package:hmg_patient_app_new/core/app_assets.dart';
import 'package:hmg_patient_app_new/core/app_export.dart';
import 'package:hmg_patient_app_new/core/utils/utils.dart';
import 'package:hmg_patient_app_new/extensions/string_extensions.dart';
import 'package:hmg_patient_app_new/extensions/widget_extensions.dart';
import 'package:hmg_patient_app_new/features/emergency_services/emergency_services_view_model.dart';
import 'package:hmg_patient_app_new/features/emergency_services/model/resp_model/ProjectAvgERWaitingTime.dart';
import 'package:hmg_patient_app_new/theme/colors.dart';
import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart';
import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart';
import 'package:provider/provider.dart';

class NearestERItem extends StatelessWidget {
  final ProjectAvgERWaitingTime nearestERItem;
  final bool isLoading;


  const NearestERItem({ super.key,
    required this.nearestERItem,
    required this.isLoading
  }) ;

  @override
  Widget build(BuildContext context) {
    return Container(
      decoration: RoundedRectangleBorder().toSmoothCornerDecoration(
        color: Colors.white,
        customBorder: BorderRadius.only(
          topLeft: Radius.circular(24.h),
          topRight: Radius.circular(24.h),
        ),
      ),
      child: Padding(
        padding: EdgeInsets.all(16.h),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            Row(
              children: [
                (isLoading || nearestERItem.projectImageURL?.isEmpty == true)
                    ? Container(
                  width: 24.h,
                  height: 24.h,
                  decoration: BoxDecoration(
                    color: Colors.grey.shade300,
                    shape: BoxShape.circle,
                  ),
                ).toShimmer2(isShow: isLoading)
                    : Utils.buildImgWithNetwork(
                  url: nearestERItem.projectImageURL ?? '',
                  iconColor: Colors.transparent,
                ).circle(24.h).toShimmer2(isShow: isLoading),
                const SizedBox(width: 12),
                Expanded(
                  child: (nearestERItem.projectName?.toText16(
                    color: AppColors.textColor,
                    weight: FontWeight.w600,
                  ) ??
                      SizedBox.shrink()).toShimmer2(isShow: isLoading),
                ),
                // TODO: Add hospital icon logic here if needed
              ],
            ),
            SizedBox(height: 8.h),
            Row(
              spacing: 8.h,
              children: [
                AppCustomChipWidget(
                  labelText: "${nearestERItem.distanceInKilometers} km".needTranslation,
                  icon: AppAssets.location,
                  iconHasColor: false,
                  labelPadding: EdgeInsetsDirectional.only(start: 4.h, end: 0.h),
                  padding: EdgeInsets.all(8.h),
                ).toShimmer2(isShow: isLoading),
                AppCustomChipWidget(
                  labelText: "Expected waiting time: ${nearestERItem.getTime()} mins".needTranslation,
                  icon: AppAssets.waiting_time_clock,
                  iconHasColor: false,
                  labelPadding: EdgeInsetsDirectional.only(start: 4.h, end: 0.h),
                  padding: EdgeInsets.all(8.h),
                ).toShimmer2(isShow: isLoading),
              ],
            ),
            SizedBox(height: 16.h),
            Row(
              children: [
                Expanded(
                  child: CustomButton(
                    text: "View Location on Google Maps".needTranslation,
                    iconSize: 18.h,
                    icon: AppAssets.location,
                    onPressed: () {
                      context.read<EmergencyServicesViewModel>().openDirections(destLat:  double.parse(nearestERItem.latitude??"0.0"), destLng: double.parse(nearestERItem.longitude??"0.0") );
                    },
                    backgroundColor: AppColors.secondaryLightRedColor,
                    borderColor: AppColors.secondaryLightRedColor,
                    textColor: AppColors.primaryRedColor,
                    iconColor: AppColors.primaryRedColor,
                    height: 40.h,
                    fontSize: 14,
                    fontWeight: FontWeight.w500,
                  ).toShimmer2(isShow: isLoading),
                ),
                SizedBox(width: 8.h),
                SizedBox(
                  height: 40.h,
                  width: 40.h,
                  child: CustomButton(
                    text: '',
                    iconSize: 18.h,
                    icon: AppAssets.call_fill,
                    onPressed: () {
                      context.read<EmergencyServicesViewModel>().openDialer( nearestERItem.phonenumber??"");

                    },
                    backgroundColor: AppColors.greyColor,
                    iconColor: AppColors.textColor,
                    borderColor: AppColors.greyColor,
                    height: 40.h,
                  ).toShimmer2(isShow: isLoading),
                ),
              ],
            ),
          ],
        ),
      ),
    );
  }
}
