18
loading...
This website collects cookies to deliver better user experience
FarmerServiceModel
that will act a the Farmer firebase document equivalent. In the future this class will be used used with the FirebaseFirestore.instance.collection('farmers').withConverter<FarmerServiceModel>
to maintain type safety.late String id;
late String registrationNumber;
late final String? nationalId;
late final String? profilePicture;
late final String? firstName;
late final String lastName;
late final String? nickname;
late final DateTime? dateOfBirth;
late final String gender;
late final String ethnicity;
late final String maritalStatus;
late final String address;
late final bool isHeadOfHousehold;
late final bool isFarmingPrimaryIncomeSource;
late final bool isActiveFarmer;
late final String farmerCategory;
late final String subsector;
late final String operationScale;
late List<String>? farm;
FarmerServiceModel.fromJson(Map<String, Object?> json)
: this(
id: json['id']! as String,
registrationNumber: json['registrationNumber'] as String,
nationalId: json['nationalId'] as String,
profilePicture: json['profilePicture'] as String,
firstName: json['firstName'] as String,
lastName: json['lastName'] as String,
nickname: json['nickname'] as String,
dateOfBirth: json['dateOfBirth'] as DateTime,
gender: json['gender'] as String,
ethnicity: json['ethnicity'] as String,
maritalStatus: json['maritalStatus'] as String,
address: json['address'] as String,
isHeadOfHousehold: json['isHeadOfHousehold'] as bool,
isActiveFarmer: json['isActiveFarmer'] as bool,
isFarmingPrimaryIncomeSource:
json['isFarmingPrimaryIncomeScore'] as bool,
farmerCategory: json['farmerCategory'] as String,
subsector: json['subsector'] as String,
operationScale: json['operationScale'] as String,
farm: json['farm'] as List<String>,
);
FarmerServiceModel
Class.Map<String, Object?> toJson() {
return {
'id': id,
'registrationNumber': registrationNumber,
'nationalId': nationalId,
'profileProfile': profilePicture,
'firstName': firstName,
'lastName': lastName,
'nickname': nickname,
'dateOfBirth': dateOfBirth,
'gender': gender,
'ethnicity': ethnicity,
'maritalStatus': maritalStatus,
'address': address,
'isHeadOfHousehold': isHeadOfHousehold,
'isActiveFarmeer': isActiveFarmer,
'isFarmingPrimaryIncomeSource': isFarmingPrimaryIncomeSource,
'farmerCategory': farmerCategory,
'subsector': subsector,
'operationScale': operationScale,
'farm': farm,
};
}
FarmerServiceModel
class to a Map<String, Object?>
the Map<String, Object?>
is the required format for cloud firestore documents.// VALIDATION METHODS
String? validateRegistrationNumber(String? value) {
return null;
}
String? handleNationalIdValidation(String? value) {
return null;
}
String? validateProfilePicture(String? value) {
return null;
}
String? handleFirstNameValidation(String? value) {
return null;
}
String? handleLastNameValidation(String? value) {
if (value!.isEmpty) {
return kEmptyFieldValidationError;
} else {
return null;
}
}
String? handleNicknameValidation(String? value) {
return null;
}
String? handleDateOfBirthValidation(String? value) {
return null;
}
String? handleGenderValidation(String? value) {
if (value!.isEmpty) {
return kEmptyFieldValidationError;
} else
return null;
}
String? handleEthnicityValidation(String? value) {
if (value!.isEmpty) {
return kEmptyFieldValidationError;
} else
return null;
}
String? handleMaritalStatusValidation(String? value) {
if (value!.isEmpty) {
return kEmptyFieldValidationError;
} else
return null;
}
String? handleAddressValidation(String? value) {
if (value!.isEmpty) {
return kEmptyFieldValidationError;
} else
return null;
}
String? handleFarmerCategoryValidation(String? value) {
if (value!.isEmpty) {
return kEmptyFieldValidationError;
} else
return null;
}
String? handleSubsectorValidation(String? value) {
if (value!.isEmpty) {
return kEmptyFieldValidationError;
} else
return null;
}
String? handleOperationScaleValidation(String? value) {
if (value!.isEmpty) {
return kEmptyFieldValidationError;
} else
return null;
}
TextFormField
widget.// SAVE METHODS
void saveRegistrationNumber(String? value) => registrationNumber = value!;
void handleNationalIdSaved(String? value) => nationalId = value!;
void saveProfilePicture(String? value) => profilePicture = value!;
void handleFirstNameSaved(String? value) => firstName = value!;
void handleLastNameSaved(String? value) => lastName = value!;
void handleNicknameSaved(String? value) => nickname = value!;
void handleDateOfBirthSaved(DateTime? value) => dateOfBirth = dateOfBirth;
void handleGenderSaved(String? value) => gender = value!;
void handleEthnicitySaved(String? value) => ethnicity = value!;
void handleMaritalStatusSaved(String? value) => maritalStatus = value!;
void handleAddressSaved(String? value) => address = value!;
void handleIsHeadOfHouseholdChange(bool? value) => isHeadOfHousehold = value!;
void handleFarmerCategorySaved(String? value) => farmerCategory = value!;
void handleSubsectorSaved(String? value) => subsector = value!;
void handleIsFarmingPrimaryIncomeSourceChange(bool? value) =>
isFarmingPrimaryIncomeSource = value!;
void handleOperationScaleSaved(String? value) => operationScale = value!;
}
onSaved
property of form related widgets like TextFormField
.FarmerServiceModel
class so I can easily reuse it.import 'package:cems/utils/constants.dart';
class FarmerServiceModel {
late String id;
late String registrationNumber;
late final String? nationalId;
late final String? profilePicture;
late final String? firstName;
late final String lastName;
late final String? nickname;
late final DateTime? dateOfBirth;
late final String gender;
late final String ethnicity;
late final String maritalStatus;
late final String address;
late final bool isHeadOfHousehold;
late final bool isFarmingPrimaryIncomeSource;
late final bool isActiveFarmer;
late final String farmerCategory;
late final String subsector;
late final String operationScale;
late List<String>? farm;
FarmerServiceModel({
required this.id,
required this.registrationNumber,
required this.profilePicture,
required this.lastName,
required this.gender,
required this.ethnicity,
required this.maritalStatus,
required this.address,
required this.isHeadOfHousehold,
required this.isFarmingPrimaryIncomeSource,
required this.farmerCategory,
required this.operationScale,
required this.subsector,
this.nationalId,
this.firstName,
this.nickname,
this.dateOfBirth,
this.isActiveFarmer = true,
this.farm,
});
FarmerServiceModel.form();
String get name => '$firstName $lastName';
FarmerServiceModel.fromJson(Map<String, Object?> json)
: this(
id: json['id']! as String,
registrationNumber: json['registrationNumber'] as String,
nationalId: json['nationalId'] as String,
profilePicture: json['profilePicture'] as String,
firstName: json['firstName'] as String,
lastName: json['lastName'] as String,
nickname: json['nickname'] as String,
dateOfBirth: json['dateOfBirth'] as DateTime,
gender: json['gender'] as String,
ethnicity: json['ethnicity'] as String,
maritalStatus: json['maritalStatus'] as String,
address: json['address'] as String,
isHeadOfHousehold: json['isHeadOfHousehold'] as bool,
isActiveFarmer: json['isActiveFarmer'] as bool,
isFarmingPrimaryIncomeSource:
json['isFarmingPrimaryIncomeScore'] as bool,
farmerCategory: json['farmerCategory'] as String,
subsector: json['subsector'] as String,
operationScale: json['operationScale'] as String,
farm: json['farm'] as List<String>,
);
Map<String, Object?> toJson() {
return {
'id': id,
'registrationNumber': registrationNumber,
'nationalId': nationalId,
'profileProfile': profilePicture,
'firstName': firstName,
'lastName': lastName,
'nickname': nickname,
'dateOfBirth': dateOfBirth,
'gender': gender,
'ethnicity': ethnicity,
'maritalStatus': maritalStatus,
'address': address,
'isHeadOfHousehold': isHeadOfHousehold,
'isActiveFarmeer': isActiveFarmer,
'isFarmingPrimaryIncomeSource': isFarmingPrimaryIncomeSource,
'farmerCategory': farmerCategory,
'subsector': subsector,
'operationScale': operationScale,
'farm': farm,
};
}
// VALIDATION METHODS
String? validateRegistrationNumber(String? value) {
return null;
}
String? handleNationalIdValidation(String? value) {
return null;
}
String? validateProfilePicture(String? value) {
return null;
}
String? handleFirstNameValidation(String? value) {
return null;
}
String? handleLastNameValidation(String? value) {
if (value!.isEmpty) {
return kEmptyFieldValidationError;
} else {
return null;
}
}
String? handleNicknameValidation(String? value) {
return null;
}
String? handleDateOfBirthValidation(String? value) {
return null;
}
String? handleGenderValidation(String? value) {
if (value!.isEmpty) {
return kEmptyFieldValidationError;
} else
return null;
}
String? handleEthnicityValidation(String? value) {
if (value!.isEmpty) {
return kEmptyFieldValidationError;
} else
return null;
}
String? handleMaritalStatusValidation(String? value) {
if (value!.isEmpty) {
return kEmptyFieldValidationError;
} else
return null;
}
String? handleAddressValidation(String? value) {
if (value!.isEmpty) {
return kEmptyFieldValidationError;
} else
return null;
}
String? handleFarmerCategoryValidation(String? value) {
if (value!.isEmpty) {
return kEmptyFieldValidationError;
} else
return null;
}
String? handleSubsectorValidation(String? value) {
if (value!.isEmpty) {
return kEmptyFieldValidationError;
} else
return null;
}
String? handleOperationScaleValidation(String? value) {
if (value!.isEmpty) {
return kEmptyFieldValidationError;
} else
return null;
}
// SAVE METHODS
void saveRegistrationNumber(String? value) => registrationNumber = value!;
void handleNationalIdSaved(String? value) => nationalId = value!;
void saveProfilePicture(String? value) => profilePicture = value!;
void handleFirstNameSaved(String? value) => firstName = value!;
void handleLastNameSaved(String? value) => lastName = value!;
void handleNicknameSaved(String? value) => nickname = value!;
void handleDateOfBirthSaved(DateTime? value) => dateOfBirth = dateOfBirth;
void handleGenderSaved(String? value) => gender = value!;
void handleEthnicitySaved(String? value) => ethnicity = value!;
void handleMaritalStatusSaved(String? value) => maritalStatus = value!;
void handleAddressSaved(String? value) => address = value!;
void handleIsHeadOfHouseholdChange(bool? value) => isHeadOfHousehold = value!;
void handleFarmerCategorySaved(String? value) => farmerCategory = value!;
void handleSubsectorSaved(String? value) => subsector = value!;
void handleIsFarmingPrimaryIncomeSourceChange(bool? value) =>
isFarmingPrimaryIncomeSource = value!;
void handleOperationScaleSaved(String? value) => operationScale = value!;
}
FarmerServiceModel
class in its entirety.