import 'package:diplomaticquarterapp/core/service/AuthenticatedUserObject.dart';
import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/PrescriptionViewModel.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/locator.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/pages/medical/prescriptions/prescription_items_page.dart';
import 'package:diplomaticquarterapp/pages/medical/prescriptions/prescriptions_home_page.dart';
import 'package:diplomaticquarterapp/pages/pharmacies/widgets/home/ViewAllHomeWidget.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/others/network_base_view.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:rating_bar/rating_bar.dart';

class PrescriptionsWidget extends StatelessWidget {
  AuthenticatedUserObject authenticatedUserObject = locator<AuthenticatedUserObject>();

  @override
  Widget build(BuildContext context) {

    ProjectViewModel projectProvider = Provider.of(context);
    return BaseView<PrescriptionViewModel>(
      onModelReady: (model) async {
        if (Provider.of<ProjectViewModel>(context, listen: false).isLogin) {
          model.getPrescription();
        }
      },
      allowAny: true,
      builder: (_, model, wi) => model.prescriptionsList.length > 0 && authenticatedUserObject.isLogin
          ? NetworkBaseView(
              isLocalLoader: true,
              baseViewModel: model,
              child: Container(
                child: Column(
                  children: [
                    ViewAllHomeWidget(TranslationBase.of(context).myPrescription, HomePrescriptionsPage()),
                    Container(
                      margin: EdgeInsets.only(right: 10.0, left: 10.0),
                      height: MediaQuery.of(context).size.height * 0.30,
                      child: ListView.builder(
                        scrollDirection: Axis.horizontal,
                        shrinkWrap: true,
                        physics: ScrollPhysics(),
                        itemCount: model.prescriptionsList.length,
                        itemBuilder: (context, index) {
                          return InkWell(
                            onTap: () {
                              Navigator.push(
                                context,
                                FadePage(
                                  page: PrescriptionItemsPage(
                                    prescriptions: model.prescriptionsList[index],
                                  ),
                                ),
                              );
                            },
                            child: Container(
                              padding: EdgeInsets.only(left: 8.0, right: 8.0),
                              margin: EdgeInsets.only(right: 5.0, left: 5.0),
                              decoration: BoxDecoration(
                                  border: Border.all(
                                    color: Colors.grey,
                                    style: BorderStyle.solid,
                                    width: 1.0,
                                  ),
                                  color: Colors.white,
                                  borderRadius: BorderRadius.circular(10.0)),
                              child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: <Widget>[
                                Row(
                                  children: <Widget>[
                                    Container(
                                      padding: EdgeInsets.only(
                                        top: 10.0,
                                        left: 10.0,
                                        right: 10.0,
                                        bottom: 10.0,
                                      ),
                                      child: CircleAvatar(
                                        radius: 30,
                                        backgroundColor: Colors.transparent,
                                        child: Image.network(
                                          model.prescriptionsList[index].doctorImageURL,
                                          width: 50,
                                          height: 50,
                                        ),
                                      ),
                                    ),
                                    Column(
                                      children: [
                                        Container(
                                            padding: EdgeInsets.only(left: 15.0, right: 15.0),
                                            decoration: BoxDecoration(
                                                border: Border.all(
                                                  color: Colors.green,
                                                  style: BorderStyle.solid,
                                                  width: 3.0,
                                                ),
                                                color: Colors.green,
                                                borderRadius: BorderRadius.circular(30.0)),
                                            child: Text(
                                                projectProvider.isArabic
                                                  ? model.prescriptionsList[index].isInOutPatientDescriptionN.toString()
                                                  : model.prescriptionsList[index].isInOutPatientDescription.toString(),
                                              style: TextStyle(
                                                color: Colors.white,
                                                fontSize: 15.0,
                                              ),
                                            )),
                                        Row(children: <Widget>[
                                          Image.asset(
                                            'assets/images/Icon-awesome-calendar.png',
                                            width: 30,
                                            height: 30,
                                          ),
                                          Text(
                                            DateUtil.convertStringToDate(model.prescriptionsList[index].appointmentDate.toString()).toString().substring(0, 10),
                                            style: TextStyle(
                                              color: Colors.black,
                                              fontSize: 15.0,
                                            ),
                                          )
                                        ]),
                                      ],
                                    ),
                                  ],
                                ),
                                Container(
                                  margin: EdgeInsets.only(left: 5),
                                  child: Row(children: <Widget>[
                                    Text(
                                      model.prescriptionsList[index].doctorTitle.toString(),
                                      style: TextStyle(
                                        color: Colors.black,
                                        fontSize: 15.0,
                                        fontWeight: FontWeight.bold,
                                      ),
                                    ),
                                    Text(
                                      model.prescriptionsList[index].doctorName.toString(),
                                      style: TextStyle(
                                        color: Colors.black,
                                        fontSize: 15.0,
                                        fontWeight: FontWeight.bold,
                                      ),
                                    ),
                                  ]),
                                ),
                                Container(
                                  margin: EdgeInsets.only(left: 5),
                                  child: Text(
                                    model.prescriptionsList[index].clinicDescription.toString(),
                                    style: TextStyle(
                                      color: Colors.green,
                                      fontSize: 15.0,
                                    ),
                                  ),
                                ),
                                Row(children: <Widget>[
                                  Container(
                                    margin: EdgeInsets.only(left: 5),
                                    child: RatingBar.readOnly(
                                      initialRating: model.prescriptionsList[index].actualDoctorRate.toDouble(),
                                      size: 15.0,
                                      filledColor: Colors.yellow[700],
                                      emptyColor: Colors.grey[500],
                                      isHalfAllowed: true,
                                      halfFilledIcon: Icons.star_half,
                                      filledIcon: Icons.star,
                                      emptyIcon: Icons.star,
                                    ),
                                  ),
                                  SizedBox(
                                    width: 130.0,
                                  ),
                                  Container(
                                      child: Icon(
                                    Icons.arrow_forward,
                                    color: Theme.of(context).primaryColor,
                                  )),
                                ]),
                              ]),
                            ),
                          );
                        },
                      ),
                    ),
                  ],
                ),
              ),
            )
          : Container(),
    );
  }
}
