import 'package:diplomaticquarterapp/core/model/labs/patient_lab_orders.dart';
import 'package:diplomaticquarterapp/models/header_model.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/avatar/large_avatar.dart';
import 'package:diplomaticquarterapp/widgets/data_display/medical/doctor_card.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/confirm_send_email_dialog.dart';
import 'package:flutter/material.dart';
import 'package:diplomaticquarterapp/extensions/string_extensions.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:rating_bar/rating_bar.dart';

class DoctorHeader extends StatelessWidget {
  final HeaderModel headerModel;
  final VoidCallback onTap;
  final String buttonTitle;
  final bool isNeedToShowButton;

  DoctorHeader({Key key, @required this.headerModel, @required this.buttonTitle, @required this.onTap, this.isNeedToShowButton = true}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    String _speciality = (headerModel?.speciality ?? []).length > 0 ? headerModel.speciality.first : "";

    return Container(
      color: Colors.white,
      child: Column(
        mainAxisSize: MainAxisSize.min,
        children: [
          Padding(
            padding: EdgeInsets.only(left: 21, right: 21, bottom: 21),
            child: Row(
              mainAxisSize: MainAxisSize.min,
              crossAxisAlignment: CrossAxisAlignment.start,
              children: [
                LargeAvatar(
                  name: headerModel.doctorName,
                  url: headerModel.doctorImageURL,
                  width: 51,
                  height: 51,
                ),
                SizedBox(width: 10),
                Expanded(
                  child: Column(
                    mainAxisSize: MainAxisSize.min,
                    crossAxisAlignment: CrossAxisAlignment.start,
                    children: [
                      Text(
                        _speciality,
                        style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.48, height: 18 / 12),
                      ),
                      headerModel.invoiceNo.isNotEmpty ? myRichText(TranslationBase.of(context).invoiceNo + ":", headerModel.invoiceNo) : Container(),
                      myRichText(TranslationBase.of(context).branch, headerModel.projectName),
                    ],
                  ),
                ),
                Column(
                  mainAxisSize: MainAxisSize.min,
                  crossAxisAlignment: CrossAxisAlignment.end,
                  children: [
                    Text(
                      DateUtil.formatDateToDate(headerModel.orderDate),
                      style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.48, height: 18 / 12),
                    ),
                    Text(
                      DateUtil.formatDateToTime(headerModel.orderDate),
                      style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.48, height: 18 / 12),
                    ),
                    // Padding(
                    //   padding: const EdgeInsets.only(top: 8.0),
                    //   child: Image.network(headerModel.nationalityFlagURL ?? "", height: 16),
                    // ),
                  ],
                )
              ],
            ),
          ),
          Row(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            children: [
              Row(
                mainAxisSize: MainAxisSize.min,
                mainAxisAlignment: MainAxisAlignment.center,
                children: [
                  SizedBox(width: 21),
                  RatingBar.readOnly(
                    initialRating: headerModel.doctorRate + 0.0,
                    size: 15.0,
                    filledColor: Color(0XFFD02127),
                    emptyColor: Color(0XFFD02127),
                    isHalfAllowed: true,
                    halfFilledIcon: Icons.star_half,
                    filledIcon: Icons.star,
                    emptyIcon: Icons.star_border,
                  ),
                  SizedBox(width: 6),
                  Text(
                    "${headerModel.actualDoctorRate} ${TranslationBase.of(context).reviews}",
                    style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.48, height: 18 / 12),
                  ),
                ],
              ),
              isNeedToShowButton
                  ? InkWell(
                      onTap: () {
                        showConfirmMessage(context, onTap, headerModel.email);
                      },
                      child: Container(
                        padding: EdgeInsets.only(top: 10, bottom: 10, right: 21, left: 15),
                        decoration: BoxDecoration(color: Color(0XFFD02127), borderRadius: BorderRadius.only(topLeft: Radius.circular(10))),
                        child: Row(
                          mainAxisSize: MainAxisSize.min,
                          children: [
                            SvgPicture.asset('assets/images/new/email.svg', width: 19.0),
                            SizedBox(width: 6),
                            Text(
                              buttonTitle == null ? TranslationBase.of(context).sendEmail : buttonTitle,
                              style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Colors.white, letterSpacing: -0.64, height: 25 / 16),
                            ),
                          ],
                        ),
                      ),
                    )
                  : Container(),
            ],
          )
        ],
      ),
    );
  }

  void showConfirmMessage(BuildContext context, GestureTapCallback onTap, String email) {
    showDialog(
      context: context,
      child: ConfirmSendEmailDialog(
        email: email,
        onTapSendEmail: () {
          onTap();
        },
      ),
    );
  }
}
