import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:sendtrain/daos/session_activities_dao.dart';
import 'package:sendtrain/database/database.dart';
import 'package:sendtrain/extensions/string_extensions.dart';

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

  final Session session;

  List<String> getAchievements(List<SessionActivity> sessionActivities) {
    List<String> achievements = [];

    for (int i = 0; i < sessionActivities.length; i++) {
      final SessionActivity sessionActivity = sessionActivities[i];
      final List? saAchievments = sessionActivity.achievements?.split(',');

      if (saAchievments != null) {
        saAchievments.forEach((achievement) => achievements.add(achievement));
      }
    }

    return achievements;
  }

  @override
  Widget build(BuildContext context) {
    return FutureBuilder<List<SessionActivity>>(
        future: SessionActivitiesDao(Provider.of<AppDatabase>(context))
            .fromSessionId(session.id),
        builder: (context, snapshot) {
          if (snapshot.hasData) {
            final sessionActivities = snapshot.data!;
            final achievements = getAchievements(sessionActivities);

            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].toTitleCase()),
                                  onPressed: () {},
                                ));
                          },
                        ))),
              ],
            );
          } else {
            return Padding(
                padding: EdgeInsets.all(15),
                child: CircularProgressIndicator());
          }
        });
  }
}