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:provider/provider.dart';
import 'package:sendtrain/daos/activities_dao.dart';

import 'package:sendtrain/database/database.dart';
import 'package:sendtrain/extensions/string_extensions.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 {
  const SessionView({super.key, required this.session});

  final Session session;

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

    return FutureBuilder<List<Activity>>(
        future: ActivitiesDao(Provider.of<AppDatabase>(context)).sessionActivities(session.id),
        builder: (context, snapshot) {
          if (snapshot.hasData) {
            final activities = snapshot.data!;
            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.toTitleCase())),
                    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),
                    const Padding(
                        padding: EdgeInsets.fromLTRB(15, 30, 0, 10),
                        child: Text(
                            style: TextStyle(
                                fontSize: 20, fontWeight: FontWeight.bold),
                            'Activites:')),
                    SessionViewActivities(
                        activities: activities),
                  ],
                ));
          } else {
            return Container(
                alignment: Alignment.center,
                child: SizedBox(
                  height: 50.0,
                  width: 50.0,
                  child: CircularProgressIndicator(),
                ));
          }
        });
  }
}