import 'package:drift/drift.dart' hide Column;
import 'package:flutter/material.dart';
import 'package:flutter_expandable_fab/flutter_expandable_fab.dart';
import 'package:intl/intl.dart';
import 'package:intl/date_symbol_data_local.dart';
import 'package:sendtrain/database/daos/activities_dao.dart';

import 'package:sendtrain/database/database.dart';
import 'package:sendtrain/models/session_model.dart';
import 'package:sendtrain/widgets/session_view_achievements.dart';
import 'package:sendtrain/widgets/session_view_activities.dart';
import 'package:sendtrain/widgets/session_view_media.dart';

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

  final SessionModel data;
  final Session session;
  final AppDatabase database = AppDatabase();

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

    return FutureBuilder<List<Activity>>(
        future: ActivitiesDao(database).sessionActivities(session.id),
        builder: (context, snapshot) {
          if (snapshot.hasData) {
            final activities = snapshot.data!;
            database.close();
            return Scaffold(
                floatingActionButtonLocation: ExpandableFab.location,
                floatingActionButton: ExpandableFab(
                    distance: 70,
                    type: ExpandableFabType.up,
                    overlayStyle: ExpandableFabOverlayStyle(
                      color: Colors.black.withOpacity(0.5),
                      blur: 10,
                    ),
                    children: [
                      FloatingActionButton.extended(
                        icon: const Icon(Icons.history_outlined),
                        label: Text('Restart'),
                        onPressed: () {},
                      ),
                      FloatingActionButton.extended(
                        icon: const Icon(Icons.done_all_outlined),
                        label: Text('Done'),
                        onPressed: () {},
                      ),
                      FloatingActionButton.extended(
                        icon: const Icon(Icons.edit_outlined),
                        label: Text('Edit'),
                        onPressed: () {},
                      ),
                    ]),
                body: Column(
                  crossAxisAlignment: CrossAxisAlignment.start,
                  children: <Widget>[
                    AppBar(
                      centerTitle: true,
                      title: Text(
                          'Session @ ${dateFormat.format(session.date as DateTime)}',
                          style: const TextStyle(fontSize: 15)),
                    ),
                    Padding(
                        padding: const EdgeInsets.only(
                            left: 15, right: 20, top: 15, bottom: 10),
                        child: Text(
                            maxLines: 1,
                            style: const TextStyle(
                                fontSize: 25, fontWeight: FontWeight.bold),
                            session.title)),
                    SessionViewAchievements(session: session),
                    Padding(
                        padding: const EdgeInsets.only(left: 15, right: 15),
                        child: Text(
                            style: const TextStyle(fontSize: 15),
                            session.content)),
                    const Padding(
                        padding: EdgeInsets.fromLTRB(15, 30, 0, 10),
                        child: Text(
                            style: TextStyle(
                                fontSize: 20, fontWeight: FontWeight.bold),
                            'Media:')),
                    SessionViewMedia(session: session, media: data.media),
                    const Padding(
                        padding: EdgeInsets.fromLTRB(15, 30, 0, 10),
                        child: Text(
                            style: TextStyle(
                                fontSize: 20, fontWeight: FontWeight.bold),
                            'Activites:')),
                    SessionViewActivities(
                        activities: data.activities, data: activities),
                  ],
                ));
          } else {
            return const CircularProgressIndicator();
          }
        });
  }
}