import 'package:flutter/material.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/bloc/organization_membership_bloc.dart';
import 'package:unit2/bloc/profile/profile_bloc.dart';
import 'package:unit2/bloc/user/user_bloc.dart';
import 'package:unit2/model/profile/other_information/organization_memberships.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';

import '../../../../utils/global.dart';

class OrgMembershipsScreen extends StatelessWidget {
  const OrgMembershipsScreen({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: const Text(orgMembershipTitle),
          backgroundColor: primary,
          centerTitle: true,
          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) {
              if (state is UserLoggedIn) {
                return BlocBuilder<ProfileBloc, ProfileState>(
                  builder: (context, state) {
                    if (state is ProfileLoaded) {
                      return BlocConsumer<OrganizationMembershipBloc,
                          OrganizationMembershipState>(
                        listener: (context, state) {
                         if(state is OrgmembershipLoadingState){
                            final progress = ProgressHUD.of(context);
                            progress!.showWithText("Please wait...");
                         }
                         if(state is OrganizationMembershipLoaded || state is OrganizationMembershipErrorState){
                            final progress = ProgressHUD.of(context);
                            progress!.dismiss();
                         }
                        },
                        builder: (context, state) {
                          if (state is OrganizationMembershipLoaded) {
                            return ListView.builder(
                                itemCount: state.orgMemberships.length,
                                padding: const EdgeInsets.symmetric(
                                    vertical: 8, horizontal: 10),
                                itemBuilder: (BuildContext context, int index) {
                                  String entity = state.orgMemberships[index]
                                              .agency!
                                              .privateEntity ==
                                          false
                                      ? governmentText.toUpperCase()
                                      : privateText.toUpperCase();
                                  String agencyName =
                                      state.orgMemberships[index].agency!.name!;
                                  return Column(
                                    children: [
                                      Container(
                                        width: screenWidth,
                                        decoration: box1(),
                                        padding: const EdgeInsets.symmetric(
                                            horizontal: 12, vertical: 8),
                                        child: Row(children: [
                                          Expanded(
                                              child: Column(
                                            mainAxisAlignment:
                                                MainAxisAlignment.start,
                                            crossAxisAlignment:
                                                CrossAxisAlignment.start,
                                            children: [
                                              Text(
                                                agencyName,
                                                style: Theme.of(context)
                                                    .textTheme
                                                    .titleMedium!
                                                    .copyWith(
                                                        fontWeight:
                                                            FontWeight.w500),
                                              ),
                                              const Divider(),
                                              Text(
                                                entity,
                                                style: Theme.of(context)
                                                    .textTheme
                                                    .labelLarge,
                                              ),
                                            ],
                                          )),
                                          IconButton(
                                              onPressed: () {},
                                              icon: const Icon(
                                                Icons.more_vert,
                                                color: Colors.grey,
                                              ))
                                        ]),
                                      ),
                                      const SizedBox(
                                        height: 5,
                                      ),
                                    ],
                                  );
                                });
                          }
                          return Container();
                        },
                      );
                    }
                    return Container();
                  },
                );
              }
              return Container();
            },
          ),
        ));
  }
}

// const EmptyData(message: "You don't have any Organization Membership added. Please click + to add."),
