import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/viewModel/prescription_view_model.dart';
import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/screens/prescription/add_prescription_form.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/patient_profile_widget.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/profile_medical_info_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/Text.dart';
import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_text_form_field.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart';
import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';

class NewPrescriptionScreen extends StatefulWidget {
  @override
  _NewPrescriptionScreenState createState() => _NewPrescriptionScreenState();
}

class _NewPrescriptionScreenState extends State<NewPrescriptionScreen> {
  int testNum = 0;
  PatiantInformtion patient;

  @override
  Widget build(BuildContext context) {
    final routeArgs = ModalRoute.of(context).settings.arguments as Map;
    patient = routeArgs['patient'];
    return BaseView<PrescriptionViewModel>(
      onModelReady: (model) => model.getPrescription(),
      builder: (BuildContext context, PrescriptionViewModel model,
              Widget child) =>
          AppScaffold(
              isShowAppBar: true,
              appBarTitle: TranslationBase.of(context).prescription,
              body: NetworkBaseView(
                baseViewModel: model,
                child: SingleChildScrollView(
                  child: Container(
                    child: Column(
                      children: [
                        Padding(
                          padding: EdgeInsets.all(8.0),
                          child: Row(
                            children: <Widget>[
                              AvatarWidget(
                                Icon(
                                  patient.genderDescription == "Male"
                                      ? DoctorApp.male
                                      : DoctorApp.female_icon,
                                  size: 70,
                                  color: Colors.white,
                                ),
                              ),
                              SizedBox(
                                width: 20,
                              ),
                              Column(
                                crossAxisAlignment: CrossAxisAlignment.start,
                                children: [
                                  AppText(
                                    patient.firstName + ' ' + patient.lastName,
                                    color: Colors.black,
                                    fontWeight: FontWeight.bold,
                                  ),
                                  if (model.prescriptionList.length > 0)
                                    Row(
                                      children: [
                                        AppText(
                                          TranslationBase.of(context).fileNo,
                                          color: Colors.black,
                                          fontWeight: FontWeight.bold,
                                        ),
                                        SizedBox(
                                          width: 5.0,
                                        ),
                                        AppText(
                                          patient.patientId.toString(),
                                          color: Colors.black,
                                          fontWeight: FontWeight.normal,
                                        ),
                                      ],
                                    ),
                                ],
                              )
                            ],
                          ),
                        ),
                        Divider(
                          height: 1.0,
                          thickness: 1.0,
                          color: Colors.grey,
                        ),
                        if (model.prescriptionList.length != 0)
                          SizedBox(
                              height: model.prescriptionList[0].rowcount == 0
                                  ? 200.0
                                  : 10.0),
                        //model.prescriptionList == null
                        if (model.prescriptionList.length != 0)
                          model.prescriptionList[0].rowcount == 0
                              ? Column(
                                  mainAxisAlignment: MainAxisAlignment.center,
                                  crossAxisAlignment:
                                      CrossAxisAlignment.stretch,
                                  children: [
                                    InkWell(
                                      onTap: () {
                                        addPrescriptionForm(context);
                                        model.postPrescription();
                                      },
                                      child: CircleAvatar(
                                        radius: 65,
                                        backgroundColor: Color(0XFFB8382C),
                                        child: CircleAvatar(
                                          radius: 60,
                                          backgroundColor: Colors.white,
                                          child: Icon(
                                            Icons.add,
                                            color: Colors.black,
                                            size: 45.0,
                                          ),
                                        ),
                                      ),
                                    ),
                                    SizedBox(
                                      height: 15.0,
                                    ),
                                    Row(
                                      mainAxisAlignment:
                                          MainAxisAlignment.center,
                                      children: [
                                        AppText(
                                          TranslationBase.of(context)
                                              .noPrescriptionListed,
                                          color: Colors.black,
                                          fontWeight: FontWeight.w900,
                                        ),
                                      ],
                                    ),
                                    Row(
                                      mainAxisAlignment:
                                          MainAxisAlignment.center,
                                      children: [
                                        AppText(
                                          TranslationBase.of(context).addNow,
                                          color: Color(0XFFB8382C),
                                          fontWeight: FontWeight.w900,
                                        ),
                                      ],
                                    ),
                                  ],
                                )
                              : Padding(
                                  padding: EdgeInsets.all(12.0),
                                  child: NetworkBaseView(
                                    baseViewModel: model,
                                    child: Column(
                                      mainAxisAlignment:
                                          MainAxisAlignment.start,
                                      children: [
                                        InkWell(
                                          child: Container(
                                            height: 50.0,
                                            width: 450.0,
                                            decoration: BoxDecoration(
                                              border: Border.all(
                                                  color: Colors.grey),
                                              borderRadius:
                                                  BorderRadius.circular(10.0),
                                            ),
                                            child: Padding(
                                              padding: EdgeInsets.all(8.0),
                                              child: Row(
                                                mainAxisAlignment:
                                                    MainAxisAlignment
                                                        .spaceBetween,
                                                children: [
                                                  AppText(
                                                    ' Add more medication',
                                                    fontWeight: FontWeight.w100,
                                                    fontSize: 12.5,
                                                  ),
                                                  Icon(
                                                    Icons.add,
                                                    color: Color(0XFFB8382C),
                                                  )
                                                ],
                                              ),
                                            ),
                                          ),
                                          onTap: () {
                                            addPrescriptionForm(context);
                                            model.postPrescription();
                                          },
                                        ),
                                        SizedBox(
                                          height: 15.0,
                                        ),
                                        ...List.generate(
                                          model.prescriptionList[0].rowcount,
                                          (index) => Container(
                                            child: Column(
                                              children: [
                                                Row(
                                                  mainAxisAlignment:
                                                      MainAxisAlignment
                                                          .spaceBetween,
                                                  children: [
                                                    Container(
                                                      height:
                                                          MediaQuery.of(context)
                                                                  .size
                                                                  .height *
                                                              0.2,
                                                      width:
                                                          MediaQuery.of(context)
                                                                  .size
                                                                  .width *
                                                              0.09,
                                                      child: Column(
                                                        children: [
                                                          AppText(
                                                            '8\nDEC',
                                                            color: Colors.green,
                                                          )
                                                        ],
                                                      ),
                                                    ),
                                                    Container(
                                                      height:
                                                          MediaQuery.of(context)
                                                                  .size
                                                                  .height *
                                                              0.24,
                                                      width:
                                                          MediaQuery.of(context)
                                                                  .size
                                                                  .width *
                                                              0.81,
                                                      child: Column(
                                                        children: [
                                                          Row(
                                                            children: [
                                                              AppText(
                                                                'Start Date:',
                                                                fontWeight:
                                                                    FontWeight
                                                                        .w900,
                                                                fontSize: 15.0,
                                                              ),
                                                              AppText(
                                                                model
                                                                    .prescriptionList[
                                                                        0]
                                                                    .entityList[
                                                                        index]
                                                                    .startDate,
                                                                fontSize: 11.0,
                                                              ),
                                                              SizedBox(
                                                                width: 6.0,
                                                              ),
                                                              AppText(
                                                                'Order Type:',
                                                                fontWeight:
                                                                    FontWeight
                                                                        .w900,
                                                                fontSize: 15.0,
                                                              ),
                                                              AppText(
                                                                model
                                                                    .prescriptionList[
                                                                        0]
                                                                    .entityList[
                                                                        index]
                                                                    .orderTypeDescription,
                                                                fontSize: 13.0,
                                                              ),
                                                            ],
                                                          ),
                                                          SizedBox(
                                                            height: 2.5,
                                                          ),
                                                          Row(
                                                            children: [
                                                              Container(
                                                                child: Expanded(
                                                                  child:
                                                                      AppText(
                                                                    model
                                                                        .prescriptionList[
                                                                            0]
                                                                        .entityList[
                                                                            index]
                                                                        .medicationName,
                                                                  ),
                                                                ),
                                                              )
                                                            ],
                                                          ),
                                                          Row(
                                                            children: [
                                                              Expanded(
                                                                child: AppText(
                                                                  model
                                                                      .prescriptionList[
                                                                          0]
                                                                      .entityList[
                                                                          index]
                                                                      .doseDetail,
                                                                  fontSize:
                                                                      13.0,
                                                                ),
                                                              )
                                                            ],
                                                          ),
                                                          SizedBox(
                                                            height: 3.0,
                                                          ),
                                                          Row(
                                                            children: [
                                                              AppText(
                                                                'Indication: ',
                                                                fontWeight:
                                                                    FontWeight
                                                                        .w900,
                                                              ),
                                                              Expanded(
                                                                child: AppText(
                                                                    model
                                                                        .prescriptionList[
                                                                            0]
                                                                        .entityList[
                                                                            index]
                                                                        .indication,
                                                                    fontSize:
                                                                        12.9),
                                                              )
                                                            ],
                                                          ),
                                                          SizedBox(
                                                            height: 15.0,
                                                          ),
                                                          Row(
                                                            children: [
                                                              AppText(
                                                                model
                                                                    .prescriptionList[
                                                                        0]
                                                                    .entityList[
                                                                        index]
                                                                    .doctorName,
                                                                fontWeight:
                                                                    FontWeight
                                                                        .w900,
                                                              )
                                                            ],
                                                          ),
                                                          Row(
                                                            children: [
                                                              AppText(model
                                                                  .prescriptionList[
                                                                      0]
                                                                  .entityList[
                                                                      index]
                                                                  .remarks),
                                                            ],
                                                          ),
                                                          SizedBox(
                                                            height: 15.0,
                                                          ),

                                                          Divider(
                                                            height: 0,
                                                            thickness: 1.0,
                                                            color: Colors.grey,
                                                          ),
                                                          // SizedBox(
                                                          //   height: 40,
                                                          // ),
                                                        ],
                                                      ),
                                                    ),
                                                  ],
                                                ),
                                              ],
                                            ),
                                          ),
                                        ),
                                      ],
                                    ),
                                  ),
                                )
                      ],
                    ),
                  ),
                ),
              )),
    );
  }
}
