import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:hmg_patient_app_new/core/app_assets.dart';
import 'package:hmg_patient_app_new/core/app_state.dart';
import 'package:hmg_patient_app_new/core/dependencies.dart';
import 'package:hmg_patient_app_new/core/utils/date_util.dart';
import 'package:hmg_patient_app_new/core/utils/size_utils.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/my_invoices/models/get_pharmacy_invoices_response_model.dart';
import 'package:hmg_patient_app_new/generated/locale_keys.g.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 'dart:ui' as ui;

class PharmacyInvoiceCard extends StatelessWidget {
  final GetPharmacyInvoicesResponseModel pharmacyInvoice;
  final VoidCallback onTap;

  const PharmacyInvoiceCard({
    super.key,
    required this.pharmacyInvoice,
    required this.onTap,
  });

  @override
  Widget build(BuildContext context) {
    final isArabic = getIt<AppState>().isArabic();

    return Container(
      decoration: RoundedRectangleBorder().toSmoothCornerDecoration(
        color: AppColors.whiteColor,
        borderRadius: 20.h,
        hasShadow: true,
      ),
      child: Padding(
        padding: EdgeInsets.all(14.h),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            // Type chips
            // Wrap(
            //   alignment: WrapAlignment.start,
            //   direction: Axis.horizontal,
            //   spacing: 6.w,
            //   runSpacing: 6.h,
            //   children: [
            //     AppCustomChipWidget(
            //       icon: AppAssets.pharmacy_icon,
            //       iconColor: AppColors.primaryRedColor,
            //       labelText: LocaleKeys.pharmacy.tr(context: context),
            //       textColor: AppColors.primaryRedColor,
            //     ),
            //     if (pharmacyInvoice.totalAmount != null)
            //       AppCustomChipWidget(
            //         labelText: '${pharmacyInvoice.totalAmount!.toStringAsFixed(2)} ${LocaleKeys.sar.tr(context: context)}',
            //         backgroundColor: AppColors.primaryRedColor.withValues(alpha: 0.1),
            //         textColor: AppColors.primaryRedColor,
            //         isEnglishOnly: true,
            //       ),
            //   ],
            // ),
            SizedBox(height: 16.h),

            // Main content row
            Row(
              crossAxisAlignment: CrossAxisAlignment.start,
              children: [
                Column(
                  children: [
                    Utils.buildImgWithNetwork(
                      url: pharmacyInvoice.doctorImageURL ?? 'https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png',
                      iconColor: AppColors.transparent,
                      width: 63.h,
                      height: 63.h,
                      fit: BoxFit.cover,
                    ).circle(100.r),
                    Transform.translate(
                      offset: Offset(0.0, -20.h),
                      child: Container(
                        width: 40.w,
                        height: 40.h,
                        decoration: BoxDecoration(
                          color: AppColors.whiteColor,
                          shape: BoxShape.circle,
                          border: Border.all(
                            color: AppColors.scaffoldBgColor,
                            width: 1.5.w,
                          ),
                        ),
                        child: Column(
                          mainAxisAlignment: MainAxisAlignment.center,
                          children: [
                            Utils.buildSvgWithAssets(icon: AppAssets.rating_icon, width: 15.w, height: 15.h, applyThemeColor: false),
                            SizedBox(height: 2.h),
                            "${pharmacyInvoice.decimalDoctorRate ?? '0.0'}".toText11(isBold: true, color: AppColors.textColor),
                          ],
                        ),
                      ).circle(100),
                    ),
                  ],
                ),
                SizedBox(width: 16.w),
                Expanded(
                  child: Column(
                    crossAxisAlignment: CrossAxisAlignment.start,
                    children: [
                      (getIt<AppState>().isArabic()
                          ? (pharmacyInvoice.doctorNameN ?? pharmacyInvoice.doctorName ?? LocaleKeys.doctor.tr(context: context))
                          : (pharmacyInvoice.doctorName ?? pharmacyInvoice.doctorNameN ?? LocaleKeys.doctor.tr(context: context))
                      ).toText16(isBold: true),
                      SizedBox(height: 8.h),
                      Wrap(
                        direction: Axis.horizontal,
                        spacing: 6.w,
                        runSpacing: 6.h,
                        children: [
                          AppCustomChipWidget(
                            labelText: "${LocaleKeys.invoiceNo.tr(context: context)}: ${pharmacyInvoice.invoiceNo ?? '-'}",
                            labelPadding: EdgeInsetsDirectional.only(start: 6.w, end: 6.w),
                            isEnglishOnly: true,
                          ),
                          AppCustomChipWidget(
                            labelText: ((pharmacyInvoice.clinicName ?? LocaleKeys.clinic.tr(context: context)).length > 15
                                ? '${(pharmacyInvoice.clinicName ?? LocaleKeys.clinic.tr(context: context)).substring(0, 12)}...'
                                : (pharmacyInvoice.clinicName ?? LocaleKeys.clinic.tr(context: context))),
                            labelPadding: EdgeInsetsDirectional.only(start: 4.w, end: 4.w),
                          ),
                          AppCustomChipWidget(
                            labelText: pharmacyInvoice.projectName ?? LocaleKeys.hospital.tr(context: context),
                            labelPadding: EdgeInsetsDirectional.only(start: 6.w, end: 6.w),
                          ),
                          if (pharmacyInvoice.appointmentDate != null)
                            Directionality(
                              textDirection: ui.TextDirection.ltr,
                              child: AppCustomChipWidget(
                                labelPadding: EdgeInsetsDirectional.only(start: -4.w, end: 6.w),
                                icon: AppAssets.doctor_calendar_icon,
                                labelText: DateUtil.formatDateToDate(DateUtil.convertStringToDate(pharmacyInvoice.appointmentDate), false),
                                isEnglishOnly: true,
                              ),
                            ),
                        ],
                      ),
                    ],
                  ),
                ),
              ],
            ),
            SizedBox(height: 16.h),

            // Action button
            CustomButton(
              text: Utils.isVidaPlusProject(pharmacyInvoice.projectID ?? 0)
                  ? LocaleKeys.sendEmail.tr(context: context) 
                  : LocaleKeys.downloadInvoice.tr(context: context),
              onPressed: onTap,
              backgroundColor: AppColors.primaryRedColor.withValues(alpha: 0.1),
              borderColor: AppColors.primaryRedColor.withValues(alpha: 0.01),
              textColor: AppColors.primaryRedColor,
              fontSize: 14.f,
              fontWeight: FontWeight.w600,
              borderRadius: 12.r,
              padding: EdgeInsets.symmetric(horizontal: 10.w),
              height: 40.h,
              iconSize: 14.h,
            ),
          ],
        ),
      ),
    ).paddingOnly(bottom: 16.h);
  }

  String _formatDate(String? dateString) {
    if (dateString == null || dateString.isEmpty) return '-';
    try {
      final date = DateUtil.convertStringToDate(dateString);
      return DateUtil.formatDateToDate(date, false);
    } catch (e) {
      return dateString;
    }
  }
}

