import 'package:diplomaticquarterapp/core/model/notifications/get_notifications_request_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/notifications_view_model.dart';
import 'package:diplomaticquarterapp/pages/DrawerPages/notifications/notification_details_page.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.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:font_awesome_flutter/font_awesome_flutter.dart';

// ignore: must_be_immutable
class NotificationsPage extends StatelessWidget {
  getDateForm(String date) {
    DateTime d = DateUtil.convertStringToDate(date);
    String monthName = DateUtil.getMonth(d.month).toString();
    TimeOfDay timeOfDay = TimeOfDay(hour: d.hour, minute: d.minute);
    String minute = timeOfDay.minute < 10
        ? timeOfDay.minute.toString().padLeft(2, '0')
        : timeOfDay.minute.toString();

    String hour = '${timeOfDay.hourOfPeriod}:$minute';
    if (timeOfDay.period == DayPeriod.am) {
      hour = hour + "AM";
    } else {
      {
        hour = hour + "PM";
      }
    }

    //DayPeriod.am
    return monthName + ',${d.day},${d.year}, $hour';
  }

  int currentIndex = 0;

  @override
  Widget build(BuildContext context) {
    var prescriptionReport;
    return BaseView<NotificationViewModel>(
      onModelReady: (model) {
        GetNotificationsRequestModel getNotificationsRequestModel =
            new GetNotificationsRequestModel(
                currentPage: currentIndex,
                pagingSize: 14,
                notificationStatusID: 2);

        model.getNotifications(getNotificationsRequestModel, context);
      },
      builder: (_, model, widget) => AppScaffold(
        isShowAppBar: true,
        appBarTitle: TranslationBase.of(context).notifications,
        baseViewModel: model,
        body: ListView(
            children: model.notifications
                .map(
                  (notification) => InkWell(
                    onTap: () async {
                      if (!notification.isRead)
                        model.markAsRead(notification.id);
                      Navigator.push(
                          context,
                          FadePage(
                              page: NotificationsDetailsPage(
                            notification: notification,
                          )));
                    },
                    child: Container(
                      width: double.infinity,
                      margin: EdgeInsets.only(
                          top: 5, left: 10, right: 10, bottom: 5),
                      padding: EdgeInsets.all(8.0),
                      decoration: BoxDecoration(
                        color: Colors.white,
                        borderRadius: BorderRadius.all(
                          Radius.circular(10.0),
                        ),
                        border: Border.all(
                            color: notification.isRead
                                ? Colors.grey[200]
                                : Theme.of(context).primaryColor,
                            width: 0.5),
                      ),
                      child: Row(
                        children: <Widget>[
                          Expanded(
                            child: Padding(
                              padding: const EdgeInsets.all(8.0),
                              child: Column(
                                crossAxisAlignment: CrossAxisAlignment.start,
                                children: <Widget>[
                                  Texts(getDateForm(notification.createdOn)),
                                  SizedBox(
                                    height: 5,
                                  ),
                                  Row(
                                    children: [
                                      Expanded(
                                          child: Texts(notification.message)),
                                      if (notification.messageType == "image")
                                        Icon(FontAwesomeIcons.images)
                                    ],
                                  ),
                                  SizedBox(
                                    height: 5,
                                  ),
                                ],
                              ),
                            ),
                          ),
                          SizedBox(
                            width: 15,
                          ),
                        ],
                      ),
                    ),
                  ),
                )
                .toList()
                  ..add(
                    InkWell(
                      onTap: () async {
                        GifLoaderDialogUtils.showMyDialog(context);
                        currentIndex++;
                        GetNotificationsRequestModel
                            getNotificationsRequestModel =
                            new GetNotificationsRequestModel(
                                currentPage: currentIndex,
                                pagingSize: 14,
                                notificationStatusID: 2);

                        await model.getNotifications(
                            getNotificationsRequestModel, context);
                        GifLoaderDialogUtils.hideDialog(context);
                      },
                      child: Center(
                        child: Image.asset('assets/images/notf.png'),
                      ),
                    ),
                  )),
      ),
    );
  }
}
