import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/enum/viewstate.dart';
import 'package:doctor_app_flutter/core/viewModel/auth_view_model.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/models/patient/my_referral/PendingReferral.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/util/date-utils.dart';
import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart';
import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/profile_medical_info_widget_search.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:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';
import 'package:provider/provider.dart';

class MyReferralDetailScreen extends StatelessWidget {
  PendingReferral pendingReferral;

  @override
  Widget build(BuildContext context) {
    final gridHeight = (MediaQuery.of(context).size.width * 0.3) * 1.8;

    AuthViewModel authProvider = Provider.of(context);
    final routeArgs = ModalRoute.of(context).settings.arguments as Map;
    pendingReferral = routeArgs['referral'];

    return BaseView<PatientReferralViewModel>(
      onModelReady: (model) => model.getPatientDetails(
          DateUtils.convertStringToDateFormat(
              DateTime.now() /*.subtract(Duration(days: 350))*/ .toString(),
              "yyyy-MM-dd"),
          DateUtils.convertStringToDateFormat(
              DateTime.now().toString(), "yyyy-MM-dd"),
          pendingReferral.patientID,
          pendingReferral.sourceAppointmentNo),
      builder: (_, model, w) => AppScaffold(
        baseViewModel: model,
        appBarTitle: TranslationBase.of(context).referPatient,
        isShowAppBar: false,
        body: model.patientArrivalList != null &&
                model.patientArrivalList.length > 0
            ? 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(
                                  (Helpers.capitalize(model
                                      .patientArrivalList[0]
                                      .patientDetails
                                      .fullName)),
                                  fontSize: SizeConfig.textMultiplier * 2.5,
                                  fontWeight: FontWeight.bold,
                                  fontFamily: 'Poppins',
                                ),
                              ),
                              model.patientArrivalList[0].patientDetails
                                          .gender ==
                                      1
                                  ? Icon(
                                      DoctorApp.male_2,
                                      color: Colors.blue,
                                    )
                                  : Icon(
                                      DoctorApp.female_1,
                                      color: Colors.pink,
                                    ),
                            ]),
                          ),
                          Row(
                            crossAxisAlignment: CrossAxisAlignment.start,
                            children: [
                              Padding(
                                padding: EdgeInsets.only(left: 12.0),
                                child: Container(
                                  width: 60,
                                  height: 60,
                                  child: Image.asset(
                                    pendingReferral.patientDetails.gender == 1
                                        ? 'assets/images/male_avatar.png'
                                        : 'assets/images/female_avatar.png',
                                    fit: BoxFit.cover,
                                  ),
                                ),
                              ),
                              SizedBox(
                                width: 10,
                              ),
                              Expanded(
                                child: Column(
                                  children: [
                                    Row(
                                      mainAxisAlignment:
                                          MainAxisAlignment.spaceBetween,
                                      children: [
                                        AppText(
                                          pendingReferral.referralStatus != null
                                              ? pendingReferral.referralStatus
                                              : "",
                                          fontFamily: 'Poppins',
                                          fontSize:
                                              1.9 * SizeConfig.textMultiplier,
                                          fontWeight: FontWeight.w700,
                                          color: pendingReferral
                                                      .referralStatus !=
                                                  null
                                              ? pendingReferral
                                                          .referralStatus ==
                                                      'Pending'
                                                  ? Color(0xffc4aa54)
                                                  : pendingReferral
                                                              .referralStatus ==
                                                          'Accepted'
                                                      ? Colors.green[700]
                                                      : Colors.red[700]
                                              : Colors.grey[500],
                                        ),
                                        AppText(
                                          pendingReferral.referredOn
                                              .split(" ")[0],
                                          fontFamily: 'Poppins',
                                          fontWeight: FontWeight.w600,
                                          fontSize:
                                              2.0 * 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.7 *
                                                  SizeConfig.textMultiplier,
                                              color: Color(0XFF575757),
                                            ),
                                            AppText(
                                              "${pendingReferral.patientID}",
                                              fontFamily: 'Poppins',
                                              fontWeight: FontWeight.w700,
                                              fontSize: 1.8 *
                                                  SizeConfig.textMultiplier,
                                              color: Color(0XFF2E303A),
                                            ),
                                          ],
                                        ),
                                        AppText(
                                          pendingReferral.referredOn
                                              .split(" ")[1],
                                          fontFamily: 'Poppins',
                                          fontWeight: FontWeight.w600,
                                          fontSize:
                                              1.8 * SizeConfig.textMultiplier,
                                          color: Color(0XFF575757),
                                        )
                                      ],
                                    ),
                                    Row(
                                      mainAxisAlignment:
                                          MainAxisAlignment.spaceBetween,
                                      crossAxisAlignment:
                                          CrossAxisAlignment.center,
                                      children: [
                                        Expanded(
                                          child: Column(
                                            children: [
                                              Row(
                                                mainAxisAlignment:
                                                    MainAxisAlignment.start,
                                                children: [
                                                  AppText(
                                                    TranslationBase.of(context)
                                                        .referredFrom,
                                                    fontFamily: 'Poppins',
                                                    fontWeight: FontWeight.w600,
                                                    fontSize: 1.7 *
                                                        SizeConfig
                                                            .textMultiplier,
                                                    color: Color(0XFF575757),
                                                  ),
                                                  AppText(
                                                    pendingReferral
                                                            .isReferralDoctorSameBranch
                                                        ? TranslationBase.of(
                                                                context)
                                                            .sameBranch
                                                        : TranslationBase.of(
                                                                context)
                                                            .otherBranch,
                                                    fontFamily: 'Poppins',
                                                    fontWeight: FontWeight.w700,
                                                    fontSize: 1.8 *
                                                        SizeConfig
                                                            .textMultiplier,
                                                    color: Color(0XFF2E303A),
                                                  ),
                                                ],
                                              ),
                                              Row(
                                                mainAxisAlignment:
                                                    MainAxisAlignment.start,
                                                crossAxisAlignment:
                                                    CrossAxisAlignment.start,
                                                children: [
                                                  AppText(
                                                    TranslationBase.of(context)
                                                            .remarks +
                                                        " : ",
                                                    fontFamily: 'Poppins',
                                                    fontWeight: FontWeight.w600,
                                                    fontSize: 1.7 *
                                                        SizeConfig
                                                            .textMultiplier,
                                                    color: Color(0XFF575757),
                                                  ),
                                                  Expanded(
                                                    child: AppText(
                                                      pendingReferral
                                                          .remarksFromSource,
                                                      fontFamily: 'Poppins',
                                                      fontWeight:
                                                          FontWeight.w700,
                                                      fontSize: 1.8 *
                                                          SizeConfig
                                                              .textMultiplier,
                                                      color: Color(0XFF2E303A),
                                                    ),
                                                  ),
                                                ],
                                              ),
                                            ],
                                          ),
                                        ),
                                        Row(
                                          children: [
                                            AppText(
                                              pendingReferral.patientDetails
                                                          .nationalityName !=
                                                      null
                                                  ? pendingReferral
                                                      .patientDetails
                                                      .nationalityName
                                                  : "",
                                              fontWeight: FontWeight.bold,
                                              color: Color(0xFF2E303A),
                                              fontSize: 1.4 *
                                                  SizeConfig.textMultiplier,
                                            ),
                                            pendingReferral
                                                        .nationalityFlagUrl !=
                                                    null
                                                ? ClipRRect(
                                                    borderRadius:
                                                        BorderRadius.circular(
                                                            20.0),
                                                    child: Image.network(
                                                      pendingReferral
                                                          .nationalityFlagUrl,
                                                      height: 25,
                                                      width: 30,
                                                      errorBuilder:
                                                          (BuildContext context,
                                                              Object exception,
                                                              StackTrace
                                                                  stackTrace) {
                                                        return Text('No Image');
                                                      },
                                                    ))
                                                : SizedBox()
                                          ],
                                        )
                                      ],
                                    ),
                                    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: Container(
                                            width: 40,
                                            height: 40,
                                            child: CircleAvatar(
                                              radius: 25.0,
                                              backgroundImage: NetworkImage(
                                                  pendingReferral
                                                      .doctorImageUrl),
                                              backgroundColor:
                                                  Colors.transparent,
                                            ),
                                          ),
                                        ),
                                        Expanded(
                                          flex: 4,
                                          child: Container(
                                            margin: EdgeInsets.only(
                                                left: 10,
                                                top: 25,
                                                right: 10,
                                                bottom: 0),
                                            child: Column(
                                              children: [
                                                AppText(
                                                  pendingReferral
                                                      .referredByDoctorInfo,
                                                  fontFamily: 'Poppins',
                                                  fontWeight: FontWeight.w700,
                                                  fontSize: 1.7 *
                                                      SizeConfig.textMultiplier,
                                                  color: Color(0XFF2E303A),
                                                ),
                                              ],
                                            ),
                                          ),
                                        ),
                                      ],
                                    ),
                                  ],
                                ),
                              ),
                            ],
                          ),
                        ],
                      ),
                    ),
                  ),
                  Expanded(
                    child: SingleChildScrollView(
                      child: Container(
                        child: Column(
                          crossAxisAlignment: CrossAxisAlignment.start,
                          children: [
                            SizedBox(
                              height: 16,
                            ),
                            Padding(
                              padding:
                                  const EdgeInsets.symmetric(horizontal: 16),
                              child: SizedBox(
                                child: ProfileMedicalInfoWidgetSearch(
                                  patient: model.patientArrivalList[0],
                                  patientType: "7",
                                  from: null,
                                  to: null,
                                ),
                              ),
                            ),
                          ],
                        ),
                      ),
                    ),
                  ),
                  Container(
                    margin: EdgeInsets.symmetric(horizontal: 16, vertical: 16),
                    child: Row(
                      children: [
                        Expanded(
                          child: AppButton(
                            title: TranslationBase.of(context).accept,
                            color: Color(0xFF4BA821),
                            fontColor: Colors.white,
                            fontSize: 1.6,
                            hPadding: 8,
                            vPadding: 12,
                            onPressed: () async {
                              await model.responseReferral(
                                  pendingReferral, true);
                              if (model.state == ViewState.ErrorLocal) {
                                DrAppToastMsg.showErrorToast(model.error);
                              } else {
                                DrAppToastMsg.showSuccesToast(
                                    TranslationBase.of(context)
                                        .referralSuccessMsgAccept);
                                Navigator.pop(context);
                                Navigator.pop(context);
                              }
                            },
                          ),
                        ),
                        SizedBox(
                          width: 8,
                        ),
                        Expanded(
                          child: AppButton(
                            title: TranslationBase.of(context).reject,
                            color: Color(0xFFB9382C),
                            fontColor: Colors.white,
                            fontSize: 1.6,
                            hPadding: 8,
                            vPadding: 12,
                            onPressed: () async {
                              await model.responseReferral(
                                  pendingReferral, true);
                              if (model.state == ViewState.ErrorLocal) {
                                DrAppToastMsg.showErrorToast(model.error);
                              } else {
                                DrAppToastMsg.showSuccesToast(
                                    TranslationBase.of(context)
                                        .referralSuccessMsgReject);
                                Navigator.pop(context);
                                Navigator.pop(context);
                              }
                            },
                          ),
                        ),
                      ],
                    ),
                  ),
                ],
              )
            : 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(
                          "",
                          fontSize: SizeConfig.textMultiplier * 2.5,
                          fontWeight: FontWeight.bold,

                          fontFamily: 'Poppins',
                        ),
                      ),
                    ]),
                  ),
                  Container(
                    child: Center(
                      child: AppText(
                        TranslationBase.of(context).patientNoDetailErrMsg,
                        color: HexColor("#B8382B"),
                        fontWeight: FontWeight.bold,
                        fontSize: 16,
                      ),
                    ),
                  ),
                ],
              ),
      ),
    );
  }
}
