class ProfileGetModel {
  final bool status;
  final ProfileData? data;

  ProfileGetModel({required this.status, this.data});

  factory ProfileGetModel.fromJson(Map<String, dynamic> json) {
    return ProfileGetModel(
      status: json['status'] ?? false,
      data: json['data'] != null ? ProfileData.fromJson(json['data']) : null,
    );
  }

  Map<String, dynamic> toJson() {
    return {'status': status, 'data': data?.toJson()};
  }
}

class ProfileData {
  final int? id;
  final String? companyName;
  final String? companyEmail;
  final String? companyMobile;
  final String? companyAddress;
  final String? companyPincode;
  final String? panNumber;
  final String? gstNumber;
  final String? tanNumber;
  final String? cin;
  final int? yearOfIncorporation;
  final String? logo;
  final String? panFile;
  final String? gstFile;
  final String? incorporationFile;
  final int? active;
  final int? createdBy;
  final int? updatedBy;
  final String? createdAt;
  final String? updatedAt;
  final int? countryId;
  final int? stateId;
  final int? districtId;
  final String? countryName;
  final String? stateName;
  final String? districtName;
  final String? name;
  final String? email;
  final String? mobile;
  final int? userId;
  final Country? country;
  final StateData? state;
  final District? district;

  ProfileData({
    this.id,
    this.companyName,
    this.companyEmail,
    this.companyMobile,
    this.companyAddress,
    this.companyPincode,
    this.panNumber,
    this.gstNumber,
    this.tanNumber,
    this.cin,
    this.yearOfIncorporation,
    this.logo,
    this.panFile,
    this.gstFile,
    this.incorporationFile,
    this.active,
    this.createdBy,
    this.updatedBy,
    this.createdAt,
    this.updatedAt,
    this.countryId,
    this.stateId,
    this.districtId,
    this.countryName,
    this.stateName,
    this.districtName,
    this.name,
    this.email,
    this.mobile,
    this.userId,
    this.country,
    this.state,
    this.district,
  });

  factory ProfileData.fromJson(Map<String, dynamic> json) {
    return ProfileData(
      id: json['id'],
      companyName: json['company_name'],
      companyEmail: json['company_email'],
      companyMobile: json['company_mobile'],
      companyAddress: json['company_address'],
      companyPincode: json['company_pincode'],
      panNumber: json['pan_number'],
      gstNumber: json['gst_number'],
      tanNumber: json['tan_number'],
      cin: json['cin'],
      yearOfIncorporation: json['year_of_incorporation'],
      logo: json['logo'],
      panFile: json['pan_file'],
      gstFile: json['gst_file'],
      incorporationFile: json['incorporation_file'],
      active: json['active'],
      createdBy: json['created_by'],
      updatedBy: json['updated_by'],
      createdAt: json['created_at'],
      updatedAt: json['updated_at'],
      countryId: json['country_id'],
      stateId: json['state_id'],
      districtId: json['district_id'],
      countryName: json['country_name'],
      stateName: json['state_name'],
      districtName: json['district_name'],
      name: json['name'],
      email: json['email'],
      mobile: json['mobile'],
      userId: json['user_id'],
      country: json['country'] != null
          ? Country.fromJson(json['country'])
          : null,
      state: json['state'] != null ? StateData.fromJson(json['state']) : null,
      district: json['district'] != null
          ? District.fromJson(json['district'])
          : null,
    );
  }

  Map<String, dynamic> toJson() {
    return {
      'id': id,
      'company_name': companyName,
      'company_email': companyEmail,
      'company_mobile': companyMobile,
      'company_address': companyAddress,
      'company_pincode': companyPincode,
      'pan_number': panNumber,
      'gst_number': gstNumber,
      'tan_number': tanNumber,
      'cin': cin,
      'year_of_incorporation': yearOfIncorporation,
      'logo': logo,
      'pan_file': panFile,
      'gst_file': gstFile,
      'incorporation_file': incorporationFile,
      'active': active,
      'created_by': createdBy,
      'updated_by': updatedBy,
      'created_at': createdAt,
      'updated_at': updatedAt,
      'country_id': countryId,
      'state_id': stateId,
      'district_id': districtId,
      'country_name': countryName,
      'state_name': stateName,
      'district_name': districtName,
      'name': name,
      'email': email,
      'mobile': mobile,
      'user_id': userId,
      'country': country?.toJson(),
      'state': state?.toJson(),
      'district': district?.toJson(),
    };
  }
}

class Country {
  final int? id;
  final String? countryCode;
  final String? countryName;
  final int? active;
  final dynamic createdBy;
  final dynamic updatedBy;
  final String? createdAt;
  final String? updatedAt;

  Country({
    this.id,
    this.countryCode,
    this.countryName,
    this.active,
    this.createdBy,
    this.updatedBy,
    this.createdAt,
    this.updatedAt,
  });

  factory Country.fromJson(Map<String, dynamic> json) {
    return Country(
      id: json['id'],
      countryCode: json['country_code'],
      countryName: json['country_name'],
      active: json['active'],
      createdBy: json['created_by'],
      updatedBy: json['updated_by'],
      createdAt: json['created_at'],
      updatedAt: json['updated_at'],
    );
  }

  Map<String, dynamic> toJson() {
    return {
      'id': id,
      'country_code': countryCode,
      'country_name': countryName,
      'active': active,
      'created_by': createdBy,
      'updated_by': updatedBy,
      'created_at': createdAt,
      'updated_at': updatedAt,
    };
  }
}

class StateData {
  final int? id;
  final String? stateName;
  final int? active;
  final int? countryId;
  final dynamic createdBy;
  final dynamic updatedBy;
  final String? createdAt;
  final String? updatedAt;

  StateData({
    this.id,
    this.stateName,
    this.active,
    this.countryId,
    this.createdBy,
    this.updatedBy,
    this.createdAt,
    this.updatedAt,
  });

  factory StateData.fromJson(Map<String, dynamic> json) {
    return StateData(
      id: json['id'],
      stateName: json['state_name'],
      active: json['active'],
      countryId: json['country_id'],
      createdBy: json['created_by'],
      updatedBy: json['updated_by'],
      createdAt: json['created_at'],
      updatedAt: json['updated_at'],
    );
  }

  Map<String, dynamic> toJson() {
    return {
      'id': id,
      'state_name': stateName,
      'active': active,
      'country_id': countryId,
      'created_by': createdBy,
      'updated_by': updatedBy,
      'created_at': createdAt,
      'updated_at': updatedAt,
    };
  }
}

class District {
  final int? id;
  final String? districtName;
  final int? active;
  final int? stateId;
  final dynamic createdBy;
  final dynamic updatedBy;
  final String? createdAt;
  final String? updatedAt;

  District({
    this.id,
    this.districtName,
    this.active,
    this.stateId,
    this.createdBy,
    this.updatedBy,
    this.createdAt,
    this.updatedAt,
  });

  factory District.fromJson(Map<String, dynamic> json) {
    return District(
      id: json['id'],
      districtName: json['district_name'],
      active: json['active'],
      stateId: json['state_id'],
      createdBy: json['created_by'],
      updatedBy: json['updated_by'],
      createdAt: json['created_at'],
      updatedAt: json['updated_at'],
    );
  }

  Map<String, dynamic> toJson() {
    return {
      'id': id,
      'district_name': districtName,
      'active': active,
      'state_id': stateId,
      'created_by': createdBy,
      'updated_by': updatedBy,
      'created_at': createdAt,
      'updated_at': updatedAt,
    };
  }
}
