60 lines
1.8 KiB
Markdown
60 lines
1.8 KiB
Markdown
# City and Ward API Implementation - Complete Guide
|
|
|
|
## Files Created ✅
|
|
|
|
1. ✅ `lib/features/account/domain/entities/city.dart`
|
|
2. ✅ `lib/features/account/domain/entities/ward.dart`
|
|
3. ✅ `lib/features/account/data/models/city_model.dart`
|
|
4. ✅ `lib/features/account/data/models/ward_model.dart`
|
|
5. ✅ Updated `lib/core/constants/storage_constants.dart`
|
|
- Added `cityBox` and `wardBox`
|
|
- Added `cityModel = 31` and `wardModel = 32`
|
|
- Shifted all enum IDs by +2
|
|
|
|
## Implementation Status
|
|
|
|
### Completed:
|
|
- ✅ Domain entities (City, Ward)
|
|
- ✅ Hive models with type adapters
|
|
- ✅ Storage constants updated
|
|
- ✅ Build runner generated .g.dart files
|
|
|
|
### Remaining (Need to implement):
|
|
|
|
1. **Remote Datasource** - `lib/features/account/data/datasources/location_remote_datasource.dart`
|
|
2. **Local Datasource** - `lib/features/account/data/datasources/location_local_datasource.dart`
|
|
3. **Repository Interface** - `lib/features/account/domain/repositories/location_repository.dart`
|
|
4. **Repository Implementation** - `lib/features/account/data/repositories/location_repository_impl.dart`
|
|
5. **Providers** - `lib/features/account/presentation/providers/location_provider.dart`
|
|
6. **Update AddressFormPage** to use the providers
|
|
|
|
## API Endpoints (from docs/auth.sh)
|
|
|
|
### Get Cities:
|
|
```bash
|
|
POST /api/method/frappe.client.get_list
|
|
Body: {
|
|
"doctype": "City",
|
|
"fields": ["city_name","name","code"],
|
|
"limit_page_length": 0
|
|
}
|
|
```
|
|
|
|
### Get Wards (filtered by city):
|
|
```bash
|
|
POST /api/method/frappe.client.get_list
|
|
Body: {
|
|
"doctype": "Ward",
|
|
"fields": ["ward_name","name","code"],
|
|
"filters": {"city": "96"},
|
|
"limit_page_length": 0
|
|
}
|
|
```
|
|
|
|
## Offline-First Strategy
|
|
|
|
1. **Cities**: Cache in Hive, refresh from API periodically
|
|
2. **Wards**: Load from API when city selected, cache per city
|
|
|
|
Would you like me to generate the remaining implementation files now?
|