import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/core/viewModel/project_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/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:hexcolor/hexcolor.dart'; import 'package:provider/provider.dart'; import 'package:url_launcher/url_launcher.dart'; class GeneralLabResultHeader extends StatelessWidget with PreferredSizeWidget { final PatiantInformtion patient; final String patientType; final String arrivalType; final String doctorName; final String branch; final DateTime appointmentDate; final String profileUrl; final String invoiceNO; final String orderNo; final bool isPrescriptions; final bool isMedicalFile; final String episode; final String vistDate; final String clinic; GeneralLabResultHeader( {this.patient, this.patientType, this.arrivalType, this.doctorName, this.branch, this.appointmentDate, this.profileUrl, this.invoiceNO, this.orderNo, this.isPrescriptions = false, this.clinic, this.isMedicalFile = false, this.episode, this.vistDate}); @override Widget build(BuildContext context) { ProjectViewModel projectViewModel = Provider.of(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, top: 5), decoration: BoxDecoration( color: Colors.white, ), height: MediaQuery.of(context).size.height * 0.23, child: Container( padding: EdgeInsets.only(left: 10, right: 10, bottom: 10), margin: EdgeInsets.only(top: 50), child: Column( crossAxisAlignment: CrossAxisAlignment.start, 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.fullName??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: [ SERVICES_PATIANT2[int.parse(patientType)] == "patientArrivalList" ? Container( child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ patient.patientStatusType == 43 ? AppText( TranslationBase.of(context).arrivedP, color: Colors.green, fontWeight: FontWeight.bold, fontFamily: 'Poppins', fontSize: 12, ) : AppText( TranslationBase.of(context).notArrived, color: Colors.red[800], fontWeight: FontWeight.bold, fontFamily: 'Poppins', fontSize: 12, ), arrivalType == '1' || patient.arrivedOn == null ? AppText( patient.startTime != null ? patient.startTime : '', fontFamily: 'Poppins', fontWeight: FontWeight.w600, ) : AppText( AppDateUtils.convertStringToDateFormat( patient.arrivedOn, 'MM-dd-yyyy HH:mm'), fontFamily: 'Poppins', fontWeight: FontWeight.w600, ) ], )) : SizedBox(), if (SERVICES_PATIANT2[int.parse(patientType)] == "List_MyOutPatient") Container( child: Row( mainAxisAlignment: MainAxisAlignment.start, children: [ AppText( TranslationBase.of(context).appointmentDate + " : ", fontSize: 14, ), patient.startTime != null ? Container( height: 15, width: 60, decoration: BoxDecoration( borderRadius: BorderRadius.circular(25), color: HexColor("#20A169"), ), child: AppText( patient.startTime ?? "", color: Colors.white, fontSize: 1.5 * SizeConfig.textMultiplier, textAlign: TextAlign.center, fontWeight: FontWeight.bold, ), ) : SizedBox(), SizedBox( width: 3.5, ), Container( child: AppText( convertDateFormat2( patient.appointmentDate.toString() ?? ''), fontSize: 1.5 * SizeConfig.textMultiplier, fontWeight: FontWeight.bold, ), ), SizedBox( height: 0.5, ) ], ), margin: EdgeInsets.only( top: 8, ), ), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ RichText( text: TextSpan( style: TextStyle( fontSize: 1.6 * SizeConfig.textMultiplier, color: Colors.black), children: [ new TextSpan( text: TranslationBase.of(context).fileNumber, style: TextStyle( fontSize: 12, fontFamily: 'Poppins')), new TextSpan( text: patient?.patientId?.toString() ?? "", style: TextStyle( fontWeight: FontWeight.w700, fontFamily: 'Poppins', fontSize: 14)), ], ), ), Row( children: [ AppText( patient.nationalityName ?? patient.nationality ?? "", fontWeight: FontWeight.bold, fontSize: 12, ), patient.nationality != 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() ], ) ], ), Container( child: RichText( text: new TextSpan( style: new TextStyle( fontSize: 1.6 * SizeConfig.textMultiplier, color: Colors.black, fontFamily: 'Poppins', ), children: [ new TextSpan( text: TranslationBase.of(context).age + " : ", style: TextStyle(fontSize: 14)), new TextSpan( text: "${AppDateUtils.getAgeByBirthday(patient.patientDetails != null ? patient.patientDetails.dateofBirth : patient.dateofBirth, context)}", style: TextStyle( fontWeight: FontWeight.w700, fontSize: 14)), ], ), ), ), Container( child: RichText( text: new TextSpan( style: new TextStyle( fontSize: 1.6 * SizeConfig.textMultiplier, color: Colors.black, fontFamily: 'Poppins', ), children: [ new TextSpan( text: "Result Date: ", style: TextStyle(fontSize: 14)), new TextSpan( text: '${AppDateUtils.getDayMonthYearDateFormatted(appointmentDate, isArabic: projectViewModel.isArabic)}', style: TextStyle( fontWeight: FontWeight.w700, fontSize: 14)), ], ), ), ), ], ), ), ]), ], ), ), ); } convertDateFormat2(String str) { String newDate = ""; const start = "/Date("; const end = "+0300)"; if (str.isNotEmpty) { 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(); } @override Size get preferredSize => Size(double.maxFinite, 310); }