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/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/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/patient-referral-item-widget.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/PatientProfileButton.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/profile-welcome-widget.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/borderedButton.dart';
import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';
import 'package:provider/provider.dart';

import '../../../../routes.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,
        body: model.patientArrivalList != null &&
                model.patientArrivalList.length > 0
            ? Column(
                children: [
                  Expanded(
                    child: SingleChildScrollView(
                      child: Container(
                        child: Column(
                          crossAxisAlignment: CrossAxisAlignment.start,
                          children: [
                            ProfileWelcomeWidget(
                              AppText(
                                authProvider.selectedClinicName != null
                                    ? authProvider.selectedClinicName
                                    : authProvider
                                        .doctorProfile.clinicDescription,
                                fontSize: SizeConfig.textMultiplier * 1.7,
                                color: Colors.white,
                                textAlign: TextAlign.center,
                              ),
                              height: 100,
                            ),
                            SizedBox(
                              height: 16,
                            ),
                            Padding(
                              padding:
                                  const EdgeInsets.symmetric(horizontal: 16.0),
                              child: AppText(
                                TranslationBase.of(context).myReferralPatient,
                                color: Colors.black,
                                fontWeight: FontWeight.bold,
                                fontSize: 16,
                              ),
                            ),
                            PatientReferralItemWidget(
                              "${pendingReferral.patientID}",
                              patientName: pendingReferral.patientName,
                              referralStatus: null,
                              isReferredTo: false,
                              isSameBranch:
                                  pendingReferral.isReferralDoctorSameBranch,
                              referralDoctorName:
                                  pendingReferral.referredByDoctorInfo,
                              clinicDescription: null,
                              remark: pendingReferral.remarksFromSource,
                              referredOn: pendingReferral.referredOn,
                            ),
                            SizedBox(
                              child: GridView.count(
                                childAspectRatio: 1.8,
                                crossAxisSpacing: 8,
                                mainAxisSpacing: 10,
                                controller: new ScrollController(
                                    keepScrollOffset: false),
                                shrinkWrap: true,
                                padding: const EdgeInsets.all(4.0),
                                crossAxisCount: 2,
                                children: [
                                  PatientProfileButton(
                                      key: key,
                                      patient: model.patientArrivalList[0],
                                      route: MEDICAL_FILE,
                                      nameLine1: TranslationBase.of(context)
                                          .previewHealth,
                                      nameLine2: TranslationBase.of(context)
                                          .summaryReport,
                                      icon: 'radiology-1.png'),
                                  PatientProfileButton(
                                      key: key,
                                      patient: model.patientArrivalList[0],
                                      route: LAB_ORDERS,
                                      nameLine1:
                                          TranslationBase.of(context).lab,
                                      nameLine2:
                                          TranslationBase.of(context).result,
                                      icon: 'lab.png'),
                                  PatientProfileButton(
                                      key: key,
                                      patient: model.patientArrivalList[0],
                                      route:
                                          VITAL_SIGN_DETAILS /*PATIENT_VITAL_SIGN*/,
                                      nameLine1:
                                          TranslationBase.of(context).vital,
                                      nameLine2:
                                          TranslationBase.of(context).signs,
                                      icon: 'heartbeat.png'),
                                ],
                              ),
                            ),
                          ],
                        ),
                      ),
                    ),
                  ),
                  Container(
                    margin: EdgeInsets.symmetric(horizontal: 16, vertical: 16),
                    child: Row(
                      children: [
                        Expanded(
                          child: BorderedButton(
                            TranslationBase.of(context).accept,
                            backgroundColor: Color(0xFF4BA821),
                            textColor: Colors.white,
                            fontSize: 16,
                            hPadding: 8,
                            vPadding: 12,
                            handler: () 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(
                          height: 8,
                        ),
                        Expanded(
                          child: BorderedButton(
                            TranslationBase.of(context).reject,
                            backgroundColor: Color(0xFFB9382C),
                            textColor: Colors.white,
                            fontSize: 16,
                            hPadding: 8,
                            vPadding: 12,
                            handler: () 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);
                              }
                            },
                          ),
                        ),
                      ],
                    ),
                  ),
                ],
              )
            : Container(
                child: Center(
                  child: AppText(
                    TranslationBase.of(context).patientNoDetailErrMsg,
                    color: HexColor("#B8382B"),
                    fontWeight: FontWeight.bold,
                    fontSize: 16,
                  ),
                ),
              ),
      ),
    );
  }
}
