import 'package:doctor_app_flutter/config/size_config.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/util/date-utils.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/shared/app_texts_widget.dart';
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:url_launcher/url_launcher.dart';

class PatientProfileHeaderNewDesignInPatient extends StatelessWidget {
  final PatiantInformtion patient;
  final String patientType;
  final String arrivalType;
  final double height;

  PatientProfileHeaderNewDesignInPatient(
      this.patient, this.patientType, this.arrivalType,
      {this.height = 0.0});

  @override
  Widget build(BuildContext context) {
    int gender = 1;
    if (patient.patientDetails != null) {
      gender = patient.patientDetails.gender;
    } else {
      gender = patient.gender;
    }

    return Container(
      padding: EdgeInsets.only(
        left: 0,
        right: 5,
        bottom: 5,
      ),
      decoration: BoxDecoration(
        color: Colors.white,
      ),
      height: height == 0 ? 200 : height,
      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(
                    patient.firstName != null
                        ? (Helpers.capitalize(patient.firstName) +
                            " " +
                            Helpers.capitalize(patient.lastName))
                        : Helpers.capitalize(patient.patientDetails.fullName),
                    fontSize: SizeConfig.textMultiplier * 2.2,
                    fontWeight: FontWeight.bold,
                    fontFamily: 'Poppins',
                  ),
                ),
                gender == 1
                    ? Icon(
                        DoctorApp.male_2,
                        color: Colors.blue,
                      )
                    : Icon(
                        DoctorApp.female_1,
                        color: Colors.pink,
                      ),
                Container(
                  margin: EdgeInsets.symmetric(horizontal: 4),
                  child: InkWell(
                    onTap: () {
                      launch("tel://" + patient.mobileNumber);
                    },
                    child: Icon(
                      Icons.phone,
                      color: Colors.black87,
                    ),
                  ),
                ),
              ]),
            ),
            Row(children: [
              Padding(
                padding: EdgeInsets.only(left: 12.0),
                child: Container(
                  width: 60,
                  height: 60,
                  child: Image.asset(
                    gender == 1
                        ? 'assets/images/male_avatar.png'
                        : 'assets/images/female_avatar.png',
                    fit: BoxFit.cover,
                  ),
                ),
              ),
              SizedBox(
                width: 10,
              ),
              Expanded(
                child: Column(
                  crossAxisAlignment: CrossAxisAlignment.start,
                  children: [
                    Row(
                      mainAxisAlignment: MainAxisAlignment.spaceBetween,
                      children: [
                        Row(
                          children: [
                            AppText(
                              TranslationBase.of(context).fileNumber,
                              fontSize: 1.2 * SizeConfig.textMultiplier,
                            ),
                            AppText(patient.patientId.toString(),
                                fontSize: 1.4 * SizeConfig.textMultiplier,
                                fontWeight: FontWeight.w700),
                          ],
                        ),
                        if(patient.admissionDate!=null)
                        Row(
                          children: [
                            AppText(
                              DateUtils.convertDateFromServerFormat(
                                  patient.admissionDate, "hh:mm a"),
                              fontWeight: FontWeight.bold,
                              fontSize: 1.4 * SizeConfig.textMultiplier,
                            ),
                          ],
                        )
                      ],
                    ),
                    Row(
                      mainAxisAlignment: MainAxisAlignment.spaceBetween,
                      children: [
                        if(patient.admissionDate!=null)
                        Row(
                          children: [
                            AppText(
                              "${TranslationBase.of(context).admissionDate}: ",
                              fontSize: 1.2 * SizeConfig.textMultiplier,
                            ),
                            AppText(
                                DateUtils.convertDateFromServerFormat(
                                    patient.admissionDate, "dd MMM,yyyy"),
                                fontSize: 1.4 * SizeConfig.textMultiplier,
                                fontWeight: FontWeight.w700),
                          ],
                        ),
                        Row(
                          children: [
                            AppText(
                              patient.nationalityName ??
                                  patient.nationality ??
                                  patient.nationalityId ??
                                  '',
                              fontWeight: FontWeight.bold,
                              fontSize: 1.4 * SizeConfig.textMultiplier,
                            ),
                            patient.nationalityFlagURL != null
                                ? ClipRRect(
                                    borderRadius: BorderRadius.circular(20.0),
                                    child: Image.network(
                                      patient.nationalityFlagURL,
                                      height: 25,
                                      width: 30,
                                      errorBuilder: (BuildContext context,
                                          Object exception,
                                          StackTrace stackTrace) {
                                        return Text('No Image');
                                      },
                                    ))
                                : SizedBox()
                          ],
                        )
                      ],
                    ),
                    if(patient.admissionDate!=null)
                    Row(
                      children: [
                        AppText(
                          "${TranslationBase.of(context).numOfDays}: ",
                          fontSize: 1.2 * SizeConfig.textMultiplier,
                        ),
                        AppText(
                            "${DateTime.now().difference(DateUtils.getDateTimeFromServerFormat(patient.admissionDate)).inDays + 1}",
                            fontSize: 1.4 * SizeConfig.textMultiplier,
                            fontWeight: FontWeight.w700),
                      ],
                    ),
                  ],
                ),
              ),
            ]),
          ],
        ),
      ),
    );
  }

  convertDateFormat2(String str) {
    String newDate;
    const start = "/Date(";
    if (str.isNotEmpty) {
      const end = "+0300)";

      final startIndex = str.indexOf(start);
      final endIndex = str.indexOf(end, startIndex + start.length);

      var date = new DateTime.fromMillisecondsSinceEpoch(
          int.parse(str.substring(startIndex + start.length, endIndex)));
      newDate = date.year.toString() +
          "/" +
          date.month.toString().padLeft(2, '0') +
          "/" +
          date.day.toString().padLeft(2, '0');
    }

    return newDate.toString();
  }

  isToday(date) {
    DateTime tempDate = new DateFormat("yyyy-MM-dd").parse(date);
    return DateFormat("yyyy-MM-dd").format(tempDate) ==
        DateFormat("yyyy-MM-dd").format(DateTime.now());
  }

  myBoxDecoration() {
    return BoxDecoration(
        border: Border(
          top: BorderSide(
            color: Colors.green,
            width: 5,
          ),
        ),
        borderRadius: BorderRadius.circular(10));
  }
}
