import 'package:flutter/material.dart'; import 'package:siopas/models/asset_status_model.dart'; import 'package:siopas/models/customer_model.dart'; import 'package:siopas/models/m_asset_status_model.dart'; import 'package:siopas/pages/peminjaman_barang/controller/peminjaman_controller.dart'; import 'package:intl/date_symbol_data_local.dart'; import 'package:intl/intl.dart'; import 'package:collection/collection.dart'; import '../../models/warehouse_mode.dart'; import '../../services/controllerApi.dart'; class DetailPeminjamanBarangPage extends StatefulWidget { final String peminjamanId; const DetailPeminjamanBarangPage({Key? key, required this.peminjamanId}) : super(key: key); @override _DetailPeminjamanBarangPageState createState() => _DetailPeminjamanBarangPageState(); } class _DetailPeminjamanBarangPageState extends State { AssetStatusModel? peminjamanInfo; WarehouseModel? warehouseInfo; List? petiData; List? customerData; List? warehouseData; bool loading = true; @override void initState() { super.initState(); getPeminjamanIdData(); customerListAPI(); petiListAPI(); warehouseListAPI(); initializeDateFormatting('id_ID', null); } Future customerListAPI() async { if (mounted) { await ControllerApi().fetchCustomerDataAPI().then((value) { setState(() { customerData = (value as List) .map((item) => CustomerModel.fromJson(item)) .toList(); loading = false; }); }); } } Future petiListAPI() async { if (mounted) { await ControllerApi().fetchPetiDataAPI().then((value) { setState(() { petiData = (value as List) .map((item) => PetiAssetModel.fromJson(item)) .toList(); loading = false; }); }); } } Future warehouseListAPI() async { if (mounted) { await ControllerApi().fetchWarehouseDataAPI().then((value) { setState(() { warehouseData = (value as List) .map((item) => WarehouseModel.fromJson(item)) .toList(); loading = false; }); }); } } Future getPeminjamanIdData() async { List peminjamans = await Controller().fetchPeminjamanDataId(); peminjamanInfo = peminjamans.firstWhereOrNull( (peminjaman) => peminjaman.id.toString() == widget.peminjamanId, ); setState(() {}); } String _formatDate(String? date) { if (date != null) { DateTime parsedDate = DateTime.parse(date); String formattedDate = DateFormat('EEEE, dd MMMM yyyy', 'id_ID').format(parsedDate); return formattedDate; } else { return ''; } } @override Widget build(BuildContext context) { PetiAssetModel? petiSqfliteApi; petiSqfliteApi = petiData?.firstWhereOrNull( (peti) => peti.id == peminjamanInfo!.peti_id, ); CustomerModel? customerSqfliteApi; customerSqfliteApi = customerData?.firstWhereOrNull( (customer) => customer.id == peminjamanInfo?.customer_id, ); WarehouseModel? warehouseSqfliteApi; warehouseSqfliteApi = warehouseData?.firstWhereOrNull( (warehouse) => warehouse.id == peminjamanInfo!.exit_warehouse, ); WarehouseModel? warehouseTujuanSqfliteApi; warehouseTujuanSqfliteApi = warehouseData?.firstWhereOrNull( (warehouse) => warehouse.id == peminjamanInfo!.exit_warehouse, ); return Scaffold( backgroundColor: Colors.grey[200], appBar: AppBar( backgroundColor: Colors.indigo[700], elevation: 0, title: Text( 'Detail Peminjaman Barang', style: TextStyle( color: Colors.white, fontSize: 16, ), ), leading: IconButton( icon: Icon(Icons.arrow_back, color: Colors.white), onPressed: () { Navigator.pushNamed(context, '/peminjaman-barang'); }, ), ), body: Padding( padding: EdgeInsets.all(16.0), child: Card( shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(15.0), ), elevation: 5, child: Column( children: [ Card( shape: RoundedRectangleBorder( borderRadius: BorderRadius.vertical(top: Radius.circular(15.0)), ), elevation: 0, margin: EdgeInsets.all(0), color: Colors.indigo[700], child: Padding( padding: const EdgeInsets.all(16.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( children: [ Icon(Icons.article, size: 30, color: Colors.white), SizedBox(width: 10), Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( 'ID:', style: TextStyle( fontSize: 12, fontWeight: FontWeight.bold, color: Colors.white, ), ), SizedBox(height: 5), Text( petiSqfliteApi != null && petiSqfliteApi.fix_lot != null ? petiSqfliteApi!.fix_lot.toString() : '-', style: TextStyle( fontSize: 12, fontWeight: FontWeight.bold, color: Colors.white, ), ), ], ), ], ), ], ), ), ), SizedBox(height: 10), if (peminjamanInfo != null) ...[ _buildDetailItem( 'Kode Peti', petiSqfliteApi != null && petiSqfliteApi.fix_lot != null ? petiSqfliteApi!.fix_lot.toString() : '-', ), Divider(thickness: 1), _buildDetailItem( 'Nama Customer', customerSqfliteApi != null && customerSqfliteApi.name != null ? customerSqfliteApi!.name.toString() : '-', ), Divider(thickness: 1), _buildDetailItem('Tgl Peminjaman', _formatDate(peminjamanInfo!.exit_at.toString())), Divider(thickness: 1), _buildDetailItem('Est Peminjaman', _formatDate(peminjamanInfo!.est_pengembalian.toString())), Divider(thickness: 1), _buildDetailItem( 'PJ Peminjaman', peminjamanInfo!.exit_pic.toString()), Divider(thickness: 1), _buildDetailItem( 'Asal Warehouse', // peminjamanInfo!.exit_warehouse.toString()), warehouseSqfliteApi != null && warehouseSqfliteApi.name != null ? warehouseSqfliteApi!.name.toString() : '-'), Divider(thickness: 1), _buildDetailItem( 'Exit Warehouse', // peminjamanInfo!.exit_warehouse.toString()), warehouseSqfliteApi != null && warehouseSqfliteApi.name != null ? warehouseSqfliteApi!.name.toString() : '-'), Divider(thickness: 1), // ... tambahkan data lainnya sesuai kebutuhan ], ], ), ), ), ); } Widget _buildDetailItem(String label, String value) { return Padding( padding: const EdgeInsets.symmetric(vertical: 8.0, horizontal: 16.0), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( label, style: TextStyle(fontSize: 12.5, fontWeight: FontWeight.bold), ), Text(value), ], ), ); } }