import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/model/referral/MyReferralPatientModel.dart';
import 'package:doctor_app_flutter/core/service/AnalyticsService.dart';
import 'package:doctor_app_flutter/core/viewModel/patient-referral-viewmodel.dart';
import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart';
import 'package:doctor_app_flutter/locator.dart';
import 'package:doctor_app_flutter/core/model/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/screens/patients/profile/referral/referral_details/add_replay_on_referral_patient.dart';
import 'package:doctor_app_flutter/utils/date-utils.dart';
import 'package:doctor_app_flutter/utils/utils.dart';
import 'package:doctor_app_flutter/utils/translations_delegate_base_utils.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/buttons/app_buttons_widget.dart';
import 'package:doctor_app_flutter/widgets/transitions/slide_up_page.dart';
import 'package:flutter/material.dart';

import '../../../../../routes.dart';

class ReferralPatientDetailScreen extends StatelessWidget {
  final MyReferralPatientModel referredPatient;
  final PatientReferralViewModel patientReferralViewModel;

  ReferralPatientDetailScreen(this.referredPatient, this.patientReferralViewModel);

  @override
  Widget build(BuildContext context) {
    return BaseView<PatientReferralViewModel>(
      builder: (_, model, w) => AppScaffold(
        baseViewModel: model,
        isShowAppBar: false,
        body: Container(
          child: Column(
            children: [
              Container(
                padding: EdgeInsets.only(left: 0, right: 5, bottom: 5, top: 5),
                decoration: BoxDecoration(
                  color: Colors.white,
                ),
                child: Container(
                  padding: EdgeInsets.only(left: 10, right: 10, bottom: 10),
                  margin: EdgeInsets.only(top: 50),
                  child: Column(
                    children: [
                      Container(
                        padding: EdgeInsets.only(left: 12.0),
                        child: Row(children: [
                          IconButton(
                            icon: Icon(Icons.arrow_back_ios),
                            color: Colors.black, //Colors.black,
                            onPressed: () => Navigator.pop(context),
                          ),
                          Expanded(
                            child: AppText(
                              (Utils.capitalize("${referredPatient.firstName} ${referredPatient.lastName}")),
                              fontSize: SizeConfig.textMultiplier! * 2.5,
                              fontWeight: FontWeight.bold,
                              fontFamily: 'Poppins',
                            ),
                          ),
                          referredPatient.gender == 1
                              ? Icon(
                                  DoctorApp.male_2,
                                  color: Colors.blue,
                                )
                              : Icon(
                                  DoctorApp.female_1,
                                  color: Colors.pink,
                                ),
                          InkWell(
                            onTap: () {
                              PatiantInformtion patient = model.getPatientFromReferralO(referredPatient);
                              Navigator.of(context).pushNamed(PATIENTS_PROFILE, arguments: {
                                "patient": patient,
                                "patientType": "1",
                                "isInpatient": true,
                                "arrivalType": "1",
                                "from": AppDateUtils.convertDateToFormat(DateTime.now(), 'yyyy-MM-dd'),
                                "to": AppDateUtils.convertDateToFormat(DateTime.now(), 'yyyy-MM-dd'),
                              });
                            },
                            child: Icon(
                              Icons.account_circle,
                              size: 25,
                            ),
                          )
                        ]),
                      ),
                      Row(
                        crossAxisAlignment: CrossAxisAlignment.start,
                        children: [
                          Column(
                            children: [
                              InkWell(
                                onTap: () {
                                  PatiantInformtion patient = model.getPatientFromReferralO(referredPatient);
                                  Navigator.of(context).pushNamed(PATIENTS_PROFILE, arguments: {
                                    "patient": patient,
                                    "patientType": "1",
                                    "isInpatient": true,
                                    "arrivalType": "1",
                                    "from": AppDateUtils.convertDateToFormat(DateTime.now(), 'yyyy-MM-dd'),
                                    "to": AppDateUtils.convertDateToFormat(DateTime.now(), 'yyyy-MM-dd'),
                                  });
                                },
                                child: Padding(
                                  padding: EdgeInsets.only(left: 12.0),
                                  child: Container(
                                    width: 60,
                                    height: 60,
                                    child: Image.asset(
                                      referredPatient.gender == 1 ? 'assets/images/male_avatar.png' : 'assets/images/female_avatar.png',
                                      fit: BoxFit.cover,
                                    ),
                                  ),
                                ),
                              ),
                              SizedBox(
                                height: 20,
                              ),
                              AppText(
                                TranslationBase.of(context).viewProfile,
                                fontWeight: FontWeight.w700,
                                fontSize: 1.7 * SizeConfig.textMultiplier!,
                                color: Colors.red[700]!,
                              )
                            ],
                          ),
                          SizedBox(
                            width: 10,
                          ),
                          Expanded(
                            child: Column(
                              children: [
                                Row(
                                  mainAxisAlignment: MainAxisAlignment.spaceBetween,
                                  children: [
                                    AppText(
                                      "${model.getReferralStatusNameByCode(referredPatient.referralStatus!, context)}",
                                      fontFamily: 'Poppins',
                                      fontSize: 1.7 * SizeConfig.textMultiplier!,
                                      fontWeight: FontWeight.w700,
                                      color: referredPatient.referralStatus == 1
                                          ? AppGlobal.inProgressColor
                                          : referredPatient.referralStatus == 46 || referredPatient.referralStatus == 2
                                              ? AppGlobal.appGreenColor
                                              : Colors.red[700]!,
                                    ),
                                    AppText(
                                      AppDateUtils.getDayMonthYearDateFormatted(
                                        referredPatient.referralDate!,
                                      ),
                                      fontFamily: 'Poppins',
                                      fontWeight: FontWeight.w600,
                                      fontSize: 1.8 * SizeConfig.textMultiplier!,
                                      color: Color(0XFF28353E),
                                    )
                                  ],
                                ),
                                Row(
                                  mainAxisAlignment: MainAxisAlignment.spaceBetween,
                                  children: [
                                    Row(
                                      mainAxisAlignment: MainAxisAlignment.start,
                                      children: [
                                        AppText(
                                          TranslationBase.of(context).fileNumber,
                                          fontFamily: 'Poppins',
                                          fontWeight: FontWeight.w600,
                                          fontSize: 1.5 * SizeConfig.textMultiplier!,
                                          color: Color(0XFF575757),
                                        ),
                                        AppText(
                                          "${referredPatient.patientID}",
                                          fontFamily: 'Poppins',
                                          fontWeight: FontWeight.w700,
                                          fontSize: 1.6 * SizeConfig.textMultiplier!,
                                          color: Color(0XFF2E303A),
                                        ),
                                      ],
                                    ),
                                    AppText(
                                      AppDateUtils.getTimeHHMMA(
                                        referredPatient.referralDate!,
                                      ),
                                      fontFamily: 'Poppins',
                                      fontWeight: FontWeight.w600,
                                      fontSize: 1.6 * SizeConfig.textMultiplier!,
                                      color: Color(0XFF575757),
                                    )
                                  ],
                                ),
                                Row(
                                  mainAxisAlignment: MainAxisAlignment.spaceBetween,
                                  crossAxisAlignment: CrossAxisAlignment.center,
                                  children: [
                                    Expanded(
                                      child: Column(
                                        children: [
                                          Row(
                                            mainAxisAlignment: MainAxisAlignment.start,
                                            crossAxisAlignment: CrossAxisAlignment.start,
                                            children: [
                                              AppText(
                                                "${TranslationBase.of(context).refClinic}: ",
                                                fontFamily: 'Poppins',
                                                fontWeight: FontWeight.w600,
                                                fontSize: 1.5 * SizeConfig.textMultiplier!,
                                                color: Color(0XFF575757),
                                              ),
                                              Expanded(
                                                child: AppText(
                                                  referredPatient.referringClinicDescription!,
                                                  fontFamily: 'Poppins',
                                                  fontWeight: FontWeight.w700,
                                                  fontSize: 1.6 * SizeConfig.textMultiplier!,
                                                  color: Color(0XFF2E303A),
                                                ),
                                              ),
                                            ],
                                          ),
                                          if (referredPatient.frequency != null)
                                            Row(
                                              mainAxisAlignment: MainAxisAlignment.start,
                                              crossAxisAlignment: CrossAxisAlignment.start,
                                              children: [
                                                AppText(
                                                  TranslationBase.of(context).frequency + ": ",
                                                  fontFamily: 'Poppins',
                                                  fontWeight: FontWeight.w600,
                                                  fontSize: 1.5 * SizeConfig.textMultiplier!,
                                                  color: Color(0XFF575757),
                                                ),
                                                Expanded(
                                                  child: AppText(
                                                    referredPatient.frequencyDescription ?? '',
                                                    fontFamily: 'Poppins',
                                                    fontWeight: FontWeight.w700,
                                                    fontSize: 1.6 * SizeConfig.textMultiplier!,
                                                    color: Color(0XFF2E303A),
                                                  ),
                                                ),
                                              ],
                                            ),
                                        ],
                                      ),
                                    ),
                                    Row(
                                      children: [
                                        AppText(
                                          referredPatient.nationalityName != null ? referredPatient.nationalityName! : "",
                                          fontWeight: FontWeight.bold,
                                          color: Color(0xFF2E303A),
                                          fontSize: 1.4 * SizeConfig.textMultiplier!,
                                        ),
                                        referredPatient.nationalityFlagURL != null
                                            ? ClipRRect(
                                                borderRadius: BorderRadius.circular(20.0),
                                                child: Image.network(
                                                  referredPatient.nationalityFlagURL!,
                                                  height: 25,
                                                  width: 30,
                                                  errorBuilder: (BuildContext context, Object exception, StackTrace? stackTrace) {
                                                    return Text('No Image');
                                                  },
                                                ))
                                            : SizedBox()
                                      ],
                                    )
                                  ],
                                ),
                                if (referredPatient.priorityDescription != null)
                                  Row(
                                    mainAxisAlignment: MainAxisAlignment.start,
                                    crossAxisAlignment: CrossAxisAlignment.start,
                                    children: [
                                      AppText(
                                        TranslationBase.of(context).priority + ": ",
                                        fontFamily: 'Poppins',
                                        fontWeight: FontWeight.w600,
                                        fontSize: 1.5 * SizeConfig.textMultiplier!,
                                        color: Color(0XFF575757),
                                      ),
                                      Expanded(
                                        child: AppText(
                                          referredPatient.priorityDescription ?? '',
                                          fontFamily: 'Poppins',
                                          fontWeight: FontWeight.w700,
                                          fontSize: 1.6 * SizeConfig.textMultiplier!,
                                          color: Color(0XFF2E303A),
                                        ),
                                      ),
                                    ],
                                  ),
                                if (referredPatient.mAXResponseTime != null)
                                  Row(
                                    mainAxisAlignment: MainAxisAlignment.start,
                                    crossAxisAlignment: CrossAxisAlignment.start,
                                    children: [
                                      AppText(
                                        TranslationBase.of(context).maxResponseTime + ": ",
                                        fontFamily: 'Poppins',
                                        fontWeight: FontWeight.w600,
                                        fontSize: 1.5 * SizeConfig.textMultiplier!,
                                        color: Color(0XFF575757),
                                      ),
                                      Expanded(
                                        child: AppText(
                                          referredPatient.mAXResponseTime != null ? AppDateUtils.convertDateFromServerFormat(referredPatient.mAXResponseTime!, "dd MMM,yyyy") : '',
                                          fontFamily: 'Poppins',
                                          fontWeight: FontWeight.w700,
                                          fontSize: 1.6 * SizeConfig.textMultiplier!,
                                          color: Color(0XFF2E303A),
                                        ),
                                      ),
                                    ],
                                  ),
                                Row(
                                  crossAxisAlignment: CrossAxisAlignment.start,
                                  children: [
                                    Container(
                                      margin: EdgeInsets.only(left: 10, right: 0),
                                      child: Image.asset(
                                        'assets/images/patient/ic_ref_arrow_up.png',
                                        height: 50,
                                        width: 30,
                                      ),
                                    ),
                                    Container(
                                      margin: EdgeInsets.only(left: 0, top: 25, right: 0, bottom: 0),
                                      padding: EdgeInsets.only(left: 4.0, right: 4.0),
                                      child: referredPatient.doctorImageURL != null
                                          ? ClipRRect(
                                              borderRadius: BorderRadius.circular(20.0),
                                              child: Image.network(
                                                referredPatient.doctorImageURL!,
                                                height: 25,
                                                width: 30,
                                                errorBuilder: (BuildContext context, Object exception, StackTrace? stackTrace) {
                                                  return Text('');
                                                },
                                              ))
                                          : Container(
                                              child: Image.asset(
                                                referredPatient.gender == 1 ? 'assets/images/male_avatar.png' : 'assets/images/female_avatar.png',
                                                fit: BoxFit.cover,
                                              ),
                                            ),
                                    ),
                                    Expanded(
                                      flex: 4,
                                      child: Container(
                                        margin: EdgeInsets.only(left: 10, top: 30, right: 10, bottom: 0),
                                        child: Column(
                                          crossAxisAlignment: CrossAxisAlignment.start,
                                          children: [
                                            AppText(
                                              "${TranslationBase.of(context).dr} ${referredPatient.referringDoctorName}",
                                              fontFamily: 'Poppins',
                                              fontWeight: FontWeight.w800,
                                              fontSize: 1.5 * SizeConfig.textMultiplier!,
                                              color: Colors.black,
                                            ),
                                            AppText(
                                              referredPatient.referringClinicDescription!,
                                              fontFamily: 'Poppins',
                                              fontWeight: FontWeight.w700,
                                              fontSize: 1.3 * SizeConfig.textMultiplier!,
                                              color: Color(0XFF2E303A),
                                            ),
                                          ],
                                        ),
                                      ),
                                    ),
                                  ],
                                ),
                              ],
                            ),
                          ),
                        ],
                      ),
                    ],
                  ),
                ),
              ),
              Expanded(
                child: SingleChildScrollView(
                  child: Column(
                    children: [
                      Container(
                        width: double.infinity,
                        margin: EdgeInsets.symmetric(horizontal: 16, vertical: 16),
                        padding: EdgeInsets.symmetric(horizontal: 16, vertical: 16),
                        decoration: BoxDecoration(
                          color: Colors.white,
                          shape: BoxShape.rectangle,
                          borderRadius: BorderRadius.all(Radius.circular(8)),
                          border: Border.fromBorderSide(BorderSide(
                            color: Colors.white,
                            width: 1.0,
                          )),
                        ),
                        child: Column(
                          crossAxisAlignment: CrossAxisAlignment.start,
                          children: [
                            AppText(
                              TranslationBase.of(context).remarks,
                              fontFamily: 'Poppins',
                              fontWeight: FontWeight.w700,
                              fontSize: 2.4 * SizeConfig.textMultiplier!,
                              color: Color(0XFF2E303A),
                            ),
                            AppText(
                              referredPatient.referringDoctorRemarks ?? '',
                              fontFamily: 'Poppins',
                              fontWeight: FontWeight.w600,
                              fontSize: 1.8 * SizeConfig.textMultiplier!,
                              color: Color(0XFF2E303A),
                            ),
                            SizedBox(
                              height: 8,
                            ),
                          ],
                        ),
                      ),
                      if (referredPatient.referredDoctorRemarks != null && referredPatient.referredDoctorRemarks!.isNotEmpty)
                        Container(
                          width: double.infinity,
                          margin: EdgeInsets.symmetric(horizontal: 16, vertical: 0),
                          padding: EdgeInsets.symmetric(horizontal: 16, vertical: 16),
                          decoration: BoxDecoration(
                            color: Colors.white,
                            shape: BoxShape.rectangle,
                            borderRadius: BorderRadius.all(Radius.circular(8)),
                            border: Border.fromBorderSide(BorderSide(
                              color: Colors.white,
                              width: 1.0,
                            )),
                          ),
                          child: Column(
                            crossAxisAlignment: CrossAxisAlignment.start,
                            children: [
                              AppText(
                                TranslationBase.of(context).reply,
                                fontFamily: 'Poppins',
                                fontWeight: FontWeight.w700,
                                fontSize: 2.4 * SizeConfig.textMultiplier!,
                                color: Color(0XFF2E303A),
                              ),
                              AppText(
                                referredPatient.referredDoctorRemarks ?? '',
                                fontFamily: 'Poppins',
                                fontWeight: FontWeight.w600,
                                fontSize: 1.8 * SizeConfig.textMultiplier!,
                                color: Color(0XFF2E303A),
                              ),
                              SizedBox(
                                height: 8,
                              ),
                            ],
                          ),
                        ),
                    ],
                  ),
                ),
              ),
              if (referredPatient.referralStatus == 1)
                Container(
                  margin: EdgeInsets.symmetric(horizontal: 16, vertical: 16),
                  child: AppButton(
                    title: TranslationBase.of(context).replay,
                    color: Colors.red[700]!,
                    fontColor: Colors.white,
                    fontWeight: FontWeight.w700,
                    hPadding: 8,
                    vPadding: 12,
                    onPressed: () async {
                      await locator<AnalyticsService>().logEvent(
                        eventCategory: "Referral Patient Detail",
                        eventAction: "Replay To Patient",
                      );
                      Navigator.push(
                        context,
                        SlideUpPageRoute(
                          widget: AddReplayOnReferralPatient(
                            patientReferralViewModel: patientReferralViewModel,
                            myReferralInPatientModel: referredPatient,
                            isEdited: referredPatient.referredDoctorRemarks != null && referredPatient.referredDoctorRemarks!.isNotEmpty,
                          ),
                        ),
                      );
                    },
                  ),
                ),
            ],
          ),
        ),
      ),
    );
  }
}
