import 'package:doctor_app_flutter/config/config.dart'; 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/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; class PatientCard extends StatelessWidget { final PatiantInformtion patientInfo; final Function onTap; final String patientType; final String arrivalType; final bool isInpatient; const PatientCard( {Key key, this.patientInfo, this.onTap, this.patientType, this.arrivalType, this.isInpatient}) : super(key: key); @override Widget build(BuildContext context) { return Container( width: SizeConfig.screenWidth * 0.9, margin: EdgeInsets.all(6), padding: EdgeInsets.only(left: 0, right: 5, bottom: 5, top: 5), decoration: BoxDecoration( borderRadius: BorderRadius.circular(15), color: Colors.white, ), child: Stack(children: [ // if (SERVICES_PATIANT2[int.parse(patientType)] != "List_MyInPatient") // Container( // height: MediaQuery.of(context).size.height * .20, // width: 5, // decoration: BoxDecoration( // borderRadius: BorderRadius.only( // topLeft: Radius.circular(10), // bottomLeft: Radius.circular(10)), // color: patientInfo.patientStatusType == 43 // ? Colors.green[500] // : Colors.red[800], // )), Container( padding: EdgeInsets.only(left: 10, right: 0, bottom: 0), child: InkWell( child: Column( children: [ SizedBox( height: 10, ), // SERVICES_PATIANT2[int.parse(patientType)] == // "List_MyOutPatient" // ? Padding( // padding: EdgeInsets.only(left: 12.0), // child: Row( // mainAxisAlignment: MainAxisAlignment.spaceBetween, // children: [ // patientInfo.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, // ), // this.arrivalType == '1' // ? AppText( // patientInfo.startTime != null // ? patientInfo.startTime // : patientInfo.startTimes, // fontFamily: 'Poppins', // fontWeight: FontWeight.w600, // ) // : patientInfo.arrivedOn != null // ? AppText( // DateUtils.convertStringToDateFormat( // patientInfo.arrivedOn, // 'MM-dd-yyyy HH:mm'), // fontFamily: 'Poppins', // fontWeight: FontWeight.w600, // ) // : SizedBox() // ], // )) // : SizedBox(), Padding( padding: EdgeInsets.only(left: 12.0), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Row(children: [ Container( width: 170, child: AppText( (Helpers.capitalize(patientInfo.firstName) + " " + Helpers.capitalize(patientInfo.lastName)), fontSize: 16, fontWeight: FontWeight.bold, fontFamily: 'Poppins', textOverflow: TextOverflow.ellipsis, ), ), patientInfo.gender == 1 ? Icon( DoctorApp.male_2, color: Colors.blue, ) : Icon( DoctorApp.female_1, color: Colors.pink, ), ]), Row( children: [ AppText( patientInfo.nationalityName != null ? patientInfo.nationalityName.trim() : patientInfo.nationality != null ? patientInfo.nationality.trim() : patientInfo.nationalityId != null ? patientInfo.nationalityId : "", fontWeight: FontWeight.bold, fontSize: 14, textOverflow: TextOverflow.ellipsis, ), patientInfo.nationality != null || patientInfo.nationalityId != null ? ClipRRect( borderRadius: BorderRadius.circular(20.0), child: Image.network( patientInfo.nationalityFlagURL != null ? patientInfo.nationalityFlagURL : '', height: 25, width: 30, errorBuilder: (BuildContext context, Object exception, StackTrace stackTrace) { return AppText( 'No Image', fontSize: 10, ); }, )) : SizedBox() ], ) ], )), Row(children: [ Column( mainAxisAlignment: MainAxisAlignment.start, children: [ Padding( padding: EdgeInsets.only(left: 12.0), child: Container( width: 60, height: 60, child: Image.asset( patientInfo.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: [ Container( child: RichText( text: new TextSpan( style: new TextStyle( fontSize: 2.0 * SizeConfig.textMultiplier, color: Colors.black), children: [ new TextSpan( text: TranslationBase.of(context) .fileNumber, style: TextStyle( fontSize: 14, fontFamily: 'Poppins')), new TextSpan( text: patientInfo.patientId.toString(), style: TextStyle( fontWeight: FontWeight.w700, fontFamily: 'Poppins', fontSize: 15)), ], ), ), ), // if (SERVICES_PATIANT2[int.parse(patientType)] != // "List_MyInPatient") // Container( // child: RichText( // text: new TextSpan( // style: new TextStyle( // fontSize: 2.0 * SizeConfig.textMultiplier, // color: Colors.black, // fontFamily: 'Poppins', // ), // children: [ // new TextSpan( // text: // TranslationBase.of(context).age + // " : ", // style: TextStyle(fontSize: 14)), // new TextSpan( // text: // "${DateUtils.getAgeByBirthday(patientInfo.dateofBirth, context)}", // style: TextStyle( // fontWeight: FontWeight.w700, // fontSize: 15)), // ], // ), // ), // ), if (isInpatient == true) Container( child: RichText( text: new TextSpan( style: new TextStyle( fontSize: 2.0 * SizeConfig.textMultiplier, color: Colors.black, fontFamily: 'Poppins', ), children: [ new TextSpan( text: patientInfo.admissionDate == null ? "" : TranslationBase.of(context) .admissionDate + " : ", style: TextStyle(fontSize: 14)), new TextSpan( text: patientInfo.admissionDate == null ? "" : "${DateUtils.convertDateFromServerFormat(patientInfo.admissionDate.toString(), 'yyyy-MM-dd')}", style: TextStyle( fontWeight: FontWeight.w700, fontSize: 15)), ]))), if (patientInfo.admissionDate != null) Row( children: [ AppText( "${TranslationBase.of(context).numOfDays}: ", fontSize: 15, ), AppText( "${DateTime.now().difference(DateUtils.getDateTimeFromServerFormat(patientInfo.admissionDate)).inDays + 1}", fontSize: 15, fontWeight: FontWeight.w700), ], ), // Container( // child: Row( // crossAxisAlignment: CrossAxisAlignment.start, // mainAxisAlignment: MainAxisAlignment.start, // children: [ // Expanded( // child: AppText( // TranslationBase.of(context).noOfDays + // " : ", // fontSize: 14, // ), // ), // AppText( // patientInfo.days, // color: Colors.white, // fontSize: 1.5 * SizeConfig.textMultiplier, // textAlign: TextAlign.center, // fontWeight: FontWeight.bold, // ), // SizedBox( // height: 0.5, // ) // ], // ), // margin: EdgeInsets.only( // top: 8, // ), // ), //if (SERVICES_PATIANT2[int.parse(patientType)] == // "List_MyOutPatient") // Container( // child: Row( // crossAxisAlignment: CrossAxisAlignment.start, // mainAxisAlignment: MainAxisAlignment.start, // children: [ // AppText( // TranslationBase.of(context) // .appointmentDate + // " : ", // fontSize: 14, // ), // // Container( // // child: // patientInfo.appointmentDate != null // ? AppText( // DateUtils // .convertDateFromServerFormat( // patientInfo.appointmentDate // .toString(), // 'yyyy-MM-dd'), // fontSize: 12, // fontWeight: FontWeight.bold, // ) // : SizedBox(), // //), // patientInfo.startTimes != null // ? // // // // Container( // // // height: 15, // // // width: 60, // // padding: EdgeInsets.all(5), // // decoration: BoxDecoration( // // borderRadius: // // BorderRadius.circular(25), // // color: HexColor("#20A169"), // // ), // // child: // AppText( // ' ' + patientInfo.startTimes, // fontSize: 11, // fontWeight: FontWeight.bold, // ) // //) // : SizedBox(), // SizedBox( // width: 3.5, // ), // //, // SizedBox( // height: 0.5, // ) // ], // ), // margin: EdgeInsets.only( // top: 8, // ), //) ])) ]), // SERVICES_PATIANT2[int.parse(patientType)] == // "List_MyOutPatient" // ? Row( // mainAxisAlignment: MainAxisAlignment.end, // children: [ // Container( // padding: EdgeInsets.all(4), // child: Image.asset( // patientInfo.appointmentType == // 'Regular' && // patientInfo.visitTypeId == 100 // ? 'assets/images/livecare.png' // : patientInfo.appointmentType == // 'Walkin' // ? 'assets/images/walkin.png' // : 'assets/images/booked.png', // height: 25, // width: 35, // )), // ]) // : (isInpatient == true) ? Row( mainAxisAlignment: MainAxisAlignment.end, children: [ Container( padding: EdgeInsets.all(4), child: Image.asset( 'assets/images/inpatient.png', height: 25, width: 35, )), ]) : SizedBox() ], ), onTap: onTap, )), ])); } convertDateFormat2(String str) { String timeConvert; const start = "/Date("; 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))); String 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)); } }