import 'package:fcs/domain/entities/package.dart';
import 'package:fcs/pages/package/package_info.dart';
import 'package:fcs/pages/main/util.dart';
import 'package:fcs/pages/widgets/bottom_up_page_route.dart';
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';

typedef CallbackPackageSelect(Package package);

class PackageListRow extends StatelessWidget {
  final Package package;
  final CallbackPackageSelect callbackPackageSelect;
  final double dotSize = 15.0;
  final DateFormat dateFormat = new DateFormat("dd MMM yyyy");

  PackageListRow({Key key, this.package, this.callbackPackageSelect})
      : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Container(
      padding: EdgeInsets.only(left: 15, right: 15),
      child: InkWell(
        onTap: () {
          if (callbackPackageSelect != null) {
            callbackPackageSelect(package);
            return;
          }
          Navigator.push(
            context,
            BottomUpPageRoute(PackageInfo(package: package)),
          );
        },
        child: Row(
          children: <Widget>[
            Expanded(
              child: new Padding(
                padding: const EdgeInsets.symmetric(vertical: 16.0),
                child: new Row(
                  children: <Widget>[
                    new Expanded(
                      child: new Column(
                        crossAxisAlignment: CrossAxisAlignment.start,
                        children: <Widget>[
                          Padding(
                            padding: const EdgeInsets.only(left: 8.0),
                            child: new Text(
                              package.id == null ? '' : package.trackingID,
                              style: new TextStyle(
                                  fontSize: 15.0, color: Colors.black),
                            ),
                          ),
                          Padding(
                            padding: const EdgeInsets.only(left: 8.0),
                            child: new Text(
                              package.market == null ? '' : package.market,
                              style: new TextStyle(
                                  fontSize: 15.0, color: Colors.black),
                            ),
                          ),
                        ],
                      ),
                    ),
                  ],
                ),
              ),
            ),
            Column(
              children: <Widget>[
                Padding(
                  padding: const EdgeInsets.all(3.0),
                  child: getStatus(package.currentStatus),
                ),
                Padding(
                  padding: const EdgeInsets.all(0),
                  child: new Text(
                    dateFormat.format(package.currentStatusDate),
                    style: new TextStyle(fontSize: 15.0, color: Colors.grey),
                  ),
                ),
              ],
            )
          ],
        ),
      ),
    );
  }
}
