import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:intl/date_symbol_data_local.dart';

import 'package:sendtrain/classes/media.dart';
import 'package:sendtrain/models/activity_model.dart';
import 'package:sendtrain/models/session_model.dart';
import 'package:sendtrain/widgets/media_card.dart';

class SessionView extends StatelessWidget {
  const SessionView({super.key, required this.data});

  final SessionModel data;

  @override
  Widget build(BuildContext context) {
    initializeDateFormatting('en');
    final DateFormat dateFormat = DateFormat('yyyy-MM-dd');

    return Column(
      mainAxisSize: MainAxisSize.min,
      mainAxisAlignment: MainAxisAlignment.start,
      children: <Widget>[
        AppBar(
          centerTitle: true,
          title: Text('Session @ ${dateFormat.format(data.date)}',
              style: const TextStyle(fontSize: 15)),
        ),
        Padding(
            padding: const EdgeInsets.only(left: 20, right: 20, bottom: 10),
            child: Text(
                maxLines: 1,
                style:
                    const TextStyle(fontSize: 25, fontWeight: FontWeight.bold),
                data.title)),
        SessionViewAchievements(achievements: data.achievements),
        Padding(
            padding: const EdgeInsets.only(left: 15, right: 15),
            child: Text(textAlign: TextAlign.center, data.content)),
        SessionViewMedia(media: data.media),
        const Padding(
            padding: EdgeInsets.only(top: 25, bottom: 10),
            child: Text(
                style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold),
                'Activities:')),
        SessionViewActivities(activities: data.activities),
        // TextButton(
        //   onPressed: () {
        //     Navigator.pop(context);
        //   },
        //   child: const Text('Close'),
        // ),
      ],
    );
  }
}

class SessionViewActivities extends StatelessWidget {
  const SessionViewActivities({super.key, this.activities});

  final List<ActivityModel>? activities;

  @override
  Widget build(BuildContext context) {
    return Expanded(
        child: ListView.builder(
      // shrinkWrap: true,
      padding: const EdgeInsets.fromLTRB(10, 0, 10, 0),
      itemCount: activities?.length,
      itemBuilder: (BuildContext context, int index) {
        return Card(
            color: const Color(0xff3A5FB6),
            child: ListTile(
              // dense: true,
              focusColor: const Color(0xff3A5FB6),
              shape: const RoundedRectangleBorder(
                  borderRadius: BorderRadius.all(Radius.elliptical(10, 10))),
              onTap: () => showGeneralDialog(
                  barrierColor: Colors.black.withOpacity(0.5),
                  transitionDuration: const Duration(milliseconds: 220),
                  transitionBuilder: (BuildContext context,
                      Animation<double> animation,
                      Animation<double> secondaryAnimation,
                      Widget child) {
                    Animation<Offset> custom = Tween<Offset>(
                            begin: const Offset(0.0, 1.0),
                            end: const Offset(0.0, 0.0))
                        .animate(animation);
                    return SlideTransition(
                        position: custom,
                        child: Dialog.fullscreen(
                            child: Flex(
                          direction: Axis.vertical,
                          mainAxisSize: MainAxisSize.min,
                          children: <Widget>[
                            AppBar(
                              centerTitle: true,
                              title: const Text('test activity',
                                  style: TextStyle(fontSize: 15)),
                            ),
                          ],
                        )));
                  },
                  barrierDismissible: true,
                  barrierLabel: '',
                  context: context,
                  pageBuilder: (context, animation1, animation2) {
                    return Container();
                  }),
              enableFeedback: true,
              title: Text(maxLines: 1, '${activities?[index].title}'),
              subtitle: Padding(
                  padding: const EdgeInsets.only(bottom: 3),
                  child:
                      Text(maxLines: 2, '${activities?[index].description}')),
            ));
      },
    ));
  }
}

class SessionViewAchievements extends StatelessWidget {
  const SessionViewAchievements({super.key, this.achievements});

  final List<String>? achievements;

  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        Padding(
            padding: const EdgeInsets.only(bottom: 10),
            child: SizedBox(
                height: 40,
                child: ListView.builder(
                  scrollDirection: Axis.horizontal,
                  padding: const EdgeInsets.fromLTRB(10, 0, 10, 0),
                  itemCount: achievements?.length,
                  itemBuilder: (BuildContext context, int index) {
                    return Padding(
                        padding: const EdgeInsets.only(right: 5),
                        child: ActionChip(
                          visualDensity: VisualDensity.compact,
                          avatar: const Icon(Icons.check_circle_outline),
                          label: Text(maxLines: 1, '${achievements?[index]}'),
                          onPressed: () {
                            // setState(() {
                            //   favorite = !favorite;
                            // });
                          },
                        ));
                    // return Card(
                    //     child: ListTile(
                    //   // dense: true,
                    //   focusColor: Colors.deepPurple,
                    //   shape: const RoundedRectangleBorder(
                    //       borderRadius: BorderRadius.all(Radius.circular(10))),
                    //   onTap: () {},
                    //   enableFeedback: true,
                    //   title: Text(maxLines: 1, '${achievements?[index]}'),
                    // ));
                  },
                ))),
      ],
    );
  }
}

class SessionViewMedia extends StatelessWidget {
  const SessionViewMedia({super.key, this.media});

  final List<Media>? media;

  @override
  Widget build(BuildContext context) {
    List<Widget> mediaCards = List.generate((media != null) ? media!.length : 0,
        (i) => MediaCard(media: media![i]));

    return Column(
      children: [
        const Padding(
            padding: EdgeInsets.only(top: 25),
            child: Text(
                style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold),
                'Media:')),
        SizedBox(
            width: double.infinity,
            height: 100,
            child: GridView.count(
                padding: const EdgeInsets.fromLTRB(15, 10, 0, 0),
                scrollDirection: Axis.horizontal,
                crossAxisSpacing: 5,
                mainAxisSpacing: 5,
                crossAxisCount: 1,
                children: mediaCards))
      ],
    );
  }
}

// SizedBox(
//             height: 100,
//             width: double.infinity,
//             child: ListView.builder(
//                 // scrollDirection: Axis.horizontal,
//                 padding: const EdgeInsets.fromLTRB(10, 0, 10, 0),
//                 itemCount: media?.length,
//                 itemBuilder: (BuildContext context, int index) {
//                   return Card(
//                       child: ListTile(
//                     dense: true,
//                     focusColor: Colors.deepPurple,
//                     shape: const RoundedRectangleBorder(
//                         borderRadius: BorderRadius.all(Radius.circular(10))),
//                     onTap: () {},
//                     enableFeedback: true,
//                     title: const Text(maxLines: 1, 'test'),
//                   ));
//                 }))