import 'package:diplomaticquarterapp/core/service/AlHabibMedicalService/health-calculator/bariatrics-service.dart';
import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart';
import 'package:diplomaticquarterapp/pages/BookAppointment/SearchResults.dart';
import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:diplomaticquarterapp/widgets/buttons/button.dart';
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/material.dart';
import 'package:percent_indicator/circular_percent_indicator.dart';

class BmrResultPage extends StatelessWidget {
  final double bmrResult;
  final double calories;

  BmrResultPage({this.bmrResult, this.calories});

  @override
  Widget build(BuildContext context) {
    return AppScaffold(
      isShowAppBar: true,
      isShowDecPage: false,
      showNewAppBarTitle: true,
      showNewAppBar: true,
      appBarTitle: TranslationBase.of(context).bmr,
      body: Column(
        mainAxisAlignment: MainAxisAlignment.spaceEvenly,
        children: [
          Padding(
            padding: const EdgeInsets.all(20.0),
            child: Column(
              mainAxisAlignment: MainAxisAlignment.start,
              crossAxisAlignment: CrossAxisAlignment.start,
              children: [
                Text(
                  TranslationBase.of(context).calories,
                  style: TextStyle(
                    fontSize: 19,
                    letterSpacing: -1.34,
                    fontWeight: FontWeight.bold,
                  ),
                ),
                mHeight(20),
                Center(
                  child: CircularPercentIndicator(
                    radius: 220.0,
                    lineWidth: 3.0,
                    percent: ((this.bmrResult > 3500) ? 100 : this.bmrResult / 3500),
                    center: Column(
                      mainAxisAlignment: MainAxisAlignment.center,
                      children: [
                        Text(
                          bmrResult.toStringAsFixed(1),
                          style: TextStyle(
                            fontSize: 17,
                            letterSpacing: -1.02,
                            fontWeight: FontWeight.w600,
                          ),
                        ),
                        SizedBox(
                          height: 5.0,
                        ),
                        Text(
                          TranslationBase.of(context).calories,
                          style: TextStyle(
                            fontSize: 18,
                            letterSpacing: -1.08,
                            fontWeight: FontWeight.w600,
                          ),
                        ),
                      ],
                    ),
                    progressColor: CustomColors.accentColor,
                    backgroundColor: Colors.white,
                  ),
                ),
                mHeight(20),
                Text(
                    TranslationBase.of(context).bodyWillBurn+' ( ${bmrResult.toStringAsFixed(1)} )'+TranslationBase.of(context).caloriesEachDay+'( ${calories.toStringAsFixed(1)} ) '+TranslationBase.of(context).maintainWeight,
                  style: TextStyle(
                      fontSize: 14,
                      letterSpacing: -0.56,
                      fontWeight: FontWeight.w600,
                      color: CustomColors.textColor
                  ),
                ),
              ],
            ).withBorderedContainer,
          ),
          mFlex(1),

          Container(
            margin: EdgeInsets.symmetric(horizontal: 16.0, vertical: 16.0),
            color: Colors.white,
            child: SecondaryButton(
              label: TranslationBase.of(context).viewDocList,
              color: CustomColors.accentColor,
              onTap: () {
                getDoctorsList(context);
              },
            ),
          ),

        ],
      ),
    );
  }

  getDoctorsList(BuildContext context) {
    GifLoaderDialogUtils.showMyDialog(context);
    BariatricsService service = new BariatricsService();

    List<DoctorList> doctorsList = [];
    List<PatientDoctorAppointmentList> _patientDoctorAppointmentListHospital = List();

    service.getCalculationDoctors(calculationID: 3).then((res) {
      GifLoaderDialogUtils.hideDialog(context);
      print(res['List_CalculationTable'].length);
      if (res['MessageStatus'] == 1) {
        if (res['List_CalculationTable'].length != 0) {
          res['List_CalculationTable'].forEach((item) {
            DoctorList docList = new DoctorList();
            docList.clinicID = item['ClinicID'];
            docList.clinicName = item['ClinicName'];
            docList.doctorID = item['DoctorID'];
            docList.doctorImageURL = item['DoctorImageURL'];
            docList.name = item['DoctorName'];
            docList.doctorTitle = item['DoctorTitle'];
            docList.gender = item['Gender'];
            docList.genderDescription = item['GenderDescription'];
            docList.nationalityName = item['Nationality'];
            docList.nationalityFlagURL = item['NationalityFlagURL'];
            docList.projectID = item['ProjectID'];
            docList.projectName = item['ProjectName'];
            docList.actualDoctorRate = 0;
            doctorsList.add(docList);
          });

          doctorsList.forEach((element) {
            List<PatientDoctorAppointmentList> doctorByHospital = _patientDoctorAppointmentListHospital
                .where(
                  (elementClinic) => elementClinic.filterName == element.projectName,
                )
                .toList();

            if (doctorByHospital.length != 0) {
              _patientDoctorAppointmentListHospital[_patientDoctorAppointmentListHospital.indexOf(doctorByHospital[0])].patientDoctorAppointmentList.add(element);
            } else {
              _patientDoctorAppointmentListHospital.add(PatientDoctorAppointmentList(filterName: element.projectName, distanceInKMs: "0", patientDoctorAppointment: element));
            }
          });

          Navigator.push(context, FadePage(page: SearchResults(isLiveCareAppointment: false, doctorsList: doctorsList, patientDoctorAppointmentListHospital: _patientDoctorAppointmentListHospital)));
        }
      }
    }).catchError((err) {
      GifLoaderDialogUtils.hideDialog(context);
      print(err);
    });
  }
}
extension BorderedContainer on Widget {
  Widget get withBorderedContainer => Container(
    padding: EdgeInsets.only(left: 16, right: 16, bottom: 15, top: 15),
    alignment: Alignment.center,
    decoration: BoxDecoration(
      borderRadius: BorderRadius.circular(15),
      color: Colors.white,
      border: Border.all(
        color: Color(0xffefefef),
        width: 1,
      ),
    ),
    child: this,
  );
}