import 'package:doctor_app_flutter/models/patient/radiology/radiology_req_model.dart';
import 'package:doctor_app_flutter/screens/patients/profile/radiology/radiology_report_screen.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/large_avatar.dart';
import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

import '../../../../config/shared_pref_kay.dart';
import '../../../../config/size_config.dart';
import '../../../../models/patient/patiant_info_model.dart';
import '../../../../providers/patients_provider.dart';
import '../../../../util/dr_app_shared_pref.dart';
import '../../../../widgets/shared/app_scaffold_widget.dart';
import '../../../../widgets/shared/app_texts_widget.dart';
import '../../../../widgets/shared/dr_app_circular_progress_Indeicator.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';

DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();

/* 
 *@author: Elham Rababah 
 *@Date:26/4/2020  
 *@param: 
 *@return:RadiologyScreen
 *@desc:   RadiologyScreen class
 */

class RadiologyScreen extends StatefulWidget {
  @override
  _RadiologyScreenState createState() => _RadiologyScreenState();
}

class _RadiologyScreenState extends State<RadiologyScreen> {
  PatientsProvider patientsProv;
  var _isInit = true;

  /* 
 *@author: Elham Rababah 
 *@Date:28/4/2020  
 *@param: context
 *@return:
 *@desc:   getRadiologyList Function
 */
  getRadiologyList(context) async {
    final routeArgs = ModalRoute.of(context).settings.arguments as Map;
    PatiantInformtion patient = routeArgs['patient'];
    String token = await sharedPref.getString(TOKEN);
    String type = await sharedPref.getString(SLECTED_PATIENT_TYPE);
    int inOutpatientType = 1;
    if (type == '0') {
      inOutpatientType = 2;
    }
    print(type);
    RadiologyReqModel radiologyReqModel = RadiologyReqModel(
      patientID: patient.patientId,
      projectID: patient.projectId,
      tokenID: token,
      patientTypeID: patient.patientType,
      languageID: 2,
    );
    patientsProv.getPatientRadiology(radiologyReqModel.toJson());
  }

  @override
  void didChangeDependencies() {
    super.didChangeDependencies();
    if (_isInit) {
      patientsProv = Provider.of<PatientsProvider>(context);
      getRadiologyList(context);
    }
    _isInit = false;
  }

  @override
  Widget build(BuildContext context) {
    return AppScaffold(
      appBarTitle: TranslationBase.of(context).radiology,
      body: patientsProv.isLoading
          ? DrAppCircularProgressIndeicator()
          : patientsProv.isError
              ? DrAppEmbeddedError(error: patientsProv.error)
              : patientsProv.patientRadiologyList.length == 0
                  ? DrAppEmbeddedError(
                      error: TranslationBase.of(context).errorNoVitalSign)
                  : Container(
                      margin: EdgeInsets.fromLTRB(
                          SizeConfig.realScreenWidth * 0.05,
                          0,
                          SizeConfig.realScreenWidth * 0.05,
                          0),
                      child: Container(
                        margin: EdgeInsets.symmetric(vertical: 10),
                        decoration: BoxDecoration(
                          color: Colors.white,
                          borderRadius: BorderRadius.all(
                            Radius.circular(20.0),
                          ),
                        ),
                        child: ListView.builder(
                            itemCount: patientsProv.patientRadiologyList.length,
                            itemBuilder: (BuildContext context, int index) {
                              return InkWell(
                                onTap: () {
                                  Navigator.push(
                                    context,
                                    MaterialPageRoute(
                                        builder: (context) =>
                                            RadiologyReportScreen(
                                              reportData: patientsProv
                                                  .patientRadiologyList[index]
                                                  .reportData,
                                            )),
                                  );
                                },
                                child: Container(
                                  padding: EdgeInsets.all(10),
                                  margin: EdgeInsets.all(10),
                                  decoration: BoxDecoration(
                                    borderRadius:
                                        BorderRadius.all(Radius.circular(10)),
                                    border: Border(
                                      bottom: BorderSide(
                                          color: Colors.grey, width: 0.5),
                                      top: BorderSide(
                                          color: Colors.grey, width: 0.5),
                                      left: BorderSide(
                                          color: Colors.grey, width: 0.5),
                                      right: BorderSide(
                                          color: Colors.grey, width: 0.5),
                                    ),
                                  ),
                                  child: Column(
                                    crossAxisAlignment:
                                        CrossAxisAlignment.start,
                                    children: <Widget>[
                                      Row(
                                        children: <Widget>[
                                          LargeAvatar(
                                            url: patientsProv
                                                .patientRadiologyList[index]
                                                .doctorImageURL,
                                          ),
                                          Expanded(
                                            child: Padding(
                                              padding:
                                                  const EdgeInsets.fromLTRB(
                                                      8, 0, 0, 0),
                                              child: Column(
                                                crossAxisAlignment:
                                                    CrossAxisAlignment.start,
                                                children: <Widget>[
                                                  AppText(
                                                      '${patientsProv.patientRadiologyList[index].doctorName}',
                                                      fontSize: 2.5 *
                                                          SizeConfig
                                                              .textMultiplier,
                                                      fontWeight:
                                                          FontWeight.bold),
                                                  SizedBox(
                                                    height: 8,
                                                  ),
                                                  AppText(
                                                    'Invoice No:${patientsProv.patientRadiologyList[index].invoiceNo}',
                                                    fontSize: 2 *
                                                        SizeConfig
                                                            .textMultiplier,
                                                  ),
                                                  SizedBox(
                                                    height: 8,
                                                  ),
                                                  AppText(
                                                    ' ${patientsProv.patientRadiologyList[index].clinicName}',
                                                    fontSize: 2 *
                                                        SizeConfig
                                                            .textMultiplier,
                                                    color: Theme.of(context)
                                                        .primaryColor,
                                                  ),
                                                  SizedBox(
                                                    height: 8,
                                                  ),
                                                ],
                                              ),
                                            ),
                                          )
                                        ],
                                      ),
                                    ],
                                  ),
                                ),
                              );
                            }),
                      ),
                    ),
    );
  }
}
