import 'package:medora/data/models/doctor.dart'; class ValidationHelper { // Basic regex patterns static final RegExp nameRegex = RegExp(r'^[a-zA-Z\s]{2,50}$'); static final RegExp experienceRegex = RegExp(r'^\d{1,2}$'); static final RegExp licenseRegex = RegExp(r'^[A-Z0-9-]{5,15}$'); static final RegExp postalCodeRegex = RegExp(r'^\d{6}$'); static final RegExp buildingRegex = RegExp(r'^[a-zA-Z0-9\s\-\/]{1,50}$'); static final RegExp streetRegex = RegExp(r'^[a-zA-Z0-9\s\,\-\/]{5,100}$'); // Validation error messages static const String nameError = 'Name should be 2-50 characters long and contain only letters'; static const String experienceError = 'Years of experience should be a valid number between 0-99'; static const String licenseError = 'License number should be 5-15 alphanumeric characters'; static const String postalCodeError = 'Postal code should be exactly 6 digits'; static const String buildingError = 'Building/Floor details should be 1-50 characters'; static const String streetError = 'Street address should be 5-100 characters'; static const String requiredFieldError = 'This field is required'; static const String qualificationError = 'At least one qualification is required'; static const String achievementError = 'Achievement should be between 5-200 characters'; } class DoctorController { final Doctor model; Map validationErrors = {}; DoctorController() : model = Doctor(); bool validateAchievement(String achievement) { if (achievement.length < 5 || achievement.length > 200) { validationErrors['achievement'] = ValidationHelper.achievementError; return false; } return true; } void updateSpeciality(String speciality) { model.speciality = speciality; } void updateAchievements(List achievements) { model.achievements = List.from(achievements); } void addAchievement(String achievement) { if (validateAchievement(achievement)) { model.achievements!.add(achievement); } } void removeAchievement(String achievement) { model.achievements!.remove(achievement); } void updateYearsOfExperience(String years) { model.yearsOfExperience = years; } void updateLicenseNumber(String license) { model.licenseNumber = license; } void updateProfileDescription(String description) { model.profileDescription = description; } void updateDigitalSignature(String signature) { model.digitalSignature = signature; } void updateProfileImage(String profileImage) { model.profileImage = profileImage; } void updateTitle(String title) { model.title = title; } void updateSurName(String surName) { model.surName = surName; } void updateMiddleName(String middleName) { model.middleName = middleName; } void updateLastName(String firstName) { model.firstName = firstName; } void addQualification(String qualification) { model.qualifications!.add(qualification); } void removeQualification(String qualification) { model.qualifications!.remove(qualification); } void updateFloorBuilding(String floorBuilding) { model.floorBuilding = floorBuilding; } void updateStreet(String street) { model.street = street; } void updateCity(String city) { model.city = city; } void updateState(String state) { model.state = state; } void updateCountry(String country) { model.country = country; } void updatePostalCode(String postalCode) { model.postalCode = postalCode; } void updateAddressType(String addressType) { model.addressType = addressType; } }