import 'dart:io';

import 'package:flutter/material.dart';
import 'package:rogapp/model/destination.dart';
import 'package:rogapp/utils/database_helper.dart';

class HistoryPage extends StatefulWidget {
  const HistoryPage({super.key});

  @override
  State<HistoryPage> createState() => _HistoryPageState();
}

class _HistoryPageState extends State<HistoryPage> {
  DatabaseHelper db = DatabaseHelper.instance;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text("通過履歴"),
      ),
      body: SingleChildScrollView(
        child: Column(
          children: [
            FutureBuilder(
                future: db.getDestinations(),
                builder: (BuildContext context,
                    AsyncSnapshot<List<Destination>> snapshot) {
                  if (snapshot.connectionState == ConnectionState.done) {
                    if (snapshot.hasError) {
                      return Center(
                        child: Text(
                          '${snapshot.error} occurred',
                          style: const TextStyle(fontSize: 18),
                        ),
                      );
                    } else if (snapshot.hasData) {
                      final dests = snapshot.data;
                      if (dests!.isNotEmpty) {
                        //print("----- history -----");
                        return SizedBox(
                            width: MediaQuery.of(context).size.width,
                            height: MediaQuery.of(context).size.height,
                            child: ListView.builder(
                                itemCount: dests.length,
                                itemBuilder: (ctx, index) {
                                  //print("--- photo ${dests[index].checkin_image!} ----");
                                  return Padding(
                                    padding: const EdgeInsets.all(8.0),
                                    child: CustomWidget(
                                      title: dests[index].name!,
                                      subtitle:
                                          "${dests[index].sub_loc_id} : ${dests[index].name}",
                                      image1: dests[index].checkin_image != null
                                          ? Image.file(
                                              File(dests[index].checkin_image!))
                                          : null,
                                      image2:
                                          dests[index].buypoint_image != null
                                              ? Image.file(File(
                                                  dests[index].buypoint_image!))
                                              : null,
                                    ),
                                  );
                                }));
                      } else {
                        return const Center(child: Text("No checkin yet"));
                      }
                    }
                  } else if (snapshot.connectionState ==
                      ConnectionState.waiting) {
                    return const Center(
                      child: CircularProgressIndicator(),
                    );
                  }
                  return Container();
                }),
          ],
        ),
      ),
    );
  }
}

class CustomWidget extends StatelessWidget {
  final Image? image1;
  final Image? image2;
  final String title;
  final String subtitle;

  const CustomWidget({
    super.key,
    this.image1,
    this.image2,
    required this.title,
    required this.subtitle,
  });

  @override
  Widget build(BuildContext context) {
    return Row(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: [
        SizedBox(
          width:
              104, // 50 (width of each image) + 2 (space between images) + 2*1 (padding on both sides)
          child: Row(
            children: [
              if (image1 != null)
                SizedBox(
                  width: 50,
                  height: 100,
                  child: image1,
                ),
              if (image1 != null && image2 != null) const SizedBox(width: 2),
              if (image2 != null)
                SizedBox(
                  width: 50,
                  height: 100,
                  child: image2,
                ),
            ],
          ),
        ),
        const SizedBox(width: 10),
        Expanded(
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
              Text(
                title,
                style:
                    const TextStyle(fontSize: 20, fontWeight: FontWeight.bold),
                maxLines:
                    null, // Allows the text to wrap onto an unlimited number of lines
              ),
              Text(
                subtitle,
                style: const TextStyle(fontSize: 16),
                maxLines:
                    null, // Allows the text to wrap onto an unlimited number of lines
              ),
            ],
          ),
        ),
      ],
    );
  }
}
