import "package:flutter/material.dart";
import "package:font_awesome_flutter/font_awesome_flutter.dart";
import "package:inventree/app_colors.dart";
import "package:inventree/inventree/sales_order.dart";
import "package:inventree/widget/paginator.dart";

import "package:inventree/inventree/model.dart";
import "package:inventree/l10.dart";

class PaginatedSOShipmentList extends PaginatedSearchWidget {

  const PaginatedSOShipmentList(Map<String, String> filters) : super(filters: filters);

  @override
  String get searchTitle => L10().shipments;

  @override
  _PaginatedSOShipmentListState createState() => _PaginatedSOShipmentListState();
}


class _PaginatedSOShipmentListState extends PaginatedSearchState<PaginatedSOShipmentList> {

  _PaginatedSOShipmentListState() : super();

  @override
  String get prefix => "so_shipment_";

  @override
  Map<String, String> get orderingOptions => {};

  @override
  Map<String, Map<String, dynamic>> get filterOptions => {};

  @override
  Future<InvenTreePageResponse?> requestPage(int limit, int offset, Map<String, String> params) async {
    final page = await InvenTreeSalesOrderShipment().listPaginated(limit, offset, filters: params);
    return page;
  }

  @override
  Widget buildItem(BuildContext context, InvenTreeModel model) {

    InvenTreeSalesOrderShipment shipment = model as InvenTreeSalesOrderShipment;

    return ListTile(
      title: Text(shipment.reference),
      subtitle: Text(shipment.tracking_number),
      leading: shipment.shipped ? FaIcon(FontAwesomeIcons.calendarCheck, color: COLOR_SUCCESS) : FaIcon(FontAwesomeIcons.calendarXmark, color: COLOR_WARNING),
      trailing: shipment.shipped ? Text(shipment.shipment_date ?? "") : null
    );

  }
}