import 'package:flutter/material.dart';
import 'package:flutter_rating_bar/flutter_rating_bar.dart';
import 'package:prosappco/src/authentication/authentication_repository.dart';
import 'package:prosappco/src/components/photo_view.dart';
import 'package:prosappco/src/components/pop_appbar.dart';
import 'package:prosappco/src/models/scores_model.dart';

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

  @override
  State<ReputationScreen> createState() => _ReputationScreenState();
}

class _ReputationScreenState extends State<ReputationScreen> {
  ScoresModel? scoresModel;

  @override
  void initState() {
    super.initState();
    final uid = AuthenticationRepository.instance.getCurrentUserUid();

    if (scoresModel == null) {
      ScoresModel.scoreTo(uid.toString(), false, true).then(
        (ScoresModel s) => setState(() => scoresModel = s),
      );
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: PopAppbar(
          onPressed: () {
            Navigator.pop(context);
          },
          label: 'Reputación'),
      body: SingleChildScrollView(
          child: Column(
        children: [
          ..._scoresList(scoresModel?.details ?? []),
        ],
      )),
    );
  }

  List<Widget> _scoresList(List<ScoreDetailModel> list) {
    return list.map((e) => _scoreItem(e)).toList();
  }

  Widget _scoreItem(ScoreDetailModel scoreDetails) {
    return ListTile(
        onTap: () {},
        leading: ReferencePhoto(
          ref: scoreDetails.avatar,
          size: 50,
          sizeCircle: 50,
          sizeIcon: 35,
        ),
        title: Row(
          children: [
            RatingBar.builder(
              initialRating: scoreDetails.score,
              minRating: 1,
              direction: Axis.horizontal,
              allowHalfRating: true,
              itemCount: 5,
              itemSize: 22,
              maxRating: 5,
              itemPadding: const EdgeInsets.symmetric(horizontal: 0),
              itemBuilder: (context, _) => const Icon(
                Icons.star,
                color: Color(0xFF2BA4EC),
              ),
              onRatingUpdate: (rating) {},
              ignoreGestures: true,
            ),
            Text(
              ' (${scoreDetails.score})',
              style: const TextStyle(color: Colors.black54, fontSize: 13),
            )
          ],
        ),
        subtitle: Row(
          children: [
            Expanded(
              child: Text.rich(
                TextSpan(
                  children: [
                    TextSpan(
                      text: '${scoreDetails.name}, ',
                      style: const TextStyle(fontSize: 15, color: Colors.black),
                    ),
                    TextSpan(
                      text: '"${scoreDetails.comment}"',
                      style: const TextStyle(fontSize: 15, color: Colors.grey),
                    ),
                  ],
                ),
              ),
            ),
          ],
        ));
  }
}
