# View-Only Mode: CustomerID Parameter Exclusion ## Summary Updated all API calls to exclude `customerID` parameter when `AppState().getIsViewOnly` is `true`. ## Files Modified ### 1. **request_repo.dart** - ✅ `createRequest()` - Excludes customerID in view-only mode - ✅ `getRequests()` - Excludes customerID for customer app type in view-only mode - ✅ `getRequestBasedOnFilters()` - Excludes customerID for customer app type in view-only mode - ✅ `getOffersFromProvidersByRequest()` - Excludes customerID in view-only mode ### 2. **ads_repo.dart** - ✅ `cancelMyAdReservation()` - Excludes customerID in view-only mode - ✅ `createReserveAd()` - Excludes customerID in view-only mode - ✅ `uploadBankReceiptsOnReserveDealDone()` - Excludes customerID in view-only mode ### 3. **appointment_repo.dart** - ✅ `createAppointmentsMulti()` - Excludes customerID in view-only mode - ✅ `getMyAppointmentsForCustomersByFilters()` - Excludes customerID in view-only mode ### 4. **branch_repo.dart** - ✅ `submitBranchRatings()` - Excludes customerID in view-only mode - ✅ `addProviderToFavourite()` - Excludes customerID in view-only mode - ✅ `getMyFavoriteProviders()` - Excludes customerID in view-only mode ### 5. **setting_options_repo.dart** - ✅ `appInvitationCreate()` - Excludes customerID for customer app type in view-only mode ## How It Works When `AppState().getIsViewOnly` is `true`, the application is in demonstration/view-only mode. In this mode: 1. **API parameters are conditionally added**: Instead of always including `customerID`, we check the view-only flag first 2. **Pattern used**: ```dart var params = { "otherParam": value, }; if (!appState.getIsViewOnly) { params["customerID"] = customerId; } ``` 3. **App types considered**: The changes properly handle both customer and provider app types ## Testing Recommendations 1. Test in normal mode (getIsViewOnly = false): - All APIs should include customerID as before - All existing functionality should work 2. Test in view-only mode (getIsViewOnly = true): - APIs should NOT include customerID parameter - Read-only operations should work - Write operations should be blocked by view-only mode ## Note The `createComplainFromProvider()` method in `common_repo.dart` was NOT modified because the `customerID` in that API represents the target customer being complained about, not the authenticated user making the request.