import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart';
import 'package:doctor_app_flutter/models/patient/my_referral/PendingReferral.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/card_with_bg_widget.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:provider/provider.dart';

class PatientReferralItemWidget extends StatelessWidget {
  final String patientName;
  final String patientID;
  final String referralStatus;
  final isReferredTo;
  final isSameBranch;
  final String referralDoctorName;
  final String clinicDescription;
  final String remark;
  final String referredOn;
  final String answerFromTarget;
  final Widget infoIcon;
  final PendingReferral patientInfo;

  PatientReferralItemWidget(
    this.patientID, {
    this.patientName,
    this.referralStatus,
    this.isReferredTo = false,
    this.isSameBranch,
    this.referralDoctorName,
    this.clinicDescription,
    this.remark,
    this.referredOn,
    this.answerFromTarget,
    this.infoIcon,
    this.patientInfo,
  });

  @override
  Widget build(BuildContext context) {
    ProjectViewModel projectViewModel = Provider.of(context);

    return Container(
      margin: EdgeInsets.only(left: 16.0, right: 16.0, top: 8.0),
      child: Column(
        children: [
          // TODO should be removed by mousa
          // Row(
          //   children: [
          //     Expanded(
          //       child: Column(
          //         crossAxisAlignment: CrossAxisAlignment.start,
          //         children: <Widget>[
          //           if (referralStatus != null)
          //             Row(
          //               children: [
          //                 AppText(
          //                   TranslationBase.of(context).referralStatus,
          //                   color: Colors.grey,
          //                   fontWeight: FontWeight.bold,
          //                   fontSize: 12,
          //                 ),
          //                 Container(
          //                   color: Color(0xFF4BA821),
          //                   padding: EdgeInsets.all(4),
          //                   child: AppText(
          //                     referralStatus
          //                     /*referralStatus == "46"
          //                         ? TranslationBase.of(context).approved
          //                         : TranslationBase.of(context).rejected*/
          //                     ,
          //                     color: Colors.white,
          //                     fontWeight: FontWeight.bold,
          //                     fontSize: 12,
          //                   ),
          //                 ),
          //               ],
          //             ),
          //           SizedBox(
          //             height: 8,
          //           ),
          //           Row(
          //             children: [
          //               AppText(
          //                 isReferredTo
          //                     ? "${TranslationBase.of(context).referTo}: "
          //                     : "${TranslationBase.of(context).referredFrom}: ",
          //                 color: Colors.grey,
          //                 fontWeight: FontWeight.bold,
          //                 fontSize: 12,
          //               ),
          //               AppText(
          //                 isSameBranch
          //                     ? TranslationBase.of(context).sameBranch
          //                     : TranslationBase.of(context).otherBranch,
          //                 color: Colors.black,
          //                 fontWeight: FontWeight.bold,
          //                 fontSize: 12,
          //               ),
          //             ],
          //           ),
          //           SizedBox(
          //             height: 8,
          //           ),
          //           Row(
          //             crossAxisAlignment: CrossAxisAlignment.start,
          //             children: [
          //               AppText(
          //                 "${TranslationBase.of(context).referralDoctor} : ",
          //                 color: Colors.grey,
          //                 fontWeight: FontWeight.bold,
          //                 fontSize: 12,
          //               ),
          //               Expanded(
          //                 child: AppText(
          //                   referralDoctorName != null
          //                       ? "${TranslationBase.of(context).dr} $referralDoctorName"
          //                       : "-",
          //                   color: Colors.black,
          //                   fontWeight: FontWeight.bold,
          //                   fontSize: 12,
          //                 ),
          //               ),
          //             ],
          //           ),
          //           SizedBox(
          //             height: 8,
          //           ),
          //           if (clinicDescription != null)
          //             Row(
          //               children: [
          //                 AppText(
          //                   "${TranslationBase.of(context).clinic}: ",
          //                   color: Colors.grey,
          //                   fontWeight: FontWeight.bold,
          //                   fontSize: 12,
          //                 ),
          //                 AppText(
          //                   clinicDescription,
          //                   color: Colors.black,
          //                   fontWeight: FontWeight.bold,
          //                   fontSize: 12,
          //                 ),
          //               ],
          //             ),
          //           SizedBox(
          //             height: 8,
          //           ),
          //           Row(
          //             children: [
          //               AppText(
          //                 "${TranslationBase.of(context).patientID}: ",
          //                 color: Colors.grey,
          //                 fontWeight: FontWeight.bold,
          //                 fontSize: 12,
          //               ),
          //               AppText(
          //                 patientID ?? '-',
          //                 color: Colors.black,
          //                 fontWeight: FontWeight.bold,
          //                 fontSize: 12,
          //               ),
          //             ],
          //           ),
          //           SizedBox(
          //             height: 8,
          //           ),
          //           Row(
          //             children: [
          //               AppText(
          //                 "${TranslationBase.of(context).patientName}: ",
          //                 color: Colors.grey,
          //                 fontWeight: FontWeight.bold,
          //                 fontSize: 12,
          //               ),
          //               AppText(
          //                 patientName ?? '-',
          //                 color: Colors.black,
          //                 fontWeight: FontWeight.bold,
          //                 fontSize: 12,
          //               ),
          //             ],
          //           ),
          //           SizedBox(
          //             height: 8,
          //           ),
          //           Row(
          //             crossAxisAlignment: CrossAxisAlignment.start,
          //             children: [
          //               AppText(
          //                 TranslationBase.of(context).referralRemark,
          //                 color: Colors.grey,
          //                 fontWeight: FontWeight.bold,
          //                 fontSize: 12,
          //               ),
          //               Expanded(
          //                 child: AppText(
          //                   remark,
          //                   color: Colors.black,
          //                   fontWeight: FontWeight.bold,
          //                   fontSize: 12,
          //                 ),
          //               ),
          //             ],
          //           ),
          //           SizedBox(
          //             height: 8,
          //           ),
          //           Row(
          //             children: [
          //               AppText(
          //                 TranslationBase.of(context).referredOn,
          //                 color: Colors.grey,
          //                 fontWeight: FontWeight.bold,
          //                 fontSize: 12,
          //               ),
          //               AppText(
          //                 referredOn ?? '-',
          //                 color: Colors.black,
          //                 fontWeight: FontWeight.bold,
          //                 fontSize: 12,
          //               ),
          //             ],
          //           ),
          //           if (answerFromTarget != null)
          //             SizedBox(
          //               height: 8,
          //             ),
          //           if (answerFromTarget != null)
          //             Row(
          //               children: [
          //                 AppText(
          //                   TranslationBase.of(context).referralResponse,
          //                   color: Colors.grey,
          //                   fontWeight: FontWeight.bold,
          //                   fontSize: 12,
          //                 ),
          //                 AppText(
          //                   answerFromTarget != "" ? answerFromTarget : '-',
          //                   color: Colors.black,
          //                   fontWeight: FontWeight.bold,
          //                   fontSize: 12,
          //                 ),
          //               ],
          //             ),
          //           SizedBox(
          //             height: 16,
          //           ),
          //         ],
          //       ),
          //     ),
          //     if (infoIcon != null) infoIcon,
          //   ],
          // ),
          // const Divider(
          //   color: Color(0xffCCCCCC),
          //   height: 1,
          //   thickness: 1,
          //   indent: 0,
          //   endIndent: 0,
          // ),
          // SizedBox(
          //   height: 8,
          // ),
          Container(
            child: CardWithBgWidget(
              bgColor: referralStatus != null
                  ? referralStatus == 'Pending'
                      ? Color(0xffc4aa54)
                      : Colors.red[800]
                  : Colors.grey[500],
              hasBorder: false,
              widget: Container(
                  // padding: EdgeInsets.only(left: 20, right: 0, bottom: 0),
                  child: InkWell(
                child: Column(
                  crossAxisAlignment: CrossAxisAlignment.start,
                  children: [
                    Row(
                      mainAxisAlignment: MainAxisAlignment.spaceBetween,
                      children: [
                        RichText(
                          text: new TextSpan(
                            style: new TextStyle(
                                fontSize: 2.0 * SizeConfig.textMultiplier,
                                color: Colors.black),
                            children: <TextSpan>[
                              new TextSpan(
                                  text: referralStatus != null
                                      ? referralStatus
                                      : "",
                                  style: TextStyle(
                                      color: referralStatus != null
                                          ? referralStatus == 'Pending'
                                              ? Color(0xffc4aa54)
                                              : referralStatus == 'Accepted'
                                                  ? Colors.green[700]
                                                  : Colors.red[700]
                                          : Colors.grey[500],
                                      fontWeight: FontWeight.w700,
                                      fontFamily: 'Poppins',
                                      fontSize:
                                          2.0 * SizeConfig.textMultiplier)),
                            ],
                          ),
                        ),
                        //TODO :ask backend to return in the standard format
                        AppText(
                          referredOn,
                          fontFamily: 'Poppins',
                          fontWeight: FontWeight.w600,
                          fontSize: 2.1 * SizeConfig.textMultiplier,
                        )
                      ],
                    ),
                    Row(
                      children: [
                        Expanded(
                          child: AppText(
                            patientInfo.patientName,
                            fontSize: SizeConfig.textMultiplier * 2.5,
                            fontWeight: FontWeight.bold,
                            backGroundcolor: Colors.white,
                            fontFamily: 'Poppins',
                          ),
                        ),
                        SizedBox(
                          width: 4,
                        ),
                        /*patient.gender*/ 1 == 1
                            ? Icon(
                                DoctorApp.male_2,
                                color: Colors.blue,
                              )
                            : Icon(
                                DoctorApp.female_1,
                                color: Colors.pink,
                              ),
                      ],
                    ),
                    SizedBox(
                      width: 10,
                    ),
                    Row(
                      mainAxisAlignment: MainAxisAlignment.spaceBetween,
                      children: [
                        Column(
                          children: [
                            RichText(
                              text: new TextSpan(
                                style: new TextStyle(
                                    fontSize: 2.0 * SizeConfig.textMultiplier,
                                    color: Colors.black),
                                children: <TextSpan>[
                                  new TextSpan(
                                      text: TranslationBase.of(context)
                                          .fileNumber,
                                      style: TextStyle(
                                          fontSize: 14, fontFamily: 'Poppins')),
                                  new TextSpan(
                                      text: patientInfo.patientID.toString(),
                                      style: TextStyle(
                                          fontWeight: FontWeight.w700,
                                          fontFamily: 'Poppins',
                                          fontSize: 15)),
                                ],
                              ),
                            ),
                            Container(
                              child: RichText(
                                text: new TextSpan(
                                  style: new TextStyle(
                                      fontSize: 2.0 * SizeConfig.textMultiplier,
                                      color: Colors.black),
                                  children: <TextSpan>[
                                    new TextSpan(
                                        text: TranslationBase.of(context)
                                            .referredFrom,
                                        style: TextStyle(
                                            fontSize: 14,
                                            fontFamily: 'Poppins')),
                                    new TextSpan(
                                        text: isSameBranch
                                            ? TranslationBase.of(context)
                                                .sameBranch
                                            : TranslationBase.of(context)
                                                .otherBranch,
                                        style: TextStyle(
                                            fontWeight: FontWeight.w700,
                                            fontFamily: 'Poppins',
                                            fontSize: 15)),
                                  ],
                                ),
                              ),
                            ),
                          ],
                        ),
                        Row(
                          children: [
                            AppText(
                              /*patient.nationalityName ??
                                  patient.nationality*/
                              "Saudi",
                              fontWeight: FontWeight.bold,
                              fontSize: 12,
                            ),
                            /* patient.nationality != null
                                ? ClipRRect(
                                borderRadius:
                                BorderRadius
                                    .circular(
                                    20.0),
                                child: Image.network(
                                  patient
                                      .nationalityFlagURL,
                                  height: 25,
                                  width: 30,
                                  errorBuilder:
                                      (BuildContext
                                  context,
                                      Object
                                      exception,
                                      StackTrace
                                      stackTrace) {
                                    return Text(
                                        'No Image');
                                  },
                                ))*/
                            /*:*/ SizedBox()
                          ],
                        )
                      ],
                    ),
                    Container(
                      child: RichText(
                        text: new TextSpan(
                          style: new TextStyle(
                              fontSize: 2.0 * SizeConfig.textMultiplier,
                              color: Colors.black),
                          children: <TextSpan>[
                            new TextSpan(
                                text:
                                    TranslationBase.of(context).remarks + " : ",
                                style: TextStyle(
                                    fontSize: 14, fontFamily: 'Poppins')),
                            new TextSpan(
                                text: patientInfo.remarksFromSource,
                                style: TextStyle(
                                    fontWeight: FontWeight.w700,
                                    fontFamily: 'Poppins',
                                    fontSize: 15)),
                          ],
                        ),
                      ),
                    ),
                    Row(
                      crossAxisAlignment: CrossAxisAlignment.start,
                      children: [
                        Container(
                          width: 30,
                          height: 30,
                          margin: EdgeInsets.only(
                              left:
                                  projectViewModel.isArabic ? 10 : 10 /*10:85*/,
                              right:
                                  projectViewModel.isArabic ? 10 : 10 /*85:10*/,
                              top: 5),
                          decoration: BoxDecoration(
                              shape: BoxShape.rectangle,
                              border: Border(
                                bottom: BorderSide(
                                    color: Colors.grey[400], width: 2.5),
                                left: BorderSide(
                                    color: Colors.grey[400], width: 2.5),
                              )),
                        ),
                        Expanded(
                          flex: 4,
                          child: Container(
                            margin: EdgeInsets.only(
                                left: 10, top: 25, right: 10, bottom: 0),
                            child: Column(
                              children: [
                                RichText(
                                  text: TextSpan(
                                    style: TextStyle(
                                        fontSize:
                                            2.0 * SizeConfig.textMultiplier,
                                        color: Colors.black),
                                    children: <TextSpan>[
                                      TextSpan(
                                          text: TranslationBase.of(context)
                                                  .referralDoctor +
                                              " : ",
                                          style: TextStyle(
                                              fontSize: 14,
                                              fontFamily: 'Poppins')),
                                      TextSpan(
                                          text: referralDoctorName,
                                          style: TextStyle(
                                              fontWeight: FontWeight.w700,
                                              fontFamily: 'Poppins',
                                              fontSize: 15)),
                                    ],
                                  ),
                                )
                              ],
                            ),
                          ),
                        ),
                      ],
                    ),
                    Container(
                        width: double.infinity,
                        alignment: Alignment.centerRight,
                        child: infoIcon ?? Container())
                  ],
                ),
                // onTap: onTap,
              )),
            ),
          ),
        ],
      ),
    );
  }
}
