import 'package:flutter/material.dart';
import 'package:flutter/src/widgets/framework.dart';
import 'package:flutter/src/widgets/placeholder.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_progress_hud/flutter_progress_hud.dart';
import 'package:flutter_spinkit/flutter_spinkit.dart';
import 'package:unit2/bloc/profile/profile_bloc.dart';
import 'package:unit2/bloc/references/references_bloc.dart';
import 'package:unit2/bloc/user/user_bloc.dart';
import 'package:unit2/model/profile/references.dart';
import 'package:unit2/theme-data.dart/box_shadow.dart';
import 'package:unit2/theme-data.dart/colors.dart';
import 'package:unit2/utils/text_container.dart';
import 'package:unit2/widgets/Leadings/add_leading.dart';
import 'package:unit2/widgets/empty_data.dart';

class ReferencesScreen extends StatelessWidget {
  const ReferencesScreen({super.key});
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: const Text(referencesScreenTitle),
          centerTitle: true,
          backgroundColor: primary,
          actions: [AddLeading(onPressed: () {})],
        ),
        body: ProgressHUD(
             padding: const EdgeInsets.all(24),
              backgroundColor: Colors.black87,
          indicatorWidget: const SpinKitFadingCircle(
            color: Colors.white),
          child: BlocBuilder<UserBloc, UserState>(
            builder: (context, state) {
              //userbloc
              if (state is UserLoggedIn) {
                return BlocBuilder<ProfileBloc, ProfileState>(
                  builder: (context, state) {
                    //profilebloc
                    if (state is ProfileLoaded) {
                      return BlocConsumer<ReferencesBloc, ReferencesState>(
                        //listener
                        listener: (context, state) {
                          if(state is ReferencesLoadingState){
                               final progress = ProgressHUD.of(context);
                              progress!.showWithText("Please wait...");
                          }
                          if(state is ReferencesLoadedState || state is ReferencesErrorState){
                                   final progress = ProgressHUD.of(context);
                              progress!.dismiss();
                          }
                        },
                        //builder
                        builder: (context, state) {
                          //references bloc
                          if (state is ReferencesLoadedState) {
                            if (state.references.isNotEmpty) {
                               return ListView.builder(
                  padding:
                      const EdgeInsets.symmetric(vertical: 8, horizontal: 10),
                  itemCount: state.references.length,
                  itemBuilder: (BuildContext context, int index) {
                    String fullname =
                        "${state.references[index].firstName} ${state.references[index].middleName} ${state.references[index].lastName}";
                    String addres =
                        "${state.references[index].address!.cityMunicipality!.description}, ${state.references[index].address!.cityMunicipality!.province!.description}, ${state.references[0].address!.cityMunicipality!.province!.region!.description}";
                    String mobile = state.references[index].contactNo.toString();
                    return Column(
                      children: [
                        Container(
                          padding: const EdgeInsets.symmetric(
                              horizontal: 12, vertical: 8),
                          decoration: box1(),
                          child: Row(
                            children: [
                              Expanded(
                                child: Column(
                                  mainAxisAlignment: MainAxisAlignment.start,
                                  crossAxisAlignment: CrossAxisAlignment.start,
                                  children: [
                                    Text(fullname,
                                        style: Theme.of(context)
                                            .textTheme
                                            .titleMedium!
                                            .copyWith(
                                                fontWeight: FontWeight.w500)),
                                    const Divider(),
                                    const SizedBox(
                                      height: 5,
                                    ),
                                    Text(addres,
                                        style: Theme.of(context)
                                            .textTheme
                                            .titleSmall!
                                            .copyWith(
                                                fontWeight: FontWeight.w500)),
                                    const SizedBox(
                                      height: 8,
                                    ),
                                    Text("${mobileOrPhone.toUpperCase()} : $mobile",
                                        style: Theme.of(context)
                                            .textTheme
                                            .labelMedium!),
                                  ],
                                ),
                              ),
                              IconButton(
                                  onPressed: () {},
                                  icon: const Icon(
                                    Icons.more_vert,
                                    color: Colors.grey,
                                  ))
                            ],
                          ),
                        ),
                        const SizedBox(
                          height: 5,
                        ),
                      ],
                    );
                  });
                            }
                          }
                          return Container();
                        },
                      );
                    }
                    return Container();
                  },
                );
              }
              return Container();
            },
          ),
        ));
  }
}

