import 'package:comwell_key_app/base/base_cubit.dart';
import 'package:comwell_key_app/contact/repository/contact_repository.dart';
import 'package:comwell_key_app/domain/models/user.dart';
import 'package:comwell_key_app/overview/repository/overview_repository.dart';
import 'package:comwell_key_app/domain/repositories/profile_repository.dart';
import 'package:comwell_key_app/utils/phone_utils.dart';
import 'package:country_code_picker/country_code_picker.dart';
import 'package:equatable/equatable.dart';
import 'package:flutter/material.dart';

part 'contact_state.dart';

class ContactCubit extends BaseCubit<ContactState> {
  final ContactRepository _contactRepository;
  final OverviewRepository _overviewRepository;
  final ProfileRepository _profileRepository;
  final TextEditingController phoneNumberController = TextEditingController();
  CountryCode countryCode = CountryCode.fromCountryCode('DK');
  String phoneNumber = '';

  ContactCubit(
    this._contactRepository,
    this._overviewRepository,
    this._profileRepository,
  ) : super(const ContactState.initial());

  Future<void> sendContact(String hotelCode) async {
    safeEmit(const ContactState.contactSend());
    try {
      //final bookings = await _overviewRepository.fetchAllBookingsForUser();
      // Send contact
      //_contactRepository.sendContact(bookings.current.first.hotelCode);
      safeEmit(const ContactState.contactSent());
    } catch (e, st) {
      logError(e, st);
      safeEmit(const ContactState.contactError());
    }
  }

  Future<void> init() async {
    final user = await _profileRepository.fetchProfileSettings();
    final (countryCode, phoneNumber) = getCountryCodeFromPhoneNumber(user.phoneNumber);

    this.countryCode = countryCode;
    this.phoneNumber = phoneNumber;

    phoneNumberController.text = phoneNumber;

    safeEmit(state.userLoaded(user: user));
  }
}