From 46caf435024ff313255091886cc658ebf43bea3d Mon Sep 17 00:00:00 2001 From: Thomas Savine Date: Tue, 4 Feb 2020 11:52:23 +0000 Subject: [PATCH] Add project files. --- BusinessMgrMobile.sln | 469 + .../Assets/AboutAssets.txt | 19 + .../BusinessMgrMobile.Android.csproj | 120 + .../Mobile/Droid/App/MainActivity.cs | 67 + .../Properties/AndroidManifest.xml | 5 + .../Properties/AssemblyInfo.cs | 34 + .../Resources/AboutResources.txt | 50 + .../Resources/Resource.designer.cs | 9670 +++++++++++++++++ .../Resources/layout/Tabbar.axml | 11 + .../Resources/layout/Toolbar.axml | 9 + .../Resources/mipmap-anydpi-v26/icon.xml | 5 + .../mipmap-anydpi-v26/icon_round.xml | 5 + .../Resources/mipmap-hdpi/icon.png | Bin 0 -> 4754 bytes .../mipmap-hdpi/launcher_foreground.png | Bin 0 -> 11695 bytes .../Resources/mipmap-mdpi/icon.png | Bin 0 -> 2807 bytes .../mipmap-mdpi/launcher_foreground.png | Bin 0 -> 6439 bytes .../Resources/mipmap-xhdpi/icon.png | Bin 0 -> 7028 bytes .../mipmap-xhdpi/launcher_foreground.png | Bin 0 -> 17898 bytes .../Resources/mipmap-xxhdpi/icon.png | Bin 0 -> 12827 bytes .../mipmap-xxhdpi/launcher_foreground.png | Bin 0 -> 33484 bytes .../Resources/mipmap-xxxhdpi/icon.png | Bin 0 -> 19380 bytes .../mipmap-xxxhdpi/launcher_foreground.png | Bin 0 -> 52285 bytes .../Resources/values/colors.xml | 7 + .../Resources/values/styles.xml | 30 + .../BusinessMgrMobile.UWP/App.xaml | 8 + .../BusinessMgrMobile.UWP/App.xaml.cs | 101 + .../Assets/LargeTile.scale-100.png | Bin 0 -> 6143 bytes .../Assets/LargeTile.scale-200.png | Bin 0 -> 13916 bytes .../Assets/LargeTile.scale-400.png | Bin 0 -> 31561 bytes .../Assets/SmallTile.scale-100.png | Bin 0 -> 1218 bytes .../Assets/SmallTile.scale-200.png | Bin 0 -> 2536 bytes .../Assets/SmallTile.scale-400.png | Bin 0 -> 5566 bytes .../Assets/SplashScreen.scale-100.png | Bin 0 -> 6555 bytes .../Assets/SplashScreen.scale-200.png | Bin 0 -> 15240 bytes .../Assets/SplashScreen.scale-400.png | Bin 0 -> 39781 bytes .../Assets/Square150x150Logo.scale-100.png | Bin 0 -> 2772 bytes .../Assets/Square150x150Logo.scale-200.png | Bin 0 -> 5904 bytes .../Assets/Square150x150Logo.scale-400.png | Bin 0 -> 13344 bytes ...x44Logo.altform-unplated_targetsize-16.png | Bin 0 -> 394 bytes ...44Logo.altform-unplated_targetsize-256.png | Bin 0 -> 9693 bytes ...x44Logo.altform-unplated_targetsize-48.png | Bin 0 -> 1245 bytes .../Assets/Square44x44Logo.scale-100.png | Bin 0 -> 1141 bytes .../Assets/Square44x44Logo.scale-200.png | Bin 0 -> 2468 bytes .../Assets/Square44x44Logo.scale-400.png | Bin 0 -> 4740 bytes .../Assets/Square44x44Logo.targetsize-16.png | Bin 0 -> 394 bytes .../Assets/Square44x44Logo.targetsize-256.png | Bin 0 -> 9693 bytes .../Assets/Square44x44Logo.targetsize-48.png | Bin 0 -> 1245 bytes .../Assets/StoreLogo.backup.png | Bin 0 -> 392 bytes .../Assets/StoreLogo.scale-100.png | Bin 0 -> 836 bytes .../Assets/StoreLogo.scale-200.png | Bin 0 -> 1742 bytes .../Assets/StoreLogo.scale-400.png | Bin 0 -> 3654 bytes .../Assets/Wide310x150Logo.scale-100.png | Bin 0 -> 2988 bytes .../Assets/Wide310x150Logo.scale-200.png | Bin 0 -> 6555 bytes .../Assets/Wide310x150Logo.scale-400.png | Bin 0 -> 15240 bytes .../BusinessMgrMobile.UWP.csproj | 172 + .../BusinessMgrMobile.UWP/MainPage.xaml | 15 + .../BusinessMgrMobile.UWP/MainPage.xaml.cs | 27 + .../Package.appxmanifest | 55 + .../Properties/AssemblyInfo.cs | 29 + .../Properties/Default.rd.xml | 31 + .../BusinessMgrMobile.iOS/AppDelegate.cs | 31 + .../AppIcon.appiconset/Contents.json | 117 + .../AppIcon.appiconset/Icon1024.png | Bin 0 -> 70429 bytes .../AppIcon.appiconset/Icon120.png | Bin 0 -> 3773 bytes .../AppIcon.appiconset/Icon152.png | Bin 0 -> 4750 bytes .../AppIcon.appiconset/Icon167.png | Bin 0 -> 4692 bytes .../AppIcon.appiconset/Icon180.png | Bin 0 -> 5192 bytes .../AppIcon.appiconset/Icon20.png | Bin 0 -> 1313 bytes .../AppIcon.appiconset/Icon29.png | Bin 0 -> 845 bytes .../AppIcon.appiconset/Icon40.png | Bin 0 -> 1101 bytes .../AppIcon.appiconset/Icon58.png | Bin 0 -> 1761 bytes .../AppIcon.appiconset/Icon60.png | Bin 0 -> 2537 bytes .../AppIcon.appiconset/Icon76.png | Bin 0 -> 2332 bytes .../AppIcon.appiconset/Icon80.png | Bin 0 -> 2454 bytes .../AppIcon.appiconset/Icon87.png | Bin 0 -> 2758 bytes .../BusinessMgrMobile.iOS.csproj | 174 + .../BusinessMgrMobile.iOS/Entitlements.plist | 7 + .../BusinessMgrMobile.iOS/Info.plist | 38 + .../BusinessMgrMobile.iOS/Main.cs | 20 + .../Properties/AssemblyInfo.cs | 36 + .../Resources/Default-568h@2x.png | Bin 0 -> 8884 bytes .../Resources/Default-Portrait.png | Bin 0 -> 10710 bytes .../Resources/Default-Portrait@2x.png | Bin 0 -> 34540 bytes .../Resources/Default.png | Bin 0 -> 7243 bytes .../Resources/Default@2x.png | Bin 0 -> 8368 bytes .../Resources/LaunchScreen.storyboard | 39 + .../BusinessMgrMobile.projitems | 47 + .../BusinessMgrMobile.shproj | 11 + .../BusinessMgrMobile/Mobile/App/App.xaml | 12 + .../BusinessMgrMobile/Mobile/App/App.xaml.cs | 199 + .../Commands/SbmCommand_Accounts_Customer.cs | 38 + .../Commands/SbmCommand_Accounts_Supplier.cs | 38 + .../Mobile/App/Commands/SbmCommand_Home.cs | 36 + .../Mobile/App/Commands/SbmCommand_Logout.cs | 37 + .../Mobile/App/SbmApplication_Mobile.cs | 161 + .../Mobile/App/SbmMainPage.cs | 176 + .../BusinessMgrMobile/Mobile/App/SbmMenu.cs | 102 + .../App/SbmSessionProfile_Mobile_App.cs | 30 + .../Accounts/SbmComponents_Association.cs | 97 + .../Forms/Components/SbmComponents_Config.cs | 84 + .../Forms/Components/SbmComponents_Login.cs | 93 + .../Pages/Config/SbmPage_Config_Options.cs | 78 + .../Pages/Config/SbmPage_Config_System.cs | 121 + .../SbmFormPage_Accounts_Associations.cs | 183 + .../Pages/Templates/Page_Template_Main.cs | 239 + .../Main/Accounts/SbmMainPanel_Association.cs | 340 + .../SbmMainPanel_Association_Customer.cs | 48 + .../SbmMainPanel_Association_Supplier.cs | 47 + .../Forms/Panels/Main/SbmMainPanel_Home.cs | 159 + .../Panels/Main/SbmMainPanel_ItemList.cs | 183 + .../Forms/Panels/Main/SbmMainPanel_Login.cs | 260 + .../Mobile/Forms/Views/SbmMenuView.cs | 137 + .../Mobile/Core/App/SbmCommand_Mobile.cs | 34 + .../Core/App/SbmConfigConsole_Mobile.cs | 19 + .../Mobile/Core/App/SbmGlobals_Mobile.cs | 22 + .../Mobile/Core/App/SbmInstanceDefinition.cs | 35 + SaBusMgrMobCore/Mobile/Core/App/SbmMobile.cs | 125 + .../Mobile/Core/App/SbmMobileApplication.cs | 101 + .../Core/App/SbmSecurityProfile_Mobile.cs | 119 + .../Core/App/SbmSessionContext_Mobile.cs | 33 + .../Core/App/SbmSessionProfile_Mobile.cs | 107 + .../Mobile/Core/App/SbmUserContext_Mobile.cs | 62 + .../Mobile/Core/Bus/SbmAddress_Mobile.cs | 43 + .../Mobile/Core/Bus/SbmAffiliate_Mobile.cs | 78 + .../Core/Bus/SbmAssetCategory_Mobile.cs | 63 + .../Mobile/Core/Bus/SbmAssetProcess_Mobile.cs | 34 + .../Mobile/Core/Bus/SbmAsset_Mobile.cs | 98 + .../Mobile/Core/Bus/SbmAssociation_Mobile.cs | 58 + .../Core/Bus/SbmCommodityCustomer_Mobile.cs | 34 + .../Core/Bus/SbmCommoditySupplier_Mobile.cs | 34 + .../Mobile/Core/Bus/SbmCommodity_Mobile.cs | 118 + .../Mobile/Core/Bus/SbmConstituent_Mobile.cs | 38 + .../Core/Bus/SbmContainerItem_Mobile.cs | 34 + .../Mobile/Core/Bus/SbmContainer_Mobile.cs | 48 + .../Mobile/Core/Bus/SbmItemBatch_Mobile.cs | 34 + .../Mobile/Core/Bus/SbmItemLink_Mobile.cs | 34 + .../Mobile/Core/Bus/SbmItemProcess_Mobile.cs | 34 + .../Mobile/Core/Bus/SbmLocation_Mobile.cs | 42 + .../Mobile/Core/Bus/SbmMovement_Mobile.cs | 34 + .../Core/Bus/SbmPortfolioItem_Mobile.cs | 58 + .../Mobile/Core/Bus/SbmPriceSet_Mobile.cs | 38 + .../Mobile/Core/Bus/SbmPrice_Mobile.cs | 34 + .../Mobile/Core/Bus/SbmProcess_Mobile.cs | 83 + .../Mobile/Core/Bus/SbmRequirement_Mobile.cs | 117 + .../Mobile/Core/Bus/SbmSysParam_Mobile.cs | 34 + .../Core/Bus/SbmSystemAccountUser_Mobile.cs | 34 + .../Core/Bus/SbmSystemAccount_Mobile.cs | 38 + .../Mobile/Core/Bus/SbmSystemUser_Mobile.cs | 34 + .../Mobile/Core/Bus/SbmTransaction_Mobile.cs | 129 + .../Mobile/Core/Bus/SbmVehicleClass_Mobile.cs | 53 + .../Mobile/Core/Bus/SbmVehicleEvent_Mobile.cs | 34 + .../Core/Bus/SbmVehicleFeature_Mobile.cs | 34 + .../Mobile/Core/Bus/SbmVehicle_Mobile.cs | 83 + .../CodeTypes/SbmCodeTypeConsole_Mobile.cs | 527 + .../Core/CodeTypes/SbmCodeType_Mobile.cs | 23 + .../Mobile/Core/CodeTypes/SbmCode_Mobile.cs | 23 + .../Mobile/Core/Forms/Base/SbmComponents.cs | 50 + .../Core/Forms/ControlViews/SbmControlView.cs | 163 + .../Core/Forms/ControlViews/SbmEntryView.cs | 164 + .../Core/Forms/ControlViews/SbmPickerView.cs | 142 + .../Mobile/Core/Forms/Controls/SbmEntry.cs | 33 + .../Mobile/Core/Forms/Controls/SbmLabel.cs | 36 + .../Mobile/Core/Forms/Controls/SbmPicker.cs | 39 + .../Core/Forms/Layouts/SbmAbsoluteLayout.cs | 29 + .../Core/Forms/Layouts/SbmStackLayout.cs | 30 + .../Mobile/Core/Forms/Pages/SbmContentPage.cs | 63 + .../Mobile/Core/Forms/Pages/SbmFormPage.cs | 310 + .../Mobile/Core/Forms/Panels/SbmMainPanel.cs | 90 + .../Mobile/Core/Forms/Panels/SbmPanel.cs | 75 + .../Forms/Panels/SbmPanel_ItemListHeader.cs | 49 + .../Mobile/Core/Forms/Views/SbmContentView.cs | 79 + .../Mobile/Core/Forms/Views/SbmFrame.cs | 29 + .../Mobile/Core/Forms/Views/SbmGrid.cs | 66 + .../Mobile/Core/Forms/Views/SbmScrollView.cs | 63 + .../Mobile/Core/Forms/Views/SbmView.cs | 29 + .../Mobile/Core/Forms/Views/SbmWebView.cs | 44 + .../Mgr/SbmAccountMgr_Mobile-Addresses.cs | 385 + .../Mgr/SbmAccountMgr_Mobile-Affiliates.cs | 364 + .../Mgr/SbmAccountMgr_Mobile-Associations.cs | 416 + .../Mgr/SbmAccountMgr_Mobile-SysParams.cs | 279 + ...SbmAccountMgr_Mobile-SystemAccountUsers.cs | 268 + .../SbmAccountMgr_Mobile-SystemAccounts.cs | 291 + .../Mgr/SbmAccountMgr_Mobile-SystemUsers.cs | 281 + .../Mobile/Core/Mgr/SbmAccountMgr_Mobile.cs | 138 + .../Mgr/SbmAssetMgr_Mobile-AssetCategories.cs | 304 + .../Mgr/SbmAssetMgr_Mobile-AssetProcesses.cs | 274 + .../Core/Mgr/SbmAssetMgr_Mobile-Assets.cs | 370 + .../Mgr/SbmAssetMgr_Mobile-VehicleClasses.cs | 317 + .../Mgr/SbmAssetMgr_Mobile-VehicleEvents.cs | 292 + .../Mgr/SbmAssetMgr_Mobile-VehicleFeatures.cs | 283 + .../Core/Mgr/SbmAssetMgr_Mobile-Vehicles.cs | 355 + .../Mobile/Core/Mgr/SbmAssetMgr_Mobile.cs | 89 + .../Mgr/SbmCommodityMgr_Mobile-Commodities.cs | 633 ++ ...mCommodityMgr_Mobile-CommodityCustomers.cs | 275 + ...mCommodityMgr_Mobile-CommoditySuppliers.cs | 278 + .../SbmCommodityMgr_Mobile-ContainerItems.cs | 294 + .../Mgr/SbmCommodityMgr_Mobile-Containers.cs | 312 + .../SbmCommodityMgr_Mobile-PortfolioItem.cs | 294 + .../Mobile/Core/Mgr/SbmCommodityMgr_Mobile.cs | 217 + .../Mgr/SbmDataItemMgr_Mobile-ItemBatches.cs | 273 + .../Mgr/SbmDataItemMgr_Mobile-ItemLinks.cs | 298 + .../Mobile/Core/Mgr/SbmDataItemMgr_Mobile.cs | 69 + .../Mobile/Core/Mgr/SbmItemMgr_Mobile.cs | 88 + .../Core/Mgr/SbmPriceMgr_Mobile-PriceSets.cs | 273 + .../Core/Mgr/SbmPriceMgr_Mobile-Prices.cs | 288 + .../Mobile/Core/Mgr/SbmPriceMgr_Mobile.cs | 47 + .../Mgr/SbmProcessMgr_Mobile-ItemProcesses.cs | 217 + .../Mgr/SbmProcessMgr_Mobile-Processes.cs | 283 + .../Mobile/Core/Mgr/SbmProcessMgr_Mobile.cs | 81 + .../Core/Mgr/SbmStockMgr_Mobile-Locations.cs | 279 + .../Core/Mgr/SbmStockMgr_Mobile-Movements.cs | 324 + .../Mobile/Core/Mgr/SbmStockMgr_Mobile.cs | 74 + .../SbmTransactionMgr_Mobile-Constituents.cs | 389 + .../SbmTransactionMgr_Mobile-Requirements.cs | 509 + .../SbmTransactionMgr_Mobile-Transactions.cs | 551 + .../Core/Mgr/SbmTransactionMgr_Mobile.cs | 207 + .../SbmWebServiceStoreItemHelper.cs | 15 + SaBusMgrMobCore/SaBusMgrMobCore.csproj | 14 + 218 files changed, 30119 insertions(+) create mode 100644 BusinessMgrMobile.sln create mode 100644 BusinessMgrMobile/BusinessMgrMobile.Android/Assets/AboutAssets.txt create mode 100644 BusinessMgrMobile/BusinessMgrMobile.Android/BusinessMgrMobile.Android.csproj create mode 100644 BusinessMgrMobile/BusinessMgrMobile.Android/Mobile/Droid/App/MainActivity.cs create mode 100644 BusinessMgrMobile/BusinessMgrMobile.Android/Properties/AndroidManifest.xml create mode 100644 BusinessMgrMobile/BusinessMgrMobile.Android/Properties/AssemblyInfo.cs create mode 100644 BusinessMgrMobile/BusinessMgrMobile.Android/Resources/AboutResources.txt create mode 100644 BusinessMgrMobile/BusinessMgrMobile.Android/Resources/Resource.designer.cs create mode 100644 BusinessMgrMobile/BusinessMgrMobile.Android/Resources/layout/Tabbar.axml create mode 100644 BusinessMgrMobile/BusinessMgrMobile.Android/Resources/layout/Toolbar.axml create mode 100644 BusinessMgrMobile/BusinessMgrMobile.Android/Resources/mipmap-anydpi-v26/icon.xml create mode 100644 BusinessMgrMobile/BusinessMgrMobile.Android/Resources/mipmap-anydpi-v26/icon_round.xml create mode 100644 BusinessMgrMobile/BusinessMgrMobile.Android/Resources/mipmap-hdpi/icon.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.Android/Resources/mipmap-hdpi/launcher_foreground.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.Android/Resources/mipmap-mdpi/icon.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.Android/Resources/mipmap-mdpi/launcher_foreground.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.Android/Resources/mipmap-xhdpi/icon.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.Android/Resources/mipmap-xhdpi/launcher_foreground.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.Android/Resources/mipmap-xxhdpi/icon.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.Android/Resources/mipmap-xxhdpi/launcher_foreground.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.Android/Resources/mipmap-xxxhdpi/icon.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.Android/Resources/mipmap-xxxhdpi/launcher_foreground.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.Android/Resources/values/colors.xml create mode 100644 BusinessMgrMobile/BusinessMgrMobile.Android/Resources/values/styles.xml create mode 100644 BusinessMgrMobile/BusinessMgrMobile.UWP/App.xaml create mode 100644 BusinessMgrMobile/BusinessMgrMobile.UWP/App.xaml.cs create mode 100644 BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/LargeTile.scale-100.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/LargeTile.scale-200.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/LargeTile.scale-400.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/SmallTile.scale-100.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/SmallTile.scale-200.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/SmallTile.scale-400.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/SplashScreen.scale-100.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/SplashScreen.scale-200.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/SplashScreen.scale-400.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/Square150x150Logo.scale-100.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/Square150x150Logo.scale-200.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/Square150x150Logo.scale-400.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/Square44x44Logo.altform-unplated_targetsize-16.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/Square44x44Logo.altform-unplated_targetsize-256.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/Square44x44Logo.altform-unplated_targetsize-48.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/Square44x44Logo.scale-100.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/Square44x44Logo.scale-200.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/Square44x44Logo.scale-400.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/Square44x44Logo.targetsize-16.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/Square44x44Logo.targetsize-256.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/Square44x44Logo.targetsize-48.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/StoreLogo.backup.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/StoreLogo.scale-100.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/StoreLogo.scale-200.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/StoreLogo.scale-400.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/Wide310x150Logo.scale-100.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/Wide310x150Logo.scale-200.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/Wide310x150Logo.scale-400.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.UWP/BusinessMgrMobile.UWP.csproj create mode 100644 BusinessMgrMobile/BusinessMgrMobile.UWP/MainPage.xaml create mode 100644 BusinessMgrMobile/BusinessMgrMobile.UWP/MainPage.xaml.cs create mode 100644 BusinessMgrMobile/BusinessMgrMobile.UWP/Package.appxmanifest create mode 100644 BusinessMgrMobile/BusinessMgrMobile.UWP/Properties/AssemblyInfo.cs create mode 100644 BusinessMgrMobile/BusinessMgrMobile.UWP/Properties/Default.rd.xml create mode 100644 BusinessMgrMobile/BusinessMgrMobile.iOS/AppDelegate.cs create mode 100644 BusinessMgrMobile/BusinessMgrMobile.iOS/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 BusinessMgrMobile/BusinessMgrMobile.iOS/Assets.xcassets/AppIcon.appiconset/Icon1024.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.iOS/Assets.xcassets/AppIcon.appiconset/Icon120.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.iOS/Assets.xcassets/AppIcon.appiconset/Icon152.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.iOS/Assets.xcassets/AppIcon.appiconset/Icon167.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.iOS/Assets.xcassets/AppIcon.appiconset/Icon180.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.iOS/Assets.xcassets/AppIcon.appiconset/Icon20.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.iOS/Assets.xcassets/AppIcon.appiconset/Icon29.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.iOS/Assets.xcassets/AppIcon.appiconset/Icon40.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.iOS/Assets.xcassets/AppIcon.appiconset/Icon58.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.iOS/Assets.xcassets/AppIcon.appiconset/Icon60.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.iOS/Assets.xcassets/AppIcon.appiconset/Icon76.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.iOS/Assets.xcassets/AppIcon.appiconset/Icon80.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.iOS/Assets.xcassets/AppIcon.appiconset/Icon87.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.iOS/BusinessMgrMobile.iOS.csproj create mode 100644 BusinessMgrMobile/BusinessMgrMobile.iOS/Entitlements.plist create mode 100644 BusinessMgrMobile/BusinessMgrMobile.iOS/Info.plist create mode 100644 BusinessMgrMobile/BusinessMgrMobile.iOS/Main.cs create mode 100644 BusinessMgrMobile/BusinessMgrMobile.iOS/Properties/AssemblyInfo.cs create mode 100644 BusinessMgrMobile/BusinessMgrMobile.iOS/Resources/Default-568h@2x.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.iOS/Resources/Default-Portrait.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.iOS/Resources/Default-Portrait@2x.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.iOS/Resources/Default.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.iOS/Resources/Default@2x.png create mode 100644 BusinessMgrMobile/BusinessMgrMobile.iOS/Resources/LaunchScreen.storyboard create mode 100644 BusinessMgrMobile/BusinessMgrMobile/BusinessMgrMobile.projitems create mode 100644 BusinessMgrMobile/BusinessMgrMobile/BusinessMgrMobile.shproj create mode 100644 BusinessMgrMobile/BusinessMgrMobile/Mobile/App/App.xaml create mode 100644 BusinessMgrMobile/BusinessMgrMobile/Mobile/App/App.xaml.cs create mode 100644 BusinessMgrMobile/BusinessMgrMobile/Mobile/App/Commands/SbmCommand_Accounts_Customer.cs create mode 100644 BusinessMgrMobile/BusinessMgrMobile/Mobile/App/Commands/SbmCommand_Accounts_Supplier.cs create mode 100644 BusinessMgrMobile/BusinessMgrMobile/Mobile/App/Commands/SbmCommand_Home.cs create mode 100644 BusinessMgrMobile/BusinessMgrMobile/Mobile/App/Commands/SbmCommand_Logout.cs create mode 100644 BusinessMgrMobile/BusinessMgrMobile/Mobile/App/SbmApplication_Mobile.cs create mode 100644 BusinessMgrMobile/BusinessMgrMobile/Mobile/App/SbmMainPage.cs create mode 100644 BusinessMgrMobile/BusinessMgrMobile/Mobile/App/SbmMenu.cs create mode 100644 BusinessMgrMobile/BusinessMgrMobile/Mobile/App/SbmSessionProfile_Mobile_App.cs create mode 100644 BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Components/Accounts/SbmComponents_Association.cs create mode 100644 BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Components/SbmComponents_Config.cs create mode 100644 BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Components/SbmComponents_Login.cs create mode 100644 BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Pages/Config/SbmPage_Config_Options.cs create mode 100644 BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Pages/Config/SbmPage_Config_System.cs create mode 100644 BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Pages/Forms/Accounts/SbmFormPage_Accounts_Associations.cs create mode 100644 BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Pages/Templates/Page_Template_Main.cs create mode 100644 BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Panels/Main/Accounts/SbmMainPanel_Association.cs create mode 100644 BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Panels/Main/Accounts/SbmMainPanel_Association_Customer.cs create mode 100644 BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Panels/Main/Accounts/SbmMainPanel_Association_Supplier.cs create mode 100644 BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Panels/Main/SbmMainPanel_Home.cs create mode 100644 BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Panels/Main/SbmMainPanel_ItemList.cs create mode 100644 BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Panels/Main/SbmMainPanel_Login.cs create mode 100644 BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Views/SbmMenuView.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/App/SbmCommand_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/App/SbmConfigConsole_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/App/SbmGlobals_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/App/SbmInstanceDefinition.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/App/SbmMobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/App/SbmMobileApplication.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/App/SbmSecurityProfile_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/App/SbmSessionContext_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/App/SbmSessionProfile_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/App/SbmUserContext_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Bus/SbmAddress_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Bus/SbmAffiliate_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Bus/SbmAssetCategory_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Bus/SbmAssetProcess_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Bus/SbmAsset_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Bus/SbmAssociation_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Bus/SbmCommodityCustomer_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Bus/SbmCommoditySupplier_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Bus/SbmCommodity_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Bus/SbmConstituent_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Bus/SbmContainerItem_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Bus/SbmContainer_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Bus/SbmItemBatch_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Bus/SbmItemLink_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Bus/SbmItemProcess_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Bus/SbmLocation_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Bus/SbmMovement_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Bus/SbmPortfolioItem_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Bus/SbmPriceSet_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Bus/SbmPrice_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Bus/SbmProcess_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Bus/SbmRequirement_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Bus/SbmSysParam_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Bus/SbmSystemAccountUser_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Bus/SbmSystemAccount_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Bus/SbmSystemUser_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Bus/SbmTransaction_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Bus/SbmVehicleClass_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Bus/SbmVehicleEvent_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Bus/SbmVehicleFeature_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Bus/SbmVehicle_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/CodeTypes/SbmCodeTypeConsole_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/CodeTypes/SbmCodeType_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/CodeTypes/SbmCode_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Forms/Base/SbmComponents.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Forms/ControlViews/SbmControlView.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Forms/ControlViews/SbmEntryView.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Forms/ControlViews/SbmPickerView.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Forms/Controls/SbmEntry.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Forms/Controls/SbmLabel.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Forms/Controls/SbmPicker.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Forms/Layouts/SbmAbsoluteLayout.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Forms/Layouts/SbmStackLayout.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Forms/Pages/SbmContentPage.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Forms/Pages/SbmFormPage.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Forms/Panels/SbmMainPanel.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Forms/Panels/SbmPanel.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Forms/Panels/SbmPanel_ItemListHeader.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Forms/Views/SbmContentView.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Forms/Views/SbmFrame.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Forms/Views/SbmGrid.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Forms/Views/SbmScrollView.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Forms/Views/SbmView.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Forms/Views/SbmWebView.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Mgr/SbmAccountMgr_Mobile-Addresses.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Mgr/SbmAccountMgr_Mobile-Affiliates.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Mgr/SbmAccountMgr_Mobile-Associations.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Mgr/SbmAccountMgr_Mobile-SysParams.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Mgr/SbmAccountMgr_Mobile-SystemAccountUsers.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Mgr/SbmAccountMgr_Mobile-SystemAccounts.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Mgr/SbmAccountMgr_Mobile-SystemUsers.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Mgr/SbmAccountMgr_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Mgr/SbmAssetMgr_Mobile-AssetCategories.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Mgr/SbmAssetMgr_Mobile-AssetProcesses.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Mgr/SbmAssetMgr_Mobile-Assets.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Mgr/SbmAssetMgr_Mobile-VehicleClasses.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Mgr/SbmAssetMgr_Mobile-VehicleEvents.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Mgr/SbmAssetMgr_Mobile-VehicleFeatures.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Mgr/SbmAssetMgr_Mobile-Vehicles.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Mgr/SbmAssetMgr_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Mgr/SbmCommodityMgr_Mobile-Commodities.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Mgr/SbmCommodityMgr_Mobile-CommodityCustomers.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Mgr/SbmCommodityMgr_Mobile-CommoditySuppliers.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Mgr/SbmCommodityMgr_Mobile-ContainerItems.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Mgr/SbmCommodityMgr_Mobile-Containers.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Mgr/SbmCommodityMgr_Mobile-PortfolioItem.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Mgr/SbmCommodityMgr_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Mgr/SbmDataItemMgr_Mobile-ItemBatches.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Mgr/SbmDataItemMgr_Mobile-ItemLinks.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Mgr/SbmDataItemMgr_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Mgr/SbmItemMgr_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Mgr/SbmPriceMgr_Mobile-PriceSets.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Mgr/SbmPriceMgr_Mobile-Prices.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Mgr/SbmPriceMgr_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Mgr/SbmProcessMgr_Mobile-ItemProcesses.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Mgr/SbmProcessMgr_Mobile-Processes.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Mgr/SbmProcessMgr_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Mgr/SbmStockMgr_Mobile-Locations.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Mgr/SbmStockMgr_Mobile-Movements.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Mgr/SbmStockMgr_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Mgr/SbmTransactionMgr_Mobile-Constituents.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Mgr/SbmTransactionMgr_Mobile-Requirements.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Mgr/SbmTransactionMgr_Mobile-Transactions.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/Mgr/SbmTransactionMgr_Mobile.cs create mode 100644 SaBusMgrMobCore/Mobile/Core/WebService/SbmWebServiceStoreItemHelper.cs create mode 100644 SaBusMgrMobCore/SaBusMgrMobCore.csproj diff --git a/BusinessMgrMobile.sln b/BusinessMgrMobile.sln new file mode 100644 index 0000000..6fd39b0 --- /dev/null +++ b/BusinessMgrMobile.sln @@ -0,0 +1,469 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.28307.705 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BusinessMgrMobile.Android", "BusinessMgrMobile\BusinessMgrMobile.Android\BusinessMgrMobile.Android.csproj", "{9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BusinessMgrMobile.iOS", "BusinessMgrMobile\BusinessMgrMobile.iOS\BusinessMgrMobile.iOS.csproj", "{2B40FACD-C521-4AF6-9E5D-0FAFAA04B096}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BusinessMgrMobile.UWP", "BusinessMgrMobile\BusinessMgrMobile.UWP\BusinessMgrMobile.UWP.csproj", "{11104E8D-C345-4E49-B07B-94321E2FA80C}" +EndProject +Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "BusinessMgrMobile", "BusinessMgrMobile\BusinessMgrMobile\BusinessMgrMobile.shproj", "{27BF376E-0A5E-4C9A-A8E3-23944AB08F1D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SaBusMgrMobCore", "SaBusMgrMobCore\SaBusMgrMobCore.csproj", "{0DE3A997-9167-48E7-BC74-66576324B7C5}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SacsCoreMob", "..\..\Common-C#\Workspace\SacsCoreMob\SacsCoreMob.csproj", "{00CD1237-514F-4B70-BB14-65FC05E38222}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SaBusMgrCore", "..\..\BusinessMgr-C#\Workspace\SaBusMgrCore\SaBusMgrCore.csproj", "{F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SacsAccounts", "..\..\Common-C#\Workspace\SacsAccounts\SacsAccounts.csproj", "{98BE2B3B-4475-4EB0-A06C-2673587679ED}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SacsCoreBase", "..\..\Common-C#\Workspace\SacsCoreBase\SacsCoreBase.csproj", "{9FB2542A-6BF7-47B9-8F45-D551F6A318C8}" +EndProject +Global + GlobalSection(SharedMSBuildProjectFiles) = preSolution + BusinessMgrMobile\BusinessMgrMobile\BusinessMgrMobile.projitems*{11104e8d-c345-4e49-b07b-94321e2fa80c}*SharedItemsImports = 4 + BusinessMgrMobile\BusinessMgrMobile\BusinessMgrMobile.projitems*{27bf376e-0a5e-4c9a-a8e3-23944ab08f1d}*SharedItemsImports = 13 + BusinessMgrMobile\BusinessMgrMobile\BusinessMgrMobile.projitems*{2b40facd-c521-4af6-9e5d-0fafaa04b096}*SharedItemsImports = 4 + BusinessMgrMobile\BusinessMgrMobile\BusinessMgrMobile.projitems*{9adaae7e-997e-4a99-8dc8-9b837982b7a5}*SharedItemsImports = 4 + EndGlobalSection + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Ad-Hoc|Any CPU = Ad-Hoc|Any CPU + Ad-Hoc|ARM = Ad-Hoc|ARM + Ad-Hoc|iPhone = Ad-Hoc|iPhone + Ad-Hoc|iPhoneSimulator = Ad-Hoc|iPhoneSimulator + Ad-Hoc|x64 = Ad-Hoc|x64 + Ad-Hoc|x86 = Ad-Hoc|x86 + AppStore|Any CPU = AppStore|Any CPU + AppStore|ARM = AppStore|ARM + AppStore|iPhone = AppStore|iPhone + AppStore|iPhoneSimulator = AppStore|iPhoneSimulator + AppStore|x64 = AppStore|x64 + AppStore|x86 = AppStore|x86 + Debug|Any CPU = Debug|Any CPU + Debug|ARM = Debug|ARM + Debug|iPhone = Debug|iPhone + Debug|iPhoneSimulator = Debug|iPhoneSimulator + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|ARM = Release|ARM + Release|iPhone = Release|iPhone + Release|iPhoneSimulator = Release|iPhoneSimulator + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Ad-Hoc|Any CPU.Deploy.0 = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Ad-Hoc|ARM.Build.0 = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Ad-Hoc|ARM.Deploy.0 = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Ad-Hoc|iPhone.Deploy.0 = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Ad-Hoc|x64.Build.0 = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Ad-Hoc|x64.Deploy.0 = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Ad-Hoc|x86.Build.0 = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Ad-Hoc|x86.Deploy.0 = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.AppStore|Any CPU.ActiveCfg = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.AppStore|Any CPU.Build.0 = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.AppStore|Any CPU.Deploy.0 = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.AppStore|ARM.ActiveCfg = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.AppStore|ARM.Build.0 = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.AppStore|ARM.Deploy.0 = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.AppStore|iPhone.ActiveCfg = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.AppStore|iPhone.Build.0 = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.AppStore|iPhone.Deploy.0 = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.AppStore|iPhoneSimulator.Deploy.0 = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.AppStore|x64.ActiveCfg = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.AppStore|x64.Build.0 = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.AppStore|x64.Deploy.0 = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.AppStore|x86.ActiveCfg = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.AppStore|x86.Build.0 = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.AppStore|x86.Deploy.0 = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Debug|ARM.ActiveCfg = Debug|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Debug|ARM.Build.0 = Debug|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Debug|ARM.Deploy.0 = Debug|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Debug|iPhone.Build.0 = Debug|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Debug|iPhone.Deploy.0 = Debug|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Debug|x64.ActiveCfg = Debug|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Debug|x64.Build.0 = Debug|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Debug|x64.Deploy.0 = Debug|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Debug|x86.ActiveCfg = Debug|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Debug|x86.Build.0 = Debug|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Debug|x86.Deploy.0 = Debug|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Release|Any CPU.Build.0 = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Release|Any CPU.Deploy.0 = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Release|ARM.ActiveCfg = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Release|ARM.Build.0 = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Release|ARM.Deploy.0 = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Release|iPhone.ActiveCfg = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Release|iPhone.Build.0 = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Release|iPhone.Deploy.0 = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Release|x64.ActiveCfg = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Release|x64.Build.0 = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Release|x64.Deploy.0 = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Release|x86.ActiveCfg = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Release|x86.Build.0 = Release|Any CPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5}.Release|x86.Deploy.0 = Release|Any CPU + {2B40FACD-C521-4AF6-9E5D-0FAFAA04B096}.Ad-Hoc|Any CPU.ActiveCfg = Ad-Hoc|iPhone + {2B40FACD-C521-4AF6-9E5D-0FAFAA04B096}.Ad-Hoc|ARM.ActiveCfg = Ad-Hoc|iPhone + {2B40FACD-C521-4AF6-9E5D-0FAFAA04B096}.Ad-Hoc|iPhone.ActiveCfg = Ad-Hoc|iPhone + {2B40FACD-C521-4AF6-9E5D-0FAFAA04B096}.Ad-Hoc|iPhone.Build.0 = Ad-Hoc|iPhone + {2B40FACD-C521-4AF6-9E5D-0FAFAA04B096}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Ad-Hoc|iPhoneSimulator + {2B40FACD-C521-4AF6-9E5D-0FAFAA04B096}.Ad-Hoc|iPhoneSimulator.Build.0 = Ad-Hoc|iPhoneSimulator + {2B40FACD-C521-4AF6-9E5D-0FAFAA04B096}.Ad-Hoc|x64.ActiveCfg = Ad-Hoc|iPhone + {2B40FACD-C521-4AF6-9E5D-0FAFAA04B096}.Ad-Hoc|x86.ActiveCfg = Ad-Hoc|iPhone + {2B40FACD-C521-4AF6-9E5D-0FAFAA04B096}.AppStore|Any CPU.ActiveCfg = AppStore|iPhone + {2B40FACD-C521-4AF6-9E5D-0FAFAA04B096}.AppStore|ARM.ActiveCfg = AppStore|iPhone + {2B40FACD-C521-4AF6-9E5D-0FAFAA04B096}.AppStore|iPhone.ActiveCfg = AppStore|iPhone + {2B40FACD-C521-4AF6-9E5D-0FAFAA04B096}.AppStore|iPhone.Build.0 = AppStore|iPhone + {2B40FACD-C521-4AF6-9E5D-0FAFAA04B096}.AppStore|iPhoneSimulator.ActiveCfg = AppStore|iPhoneSimulator + {2B40FACD-C521-4AF6-9E5D-0FAFAA04B096}.AppStore|iPhoneSimulator.Build.0 = AppStore|iPhoneSimulator + {2B40FACD-C521-4AF6-9E5D-0FAFAA04B096}.AppStore|x64.ActiveCfg = AppStore|iPhone + {2B40FACD-C521-4AF6-9E5D-0FAFAA04B096}.AppStore|x86.ActiveCfg = AppStore|iPhone + {2B40FACD-C521-4AF6-9E5D-0FAFAA04B096}.Debug|Any CPU.ActiveCfg = Debug|iPhone + {2B40FACD-C521-4AF6-9E5D-0FAFAA04B096}.Debug|ARM.ActiveCfg = Debug|iPhone + {2B40FACD-C521-4AF6-9E5D-0FAFAA04B096}.Debug|iPhone.ActiveCfg = Debug|iPhone + {2B40FACD-C521-4AF6-9E5D-0FAFAA04B096}.Debug|iPhone.Build.0 = Debug|iPhone + {2B40FACD-C521-4AF6-9E5D-0FAFAA04B096}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator + {2B40FACD-C521-4AF6-9E5D-0FAFAA04B096}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator + {2B40FACD-C521-4AF6-9E5D-0FAFAA04B096}.Debug|x64.ActiveCfg = Debug|iPhone + {2B40FACD-C521-4AF6-9E5D-0FAFAA04B096}.Debug|x86.ActiveCfg = Debug|iPhone + {2B40FACD-C521-4AF6-9E5D-0FAFAA04B096}.Release|Any CPU.ActiveCfg = Release|iPhone + {2B40FACD-C521-4AF6-9E5D-0FAFAA04B096}.Release|ARM.ActiveCfg = Release|iPhone + {2B40FACD-C521-4AF6-9E5D-0FAFAA04B096}.Release|iPhone.ActiveCfg = Release|iPhone + {2B40FACD-C521-4AF6-9E5D-0FAFAA04B096}.Release|iPhone.Build.0 = Release|iPhone + {2B40FACD-C521-4AF6-9E5D-0FAFAA04B096}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator + {2B40FACD-C521-4AF6-9E5D-0FAFAA04B096}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator + {2B40FACD-C521-4AF6-9E5D-0FAFAA04B096}.Release|x64.ActiveCfg = Release|iPhone + {2B40FACD-C521-4AF6-9E5D-0FAFAA04B096}.Release|x86.ActiveCfg = Release|iPhone + {11104E8D-C345-4E49-B07B-94321E2FA80C}.Ad-Hoc|Any CPU.ActiveCfg = Release|x86 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.Ad-Hoc|Any CPU.Build.0 = Release|x86 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.Ad-Hoc|Any CPU.Deploy.0 = Release|x86 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.Ad-Hoc|ARM.ActiveCfg = Release|ARM + {11104E8D-C345-4E49-B07B-94321E2FA80C}.Ad-Hoc|ARM.Build.0 = Release|ARM + {11104E8D-C345-4E49-B07B-94321E2FA80C}.Ad-Hoc|ARM.Deploy.0 = Release|ARM + {11104E8D-C345-4E49-B07B-94321E2FA80C}.Ad-Hoc|iPhone.ActiveCfg = Release|x86 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.Ad-Hoc|iPhone.Build.0 = Release|x86 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.Ad-Hoc|iPhone.Deploy.0 = Release|x86 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|x86 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|x86 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|x86 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.Ad-Hoc|x64.ActiveCfg = Release|x64 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.Ad-Hoc|x64.Build.0 = Release|x64 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.Ad-Hoc|x64.Deploy.0 = Release|x64 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.Ad-Hoc|x86.ActiveCfg = Release|x86 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.Ad-Hoc|x86.Build.0 = Release|x86 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.Ad-Hoc|x86.Deploy.0 = Release|x86 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.AppStore|Any CPU.ActiveCfg = Release|x86 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.AppStore|Any CPU.Build.0 = Release|x86 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.AppStore|Any CPU.Deploy.0 = Release|x86 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.AppStore|ARM.ActiveCfg = Release|ARM + {11104E8D-C345-4E49-B07B-94321E2FA80C}.AppStore|ARM.Build.0 = Release|ARM + {11104E8D-C345-4E49-B07B-94321E2FA80C}.AppStore|ARM.Deploy.0 = Release|ARM + {11104E8D-C345-4E49-B07B-94321E2FA80C}.AppStore|iPhone.ActiveCfg = Release|x86 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.AppStore|iPhone.Build.0 = Release|x86 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.AppStore|iPhone.Deploy.0 = Release|x86 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.AppStore|iPhoneSimulator.ActiveCfg = Release|x86 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.AppStore|iPhoneSimulator.Build.0 = Release|x86 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.AppStore|iPhoneSimulator.Deploy.0 = Release|x86 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.AppStore|x64.ActiveCfg = Release|x64 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.AppStore|x64.Build.0 = Release|x64 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.AppStore|x64.Deploy.0 = Release|x64 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.AppStore|x86.ActiveCfg = Release|x86 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.AppStore|x86.Build.0 = Release|x86 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.AppStore|x86.Deploy.0 = Release|x86 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.Debug|Any CPU.ActiveCfg = Debug|x86 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.Debug|ARM.ActiveCfg = Debug|ARM + {11104E8D-C345-4E49-B07B-94321E2FA80C}.Debug|ARM.Build.0 = Debug|ARM + {11104E8D-C345-4E49-B07B-94321E2FA80C}.Debug|ARM.Deploy.0 = Debug|ARM + {11104E8D-C345-4E49-B07B-94321E2FA80C}.Debug|iPhone.ActiveCfg = Debug|x86 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.Debug|iPhoneSimulator.ActiveCfg = Debug|x86 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.Debug|x64.ActiveCfg = Debug|x64 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.Debug|x64.Build.0 = Debug|x64 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.Debug|x64.Deploy.0 = Debug|x64 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.Debug|x86.ActiveCfg = Debug|x86 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.Debug|x86.Build.0 = Debug|x86 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.Debug|x86.Deploy.0 = Debug|x86 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.Release|Any CPU.ActiveCfg = Release|x86 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.Release|ARM.ActiveCfg = Release|ARM + {11104E8D-C345-4E49-B07B-94321E2FA80C}.Release|ARM.Build.0 = Release|ARM + {11104E8D-C345-4E49-B07B-94321E2FA80C}.Release|ARM.Deploy.0 = Release|ARM + {11104E8D-C345-4E49-B07B-94321E2FA80C}.Release|iPhone.ActiveCfg = Release|x86 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.Release|iPhoneSimulator.ActiveCfg = Release|x86 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.Release|x64.ActiveCfg = Release|x64 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.Release|x64.Build.0 = Release|x64 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.Release|x64.Deploy.0 = Release|x64 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.Release|x86.ActiveCfg = Release|x86 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.Release|x86.Build.0 = Release|x86 + {11104E8D-C345-4E49-B07B-94321E2FA80C}.Release|x86.Deploy.0 = Release|x86 + {0DE3A997-9167-48E7-BC74-66576324B7C5}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.Ad-Hoc|x64.Build.0 = Debug|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.Ad-Hoc|x86.Build.0 = Debug|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.AppStore|Any CPU.Build.0 = Debug|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.AppStore|ARM.ActiveCfg = Debug|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.AppStore|ARM.Build.0 = Debug|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.AppStore|iPhone.ActiveCfg = Debug|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.AppStore|iPhone.Build.0 = Debug|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.AppStore|x64.ActiveCfg = Debug|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.AppStore|x64.Build.0 = Debug|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.AppStore|x86.ActiveCfg = Debug|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.AppStore|x86.Build.0 = Debug|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.Debug|ARM.ActiveCfg = Debug|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.Debug|ARM.Build.0 = Debug|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.Debug|iPhone.Build.0 = Debug|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.Debug|x64.ActiveCfg = Debug|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.Debug|x64.Build.0 = Debug|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.Debug|x86.ActiveCfg = Debug|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.Debug|x86.Build.0 = Debug|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.Release|Any CPU.Build.0 = Release|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.Release|ARM.ActiveCfg = Release|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.Release|ARM.Build.0 = Release|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.Release|iPhone.ActiveCfg = Release|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.Release|iPhone.Build.0 = Release|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.Release|x64.ActiveCfg = Release|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.Release|x64.Build.0 = Release|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.Release|x86.ActiveCfg = Release|Any CPU + {0DE3A997-9167-48E7-BC74-66576324B7C5}.Release|x86.Build.0 = Release|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.Ad-Hoc|x64.Build.0 = Debug|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.Ad-Hoc|x86.Build.0 = Debug|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.AppStore|Any CPU.Build.0 = Debug|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.AppStore|ARM.ActiveCfg = Debug|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.AppStore|ARM.Build.0 = Debug|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.AppStore|iPhone.ActiveCfg = Debug|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.AppStore|iPhone.Build.0 = Debug|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.AppStore|x64.ActiveCfg = Debug|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.AppStore|x64.Build.0 = Debug|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.AppStore|x86.ActiveCfg = Debug|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.AppStore|x86.Build.0 = Debug|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.Debug|Any CPU.Build.0 = Debug|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.Debug|ARM.ActiveCfg = Debug|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.Debug|ARM.Build.0 = Debug|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.Debug|iPhone.Build.0 = Debug|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.Debug|x64.ActiveCfg = Debug|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.Debug|x64.Build.0 = Debug|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.Debug|x86.ActiveCfg = Debug|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.Debug|x86.Build.0 = Debug|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.Release|Any CPU.ActiveCfg = Release|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.Release|Any CPU.Build.0 = Release|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.Release|ARM.ActiveCfg = Release|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.Release|ARM.Build.0 = Release|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.Release|iPhone.ActiveCfg = Release|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.Release|iPhone.Build.0 = Release|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.Release|x64.ActiveCfg = Release|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.Release|x64.Build.0 = Release|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.Release|x86.ActiveCfg = Release|Any CPU + {00CD1237-514F-4B70-BB14-65FC05E38222}.Release|x86.Build.0 = Release|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.Ad-Hoc|x64.Build.0 = Debug|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.Ad-Hoc|x86.Build.0 = Debug|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.AppStore|Any CPU.Build.0 = Debug|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.AppStore|ARM.ActiveCfg = Debug|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.AppStore|ARM.Build.0 = Debug|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.AppStore|iPhone.ActiveCfg = Debug|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.AppStore|iPhone.Build.0 = Debug|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.AppStore|x64.ActiveCfg = Debug|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.AppStore|x64.Build.0 = Debug|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.AppStore|x86.ActiveCfg = Debug|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.AppStore|x86.Build.0 = Debug|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.Debug|ARM.ActiveCfg = Debug|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.Debug|ARM.Build.0 = Debug|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.Debug|iPhone.Build.0 = Debug|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.Debug|x64.ActiveCfg = Debug|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.Debug|x64.Build.0 = Debug|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.Debug|x86.ActiveCfg = Debug|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.Debug|x86.Build.0 = Debug|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.Release|Any CPU.Build.0 = Release|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.Release|ARM.ActiveCfg = Release|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.Release|ARM.Build.0 = Release|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.Release|iPhone.ActiveCfg = Release|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.Release|iPhone.Build.0 = Release|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.Release|x64.ActiveCfg = Release|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.Release|x64.Build.0 = Release|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.Release|x86.ActiveCfg = Release|Any CPU + {F9A541C6-BBEA-4594-9B2E-EFFA982D9E2E}.Release|x86.Build.0 = Release|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.Ad-Hoc|x64.Build.0 = Debug|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.Ad-Hoc|x86.Build.0 = Debug|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.AppStore|Any CPU.Build.0 = Debug|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.AppStore|ARM.ActiveCfg = Debug|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.AppStore|ARM.Build.0 = Debug|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.AppStore|iPhone.ActiveCfg = Debug|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.AppStore|iPhone.Build.0 = Debug|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.AppStore|x64.ActiveCfg = Debug|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.AppStore|x64.Build.0 = Debug|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.AppStore|x86.ActiveCfg = Debug|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.AppStore|x86.Build.0 = Debug|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.Debug|Any CPU.Build.0 = Debug|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.Debug|ARM.ActiveCfg = Debug|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.Debug|ARM.Build.0 = Debug|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.Debug|iPhone.Build.0 = Debug|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.Debug|x64.ActiveCfg = Debug|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.Debug|x64.Build.0 = Debug|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.Debug|x86.ActiveCfg = Debug|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.Debug|x86.Build.0 = Debug|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.Release|Any CPU.ActiveCfg = Release|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.Release|Any CPU.Build.0 = Release|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.Release|ARM.ActiveCfg = Release|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.Release|ARM.Build.0 = Release|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.Release|iPhone.ActiveCfg = Release|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.Release|iPhone.Build.0 = Release|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.Release|x64.ActiveCfg = Release|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.Release|x64.Build.0 = Release|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.Release|x86.ActiveCfg = Release|Any CPU + {98BE2B3B-4475-4EB0-A06C-2673587679ED}.Release|x86.Build.0 = Release|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.Ad-Hoc|x64.Build.0 = Debug|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.Ad-Hoc|x86.Build.0 = Debug|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.AppStore|Any CPU.Build.0 = Debug|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.AppStore|ARM.ActiveCfg = Debug|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.AppStore|ARM.Build.0 = Debug|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.AppStore|iPhone.ActiveCfg = Debug|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.AppStore|iPhone.Build.0 = Debug|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.AppStore|x64.ActiveCfg = Debug|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.AppStore|x64.Build.0 = Debug|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.AppStore|x86.ActiveCfg = Debug|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.AppStore|x86.Build.0 = Debug|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.Debug|ARM.ActiveCfg = Debug|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.Debug|ARM.Build.0 = Debug|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.Debug|iPhone.Build.0 = Debug|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.Debug|x64.ActiveCfg = Debug|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.Debug|x64.Build.0 = Debug|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.Debug|x86.ActiveCfg = Debug|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.Debug|x86.Build.0 = Debug|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.Release|Any CPU.Build.0 = Release|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.Release|ARM.ActiveCfg = Release|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.Release|ARM.Build.0 = Release|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.Release|iPhone.ActiveCfg = Release|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.Release|iPhone.Build.0 = Release|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.Release|x64.ActiveCfg = Release|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.Release|x64.Build.0 = Release|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.Release|x86.ActiveCfg = Release|Any CPU + {9FB2542A-6BF7-47B9-8F45-D551F6A318C8}.Release|x86.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {84DC3201-F4A0-4AFA-991D-F047EA193F07} + EndGlobalSection +EndGlobal diff --git a/BusinessMgrMobile/BusinessMgrMobile.Android/Assets/AboutAssets.txt b/BusinessMgrMobile/BusinessMgrMobile.Android/Assets/AboutAssets.txt new file mode 100644 index 0000000..ca673c6 --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile.Android/Assets/AboutAssets.txt @@ -0,0 +1,19 @@ +Any raw assets you want to be deployed with your application can be placed in +this directory (and child directories) and given a Build Action of "AndroidAsset". + +These files will be deployed with you package and will be accessible using Android's +AssetManager, like this: + +public class ReadAsset : Activity +{ + protected override void OnCreate (Bundle bundle) + { + base.OnCreate (bundle); + + InputStream input = Assets.Open ("my_asset.txt"); + } +} + +Additionally, some Android functions will automatically load asset files: + +Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf"); diff --git a/BusinessMgrMobile/BusinessMgrMobile.Android/BusinessMgrMobile.Android.csproj b/BusinessMgrMobile/BusinessMgrMobile.Android/BusinessMgrMobile.Android.csproj new file mode 100644 index 0000000..c5f479c --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile.Android/BusinessMgrMobile.Android.csproj @@ -0,0 +1,120 @@ + + + + Debug + AnyCPU + {9ADAAE7E-997E-4A99-8DC8-9B837982B7A5} + {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + {c9e5eea5-ca05-42a1-839b-61506e0a37df} + Library + Sarand.BusinessMgr + BusinessMgrMobile.Android + True + Resources\Resource.designer.cs + Resource + Properties\AndroidManifest.xml + Resources + Assets + false + v8.1 + Xamarin.Android.Net.AndroidClientHandler + + + + + true + portable + false + bin\Debug + DEBUG; + prompt + 4 + None + false + false + false + + + true + pdbonly + true + bin\Release + prompt + 4 + true + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {f9a541c6-bbea-4594-9b2e-effa982d9e2e} + SaBusMgrCore + + + {9fb2542a-6bf7-47b9-8f45-d551f6a318c8} + SacsCoreBase + + + {00cd1237-514f-4b70-bb14-65fc05e38222} + SacsCoreMob + + + {0DE3A997-9167-48E7-BC74-66576324B7C5} + SaBusMgrMobCore + + + + + \ No newline at end of file diff --git a/BusinessMgrMobile/BusinessMgrMobile.Android/Mobile/Droid/App/MainActivity.cs b/BusinessMgrMobile/BusinessMgrMobile.Android/Mobile/Droid/App/MainActivity.cs new file mode 100644 index 0000000..57764fc --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile.Android/Mobile/Droid/App/MainActivity.cs @@ -0,0 +1,67 @@ +using System; + +using Android.App; +using Android.Content.PM; +using Android.Runtime; +using Android.Views; +using Android.Widget; +using Android.OS; +using Android.Content; +using Sarand.BusinessMgr.Mobile.Core.App; +using System.Threading.Tasks; + +namespace Sarand.BusinessMgr.Mobile.Droid +{ + //======================================================================= + [Activity(Label = "BusinessMgrMobile", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)] + public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity + { + //------------------------------------------------------------------- + // Data members. + private Sarand.BusinessMgr.Mobile.App.App application = null; + + //------------------------------------------------------------------- + // A c t i v i t y E v e n t s + //------------------------------------------------------------------- + protected override void OnCreate (Bundle savedInstanceState) + { + TabLayoutResource = Resource.Layout.Tabbar; + ToolbarResource = Resource.Layout.Toolbar; + + // Unhandled exceptions. + AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; + TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException; + AndroidEnvironment.UnhandledExceptionRaiser += AndroidEnvironment_UnhandledExceptionRaiser; + + base.OnCreate(savedInstanceState); + global::Xamarin.Forms.Forms.Init(this, savedInstanceState); + Xamarin.Essentials.Platform.Init(this, savedInstanceState); + + // Initialise the application. + application = new Sarand.BusinessMgr.Mobile.App.App(SbmMobile.Platform.Android); + LoadApplication(application); + } + + //------------------------------------------------------------------- + // U n h a n d l e d E x c e p t i o n s + //------------------------------------------------------------------- + private void CurrentDomain_UnhandledException (object sender, UnhandledExceptionEventArgs e) + { + if (application != null) + application.OnUnhandledException(sender, e.ExceptionObject, e.IsTerminating); + } + private void TaskScheduler_UnobservedTaskException (object sender, UnobservedTaskExceptionEventArgs e) + { + if (application != null) + application.UnobservedTaskException(sender, e); + } + private void AndroidEnvironment_UnhandledExceptionRaiser (object sender, RaiseThrowableEventArgs e) + { + if (application != null) + application.UnhandledExceptionRaiser(sender, e.Exception, e.Handled); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} \ No newline at end of file diff --git a/BusinessMgrMobile/BusinessMgrMobile.Android/Properties/AndroidManifest.xml b/BusinessMgrMobile/BusinessMgrMobile.Android/Properties/AndroidManifest.xml new file mode 100644 index 0000000..af95792 --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile.Android/Properties/AndroidManifest.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/BusinessMgrMobile/BusinessMgrMobile.Android/Properties/AssemblyInfo.cs b/BusinessMgrMobile/BusinessMgrMobile.Android/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..7a662cd --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile.Android/Properties/AssemblyInfo.cs @@ -0,0 +1,34 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using Android.App; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("BusinessMgrMobile.Android")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("BusinessMgrMobile.Android")] +[assembly: AssemblyCopyright("Copyright © 2014")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] +[assembly: ComVisible(false)] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] + +// Add some common permissions, these can be removed if not needed +[assembly: UsesPermission(Android.Manifest.Permission.Internet)] +[assembly: UsesPermission(Android.Manifest.Permission.WriteExternalStorage)] diff --git a/BusinessMgrMobile/BusinessMgrMobile.Android/Resources/AboutResources.txt b/BusinessMgrMobile/BusinessMgrMobile.Android/Resources/AboutResources.txt new file mode 100644 index 0000000..cb30f20 --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile.Android/Resources/AboutResources.txt @@ -0,0 +1,50 @@ +Images, layout descriptions, binary blobs and string dictionaries can be included +in your application as resource files. Various Android APIs are designed to +operate on the resource IDs instead of dealing with images, strings or binary blobs +directly. + +For example, a sample Android app that contains a user interface layout (main.xml), +an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png) +would keep its resources in the "Resources" directory of the application: + +Resources/ + drawable-hdpi/ + icon.png + + drawable-ldpi/ + icon.png + + drawable-mdpi/ + icon.png + + layout/ + main.xml + + values/ + strings.xml + +In order to get the build system to recognize Android resources, set the build action to +"AndroidResource". The native Android APIs do not operate directly with filenames, but +instead operate on resource IDs. When you compile an Android application that uses resources, +the build system will package the resources for distribution and generate a class called +"Resource" that contains the tokens for each one of the resources included. For example, +for the above Resources layout, this is what the Resource class would expose: + +public class Resource { + public class drawable { + public const int icon = 0x123; + } + + public class layout { + public const int main = 0x456; + } + + public class strings { + public const int first_string = 0xabc; + public const int second_string = 0xbcd; + } +} + +You would then use R.drawable.icon to reference the drawable/icon.png file, or Resource.layout.main +to reference the layout/main.xml file, or Resource.strings.first_string to reference the first +string in the dictionary file values/strings.xml. diff --git a/BusinessMgrMobile/BusinessMgrMobile.Android/Resources/Resource.designer.cs b/BusinessMgrMobile/BusinessMgrMobile.Android/Resources/Resource.designer.cs new file mode 100644 index 0000000..d4b6b49 --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile.Android/Resources/Resource.designer.cs @@ -0,0 +1,9670 @@ +#pragma warning disable 1591 +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +[assembly: global::Android.Runtime.ResourceDesignerAttribute("Sarand.BusinessMgr.Resource", IsApplication=true)] + +namespace Sarand.BusinessMgr +{ + + + [System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "1.0.0.0")] + public partial class Resource + { + + static Resource() + { + global::Android.Runtime.ResourceIdManager.UpdateIdValues(); + } + + public static void UpdateIdValues() + { + global::Xamarin.Essentials.Resource.Attribute.font = global::Sarand.BusinessMgr.Resource.Attribute.font; + global::Xamarin.Essentials.Resource.Attribute.fontProviderAuthority = global::Sarand.BusinessMgr.Resource.Attribute.fontProviderAuthority; + global::Xamarin.Essentials.Resource.Attribute.fontProviderCerts = global::Sarand.BusinessMgr.Resource.Attribute.fontProviderCerts; + global::Xamarin.Essentials.Resource.Attribute.fontProviderFetchStrategy = global::Sarand.BusinessMgr.Resource.Attribute.fontProviderFetchStrategy; + global::Xamarin.Essentials.Resource.Attribute.fontProviderFetchTimeout = global::Sarand.BusinessMgr.Resource.Attribute.fontProviderFetchTimeout; + global::Xamarin.Essentials.Resource.Attribute.fontProviderPackage = global::Sarand.BusinessMgr.Resource.Attribute.fontProviderPackage; + global::Xamarin.Essentials.Resource.Attribute.fontProviderQuery = global::Sarand.BusinessMgr.Resource.Attribute.fontProviderQuery; + global::Xamarin.Essentials.Resource.Attribute.fontStyle = global::Sarand.BusinessMgr.Resource.Attribute.fontStyle; + global::Xamarin.Essentials.Resource.Attribute.fontWeight = global::Sarand.BusinessMgr.Resource.Attribute.fontWeight; + global::Xamarin.Essentials.Resource.Boolean.abc_action_bar_embed_tabs = global::Sarand.BusinessMgr.Resource.Boolean.abc_action_bar_embed_tabs; + global::Xamarin.Essentials.Resource.Color.notification_action_color_filter = global::Sarand.BusinessMgr.Resource.Color.notification_action_color_filter; + global::Xamarin.Essentials.Resource.Color.notification_icon_bg_color = global::Sarand.BusinessMgr.Resource.Color.notification_icon_bg_color; + global::Xamarin.Essentials.Resource.Color.ripple_material_light = global::Sarand.BusinessMgr.Resource.Color.ripple_material_light; + global::Xamarin.Essentials.Resource.Color.secondary_text_default_material_light = global::Sarand.BusinessMgr.Resource.Color.secondary_text_default_material_light; + global::Xamarin.Essentials.Resource.Dimension.compat_button_inset_horizontal_material = global::Sarand.BusinessMgr.Resource.Dimension.compat_button_inset_horizontal_material; + global::Xamarin.Essentials.Resource.Dimension.compat_button_inset_vertical_material = global::Sarand.BusinessMgr.Resource.Dimension.compat_button_inset_vertical_material; + global::Xamarin.Essentials.Resource.Dimension.compat_button_padding_horizontal_material = global::Sarand.BusinessMgr.Resource.Dimension.compat_button_padding_horizontal_material; + global::Xamarin.Essentials.Resource.Dimension.compat_button_padding_vertical_material = global::Sarand.BusinessMgr.Resource.Dimension.compat_button_padding_vertical_material; + global::Xamarin.Essentials.Resource.Dimension.compat_control_corner_material = global::Sarand.BusinessMgr.Resource.Dimension.compat_control_corner_material; + global::Xamarin.Essentials.Resource.Dimension.notification_action_icon_size = global::Sarand.BusinessMgr.Resource.Dimension.notification_action_icon_size; + global::Xamarin.Essentials.Resource.Dimension.notification_action_text_size = global::Sarand.BusinessMgr.Resource.Dimension.notification_action_text_size; + global::Xamarin.Essentials.Resource.Dimension.notification_big_circle_margin = global::Sarand.BusinessMgr.Resource.Dimension.notification_big_circle_margin; + global::Xamarin.Essentials.Resource.Dimension.notification_content_margin_start = global::Sarand.BusinessMgr.Resource.Dimension.notification_content_margin_start; + global::Xamarin.Essentials.Resource.Dimension.notification_large_icon_height = global::Sarand.BusinessMgr.Resource.Dimension.notification_large_icon_height; + global::Xamarin.Essentials.Resource.Dimension.notification_large_icon_width = global::Sarand.BusinessMgr.Resource.Dimension.notification_large_icon_width; + global::Xamarin.Essentials.Resource.Dimension.notification_main_column_padding_top = global::Sarand.BusinessMgr.Resource.Dimension.notification_main_column_padding_top; + global::Xamarin.Essentials.Resource.Dimension.notification_media_narrow_margin = global::Sarand.BusinessMgr.Resource.Dimension.notification_media_narrow_margin; + global::Xamarin.Essentials.Resource.Dimension.notification_right_icon_size = global::Sarand.BusinessMgr.Resource.Dimension.notification_right_icon_size; + global::Xamarin.Essentials.Resource.Dimension.notification_right_side_padding_top = global::Sarand.BusinessMgr.Resource.Dimension.notification_right_side_padding_top; + global::Xamarin.Essentials.Resource.Dimension.notification_small_icon_background_padding = global::Sarand.BusinessMgr.Resource.Dimension.notification_small_icon_background_padding; + global::Xamarin.Essentials.Resource.Dimension.notification_small_icon_size_as_large = global::Sarand.BusinessMgr.Resource.Dimension.notification_small_icon_size_as_large; + global::Xamarin.Essentials.Resource.Dimension.notification_subtext_size = global::Sarand.BusinessMgr.Resource.Dimension.notification_subtext_size; + global::Xamarin.Essentials.Resource.Dimension.notification_top_pad = global::Sarand.BusinessMgr.Resource.Dimension.notification_top_pad; + global::Xamarin.Essentials.Resource.Dimension.notification_top_pad_large_text = global::Sarand.BusinessMgr.Resource.Dimension.notification_top_pad_large_text; + global::Xamarin.Essentials.Resource.Drawable.notification_action_background = global::Sarand.BusinessMgr.Resource.Drawable.notification_action_background; + global::Xamarin.Essentials.Resource.Drawable.notification_bg = global::Sarand.BusinessMgr.Resource.Drawable.notification_bg; + global::Xamarin.Essentials.Resource.Drawable.notification_bg_low = global::Sarand.BusinessMgr.Resource.Drawable.notification_bg_low; + global::Xamarin.Essentials.Resource.Drawable.notification_bg_low_normal = global::Sarand.BusinessMgr.Resource.Drawable.notification_bg_low_normal; + global::Xamarin.Essentials.Resource.Drawable.notification_bg_low_pressed = global::Sarand.BusinessMgr.Resource.Drawable.notification_bg_low_pressed; + global::Xamarin.Essentials.Resource.Drawable.notification_bg_normal = global::Sarand.BusinessMgr.Resource.Drawable.notification_bg_normal; + global::Xamarin.Essentials.Resource.Drawable.notification_bg_normal_pressed = global::Sarand.BusinessMgr.Resource.Drawable.notification_bg_normal_pressed; + global::Xamarin.Essentials.Resource.Drawable.notification_icon_background = global::Sarand.BusinessMgr.Resource.Drawable.notification_icon_background; + global::Xamarin.Essentials.Resource.Drawable.notification_template_icon_bg = global::Sarand.BusinessMgr.Resource.Drawable.notification_template_icon_bg; + global::Xamarin.Essentials.Resource.Drawable.notification_template_icon_low_bg = global::Sarand.BusinessMgr.Resource.Drawable.notification_template_icon_low_bg; + global::Xamarin.Essentials.Resource.Drawable.notification_tile_bg = global::Sarand.BusinessMgr.Resource.Drawable.notification_tile_bg; + global::Xamarin.Essentials.Resource.Drawable.notify_panel_notification_icon_bg = global::Sarand.BusinessMgr.Resource.Drawable.notify_panel_notification_icon_bg; + global::Xamarin.Essentials.Resource.Id.action_container = global::Sarand.BusinessMgr.Resource.Id.action_container; + global::Xamarin.Essentials.Resource.Id.action_divider = global::Sarand.BusinessMgr.Resource.Id.action_divider; + global::Xamarin.Essentials.Resource.Id.action_image = global::Sarand.BusinessMgr.Resource.Id.action_image; + global::Xamarin.Essentials.Resource.Id.action_text = global::Sarand.BusinessMgr.Resource.Id.action_text; + global::Xamarin.Essentials.Resource.Id.actions = global::Sarand.BusinessMgr.Resource.Id.actions; + global::Xamarin.Essentials.Resource.Id.async = global::Sarand.BusinessMgr.Resource.Id.async; + global::Xamarin.Essentials.Resource.Id.blocking = global::Sarand.BusinessMgr.Resource.Id.blocking; + global::Xamarin.Essentials.Resource.Id.chronometer = global::Sarand.BusinessMgr.Resource.Id.chronometer; + global::Xamarin.Essentials.Resource.Id.forever = global::Sarand.BusinessMgr.Resource.Id.forever; + global::Xamarin.Essentials.Resource.Id.icon = global::Sarand.BusinessMgr.Resource.Id.icon; + global::Xamarin.Essentials.Resource.Id.icon_group = global::Sarand.BusinessMgr.Resource.Id.icon_group; + global::Xamarin.Essentials.Resource.Id.info = global::Sarand.BusinessMgr.Resource.Id.info; + global::Xamarin.Essentials.Resource.Id.italic = global::Sarand.BusinessMgr.Resource.Id.italic; + global::Xamarin.Essentials.Resource.Id.line1 = global::Sarand.BusinessMgr.Resource.Id.line1; + global::Xamarin.Essentials.Resource.Id.line3 = global::Sarand.BusinessMgr.Resource.Id.line3; + global::Xamarin.Essentials.Resource.Id.normal = global::Sarand.BusinessMgr.Resource.Id.normal; + global::Xamarin.Essentials.Resource.Id.notification_background = global::Sarand.BusinessMgr.Resource.Id.notification_background; + global::Xamarin.Essentials.Resource.Id.notification_main_column = global::Sarand.BusinessMgr.Resource.Id.notification_main_column; + global::Xamarin.Essentials.Resource.Id.notification_main_column_container = global::Sarand.BusinessMgr.Resource.Id.notification_main_column_container; + global::Xamarin.Essentials.Resource.Id.right_icon = global::Sarand.BusinessMgr.Resource.Id.right_icon; + global::Xamarin.Essentials.Resource.Id.right_side = global::Sarand.BusinessMgr.Resource.Id.right_side; + global::Xamarin.Essentials.Resource.Id.tag_transition_group = global::Sarand.BusinessMgr.Resource.Id.tag_transition_group; + global::Xamarin.Essentials.Resource.Id.text = global::Sarand.BusinessMgr.Resource.Id.text; + global::Xamarin.Essentials.Resource.Id.text2 = global::Sarand.BusinessMgr.Resource.Id.text2; + global::Xamarin.Essentials.Resource.Id.time = global::Sarand.BusinessMgr.Resource.Id.time; + global::Xamarin.Essentials.Resource.Id.title = global::Sarand.BusinessMgr.Resource.Id.title; + global::Xamarin.Essentials.Resource.Integer.status_bar_notification_info_maxnum = global::Sarand.BusinessMgr.Resource.Integer.status_bar_notification_info_maxnum; + global::Xamarin.Essentials.Resource.Layout.notification_action = global::Sarand.BusinessMgr.Resource.Layout.notification_action; + global::Xamarin.Essentials.Resource.Layout.notification_action_tombstone = global::Sarand.BusinessMgr.Resource.Layout.notification_action_tombstone; + global::Xamarin.Essentials.Resource.Layout.notification_template_custom_big = global::Sarand.BusinessMgr.Resource.Layout.notification_template_custom_big; + global::Xamarin.Essentials.Resource.Layout.notification_template_icon_group = global::Sarand.BusinessMgr.Resource.Layout.notification_template_icon_group; + global::Xamarin.Essentials.Resource.Layout.notification_template_part_chronometer = global::Sarand.BusinessMgr.Resource.Layout.notification_template_part_chronometer; + global::Xamarin.Essentials.Resource.Layout.notification_template_part_time = global::Sarand.BusinessMgr.Resource.Layout.notification_template_part_time; + global::Xamarin.Essentials.Resource.String.status_bar_notification_info_overflow = global::Sarand.BusinessMgr.Resource.String.status_bar_notification_info_overflow; + global::Xamarin.Essentials.Resource.Style.TextAppearance_Compat_Notification = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_Compat_Notification; + global::Xamarin.Essentials.Resource.Style.TextAppearance_Compat_Notification_Info = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_Compat_Notification_Info; + global::Xamarin.Essentials.Resource.Style.TextAppearance_Compat_Notification_Line2 = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_Compat_Notification_Line2; + global::Xamarin.Essentials.Resource.Style.TextAppearance_Compat_Notification_Time = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_Compat_Notification_Time; + global::Xamarin.Essentials.Resource.Style.TextAppearance_Compat_Notification_Title = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_Compat_Notification_Title; + global::Xamarin.Essentials.Resource.Style.Widget_Compat_NotificationActionContainer = global::Sarand.BusinessMgr.Resource.Style.Widget_Compat_NotificationActionContainer; + global::Xamarin.Essentials.Resource.Style.Widget_Compat_NotificationActionText = global::Sarand.BusinessMgr.Resource.Style.Widget_Compat_NotificationActionText; + global::Xamarin.Essentials.Resource.Xml.xamarin_essentials_fileprovider_file_paths = global::Sarand.BusinessMgr.Resource.Xml.xamarin_essentials_fileprovider_file_paths; + global::Xamarin.Essentials.Resource.Styleable.FontFamily = global::Sarand.BusinessMgr.Resource.Styleable.FontFamily; + global::Xamarin.Essentials.Resource.Styleable.FontFamily_fontProviderAuthority = global::Sarand.BusinessMgr.Resource.Styleable.FontFamily_fontProviderAuthority; + global::Xamarin.Essentials.Resource.Styleable.FontFamily_fontProviderCerts = global::Sarand.BusinessMgr.Resource.Styleable.FontFamily_fontProviderCerts; + global::Xamarin.Essentials.Resource.Styleable.FontFamily_fontProviderFetchStrategy = global::Sarand.BusinessMgr.Resource.Styleable.FontFamily_fontProviderFetchStrategy; + global::Xamarin.Essentials.Resource.Styleable.FontFamily_fontProviderFetchTimeout = global::Sarand.BusinessMgr.Resource.Styleable.FontFamily_fontProviderFetchTimeout; + global::Xamarin.Essentials.Resource.Styleable.FontFamily_fontProviderPackage = global::Sarand.BusinessMgr.Resource.Styleable.FontFamily_fontProviderPackage; + global::Xamarin.Essentials.Resource.Styleable.FontFamily_fontProviderQuery = global::Sarand.BusinessMgr.Resource.Styleable.FontFamily_fontProviderQuery; + global::Xamarin.Essentials.Resource.Styleable.FontFamilyFont = global::Sarand.BusinessMgr.Resource.Styleable.FontFamilyFont; + global::Xamarin.Essentials.Resource.Styleable.FontFamilyFont_android_font = global::Sarand.BusinessMgr.Resource.Styleable.FontFamilyFont_android_font; + global::Xamarin.Essentials.Resource.Styleable.FontFamilyFont_android_fontStyle = global::Sarand.BusinessMgr.Resource.Styleable.FontFamilyFont_android_fontStyle; + global::Xamarin.Essentials.Resource.Styleable.FontFamilyFont_android_fontWeight = global::Sarand.BusinessMgr.Resource.Styleable.FontFamilyFont_android_fontWeight; + global::Xamarin.Essentials.Resource.Styleable.FontFamilyFont_font = global::Sarand.BusinessMgr.Resource.Styleable.FontFamilyFont_font; + global::Xamarin.Essentials.Resource.Styleable.FontFamilyFont_fontStyle = global::Sarand.BusinessMgr.Resource.Styleable.FontFamilyFont_fontStyle; + global::Xamarin.Essentials.Resource.Styleable.FontFamilyFont_fontWeight = global::Sarand.BusinessMgr.Resource.Styleable.FontFamilyFont_fontWeight; + global::Xamarin.Forms.Platform.Android.Resource.Animation.abc_fade_in = global::Sarand.BusinessMgr.Resource.Animation.abc_fade_in; + global::Xamarin.Forms.Platform.Android.Resource.Animation.abc_fade_out = global::Sarand.BusinessMgr.Resource.Animation.abc_fade_out; + global::Xamarin.Forms.Platform.Android.Resource.Animation.abc_grow_fade_in_from_bottom = global::Sarand.BusinessMgr.Resource.Animation.abc_grow_fade_in_from_bottom; + global::Xamarin.Forms.Platform.Android.Resource.Animation.abc_popup_enter = global::Sarand.BusinessMgr.Resource.Animation.abc_popup_enter; + global::Xamarin.Forms.Platform.Android.Resource.Animation.abc_popup_exit = global::Sarand.BusinessMgr.Resource.Animation.abc_popup_exit; + global::Xamarin.Forms.Platform.Android.Resource.Animation.abc_shrink_fade_out_from_bottom = global::Sarand.BusinessMgr.Resource.Animation.abc_shrink_fade_out_from_bottom; + global::Xamarin.Forms.Platform.Android.Resource.Animation.abc_slide_in_bottom = global::Sarand.BusinessMgr.Resource.Animation.abc_slide_in_bottom; + global::Xamarin.Forms.Platform.Android.Resource.Animation.abc_slide_in_top = global::Sarand.BusinessMgr.Resource.Animation.abc_slide_in_top; + global::Xamarin.Forms.Platform.Android.Resource.Animation.abc_slide_out_bottom = global::Sarand.BusinessMgr.Resource.Animation.abc_slide_out_bottom; + global::Xamarin.Forms.Platform.Android.Resource.Animation.abc_slide_out_top = global::Sarand.BusinessMgr.Resource.Animation.abc_slide_out_top; + global::Xamarin.Forms.Platform.Android.Resource.Animation.design_bottom_sheet_slide_in = global::Sarand.BusinessMgr.Resource.Animation.design_bottom_sheet_slide_in; + global::Xamarin.Forms.Platform.Android.Resource.Animation.design_bottom_sheet_slide_out = global::Sarand.BusinessMgr.Resource.Animation.design_bottom_sheet_slide_out; + global::Xamarin.Forms.Platform.Android.Resource.Animation.design_snackbar_in = global::Sarand.BusinessMgr.Resource.Animation.design_snackbar_in; + global::Xamarin.Forms.Platform.Android.Resource.Animation.design_snackbar_out = global::Sarand.BusinessMgr.Resource.Animation.design_snackbar_out; + global::Xamarin.Forms.Platform.Android.Resource.Animation.EnterFromLeft = global::Sarand.BusinessMgr.Resource.Animation.EnterFromLeft; + global::Xamarin.Forms.Platform.Android.Resource.Animation.EnterFromRight = global::Sarand.BusinessMgr.Resource.Animation.EnterFromRight; + global::Xamarin.Forms.Platform.Android.Resource.Animation.ExitToLeft = global::Sarand.BusinessMgr.Resource.Animation.ExitToLeft; + global::Xamarin.Forms.Platform.Android.Resource.Animation.ExitToRight = global::Sarand.BusinessMgr.Resource.Animation.ExitToRight; + global::Xamarin.Forms.Platform.Android.Resource.Animation.tooltip_enter = global::Sarand.BusinessMgr.Resource.Animation.tooltip_enter; + global::Xamarin.Forms.Platform.Android.Resource.Animation.tooltip_exit = global::Sarand.BusinessMgr.Resource.Animation.tooltip_exit; + global::Xamarin.Forms.Platform.Android.Resource.Animator.design_appbar_state_list_animator = global::Sarand.BusinessMgr.Resource.Animator.design_appbar_state_list_animator; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionBarDivider = global::Sarand.BusinessMgr.Resource.Attribute.actionBarDivider; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionBarItemBackground = global::Sarand.BusinessMgr.Resource.Attribute.actionBarItemBackground; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionBarPopupTheme = global::Sarand.BusinessMgr.Resource.Attribute.actionBarPopupTheme; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionBarSize = global::Sarand.BusinessMgr.Resource.Attribute.actionBarSize; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionBarSplitStyle = global::Sarand.BusinessMgr.Resource.Attribute.actionBarSplitStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionBarStyle = global::Sarand.BusinessMgr.Resource.Attribute.actionBarStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionBarTabBarStyle = global::Sarand.BusinessMgr.Resource.Attribute.actionBarTabBarStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionBarTabStyle = global::Sarand.BusinessMgr.Resource.Attribute.actionBarTabStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionBarTabTextStyle = global::Sarand.BusinessMgr.Resource.Attribute.actionBarTabTextStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionBarTheme = global::Sarand.BusinessMgr.Resource.Attribute.actionBarTheme; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionBarWidgetTheme = global::Sarand.BusinessMgr.Resource.Attribute.actionBarWidgetTheme; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionButtonStyle = global::Sarand.BusinessMgr.Resource.Attribute.actionButtonStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionDropDownStyle = global::Sarand.BusinessMgr.Resource.Attribute.actionDropDownStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionLayout = global::Sarand.BusinessMgr.Resource.Attribute.actionLayout; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionMenuTextAppearance = global::Sarand.BusinessMgr.Resource.Attribute.actionMenuTextAppearance; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionMenuTextColor = global::Sarand.BusinessMgr.Resource.Attribute.actionMenuTextColor; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionModeBackground = global::Sarand.BusinessMgr.Resource.Attribute.actionModeBackground; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionModeCloseButtonStyle = global::Sarand.BusinessMgr.Resource.Attribute.actionModeCloseButtonStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionModeCloseDrawable = global::Sarand.BusinessMgr.Resource.Attribute.actionModeCloseDrawable; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionModeCopyDrawable = global::Sarand.BusinessMgr.Resource.Attribute.actionModeCopyDrawable; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionModeCutDrawable = global::Sarand.BusinessMgr.Resource.Attribute.actionModeCutDrawable; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionModeFindDrawable = global::Sarand.BusinessMgr.Resource.Attribute.actionModeFindDrawable; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionModePasteDrawable = global::Sarand.BusinessMgr.Resource.Attribute.actionModePasteDrawable; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionModePopupWindowStyle = global::Sarand.BusinessMgr.Resource.Attribute.actionModePopupWindowStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionModeSelectAllDrawable = global::Sarand.BusinessMgr.Resource.Attribute.actionModeSelectAllDrawable; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionModeShareDrawable = global::Sarand.BusinessMgr.Resource.Attribute.actionModeShareDrawable; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionModeSplitBackground = global::Sarand.BusinessMgr.Resource.Attribute.actionModeSplitBackground; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionModeStyle = global::Sarand.BusinessMgr.Resource.Attribute.actionModeStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionModeWebSearchDrawable = global::Sarand.BusinessMgr.Resource.Attribute.actionModeWebSearchDrawable; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionOverflowButtonStyle = global::Sarand.BusinessMgr.Resource.Attribute.actionOverflowButtonStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionOverflowMenuStyle = global::Sarand.BusinessMgr.Resource.Attribute.actionOverflowMenuStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionProviderClass = global::Sarand.BusinessMgr.Resource.Attribute.actionProviderClass; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionViewClass = global::Sarand.BusinessMgr.Resource.Attribute.actionViewClass; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.activityChooserViewStyle = global::Sarand.BusinessMgr.Resource.Attribute.activityChooserViewStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.alertDialogButtonGroupStyle = global::Sarand.BusinessMgr.Resource.Attribute.alertDialogButtonGroupStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.alertDialogCenterButtons = global::Sarand.BusinessMgr.Resource.Attribute.alertDialogCenterButtons; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.alertDialogStyle = global::Sarand.BusinessMgr.Resource.Attribute.alertDialogStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.alertDialogTheme = global::Sarand.BusinessMgr.Resource.Attribute.alertDialogTheme; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.allowStacking = global::Sarand.BusinessMgr.Resource.Attribute.allowStacking; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.alpha = global::Sarand.BusinessMgr.Resource.Attribute.alpha; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.alphabeticModifiers = global::Sarand.BusinessMgr.Resource.Attribute.alphabeticModifiers; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.arrowHeadLength = global::Sarand.BusinessMgr.Resource.Attribute.arrowHeadLength; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.arrowShaftLength = global::Sarand.BusinessMgr.Resource.Attribute.arrowShaftLength; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.autoCompleteTextViewStyle = global::Sarand.BusinessMgr.Resource.Attribute.autoCompleteTextViewStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.autoSizeMaxTextSize = global::Sarand.BusinessMgr.Resource.Attribute.autoSizeMaxTextSize; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.autoSizeMinTextSize = global::Sarand.BusinessMgr.Resource.Attribute.autoSizeMinTextSize; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.autoSizePresetSizes = global::Sarand.BusinessMgr.Resource.Attribute.autoSizePresetSizes; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.autoSizeStepGranularity = global::Sarand.BusinessMgr.Resource.Attribute.autoSizeStepGranularity; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.autoSizeTextType = global::Sarand.BusinessMgr.Resource.Attribute.autoSizeTextType; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.background = global::Sarand.BusinessMgr.Resource.Attribute.background; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.backgroundSplit = global::Sarand.BusinessMgr.Resource.Attribute.backgroundSplit; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.backgroundStacked = global::Sarand.BusinessMgr.Resource.Attribute.backgroundStacked; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.backgroundTint = global::Sarand.BusinessMgr.Resource.Attribute.backgroundTint; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.backgroundTintMode = global::Sarand.BusinessMgr.Resource.Attribute.backgroundTintMode; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.barLength = global::Sarand.BusinessMgr.Resource.Attribute.barLength; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.behavior_autoHide = global::Sarand.BusinessMgr.Resource.Attribute.behavior_autoHide; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.behavior_hideable = global::Sarand.BusinessMgr.Resource.Attribute.behavior_hideable; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.behavior_overlapTop = global::Sarand.BusinessMgr.Resource.Attribute.behavior_overlapTop; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.behavior_peekHeight = global::Sarand.BusinessMgr.Resource.Attribute.behavior_peekHeight; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.behavior_skipCollapsed = global::Sarand.BusinessMgr.Resource.Attribute.behavior_skipCollapsed; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.borderWidth = global::Sarand.BusinessMgr.Resource.Attribute.borderWidth; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.borderlessButtonStyle = global::Sarand.BusinessMgr.Resource.Attribute.borderlessButtonStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.bottomSheetDialogTheme = global::Sarand.BusinessMgr.Resource.Attribute.bottomSheetDialogTheme; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.bottomSheetStyle = global::Sarand.BusinessMgr.Resource.Attribute.bottomSheetStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.buttonBarButtonStyle = global::Sarand.BusinessMgr.Resource.Attribute.buttonBarButtonStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.buttonBarNegativeButtonStyle = global::Sarand.BusinessMgr.Resource.Attribute.buttonBarNegativeButtonStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.buttonBarNeutralButtonStyle = global::Sarand.BusinessMgr.Resource.Attribute.buttonBarNeutralButtonStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.buttonBarPositiveButtonStyle = global::Sarand.BusinessMgr.Resource.Attribute.buttonBarPositiveButtonStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.buttonBarStyle = global::Sarand.BusinessMgr.Resource.Attribute.buttonBarStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.buttonGravity = global::Sarand.BusinessMgr.Resource.Attribute.buttonGravity; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.buttonPanelSideLayout = global::Sarand.BusinessMgr.Resource.Attribute.buttonPanelSideLayout; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.buttonStyle = global::Sarand.BusinessMgr.Resource.Attribute.buttonStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.buttonStyleSmall = global::Sarand.BusinessMgr.Resource.Attribute.buttonStyleSmall; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.buttonTint = global::Sarand.BusinessMgr.Resource.Attribute.buttonTint; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.buttonTintMode = global::Sarand.BusinessMgr.Resource.Attribute.buttonTintMode; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.cardBackgroundColor = global::Sarand.BusinessMgr.Resource.Attribute.cardBackgroundColor; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.cardCornerRadius = global::Sarand.BusinessMgr.Resource.Attribute.cardCornerRadius; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.cardElevation = global::Sarand.BusinessMgr.Resource.Attribute.cardElevation; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.cardMaxElevation = global::Sarand.BusinessMgr.Resource.Attribute.cardMaxElevation; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.cardPreventCornerOverlap = global::Sarand.BusinessMgr.Resource.Attribute.cardPreventCornerOverlap; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.cardUseCompatPadding = global::Sarand.BusinessMgr.Resource.Attribute.cardUseCompatPadding; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.checkboxStyle = global::Sarand.BusinessMgr.Resource.Attribute.checkboxStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.checkedTextViewStyle = global::Sarand.BusinessMgr.Resource.Attribute.checkedTextViewStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.closeIcon = global::Sarand.BusinessMgr.Resource.Attribute.closeIcon; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.closeItemLayout = global::Sarand.BusinessMgr.Resource.Attribute.closeItemLayout; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.collapseContentDescription = global::Sarand.BusinessMgr.Resource.Attribute.collapseContentDescription; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.collapseIcon = global::Sarand.BusinessMgr.Resource.Attribute.collapseIcon; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.collapsedTitleGravity = global::Sarand.BusinessMgr.Resource.Attribute.collapsedTitleGravity; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.collapsedTitleTextAppearance = global::Sarand.BusinessMgr.Resource.Attribute.collapsedTitleTextAppearance; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.color = global::Sarand.BusinessMgr.Resource.Attribute.color; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.colorAccent = global::Sarand.BusinessMgr.Resource.Attribute.colorAccent; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.colorBackgroundFloating = global::Sarand.BusinessMgr.Resource.Attribute.colorBackgroundFloating; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.colorButtonNormal = global::Sarand.BusinessMgr.Resource.Attribute.colorButtonNormal; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.colorControlActivated = global::Sarand.BusinessMgr.Resource.Attribute.colorControlActivated; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.colorControlHighlight = global::Sarand.BusinessMgr.Resource.Attribute.colorControlHighlight; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.colorControlNormal = global::Sarand.BusinessMgr.Resource.Attribute.colorControlNormal; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.colorError = global::Sarand.BusinessMgr.Resource.Attribute.colorError; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.colorPrimary = global::Sarand.BusinessMgr.Resource.Attribute.colorPrimary; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.colorPrimaryDark = global::Sarand.BusinessMgr.Resource.Attribute.colorPrimaryDark; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.colorSwitchThumbNormal = global::Sarand.BusinessMgr.Resource.Attribute.colorSwitchThumbNormal; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.commitIcon = global::Sarand.BusinessMgr.Resource.Attribute.commitIcon; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.contentDescription = global::Sarand.BusinessMgr.Resource.Attribute.contentDescription; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.contentInsetEnd = global::Sarand.BusinessMgr.Resource.Attribute.contentInsetEnd; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.contentInsetEndWithActions = global::Sarand.BusinessMgr.Resource.Attribute.contentInsetEndWithActions; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.contentInsetLeft = global::Sarand.BusinessMgr.Resource.Attribute.contentInsetLeft; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.contentInsetRight = global::Sarand.BusinessMgr.Resource.Attribute.contentInsetRight; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.contentInsetStart = global::Sarand.BusinessMgr.Resource.Attribute.contentInsetStart; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.contentInsetStartWithNavigation = global::Sarand.BusinessMgr.Resource.Attribute.contentInsetStartWithNavigation; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.contentPadding = global::Sarand.BusinessMgr.Resource.Attribute.contentPadding; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.contentPaddingBottom = global::Sarand.BusinessMgr.Resource.Attribute.contentPaddingBottom; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.contentPaddingLeft = global::Sarand.BusinessMgr.Resource.Attribute.contentPaddingLeft; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.contentPaddingRight = global::Sarand.BusinessMgr.Resource.Attribute.contentPaddingRight; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.contentPaddingTop = global::Sarand.BusinessMgr.Resource.Attribute.contentPaddingTop; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.contentScrim = global::Sarand.BusinessMgr.Resource.Attribute.contentScrim; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.controlBackground = global::Sarand.BusinessMgr.Resource.Attribute.controlBackground; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.counterEnabled = global::Sarand.BusinessMgr.Resource.Attribute.counterEnabled; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.counterMaxLength = global::Sarand.BusinessMgr.Resource.Attribute.counterMaxLength; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.counterOverflowTextAppearance = global::Sarand.BusinessMgr.Resource.Attribute.counterOverflowTextAppearance; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.counterTextAppearance = global::Sarand.BusinessMgr.Resource.Attribute.counterTextAppearance; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.customNavigationLayout = global::Sarand.BusinessMgr.Resource.Attribute.customNavigationLayout; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.defaultQueryHint = global::Sarand.BusinessMgr.Resource.Attribute.defaultQueryHint; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.dialogPreferredPadding = global::Sarand.BusinessMgr.Resource.Attribute.dialogPreferredPadding; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.dialogTheme = global::Sarand.BusinessMgr.Resource.Attribute.dialogTheme; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.displayOptions = global::Sarand.BusinessMgr.Resource.Attribute.displayOptions; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.divider = global::Sarand.BusinessMgr.Resource.Attribute.divider; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.dividerHorizontal = global::Sarand.BusinessMgr.Resource.Attribute.dividerHorizontal; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.dividerPadding = global::Sarand.BusinessMgr.Resource.Attribute.dividerPadding; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.dividerVertical = global::Sarand.BusinessMgr.Resource.Attribute.dividerVertical; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.drawableSize = global::Sarand.BusinessMgr.Resource.Attribute.drawableSize; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.drawerArrowStyle = global::Sarand.BusinessMgr.Resource.Attribute.drawerArrowStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.dropDownListViewStyle = global::Sarand.BusinessMgr.Resource.Attribute.dropDownListViewStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.dropdownListPreferredItemHeight = global::Sarand.BusinessMgr.Resource.Attribute.dropdownListPreferredItemHeight; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.editTextBackground = global::Sarand.BusinessMgr.Resource.Attribute.editTextBackground; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.editTextColor = global::Sarand.BusinessMgr.Resource.Attribute.editTextColor; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.editTextStyle = global::Sarand.BusinessMgr.Resource.Attribute.editTextStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.elevation = global::Sarand.BusinessMgr.Resource.Attribute.elevation; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.errorEnabled = global::Sarand.BusinessMgr.Resource.Attribute.errorEnabled; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.errorTextAppearance = global::Sarand.BusinessMgr.Resource.Attribute.errorTextAppearance; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.expandActivityOverflowButtonDrawable = global::Sarand.BusinessMgr.Resource.Attribute.expandActivityOverflowButtonDrawable; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.expanded = global::Sarand.BusinessMgr.Resource.Attribute.expanded; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.expandedTitleGravity = global::Sarand.BusinessMgr.Resource.Attribute.expandedTitleGravity; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.expandedTitleMargin = global::Sarand.BusinessMgr.Resource.Attribute.expandedTitleMargin; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.expandedTitleMarginBottom = global::Sarand.BusinessMgr.Resource.Attribute.expandedTitleMarginBottom; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.expandedTitleMarginEnd = global::Sarand.BusinessMgr.Resource.Attribute.expandedTitleMarginEnd; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.expandedTitleMarginStart = global::Sarand.BusinessMgr.Resource.Attribute.expandedTitleMarginStart; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.expandedTitleMarginTop = global::Sarand.BusinessMgr.Resource.Attribute.expandedTitleMarginTop; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.expandedTitleTextAppearance = global::Sarand.BusinessMgr.Resource.Attribute.expandedTitleTextAppearance; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.fabSize = global::Sarand.BusinessMgr.Resource.Attribute.fabSize; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.fastScrollEnabled = global::Sarand.BusinessMgr.Resource.Attribute.fastScrollEnabled; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.fastScrollHorizontalThumbDrawable = global::Sarand.BusinessMgr.Resource.Attribute.fastScrollHorizontalThumbDrawable; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.fastScrollHorizontalTrackDrawable = global::Sarand.BusinessMgr.Resource.Attribute.fastScrollHorizontalTrackDrawable; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.fastScrollVerticalThumbDrawable = global::Sarand.BusinessMgr.Resource.Attribute.fastScrollVerticalThumbDrawable; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.fastScrollVerticalTrackDrawable = global::Sarand.BusinessMgr.Resource.Attribute.fastScrollVerticalTrackDrawable; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.font = global::Sarand.BusinessMgr.Resource.Attribute.font; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.fontFamily = global::Sarand.BusinessMgr.Resource.Attribute.fontFamily; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.fontProviderAuthority = global::Sarand.BusinessMgr.Resource.Attribute.fontProviderAuthority; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.fontProviderCerts = global::Sarand.BusinessMgr.Resource.Attribute.fontProviderCerts; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.fontProviderFetchStrategy = global::Sarand.BusinessMgr.Resource.Attribute.fontProviderFetchStrategy; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.fontProviderFetchTimeout = global::Sarand.BusinessMgr.Resource.Attribute.fontProviderFetchTimeout; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.fontProviderPackage = global::Sarand.BusinessMgr.Resource.Attribute.fontProviderPackage; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.fontProviderQuery = global::Sarand.BusinessMgr.Resource.Attribute.fontProviderQuery; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.fontStyle = global::Sarand.BusinessMgr.Resource.Attribute.fontStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.fontWeight = global::Sarand.BusinessMgr.Resource.Attribute.fontWeight; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.foregroundInsidePadding = global::Sarand.BusinessMgr.Resource.Attribute.foregroundInsidePadding; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.gapBetweenBars = global::Sarand.BusinessMgr.Resource.Attribute.gapBetweenBars; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.goIcon = global::Sarand.BusinessMgr.Resource.Attribute.goIcon; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.headerLayout = global::Sarand.BusinessMgr.Resource.Attribute.headerLayout; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.height = global::Sarand.BusinessMgr.Resource.Attribute.height; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.hideOnContentScroll = global::Sarand.BusinessMgr.Resource.Attribute.hideOnContentScroll; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.hintAnimationEnabled = global::Sarand.BusinessMgr.Resource.Attribute.hintAnimationEnabled; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.hintEnabled = global::Sarand.BusinessMgr.Resource.Attribute.hintEnabled; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.hintTextAppearance = global::Sarand.BusinessMgr.Resource.Attribute.hintTextAppearance; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.homeAsUpIndicator = global::Sarand.BusinessMgr.Resource.Attribute.homeAsUpIndicator; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.homeLayout = global::Sarand.BusinessMgr.Resource.Attribute.homeLayout; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.icon = global::Sarand.BusinessMgr.Resource.Attribute.icon; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.iconTint = global::Sarand.BusinessMgr.Resource.Attribute.iconTint; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.iconTintMode = global::Sarand.BusinessMgr.Resource.Attribute.iconTintMode; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.iconifiedByDefault = global::Sarand.BusinessMgr.Resource.Attribute.iconifiedByDefault; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.imageButtonStyle = global::Sarand.BusinessMgr.Resource.Attribute.imageButtonStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.indeterminateProgressStyle = global::Sarand.BusinessMgr.Resource.Attribute.indeterminateProgressStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.initialActivityCount = global::Sarand.BusinessMgr.Resource.Attribute.initialActivityCount; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.insetForeground = global::Sarand.BusinessMgr.Resource.Attribute.insetForeground; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.isLightTheme = global::Sarand.BusinessMgr.Resource.Attribute.isLightTheme; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.itemBackground = global::Sarand.BusinessMgr.Resource.Attribute.itemBackground; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.itemIconTint = global::Sarand.BusinessMgr.Resource.Attribute.itemIconTint; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.itemPadding = global::Sarand.BusinessMgr.Resource.Attribute.itemPadding; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.itemTextAppearance = global::Sarand.BusinessMgr.Resource.Attribute.itemTextAppearance; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.itemTextColor = global::Sarand.BusinessMgr.Resource.Attribute.itemTextColor; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.keylines = global::Sarand.BusinessMgr.Resource.Attribute.keylines; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.layout = global::Sarand.BusinessMgr.Resource.Attribute.layout; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.layoutManager = global::Sarand.BusinessMgr.Resource.Attribute.layoutManager; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.layout_anchor = global::Sarand.BusinessMgr.Resource.Attribute.layout_anchor; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.layout_anchorGravity = global::Sarand.BusinessMgr.Resource.Attribute.layout_anchorGravity; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.layout_behavior = global::Sarand.BusinessMgr.Resource.Attribute.layout_behavior; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.layout_collapseMode = global::Sarand.BusinessMgr.Resource.Attribute.layout_collapseMode; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.layout_collapseParallaxMultiplier = global::Sarand.BusinessMgr.Resource.Attribute.layout_collapseParallaxMultiplier; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.layout_dodgeInsetEdges = global::Sarand.BusinessMgr.Resource.Attribute.layout_dodgeInsetEdges; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.layout_insetEdge = global::Sarand.BusinessMgr.Resource.Attribute.layout_insetEdge; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.layout_keyline = global::Sarand.BusinessMgr.Resource.Attribute.layout_keyline; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.layout_scrollFlags = global::Sarand.BusinessMgr.Resource.Attribute.layout_scrollFlags; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.layout_scrollInterpolator = global::Sarand.BusinessMgr.Resource.Attribute.layout_scrollInterpolator; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.listChoiceBackgroundIndicator = global::Sarand.BusinessMgr.Resource.Attribute.listChoiceBackgroundIndicator; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.listDividerAlertDialog = global::Sarand.BusinessMgr.Resource.Attribute.listDividerAlertDialog; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.listItemLayout = global::Sarand.BusinessMgr.Resource.Attribute.listItemLayout; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.listLayout = global::Sarand.BusinessMgr.Resource.Attribute.listLayout; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.listMenuViewStyle = global::Sarand.BusinessMgr.Resource.Attribute.listMenuViewStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.listPopupWindowStyle = global::Sarand.BusinessMgr.Resource.Attribute.listPopupWindowStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.listPreferredItemHeight = global::Sarand.BusinessMgr.Resource.Attribute.listPreferredItemHeight; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.listPreferredItemHeightLarge = global::Sarand.BusinessMgr.Resource.Attribute.listPreferredItemHeightLarge; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.listPreferredItemHeightSmall = global::Sarand.BusinessMgr.Resource.Attribute.listPreferredItemHeightSmall; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.listPreferredItemPaddingLeft = global::Sarand.BusinessMgr.Resource.Attribute.listPreferredItemPaddingLeft; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.listPreferredItemPaddingRight = global::Sarand.BusinessMgr.Resource.Attribute.listPreferredItemPaddingRight; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.logo = global::Sarand.BusinessMgr.Resource.Attribute.logo; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.logoDescription = global::Sarand.BusinessMgr.Resource.Attribute.logoDescription; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.maxActionInlineWidth = global::Sarand.BusinessMgr.Resource.Attribute.maxActionInlineWidth; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.maxButtonHeight = global::Sarand.BusinessMgr.Resource.Attribute.maxButtonHeight; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.measureWithLargestChild = global::Sarand.BusinessMgr.Resource.Attribute.measureWithLargestChild; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.menu = global::Sarand.BusinessMgr.Resource.Attribute.menu; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.multiChoiceItemLayout = global::Sarand.BusinessMgr.Resource.Attribute.multiChoiceItemLayout; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.navigationContentDescription = global::Sarand.BusinessMgr.Resource.Attribute.navigationContentDescription; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.navigationIcon = global::Sarand.BusinessMgr.Resource.Attribute.navigationIcon; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.navigationMode = global::Sarand.BusinessMgr.Resource.Attribute.navigationMode; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.numericModifiers = global::Sarand.BusinessMgr.Resource.Attribute.numericModifiers; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.overlapAnchor = global::Sarand.BusinessMgr.Resource.Attribute.overlapAnchor; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.paddingBottomNoButtons = global::Sarand.BusinessMgr.Resource.Attribute.paddingBottomNoButtons; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.paddingEnd = global::Sarand.BusinessMgr.Resource.Attribute.paddingEnd; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.paddingStart = global::Sarand.BusinessMgr.Resource.Attribute.paddingStart; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.paddingTopNoTitle = global::Sarand.BusinessMgr.Resource.Attribute.paddingTopNoTitle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.panelBackground = global::Sarand.BusinessMgr.Resource.Attribute.panelBackground; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.panelMenuListTheme = global::Sarand.BusinessMgr.Resource.Attribute.panelMenuListTheme; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.panelMenuListWidth = global::Sarand.BusinessMgr.Resource.Attribute.panelMenuListWidth; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.passwordToggleContentDescription = global::Sarand.BusinessMgr.Resource.Attribute.passwordToggleContentDescription; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.passwordToggleDrawable = global::Sarand.BusinessMgr.Resource.Attribute.passwordToggleDrawable; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.passwordToggleEnabled = global::Sarand.BusinessMgr.Resource.Attribute.passwordToggleEnabled; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.passwordToggleTint = global::Sarand.BusinessMgr.Resource.Attribute.passwordToggleTint; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.passwordToggleTintMode = global::Sarand.BusinessMgr.Resource.Attribute.passwordToggleTintMode; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.popupMenuStyle = global::Sarand.BusinessMgr.Resource.Attribute.popupMenuStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.popupTheme = global::Sarand.BusinessMgr.Resource.Attribute.popupTheme; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.popupWindowStyle = global::Sarand.BusinessMgr.Resource.Attribute.popupWindowStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.preserveIconSpacing = global::Sarand.BusinessMgr.Resource.Attribute.preserveIconSpacing; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.pressedTranslationZ = global::Sarand.BusinessMgr.Resource.Attribute.pressedTranslationZ; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.progressBarPadding = global::Sarand.BusinessMgr.Resource.Attribute.progressBarPadding; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.progressBarStyle = global::Sarand.BusinessMgr.Resource.Attribute.progressBarStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.queryBackground = global::Sarand.BusinessMgr.Resource.Attribute.queryBackground; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.queryHint = global::Sarand.BusinessMgr.Resource.Attribute.queryHint; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.radioButtonStyle = global::Sarand.BusinessMgr.Resource.Attribute.radioButtonStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.ratingBarStyle = global::Sarand.BusinessMgr.Resource.Attribute.ratingBarStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.ratingBarStyleIndicator = global::Sarand.BusinessMgr.Resource.Attribute.ratingBarStyleIndicator; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.ratingBarStyleSmall = global::Sarand.BusinessMgr.Resource.Attribute.ratingBarStyleSmall; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.reverseLayout = global::Sarand.BusinessMgr.Resource.Attribute.reverseLayout; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.rippleColor = global::Sarand.BusinessMgr.Resource.Attribute.rippleColor; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.scrimAnimationDuration = global::Sarand.BusinessMgr.Resource.Attribute.scrimAnimationDuration; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.scrimVisibleHeightTrigger = global::Sarand.BusinessMgr.Resource.Attribute.scrimVisibleHeightTrigger; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.searchHintIcon = global::Sarand.BusinessMgr.Resource.Attribute.searchHintIcon; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.searchIcon = global::Sarand.BusinessMgr.Resource.Attribute.searchIcon; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.searchViewStyle = global::Sarand.BusinessMgr.Resource.Attribute.searchViewStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.seekBarStyle = global::Sarand.BusinessMgr.Resource.Attribute.seekBarStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.selectableItemBackground = global::Sarand.BusinessMgr.Resource.Attribute.selectableItemBackground; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.selectableItemBackgroundBorderless = global::Sarand.BusinessMgr.Resource.Attribute.selectableItemBackgroundBorderless; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.showAsAction = global::Sarand.BusinessMgr.Resource.Attribute.showAsAction; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.showDividers = global::Sarand.BusinessMgr.Resource.Attribute.showDividers; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.showText = global::Sarand.BusinessMgr.Resource.Attribute.showText; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.showTitle = global::Sarand.BusinessMgr.Resource.Attribute.showTitle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.singleChoiceItemLayout = global::Sarand.BusinessMgr.Resource.Attribute.singleChoiceItemLayout; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.spanCount = global::Sarand.BusinessMgr.Resource.Attribute.spanCount; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.spinBars = global::Sarand.BusinessMgr.Resource.Attribute.spinBars; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.spinnerDropDownItemStyle = global::Sarand.BusinessMgr.Resource.Attribute.spinnerDropDownItemStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.spinnerStyle = global::Sarand.BusinessMgr.Resource.Attribute.spinnerStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.splitTrack = global::Sarand.BusinessMgr.Resource.Attribute.splitTrack; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.srcCompat = global::Sarand.BusinessMgr.Resource.Attribute.srcCompat; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.stackFromEnd = global::Sarand.BusinessMgr.Resource.Attribute.stackFromEnd; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.state_above_anchor = global::Sarand.BusinessMgr.Resource.Attribute.state_above_anchor; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.state_collapsed = global::Sarand.BusinessMgr.Resource.Attribute.state_collapsed; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.state_collapsible = global::Sarand.BusinessMgr.Resource.Attribute.state_collapsible; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.statusBarBackground = global::Sarand.BusinessMgr.Resource.Attribute.statusBarBackground; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.statusBarScrim = global::Sarand.BusinessMgr.Resource.Attribute.statusBarScrim; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.subMenuArrow = global::Sarand.BusinessMgr.Resource.Attribute.subMenuArrow; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.submitBackground = global::Sarand.BusinessMgr.Resource.Attribute.submitBackground; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.subtitle = global::Sarand.BusinessMgr.Resource.Attribute.subtitle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.subtitleTextAppearance = global::Sarand.BusinessMgr.Resource.Attribute.subtitleTextAppearance; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.subtitleTextColor = global::Sarand.BusinessMgr.Resource.Attribute.subtitleTextColor; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.subtitleTextStyle = global::Sarand.BusinessMgr.Resource.Attribute.subtitleTextStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.suggestionRowLayout = global::Sarand.BusinessMgr.Resource.Attribute.suggestionRowLayout; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.switchMinWidth = global::Sarand.BusinessMgr.Resource.Attribute.switchMinWidth; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.switchPadding = global::Sarand.BusinessMgr.Resource.Attribute.switchPadding; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.switchStyle = global::Sarand.BusinessMgr.Resource.Attribute.switchStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.switchTextAppearance = global::Sarand.BusinessMgr.Resource.Attribute.switchTextAppearance; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.tabBackground = global::Sarand.BusinessMgr.Resource.Attribute.tabBackground; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.tabContentStart = global::Sarand.BusinessMgr.Resource.Attribute.tabContentStart; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.tabGravity = global::Sarand.BusinessMgr.Resource.Attribute.tabGravity; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.tabIndicatorColor = global::Sarand.BusinessMgr.Resource.Attribute.tabIndicatorColor; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.tabIndicatorHeight = global::Sarand.BusinessMgr.Resource.Attribute.tabIndicatorHeight; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.tabMaxWidth = global::Sarand.BusinessMgr.Resource.Attribute.tabMaxWidth; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.tabMinWidth = global::Sarand.BusinessMgr.Resource.Attribute.tabMinWidth; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.tabMode = global::Sarand.BusinessMgr.Resource.Attribute.tabMode; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.tabPadding = global::Sarand.BusinessMgr.Resource.Attribute.tabPadding; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.tabPaddingBottom = global::Sarand.BusinessMgr.Resource.Attribute.tabPaddingBottom; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.tabPaddingEnd = global::Sarand.BusinessMgr.Resource.Attribute.tabPaddingEnd; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.tabPaddingStart = global::Sarand.BusinessMgr.Resource.Attribute.tabPaddingStart; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.tabPaddingTop = global::Sarand.BusinessMgr.Resource.Attribute.tabPaddingTop; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.tabSelectedTextColor = global::Sarand.BusinessMgr.Resource.Attribute.tabSelectedTextColor; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.tabTextAppearance = global::Sarand.BusinessMgr.Resource.Attribute.tabTextAppearance; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.tabTextColor = global::Sarand.BusinessMgr.Resource.Attribute.tabTextColor; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.textAllCaps = global::Sarand.BusinessMgr.Resource.Attribute.textAllCaps; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.textAppearanceLargePopupMenu = global::Sarand.BusinessMgr.Resource.Attribute.textAppearanceLargePopupMenu; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.textAppearanceListItem = global::Sarand.BusinessMgr.Resource.Attribute.textAppearanceListItem; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.textAppearanceListItemSecondary = global::Sarand.BusinessMgr.Resource.Attribute.textAppearanceListItemSecondary; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.textAppearanceListItemSmall = global::Sarand.BusinessMgr.Resource.Attribute.textAppearanceListItemSmall; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.textAppearancePopupMenuHeader = global::Sarand.BusinessMgr.Resource.Attribute.textAppearancePopupMenuHeader; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.textAppearanceSearchResultSubtitle = global::Sarand.BusinessMgr.Resource.Attribute.textAppearanceSearchResultSubtitle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.textAppearanceSearchResultTitle = global::Sarand.BusinessMgr.Resource.Attribute.textAppearanceSearchResultTitle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.textAppearanceSmallPopupMenu = global::Sarand.BusinessMgr.Resource.Attribute.textAppearanceSmallPopupMenu; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.textColorAlertDialogListItem = global::Sarand.BusinessMgr.Resource.Attribute.textColorAlertDialogListItem; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.textColorError = global::Sarand.BusinessMgr.Resource.Attribute.textColorError; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.textColorSearchUrl = global::Sarand.BusinessMgr.Resource.Attribute.textColorSearchUrl; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.theme = global::Sarand.BusinessMgr.Resource.Attribute.theme; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.thickness = global::Sarand.BusinessMgr.Resource.Attribute.thickness; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.thumbTextPadding = global::Sarand.BusinessMgr.Resource.Attribute.thumbTextPadding; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.thumbTint = global::Sarand.BusinessMgr.Resource.Attribute.thumbTint; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.thumbTintMode = global::Sarand.BusinessMgr.Resource.Attribute.thumbTintMode; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.tickMark = global::Sarand.BusinessMgr.Resource.Attribute.tickMark; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.tickMarkTint = global::Sarand.BusinessMgr.Resource.Attribute.tickMarkTint; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.tickMarkTintMode = global::Sarand.BusinessMgr.Resource.Attribute.tickMarkTintMode; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.tint = global::Sarand.BusinessMgr.Resource.Attribute.tint; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.tintMode = global::Sarand.BusinessMgr.Resource.Attribute.tintMode; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.title = global::Sarand.BusinessMgr.Resource.Attribute.title; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.titleEnabled = global::Sarand.BusinessMgr.Resource.Attribute.titleEnabled; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.titleMargin = global::Sarand.BusinessMgr.Resource.Attribute.titleMargin; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.titleMarginBottom = global::Sarand.BusinessMgr.Resource.Attribute.titleMarginBottom; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.titleMarginEnd = global::Sarand.BusinessMgr.Resource.Attribute.titleMarginEnd; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.titleMarginStart = global::Sarand.BusinessMgr.Resource.Attribute.titleMarginStart; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.titleMarginTop = global::Sarand.BusinessMgr.Resource.Attribute.titleMarginTop; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.titleMargins = global::Sarand.BusinessMgr.Resource.Attribute.titleMargins; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.titleTextAppearance = global::Sarand.BusinessMgr.Resource.Attribute.titleTextAppearance; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.titleTextColor = global::Sarand.BusinessMgr.Resource.Attribute.titleTextColor; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.titleTextStyle = global::Sarand.BusinessMgr.Resource.Attribute.titleTextStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.toolbarId = global::Sarand.BusinessMgr.Resource.Attribute.toolbarId; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.toolbarNavigationButtonStyle = global::Sarand.BusinessMgr.Resource.Attribute.toolbarNavigationButtonStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.toolbarStyle = global::Sarand.BusinessMgr.Resource.Attribute.toolbarStyle; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.tooltipForegroundColor = global::Sarand.BusinessMgr.Resource.Attribute.tooltipForegroundColor; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.tooltipFrameBackground = global::Sarand.BusinessMgr.Resource.Attribute.tooltipFrameBackground; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.tooltipText = global::Sarand.BusinessMgr.Resource.Attribute.tooltipText; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.track = global::Sarand.BusinessMgr.Resource.Attribute.track; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.trackTint = global::Sarand.BusinessMgr.Resource.Attribute.trackTint; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.trackTintMode = global::Sarand.BusinessMgr.Resource.Attribute.trackTintMode; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.useCompatPadding = global::Sarand.BusinessMgr.Resource.Attribute.useCompatPadding; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.voiceIcon = global::Sarand.BusinessMgr.Resource.Attribute.voiceIcon; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.windowActionBar = global::Sarand.BusinessMgr.Resource.Attribute.windowActionBar; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.windowActionBarOverlay = global::Sarand.BusinessMgr.Resource.Attribute.windowActionBarOverlay; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.windowActionModeOverlay = global::Sarand.BusinessMgr.Resource.Attribute.windowActionModeOverlay; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.windowFixedHeightMajor = global::Sarand.BusinessMgr.Resource.Attribute.windowFixedHeightMajor; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.windowFixedHeightMinor = global::Sarand.BusinessMgr.Resource.Attribute.windowFixedHeightMinor; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.windowFixedWidthMajor = global::Sarand.BusinessMgr.Resource.Attribute.windowFixedWidthMajor; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.windowFixedWidthMinor = global::Sarand.BusinessMgr.Resource.Attribute.windowFixedWidthMinor; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.windowMinWidthMajor = global::Sarand.BusinessMgr.Resource.Attribute.windowMinWidthMajor; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.windowMinWidthMinor = global::Sarand.BusinessMgr.Resource.Attribute.windowMinWidthMinor; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.windowNoTitle = global::Sarand.BusinessMgr.Resource.Attribute.windowNoTitle; + global::Xamarin.Forms.Platform.Android.Resource.Boolean.abc_action_bar_embed_tabs = global::Sarand.BusinessMgr.Resource.Boolean.abc_action_bar_embed_tabs; + global::Xamarin.Forms.Platform.Android.Resource.Boolean.abc_allow_stacked_button_bar = global::Sarand.BusinessMgr.Resource.Boolean.abc_allow_stacked_button_bar; + global::Xamarin.Forms.Platform.Android.Resource.Boolean.abc_config_actionMenuItemAllCaps = global::Sarand.BusinessMgr.Resource.Boolean.abc_config_actionMenuItemAllCaps; + global::Xamarin.Forms.Platform.Android.Resource.Boolean.abc_config_closeDialogWhenTouchOutside = global::Sarand.BusinessMgr.Resource.Boolean.abc_config_closeDialogWhenTouchOutside; + global::Xamarin.Forms.Platform.Android.Resource.Boolean.abc_config_showMenuShortcutsWhenKeyboardPresent = global::Sarand.BusinessMgr.Resource.Boolean.abc_config_showMenuShortcutsWhenKeyboardPresent; + global::Xamarin.Forms.Platform.Android.Resource.Color.abc_background_cache_hint_selector_material_dark = global::Sarand.BusinessMgr.Resource.Color.abc_background_cache_hint_selector_material_dark; + global::Xamarin.Forms.Platform.Android.Resource.Color.abc_background_cache_hint_selector_material_light = global::Sarand.BusinessMgr.Resource.Color.abc_background_cache_hint_selector_material_light; + global::Xamarin.Forms.Platform.Android.Resource.Color.abc_btn_colored_borderless_text_material = global::Sarand.BusinessMgr.Resource.Color.abc_btn_colored_borderless_text_material; + global::Xamarin.Forms.Platform.Android.Resource.Color.abc_btn_colored_text_material = global::Sarand.BusinessMgr.Resource.Color.abc_btn_colored_text_material; + global::Xamarin.Forms.Platform.Android.Resource.Color.abc_color_highlight_material = global::Sarand.BusinessMgr.Resource.Color.abc_color_highlight_material; + global::Xamarin.Forms.Platform.Android.Resource.Color.abc_hint_foreground_material_dark = global::Sarand.BusinessMgr.Resource.Color.abc_hint_foreground_material_dark; + global::Xamarin.Forms.Platform.Android.Resource.Color.abc_hint_foreground_material_light = global::Sarand.BusinessMgr.Resource.Color.abc_hint_foreground_material_light; + global::Xamarin.Forms.Platform.Android.Resource.Color.abc_input_method_navigation_guard = global::Sarand.BusinessMgr.Resource.Color.abc_input_method_navigation_guard; + global::Xamarin.Forms.Platform.Android.Resource.Color.abc_primary_text_disable_only_material_dark = global::Sarand.BusinessMgr.Resource.Color.abc_primary_text_disable_only_material_dark; + global::Xamarin.Forms.Platform.Android.Resource.Color.abc_primary_text_disable_only_material_light = global::Sarand.BusinessMgr.Resource.Color.abc_primary_text_disable_only_material_light; + global::Xamarin.Forms.Platform.Android.Resource.Color.abc_primary_text_material_dark = global::Sarand.BusinessMgr.Resource.Color.abc_primary_text_material_dark; + global::Xamarin.Forms.Platform.Android.Resource.Color.abc_primary_text_material_light = global::Sarand.BusinessMgr.Resource.Color.abc_primary_text_material_light; + global::Xamarin.Forms.Platform.Android.Resource.Color.abc_search_url_text = global::Sarand.BusinessMgr.Resource.Color.abc_search_url_text; + global::Xamarin.Forms.Platform.Android.Resource.Color.abc_search_url_text_normal = global::Sarand.BusinessMgr.Resource.Color.abc_search_url_text_normal; + global::Xamarin.Forms.Platform.Android.Resource.Color.abc_search_url_text_pressed = global::Sarand.BusinessMgr.Resource.Color.abc_search_url_text_pressed; + global::Xamarin.Forms.Platform.Android.Resource.Color.abc_search_url_text_selected = global::Sarand.BusinessMgr.Resource.Color.abc_search_url_text_selected; + global::Xamarin.Forms.Platform.Android.Resource.Color.abc_secondary_text_material_dark = global::Sarand.BusinessMgr.Resource.Color.abc_secondary_text_material_dark; + global::Xamarin.Forms.Platform.Android.Resource.Color.abc_secondary_text_material_light = global::Sarand.BusinessMgr.Resource.Color.abc_secondary_text_material_light; + global::Xamarin.Forms.Platform.Android.Resource.Color.abc_tint_btn_checkable = global::Sarand.BusinessMgr.Resource.Color.abc_tint_btn_checkable; + global::Xamarin.Forms.Platform.Android.Resource.Color.abc_tint_default = global::Sarand.BusinessMgr.Resource.Color.abc_tint_default; + global::Xamarin.Forms.Platform.Android.Resource.Color.abc_tint_edittext = global::Sarand.BusinessMgr.Resource.Color.abc_tint_edittext; + global::Xamarin.Forms.Platform.Android.Resource.Color.abc_tint_seek_thumb = global::Sarand.BusinessMgr.Resource.Color.abc_tint_seek_thumb; + global::Xamarin.Forms.Platform.Android.Resource.Color.abc_tint_spinner = global::Sarand.BusinessMgr.Resource.Color.abc_tint_spinner; + global::Xamarin.Forms.Platform.Android.Resource.Color.abc_tint_switch_track = global::Sarand.BusinessMgr.Resource.Color.abc_tint_switch_track; + global::Xamarin.Forms.Platform.Android.Resource.Color.accent_material_dark = global::Sarand.BusinessMgr.Resource.Color.accent_material_dark; + global::Xamarin.Forms.Platform.Android.Resource.Color.accent_material_light = global::Sarand.BusinessMgr.Resource.Color.accent_material_light; + global::Xamarin.Forms.Platform.Android.Resource.Color.background_floating_material_dark = global::Sarand.BusinessMgr.Resource.Color.background_floating_material_dark; + global::Xamarin.Forms.Platform.Android.Resource.Color.background_floating_material_light = global::Sarand.BusinessMgr.Resource.Color.background_floating_material_light; + global::Xamarin.Forms.Platform.Android.Resource.Color.background_material_dark = global::Sarand.BusinessMgr.Resource.Color.background_material_dark; + global::Xamarin.Forms.Platform.Android.Resource.Color.background_material_light = global::Sarand.BusinessMgr.Resource.Color.background_material_light; + global::Xamarin.Forms.Platform.Android.Resource.Color.bright_foreground_disabled_material_dark = global::Sarand.BusinessMgr.Resource.Color.bright_foreground_disabled_material_dark; + global::Xamarin.Forms.Platform.Android.Resource.Color.bright_foreground_disabled_material_light = global::Sarand.BusinessMgr.Resource.Color.bright_foreground_disabled_material_light; + global::Xamarin.Forms.Platform.Android.Resource.Color.bright_foreground_inverse_material_dark = global::Sarand.BusinessMgr.Resource.Color.bright_foreground_inverse_material_dark; + global::Xamarin.Forms.Platform.Android.Resource.Color.bright_foreground_inverse_material_light = global::Sarand.BusinessMgr.Resource.Color.bright_foreground_inverse_material_light; + global::Xamarin.Forms.Platform.Android.Resource.Color.bright_foreground_material_dark = global::Sarand.BusinessMgr.Resource.Color.bright_foreground_material_dark; + global::Xamarin.Forms.Platform.Android.Resource.Color.bright_foreground_material_light = global::Sarand.BusinessMgr.Resource.Color.bright_foreground_material_light; + global::Xamarin.Forms.Platform.Android.Resource.Color.button_material_dark = global::Sarand.BusinessMgr.Resource.Color.button_material_dark; + global::Xamarin.Forms.Platform.Android.Resource.Color.button_material_light = global::Sarand.BusinessMgr.Resource.Color.button_material_light; + global::Xamarin.Forms.Platform.Android.Resource.Color.cardview_dark_background = global::Sarand.BusinessMgr.Resource.Color.cardview_dark_background; + global::Xamarin.Forms.Platform.Android.Resource.Color.cardview_light_background = global::Sarand.BusinessMgr.Resource.Color.cardview_light_background; + global::Xamarin.Forms.Platform.Android.Resource.Color.cardview_shadow_end_color = global::Sarand.BusinessMgr.Resource.Color.cardview_shadow_end_color; + global::Xamarin.Forms.Platform.Android.Resource.Color.cardview_shadow_start_color = global::Sarand.BusinessMgr.Resource.Color.cardview_shadow_start_color; + global::Xamarin.Forms.Platform.Android.Resource.Color.design_bottom_navigation_shadow_color = global::Sarand.BusinessMgr.Resource.Color.design_bottom_navigation_shadow_color; + global::Xamarin.Forms.Platform.Android.Resource.Color.design_error = global::Sarand.BusinessMgr.Resource.Color.design_error; + global::Xamarin.Forms.Platform.Android.Resource.Color.design_fab_shadow_end_color = global::Sarand.BusinessMgr.Resource.Color.design_fab_shadow_end_color; + global::Xamarin.Forms.Platform.Android.Resource.Color.design_fab_shadow_mid_color = global::Sarand.BusinessMgr.Resource.Color.design_fab_shadow_mid_color; + global::Xamarin.Forms.Platform.Android.Resource.Color.design_fab_shadow_start_color = global::Sarand.BusinessMgr.Resource.Color.design_fab_shadow_start_color; + global::Xamarin.Forms.Platform.Android.Resource.Color.design_fab_stroke_end_inner_color = global::Sarand.BusinessMgr.Resource.Color.design_fab_stroke_end_inner_color; + global::Xamarin.Forms.Platform.Android.Resource.Color.design_fab_stroke_end_outer_color = global::Sarand.BusinessMgr.Resource.Color.design_fab_stroke_end_outer_color; + global::Xamarin.Forms.Platform.Android.Resource.Color.design_fab_stroke_top_inner_color = global::Sarand.BusinessMgr.Resource.Color.design_fab_stroke_top_inner_color; + global::Xamarin.Forms.Platform.Android.Resource.Color.design_fab_stroke_top_outer_color = global::Sarand.BusinessMgr.Resource.Color.design_fab_stroke_top_outer_color; + global::Xamarin.Forms.Platform.Android.Resource.Color.design_snackbar_background_color = global::Sarand.BusinessMgr.Resource.Color.design_snackbar_background_color; + global::Xamarin.Forms.Platform.Android.Resource.Color.design_tint_password_toggle = global::Sarand.BusinessMgr.Resource.Color.design_tint_password_toggle; + global::Xamarin.Forms.Platform.Android.Resource.Color.dim_foreground_disabled_material_dark = global::Sarand.BusinessMgr.Resource.Color.dim_foreground_disabled_material_dark; + global::Xamarin.Forms.Platform.Android.Resource.Color.dim_foreground_disabled_material_light = global::Sarand.BusinessMgr.Resource.Color.dim_foreground_disabled_material_light; + global::Xamarin.Forms.Platform.Android.Resource.Color.dim_foreground_material_dark = global::Sarand.BusinessMgr.Resource.Color.dim_foreground_material_dark; + global::Xamarin.Forms.Platform.Android.Resource.Color.dim_foreground_material_light = global::Sarand.BusinessMgr.Resource.Color.dim_foreground_material_light; + global::Xamarin.Forms.Platform.Android.Resource.Color.error_color_material = global::Sarand.BusinessMgr.Resource.Color.error_color_material; + global::Xamarin.Forms.Platform.Android.Resource.Color.foreground_material_dark = global::Sarand.BusinessMgr.Resource.Color.foreground_material_dark; + global::Xamarin.Forms.Platform.Android.Resource.Color.foreground_material_light = global::Sarand.BusinessMgr.Resource.Color.foreground_material_light; + global::Xamarin.Forms.Platform.Android.Resource.Color.highlighted_text_material_dark = global::Sarand.BusinessMgr.Resource.Color.highlighted_text_material_dark; + global::Xamarin.Forms.Platform.Android.Resource.Color.highlighted_text_material_light = global::Sarand.BusinessMgr.Resource.Color.highlighted_text_material_light; + global::Xamarin.Forms.Platform.Android.Resource.Color.material_blue_grey_800 = global::Sarand.BusinessMgr.Resource.Color.material_blue_grey_800; + global::Xamarin.Forms.Platform.Android.Resource.Color.material_blue_grey_900 = global::Sarand.BusinessMgr.Resource.Color.material_blue_grey_900; + global::Xamarin.Forms.Platform.Android.Resource.Color.material_blue_grey_950 = global::Sarand.BusinessMgr.Resource.Color.material_blue_grey_950; + global::Xamarin.Forms.Platform.Android.Resource.Color.material_deep_teal_200 = global::Sarand.BusinessMgr.Resource.Color.material_deep_teal_200; + global::Xamarin.Forms.Platform.Android.Resource.Color.material_deep_teal_500 = global::Sarand.BusinessMgr.Resource.Color.material_deep_teal_500; + global::Xamarin.Forms.Platform.Android.Resource.Color.material_grey_100 = global::Sarand.BusinessMgr.Resource.Color.material_grey_100; + global::Xamarin.Forms.Platform.Android.Resource.Color.material_grey_300 = global::Sarand.BusinessMgr.Resource.Color.material_grey_300; + global::Xamarin.Forms.Platform.Android.Resource.Color.material_grey_50 = global::Sarand.BusinessMgr.Resource.Color.material_grey_50; + global::Xamarin.Forms.Platform.Android.Resource.Color.material_grey_600 = global::Sarand.BusinessMgr.Resource.Color.material_grey_600; + global::Xamarin.Forms.Platform.Android.Resource.Color.material_grey_800 = global::Sarand.BusinessMgr.Resource.Color.material_grey_800; + global::Xamarin.Forms.Platform.Android.Resource.Color.material_grey_850 = global::Sarand.BusinessMgr.Resource.Color.material_grey_850; + global::Xamarin.Forms.Platform.Android.Resource.Color.material_grey_900 = global::Sarand.BusinessMgr.Resource.Color.material_grey_900; + global::Xamarin.Forms.Platform.Android.Resource.Color.notification_action_color_filter = global::Sarand.BusinessMgr.Resource.Color.notification_action_color_filter; + global::Xamarin.Forms.Platform.Android.Resource.Color.notification_icon_bg_color = global::Sarand.BusinessMgr.Resource.Color.notification_icon_bg_color; + global::Xamarin.Forms.Platform.Android.Resource.Color.notification_material_background_media_default_color = global::Sarand.BusinessMgr.Resource.Color.notification_material_background_media_default_color; + global::Xamarin.Forms.Platform.Android.Resource.Color.primary_dark_material_dark = global::Sarand.BusinessMgr.Resource.Color.primary_dark_material_dark; + global::Xamarin.Forms.Platform.Android.Resource.Color.primary_dark_material_light = global::Sarand.BusinessMgr.Resource.Color.primary_dark_material_light; + global::Xamarin.Forms.Platform.Android.Resource.Color.primary_material_dark = global::Sarand.BusinessMgr.Resource.Color.primary_material_dark; + global::Xamarin.Forms.Platform.Android.Resource.Color.primary_material_light = global::Sarand.BusinessMgr.Resource.Color.primary_material_light; + global::Xamarin.Forms.Platform.Android.Resource.Color.primary_text_default_material_dark = global::Sarand.BusinessMgr.Resource.Color.primary_text_default_material_dark; + global::Xamarin.Forms.Platform.Android.Resource.Color.primary_text_default_material_light = global::Sarand.BusinessMgr.Resource.Color.primary_text_default_material_light; + global::Xamarin.Forms.Platform.Android.Resource.Color.primary_text_disabled_material_dark = global::Sarand.BusinessMgr.Resource.Color.primary_text_disabled_material_dark; + global::Xamarin.Forms.Platform.Android.Resource.Color.primary_text_disabled_material_light = global::Sarand.BusinessMgr.Resource.Color.primary_text_disabled_material_light; + global::Xamarin.Forms.Platform.Android.Resource.Color.ripple_material_dark = global::Sarand.BusinessMgr.Resource.Color.ripple_material_dark; + global::Xamarin.Forms.Platform.Android.Resource.Color.ripple_material_light = global::Sarand.BusinessMgr.Resource.Color.ripple_material_light; + global::Xamarin.Forms.Platform.Android.Resource.Color.secondary_text_default_material_dark = global::Sarand.BusinessMgr.Resource.Color.secondary_text_default_material_dark; + global::Xamarin.Forms.Platform.Android.Resource.Color.secondary_text_default_material_light = global::Sarand.BusinessMgr.Resource.Color.secondary_text_default_material_light; + global::Xamarin.Forms.Platform.Android.Resource.Color.secondary_text_disabled_material_dark = global::Sarand.BusinessMgr.Resource.Color.secondary_text_disabled_material_dark; + global::Xamarin.Forms.Platform.Android.Resource.Color.secondary_text_disabled_material_light = global::Sarand.BusinessMgr.Resource.Color.secondary_text_disabled_material_light; + global::Xamarin.Forms.Platform.Android.Resource.Color.switch_thumb_disabled_material_dark = global::Sarand.BusinessMgr.Resource.Color.switch_thumb_disabled_material_dark; + global::Xamarin.Forms.Platform.Android.Resource.Color.switch_thumb_disabled_material_light = global::Sarand.BusinessMgr.Resource.Color.switch_thumb_disabled_material_light; + global::Xamarin.Forms.Platform.Android.Resource.Color.switch_thumb_material_dark = global::Sarand.BusinessMgr.Resource.Color.switch_thumb_material_dark; + global::Xamarin.Forms.Platform.Android.Resource.Color.switch_thumb_material_light = global::Sarand.BusinessMgr.Resource.Color.switch_thumb_material_light; + global::Xamarin.Forms.Platform.Android.Resource.Color.switch_thumb_normal_material_dark = global::Sarand.BusinessMgr.Resource.Color.switch_thumb_normal_material_dark; + global::Xamarin.Forms.Platform.Android.Resource.Color.switch_thumb_normal_material_light = global::Sarand.BusinessMgr.Resource.Color.switch_thumb_normal_material_light; + global::Xamarin.Forms.Platform.Android.Resource.Color.tooltip_background_dark = global::Sarand.BusinessMgr.Resource.Color.tooltip_background_dark; + global::Xamarin.Forms.Platform.Android.Resource.Color.tooltip_background_light = global::Sarand.BusinessMgr.Resource.Color.tooltip_background_light; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_action_bar_content_inset_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_action_bar_content_inset_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_action_bar_content_inset_with_nav = global::Sarand.BusinessMgr.Resource.Dimension.abc_action_bar_content_inset_with_nav; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_action_bar_default_height_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_action_bar_default_height_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_action_bar_default_padding_end_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_action_bar_default_padding_end_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_action_bar_default_padding_start_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_action_bar_default_padding_start_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_action_bar_elevation_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_action_bar_elevation_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_action_bar_icon_vertical_padding_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_action_bar_icon_vertical_padding_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_action_bar_overflow_padding_end_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_action_bar_overflow_padding_end_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_action_bar_overflow_padding_start_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_action_bar_overflow_padding_start_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_action_bar_progress_bar_size = global::Sarand.BusinessMgr.Resource.Dimension.abc_action_bar_progress_bar_size; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_action_bar_stacked_max_height = global::Sarand.BusinessMgr.Resource.Dimension.abc_action_bar_stacked_max_height; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_action_bar_stacked_tab_max_width = global::Sarand.BusinessMgr.Resource.Dimension.abc_action_bar_stacked_tab_max_width; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_action_bar_subtitle_bottom_margin_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_action_bar_subtitle_bottom_margin_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_action_bar_subtitle_top_margin_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_action_bar_subtitle_top_margin_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_action_button_min_height_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_action_button_min_height_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_action_button_min_width_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_action_button_min_width_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_action_button_min_width_overflow_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_action_button_min_width_overflow_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_alert_dialog_button_bar_height = global::Sarand.BusinessMgr.Resource.Dimension.abc_alert_dialog_button_bar_height; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_button_inset_horizontal_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_button_inset_horizontal_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_button_inset_vertical_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_button_inset_vertical_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_button_padding_horizontal_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_button_padding_horizontal_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_button_padding_vertical_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_button_padding_vertical_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_cascading_menus_min_smallest_width = global::Sarand.BusinessMgr.Resource.Dimension.abc_cascading_menus_min_smallest_width; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_config_prefDialogWidth = global::Sarand.BusinessMgr.Resource.Dimension.abc_config_prefDialogWidth; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_control_corner_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_control_corner_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_control_inset_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_control_inset_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_control_padding_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_control_padding_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_dialog_fixed_height_major = global::Sarand.BusinessMgr.Resource.Dimension.abc_dialog_fixed_height_major; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_dialog_fixed_height_minor = global::Sarand.BusinessMgr.Resource.Dimension.abc_dialog_fixed_height_minor; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_dialog_fixed_width_major = global::Sarand.BusinessMgr.Resource.Dimension.abc_dialog_fixed_width_major; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_dialog_fixed_width_minor = global::Sarand.BusinessMgr.Resource.Dimension.abc_dialog_fixed_width_minor; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_dialog_list_padding_bottom_no_buttons = global::Sarand.BusinessMgr.Resource.Dimension.abc_dialog_list_padding_bottom_no_buttons; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_dialog_list_padding_top_no_title = global::Sarand.BusinessMgr.Resource.Dimension.abc_dialog_list_padding_top_no_title; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_dialog_min_width_major = global::Sarand.BusinessMgr.Resource.Dimension.abc_dialog_min_width_major; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_dialog_min_width_minor = global::Sarand.BusinessMgr.Resource.Dimension.abc_dialog_min_width_minor; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_dialog_padding_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_dialog_padding_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_dialog_padding_top_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_dialog_padding_top_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_dialog_title_divider_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_dialog_title_divider_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_disabled_alpha_material_dark = global::Sarand.BusinessMgr.Resource.Dimension.abc_disabled_alpha_material_dark; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_disabled_alpha_material_light = global::Sarand.BusinessMgr.Resource.Dimension.abc_disabled_alpha_material_light; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_dropdownitem_icon_width = global::Sarand.BusinessMgr.Resource.Dimension.abc_dropdownitem_icon_width; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_dropdownitem_text_padding_left = global::Sarand.BusinessMgr.Resource.Dimension.abc_dropdownitem_text_padding_left; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_dropdownitem_text_padding_right = global::Sarand.BusinessMgr.Resource.Dimension.abc_dropdownitem_text_padding_right; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_edit_text_inset_bottom_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_edit_text_inset_bottom_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_edit_text_inset_horizontal_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_edit_text_inset_horizontal_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_edit_text_inset_top_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_edit_text_inset_top_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_floating_window_z = global::Sarand.BusinessMgr.Resource.Dimension.abc_floating_window_z; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_list_item_padding_horizontal_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_list_item_padding_horizontal_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_panel_menu_list_width = global::Sarand.BusinessMgr.Resource.Dimension.abc_panel_menu_list_width; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_progress_bar_height_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_progress_bar_height_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_search_view_preferred_height = global::Sarand.BusinessMgr.Resource.Dimension.abc_search_view_preferred_height; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_search_view_preferred_width = global::Sarand.BusinessMgr.Resource.Dimension.abc_search_view_preferred_width; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_seekbar_track_background_height_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_seekbar_track_background_height_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_seekbar_track_progress_height_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_seekbar_track_progress_height_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_select_dialog_padding_start_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_select_dialog_padding_start_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_switch_padding = global::Sarand.BusinessMgr.Resource.Dimension.abc_switch_padding; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_text_size_body_1_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_text_size_body_1_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_text_size_body_2_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_text_size_body_2_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_text_size_button_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_text_size_button_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_text_size_caption_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_text_size_caption_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_text_size_display_1_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_text_size_display_1_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_text_size_display_2_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_text_size_display_2_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_text_size_display_3_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_text_size_display_3_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_text_size_display_4_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_text_size_display_4_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_text_size_headline_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_text_size_headline_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_text_size_large_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_text_size_large_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_text_size_medium_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_text_size_medium_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_text_size_menu_header_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_text_size_menu_header_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_text_size_menu_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_text_size_menu_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_text_size_small_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_text_size_small_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_text_size_subhead_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_text_size_subhead_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_text_size_subtitle_material_toolbar = global::Sarand.BusinessMgr.Resource.Dimension.abc_text_size_subtitle_material_toolbar; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_text_size_title_material = global::Sarand.BusinessMgr.Resource.Dimension.abc_text_size_title_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.abc_text_size_title_material_toolbar = global::Sarand.BusinessMgr.Resource.Dimension.abc_text_size_title_material_toolbar; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.cardview_compat_inset_shadow = global::Sarand.BusinessMgr.Resource.Dimension.cardview_compat_inset_shadow; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.cardview_default_elevation = global::Sarand.BusinessMgr.Resource.Dimension.cardview_default_elevation; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.cardview_default_radius = global::Sarand.BusinessMgr.Resource.Dimension.cardview_default_radius; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.compat_button_inset_horizontal_material = global::Sarand.BusinessMgr.Resource.Dimension.compat_button_inset_horizontal_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.compat_button_inset_vertical_material = global::Sarand.BusinessMgr.Resource.Dimension.compat_button_inset_vertical_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.compat_button_padding_horizontal_material = global::Sarand.BusinessMgr.Resource.Dimension.compat_button_padding_horizontal_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.compat_button_padding_vertical_material = global::Sarand.BusinessMgr.Resource.Dimension.compat_button_padding_vertical_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.compat_control_corner_material = global::Sarand.BusinessMgr.Resource.Dimension.compat_control_corner_material; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_appbar_elevation = global::Sarand.BusinessMgr.Resource.Dimension.design_appbar_elevation; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_bottom_navigation_active_item_max_width = global::Sarand.BusinessMgr.Resource.Dimension.design_bottom_navigation_active_item_max_width; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_bottom_navigation_active_text_size = global::Sarand.BusinessMgr.Resource.Dimension.design_bottom_navigation_active_text_size; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_bottom_navigation_elevation = global::Sarand.BusinessMgr.Resource.Dimension.design_bottom_navigation_elevation; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_bottom_navigation_height = global::Sarand.BusinessMgr.Resource.Dimension.design_bottom_navigation_height; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_bottom_navigation_item_max_width = global::Sarand.BusinessMgr.Resource.Dimension.design_bottom_navigation_item_max_width; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_bottom_navigation_item_min_width = global::Sarand.BusinessMgr.Resource.Dimension.design_bottom_navigation_item_min_width; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_bottom_navigation_margin = global::Sarand.BusinessMgr.Resource.Dimension.design_bottom_navigation_margin; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_bottom_navigation_shadow_height = global::Sarand.BusinessMgr.Resource.Dimension.design_bottom_navigation_shadow_height; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_bottom_navigation_text_size = global::Sarand.BusinessMgr.Resource.Dimension.design_bottom_navigation_text_size; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_bottom_sheet_modal_elevation = global::Sarand.BusinessMgr.Resource.Dimension.design_bottom_sheet_modal_elevation; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_bottom_sheet_peek_height_min = global::Sarand.BusinessMgr.Resource.Dimension.design_bottom_sheet_peek_height_min; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_fab_border_width = global::Sarand.BusinessMgr.Resource.Dimension.design_fab_border_width; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_fab_elevation = global::Sarand.BusinessMgr.Resource.Dimension.design_fab_elevation; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_fab_image_size = global::Sarand.BusinessMgr.Resource.Dimension.design_fab_image_size; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_fab_size_mini = global::Sarand.BusinessMgr.Resource.Dimension.design_fab_size_mini; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_fab_size_normal = global::Sarand.BusinessMgr.Resource.Dimension.design_fab_size_normal; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_fab_translation_z_pressed = global::Sarand.BusinessMgr.Resource.Dimension.design_fab_translation_z_pressed; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_navigation_elevation = global::Sarand.BusinessMgr.Resource.Dimension.design_navigation_elevation; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_navigation_icon_padding = global::Sarand.BusinessMgr.Resource.Dimension.design_navigation_icon_padding; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_navigation_icon_size = global::Sarand.BusinessMgr.Resource.Dimension.design_navigation_icon_size; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_navigation_max_width = global::Sarand.BusinessMgr.Resource.Dimension.design_navigation_max_width; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_navigation_padding_bottom = global::Sarand.BusinessMgr.Resource.Dimension.design_navigation_padding_bottom; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_navigation_separator_vertical_padding = global::Sarand.BusinessMgr.Resource.Dimension.design_navigation_separator_vertical_padding; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_snackbar_action_inline_max_width = global::Sarand.BusinessMgr.Resource.Dimension.design_snackbar_action_inline_max_width; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_snackbar_background_corner_radius = global::Sarand.BusinessMgr.Resource.Dimension.design_snackbar_background_corner_radius; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_snackbar_elevation = global::Sarand.BusinessMgr.Resource.Dimension.design_snackbar_elevation; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_snackbar_extra_spacing_horizontal = global::Sarand.BusinessMgr.Resource.Dimension.design_snackbar_extra_spacing_horizontal; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_snackbar_max_width = global::Sarand.BusinessMgr.Resource.Dimension.design_snackbar_max_width; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_snackbar_min_width = global::Sarand.BusinessMgr.Resource.Dimension.design_snackbar_min_width; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_snackbar_padding_horizontal = global::Sarand.BusinessMgr.Resource.Dimension.design_snackbar_padding_horizontal; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_snackbar_padding_vertical = global::Sarand.BusinessMgr.Resource.Dimension.design_snackbar_padding_vertical; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_snackbar_padding_vertical_2lines = global::Sarand.BusinessMgr.Resource.Dimension.design_snackbar_padding_vertical_2lines; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_snackbar_text_size = global::Sarand.BusinessMgr.Resource.Dimension.design_snackbar_text_size; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_tab_max_width = global::Sarand.BusinessMgr.Resource.Dimension.design_tab_max_width; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_tab_scrollable_min_width = global::Sarand.BusinessMgr.Resource.Dimension.design_tab_scrollable_min_width; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_tab_text_size = global::Sarand.BusinessMgr.Resource.Dimension.design_tab_text_size; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.design_tab_text_size_2line = global::Sarand.BusinessMgr.Resource.Dimension.design_tab_text_size_2line; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.disabled_alpha_material_dark = global::Sarand.BusinessMgr.Resource.Dimension.disabled_alpha_material_dark; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.disabled_alpha_material_light = global::Sarand.BusinessMgr.Resource.Dimension.disabled_alpha_material_light; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.fastscroll_default_thickness = global::Sarand.BusinessMgr.Resource.Dimension.fastscroll_default_thickness; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.fastscroll_margin = global::Sarand.BusinessMgr.Resource.Dimension.fastscroll_margin; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.fastscroll_minimum_range = global::Sarand.BusinessMgr.Resource.Dimension.fastscroll_minimum_range; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.highlight_alpha_material_colored = global::Sarand.BusinessMgr.Resource.Dimension.highlight_alpha_material_colored; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.highlight_alpha_material_dark = global::Sarand.BusinessMgr.Resource.Dimension.highlight_alpha_material_dark; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.highlight_alpha_material_light = global::Sarand.BusinessMgr.Resource.Dimension.highlight_alpha_material_light; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.hint_alpha_material_dark = global::Sarand.BusinessMgr.Resource.Dimension.hint_alpha_material_dark; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.hint_alpha_material_light = global::Sarand.BusinessMgr.Resource.Dimension.hint_alpha_material_light; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.hint_pressed_alpha_material_dark = global::Sarand.BusinessMgr.Resource.Dimension.hint_pressed_alpha_material_dark; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.hint_pressed_alpha_material_light = global::Sarand.BusinessMgr.Resource.Dimension.hint_pressed_alpha_material_light; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.item_touch_helper_max_drag_scroll_per_frame = global::Sarand.BusinessMgr.Resource.Dimension.item_touch_helper_max_drag_scroll_per_frame; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.item_touch_helper_swipe_escape_max_velocity = global::Sarand.BusinessMgr.Resource.Dimension.item_touch_helper_swipe_escape_max_velocity; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.item_touch_helper_swipe_escape_velocity = global::Sarand.BusinessMgr.Resource.Dimension.item_touch_helper_swipe_escape_velocity; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.notification_action_icon_size = global::Sarand.BusinessMgr.Resource.Dimension.notification_action_icon_size; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.notification_action_text_size = global::Sarand.BusinessMgr.Resource.Dimension.notification_action_text_size; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.notification_big_circle_margin = global::Sarand.BusinessMgr.Resource.Dimension.notification_big_circle_margin; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.notification_content_margin_start = global::Sarand.BusinessMgr.Resource.Dimension.notification_content_margin_start; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.notification_large_icon_height = global::Sarand.BusinessMgr.Resource.Dimension.notification_large_icon_height; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.notification_large_icon_width = global::Sarand.BusinessMgr.Resource.Dimension.notification_large_icon_width; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.notification_main_column_padding_top = global::Sarand.BusinessMgr.Resource.Dimension.notification_main_column_padding_top; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.notification_media_narrow_margin = global::Sarand.BusinessMgr.Resource.Dimension.notification_media_narrow_margin; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.notification_right_icon_size = global::Sarand.BusinessMgr.Resource.Dimension.notification_right_icon_size; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.notification_right_side_padding_top = global::Sarand.BusinessMgr.Resource.Dimension.notification_right_side_padding_top; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.notification_small_icon_background_padding = global::Sarand.BusinessMgr.Resource.Dimension.notification_small_icon_background_padding; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.notification_small_icon_size_as_large = global::Sarand.BusinessMgr.Resource.Dimension.notification_small_icon_size_as_large; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.notification_subtext_size = global::Sarand.BusinessMgr.Resource.Dimension.notification_subtext_size; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.notification_top_pad = global::Sarand.BusinessMgr.Resource.Dimension.notification_top_pad; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.notification_top_pad_large_text = global::Sarand.BusinessMgr.Resource.Dimension.notification_top_pad_large_text; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.tooltip_corner_radius = global::Sarand.BusinessMgr.Resource.Dimension.tooltip_corner_radius; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.tooltip_horizontal_padding = global::Sarand.BusinessMgr.Resource.Dimension.tooltip_horizontal_padding; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.tooltip_margin = global::Sarand.BusinessMgr.Resource.Dimension.tooltip_margin; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.tooltip_precise_anchor_extra_offset = global::Sarand.BusinessMgr.Resource.Dimension.tooltip_precise_anchor_extra_offset; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.tooltip_precise_anchor_threshold = global::Sarand.BusinessMgr.Resource.Dimension.tooltip_precise_anchor_threshold; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.tooltip_vertical_padding = global::Sarand.BusinessMgr.Resource.Dimension.tooltip_vertical_padding; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.tooltip_y_offset_non_touch = global::Sarand.BusinessMgr.Resource.Dimension.tooltip_y_offset_non_touch; + global::Xamarin.Forms.Platform.Android.Resource.Dimension.tooltip_y_offset_touch = global::Sarand.BusinessMgr.Resource.Dimension.tooltip_y_offset_touch; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ab_share_pack_mtrl_alpha = global::Sarand.BusinessMgr.Resource.Drawable.abc_ab_share_pack_mtrl_alpha; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_action_bar_item_background_material = global::Sarand.BusinessMgr.Resource.Drawable.abc_action_bar_item_background_material; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_btn_borderless_material = global::Sarand.BusinessMgr.Resource.Drawable.abc_btn_borderless_material; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_btn_check_material = global::Sarand.BusinessMgr.Resource.Drawable.abc_btn_check_material; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_btn_check_to_on_mtrl_000 = global::Sarand.BusinessMgr.Resource.Drawable.abc_btn_check_to_on_mtrl_000; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_btn_check_to_on_mtrl_015 = global::Sarand.BusinessMgr.Resource.Drawable.abc_btn_check_to_on_mtrl_015; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_btn_colored_material = global::Sarand.BusinessMgr.Resource.Drawable.abc_btn_colored_material; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_btn_default_mtrl_shape = global::Sarand.BusinessMgr.Resource.Drawable.abc_btn_default_mtrl_shape; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_btn_radio_material = global::Sarand.BusinessMgr.Resource.Drawable.abc_btn_radio_material; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_btn_radio_to_on_mtrl_000 = global::Sarand.BusinessMgr.Resource.Drawable.abc_btn_radio_to_on_mtrl_000; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_btn_radio_to_on_mtrl_015 = global::Sarand.BusinessMgr.Resource.Drawable.abc_btn_radio_to_on_mtrl_015; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_btn_switch_to_on_mtrl_00001 = global::Sarand.BusinessMgr.Resource.Drawable.abc_btn_switch_to_on_mtrl_00001; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_btn_switch_to_on_mtrl_00012 = global::Sarand.BusinessMgr.Resource.Drawable.abc_btn_switch_to_on_mtrl_00012; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_cab_background_internal_bg = global::Sarand.BusinessMgr.Resource.Drawable.abc_cab_background_internal_bg; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_cab_background_top_material = global::Sarand.BusinessMgr.Resource.Drawable.abc_cab_background_top_material; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_cab_background_top_mtrl_alpha = global::Sarand.BusinessMgr.Resource.Drawable.abc_cab_background_top_mtrl_alpha; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_control_background_material = global::Sarand.BusinessMgr.Resource.Drawable.abc_control_background_material; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_dialog_material_background = global::Sarand.BusinessMgr.Resource.Drawable.abc_dialog_material_background; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_edit_text_material = global::Sarand.BusinessMgr.Resource.Drawable.abc_edit_text_material; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ic_ab_back_material = global::Sarand.BusinessMgr.Resource.Drawable.abc_ic_ab_back_material; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ic_arrow_drop_right_black_24dp = global::Sarand.BusinessMgr.Resource.Drawable.abc_ic_arrow_drop_right_black_24dp; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ic_clear_material = global::Sarand.BusinessMgr.Resource.Drawable.abc_ic_clear_material; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ic_commit_search_api_mtrl_alpha = global::Sarand.BusinessMgr.Resource.Drawable.abc_ic_commit_search_api_mtrl_alpha; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ic_go_search_api_material = global::Sarand.BusinessMgr.Resource.Drawable.abc_ic_go_search_api_material; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ic_menu_copy_mtrl_am_alpha = global::Sarand.BusinessMgr.Resource.Drawable.abc_ic_menu_copy_mtrl_am_alpha; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ic_menu_cut_mtrl_alpha = global::Sarand.BusinessMgr.Resource.Drawable.abc_ic_menu_cut_mtrl_alpha; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ic_menu_overflow_material = global::Sarand.BusinessMgr.Resource.Drawable.abc_ic_menu_overflow_material; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ic_menu_paste_mtrl_am_alpha = global::Sarand.BusinessMgr.Resource.Drawable.abc_ic_menu_paste_mtrl_am_alpha; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ic_menu_selectall_mtrl_alpha = global::Sarand.BusinessMgr.Resource.Drawable.abc_ic_menu_selectall_mtrl_alpha; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ic_menu_share_mtrl_alpha = global::Sarand.BusinessMgr.Resource.Drawable.abc_ic_menu_share_mtrl_alpha; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ic_search_api_material = global::Sarand.BusinessMgr.Resource.Drawable.abc_ic_search_api_material; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ic_star_black_16dp = global::Sarand.BusinessMgr.Resource.Drawable.abc_ic_star_black_16dp; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ic_star_black_36dp = global::Sarand.BusinessMgr.Resource.Drawable.abc_ic_star_black_36dp; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ic_star_black_48dp = global::Sarand.BusinessMgr.Resource.Drawable.abc_ic_star_black_48dp; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ic_star_half_black_16dp = global::Sarand.BusinessMgr.Resource.Drawable.abc_ic_star_half_black_16dp; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ic_star_half_black_36dp = global::Sarand.BusinessMgr.Resource.Drawable.abc_ic_star_half_black_36dp; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ic_star_half_black_48dp = global::Sarand.BusinessMgr.Resource.Drawable.abc_ic_star_half_black_48dp; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ic_voice_search_api_material = global::Sarand.BusinessMgr.Resource.Drawable.abc_ic_voice_search_api_material; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_item_background_holo_dark = global::Sarand.BusinessMgr.Resource.Drawable.abc_item_background_holo_dark; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_item_background_holo_light = global::Sarand.BusinessMgr.Resource.Drawable.abc_item_background_holo_light; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_list_divider_mtrl_alpha = global::Sarand.BusinessMgr.Resource.Drawable.abc_list_divider_mtrl_alpha; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_list_focused_holo = global::Sarand.BusinessMgr.Resource.Drawable.abc_list_focused_holo; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_list_longpressed_holo = global::Sarand.BusinessMgr.Resource.Drawable.abc_list_longpressed_holo; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_list_pressed_holo_dark = global::Sarand.BusinessMgr.Resource.Drawable.abc_list_pressed_holo_dark; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_list_pressed_holo_light = global::Sarand.BusinessMgr.Resource.Drawable.abc_list_pressed_holo_light; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_list_selector_background_transition_holo_dark = global::Sarand.BusinessMgr.Resource.Drawable.abc_list_selector_background_transition_holo_dark; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_list_selector_background_transition_holo_light = global::Sarand.BusinessMgr.Resource.Drawable.abc_list_selector_background_transition_holo_light; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_list_selector_disabled_holo_dark = global::Sarand.BusinessMgr.Resource.Drawable.abc_list_selector_disabled_holo_dark; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_list_selector_disabled_holo_light = global::Sarand.BusinessMgr.Resource.Drawable.abc_list_selector_disabled_holo_light; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_list_selector_holo_dark = global::Sarand.BusinessMgr.Resource.Drawable.abc_list_selector_holo_dark; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_list_selector_holo_light = global::Sarand.BusinessMgr.Resource.Drawable.abc_list_selector_holo_light; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_menu_hardkey_panel_mtrl_mult = global::Sarand.BusinessMgr.Resource.Drawable.abc_menu_hardkey_panel_mtrl_mult; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_popup_background_mtrl_mult = global::Sarand.BusinessMgr.Resource.Drawable.abc_popup_background_mtrl_mult; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ratingbar_indicator_material = global::Sarand.BusinessMgr.Resource.Drawable.abc_ratingbar_indicator_material; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ratingbar_material = global::Sarand.BusinessMgr.Resource.Drawable.abc_ratingbar_material; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_ratingbar_small_material = global::Sarand.BusinessMgr.Resource.Drawable.abc_ratingbar_small_material; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_scrubber_control_off_mtrl_alpha = global::Sarand.BusinessMgr.Resource.Drawable.abc_scrubber_control_off_mtrl_alpha; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_scrubber_control_to_pressed_mtrl_000 = global::Sarand.BusinessMgr.Resource.Drawable.abc_scrubber_control_to_pressed_mtrl_000; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_scrubber_control_to_pressed_mtrl_005 = global::Sarand.BusinessMgr.Resource.Drawable.abc_scrubber_control_to_pressed_mtrl_005; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_scrubber_primary_mtrl_alpha = global::Sarand.BusinessMgr.Resource.Drawable.abc_scrubber_primary_mtrl_alpha; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_scrubber_track_mtrl_alpha = global::Sarand.BusinessMgr.Resource.Drawable.abc_scrubber_track_mtrl_alpha; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_seekbar_thumb_material = global::Sarand.BusinessMgr.Resource.Drawable.abc_seekbar_thumb_material; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_seekbar_tick_mark_material = global::Sarand.BusinessMgr.Resource.Drawable.abc_seekbar_tick_mark_material; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_seekbar_track_material = global::Sarand.BusinessMgr.Resource.Drawable.abc_seekbar_track_material; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_spinner_mtrl_am_alpha = global::Sarand.BusinessMgr.Resource.Drawable.abc_spinner_mtrl_am_alpha; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_spinner_textfield_background_material = global::Sarand.BusinessMgr.Resource.Drawable.abc_spinner_textfield_background_material; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_switch_thumb_material = global::Sarand.BusinessMgr.Resource.Drawable.abc_switch_thumb_material; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_switch_track_mtrl_alpha = global::Sarand.BusinessMgr.Resource.Drawable.abc_switch_track_mtrl_alpha; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_tab_indicator_material = global::Sarand.BusinessMgr.Resource.Drawable.abc_tab_indicator_material; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_tab_indicator_mtrl_alpha = global::Sarand.BusinessMgr.Resource.Drawable.abc_tab_indicator_mtrl_alpha; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_text_cursor_material = global::Sarand.BusinessMgr.Resource.Drawable.abc_text_cursor_material; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_text_select_handle_left_mtrl_dark = global::Sarand.BusinessMgr.Resource.Drawable.abc_text_select_handle_left_mtrl_dark; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_text_select_handle_left_mtrl_light = global::Sarand.BusinessMgr.Resource.Drawable.abc_text_select_handle_left_mtrl_light; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_text_select_handle_middle_mtrl_dark = global::Sarand.BusinessMgr.Resource.Drawable.abc_text_select_handle_middle_mtrl_dark; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_text_select_handle_middle_mtrl_light = global::Sarand.BusinessMgr.Resource.Drawable.abc_text_select_handle_middle_mtrl_light; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_text_select_handle_right_mtrl_dark = global::Sarand.BusinessMgr.Resource.Drawable.abc_text_select_handle_right_mtrl_dark; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_text_select_handle_right_mtrl_light = global::Sarand.BusinessMgr.Resource.Drawable.abc_text_select_handle_right_mtrl_light; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_textfield_activated_mtrl_alpha = global::Sarand.BusinessMgr.Resource.Drawable.abc_textfield_activated_mtrl_alpha; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_textfield_default_mtrl_alpha = global::Sarand.BusinessMgr.Resource.Drawable.abc_textfield_default_mtrl_alpha; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_textfield_search_activated_mtrl_alpha = global::Sarand.BusinessMgr.Resource.Drawable.abc_textfield_search_activated_mtrl_alpha; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_textfield_search_default_mtrl_alpha = global::Sarand.BusinessMgr.Resource.Drawable.abc_textfield_search_default_mtrl_alpha; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_textfield_search_material = global::Sarand.BusinessMgr.Resource.Drawable.abc_textfield_search_material; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.abc_vector_test = global::Sarand.BusinessMgr.Resource.Drawable.abc_vector_test; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.avd_hide_password = global::Sarand.BusinessMgr.Resource.Drawable.avd_hide_password; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.avd_hide_password_1 = global::Sarand.BusinessMgr.Resource.Drawable.avd_hide_password_1; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.avd_hide_password_2 = global::Sarand.BusinessMgr.Resource.Drawable.avd_hide_password_2; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.avd_hide_password_3 = global::Sarand.BusinessMgr.Resource.Drawable.avd_hide_password_3; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.avd_show_password = global::Sarand.BusinessMgr.Resource.Drawable.avd_show_password; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.avd_show_password_1 = global::Sarand.BusinessMgr.Resource.Drawable.avd_show_password_1; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.avd_show_password_2 = global::Sarand.BusinessMgr.Resource.Drawable.avd_show_password_2; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.avd_show_password_3 = global::Sarand.BusinessMgr.Resource.Drawable.avd_show_password_3; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.design_bottom_navigation_item_background = global::Sarand.BusinessMgr.Resource.Drawable.design_bottom_navigation_item_background; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.design_fab_background = global::Sarand.BusinessMgr.Resource.Drawable.design_fab_background; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.design_ic_visibility = global::Sarand.BusinessMgr.Resource.Drawable.design_ic_visibility; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.design_ic_visibility_off = global::Sarand.BusinessMgr.Resource.Drawable.design_ic_visibility_off; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.design_password_eye = global::Sarand.BusinessMgr.Resource.Drawable.design_password_eye; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.design_snackbar_background = global::Sarand.BusinessMgr.Resource.Drawable.design_snackbar_background; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.navigation_empty_icon = global::Sarand.BusinessMgr.Resource.Drawable.navigation_empty_icon; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.notification_action_background = global::Sarand.BusinessMgr.Resource.Drawable.notification_action_background; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.notification_bg = global::Sarand.BusinessMgr.Resource.Drawable.notification_bg; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.notification_bg_low = global::Sarand.BusinessMgr.Resource.Drawable.notification_bg_low; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.notification_bg_low_normal = global::Sarand.BusinessMgr.Resource.Drawable.notification_bg_low_normal; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.notification_bg_low_pressed = global::Sarand.BusinessMgr.Resource.Drawable.notification_bg_low_pressed; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.notification_bg_normal = global::Sarand.BusinessMgr.Resource.Drawable.notification_bg_normal; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.notification_bg_normal_pressed = global::Sarand.BusinessMgr.Resource.Drawable.notification_bg_normal_pressed; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.notification_icon_background = global::Sarand.BusinessMgr.Resource.Drawable.notification_icon_background; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.notification_template_icon_bg = global::Sarand.BusinessMgr.Resource.Drawable.notification_template_icon_bg; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.notification_template_icon_low_bg = global::Sarand.BusinessMgr.Resource.Drawable.notification_template_icon_low_bg; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.notification_tile_bg = global::Sarand.BusinessMgr.Resource.Drawable.notification_tile_bg; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.notify_panel_notification_icon_bg = global::Sarand.BusinessMgr.Resource.Drawable.notify_panel_notification_icon_bg; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.tooltip_frame_dark = global::Sarand.BusinessMgr.Resource.Drawable.tooltip_frame_dark; + global::Xamarin.Forms.Platform.Android.Resource.Drawable.tooltip_frame_light = global::Sarand.BusinessMgr.Resource.Drawable.tooltip_frame_light; + global::Xamarin.Forms.Platform.Android.Resource.Id.ALT = global::Sarand.BusinessMgr.Resource.Id.ALT; + global::Xamarin.Forms.Platform.Android.Resource.Id.CTRL = global::Sarand.BusinessMgr.Resource.Id.CTRL; + global::Xamarin.Forms.Platform.Android.Resource.Id.FUNCTION = global::Sarand.BusinessMgr.Resource.Id.FUNCTION; + global::Xamarin.Forms.Platform.Android.Resource.Id.META = global::Sarand.BusinessMgr.Resource.Id.META; + global::Xamarin.Forms.Platform.Android.Resource.Id.SHIFT = global::Sarand.BusinessMgr.Resource.Id.SHIFT; + global::Xamarin.Forms.Platform.Android.Resource.Id.SYM = global::Sarand.BusinessMgr.Resource.Id.SYM; + global::Xamarin.Forms.Platform.Android.Resource.Id.action0 = global::Sarand.BusinessMgr.Resource.Id.action0; + global::Xamarin.Forms.Platform.Android.Resource.Id.action_bar = global::Sarand.BusinessMgr.Resource.Id.action_bar; + global::Xamarin.Forms.Platform.Android.Resource.Id.action_bar_activity_content = global::Sarand.BusinessMgr.Resource.Id.action_bar_activity_content; + global::Xamarin.Forms.Platform.Android.Resource.Id.action_bar_container = global::Sarand.BusinessMgr.Resource.Id.action_bar_container; + global::Xamarin.Forms.Platform.Android.Resource.Id.action_bar_root = global::Sarand.BusinessMgr.Resource.Id.action_bar_root; + global::Xamarin.Forms.Platform.Android.Resource.Id.action_bar_spinner = global::Sarand.BusinessMgr.Resource.Id.action_bar_spinner; + global::Xamarin.Forms.Platform.Android.Resource.Id.action_bar_subtitle = global::Sarand.BusinessMgr.Resource.Id.action_bar_subtitle; + global::Xamarin.Forms.Platform.Android.Resource.Id.action_bar_title = global::Sarand.BusinessMgr.Resource.Id.action_bar_title; + global::Xamarin.Forms.Platform.Android.Resource.Id.action_container = global::Sarand.BusinessMgr.Resource.Id.action_container; + global::Xamarin.Forms.Platform.Android.Resource.Id.action_context_bar = global::Sarand.BusinessMgr.Resource.Id.action_context_bar; + global::Xamarin.Forms.Platform.Android.Resource.Id.action_divider = global::Sarand.BusinessMgr.Resource.Id.action_divider; + global::Xamarin.Forms.Platform.Android.Resource.Id.action_image = global::Sarand.BusinessMgr.Resource.Id.action_image; + global::Xamarin.Forms.Platform.Android.Resource.Id.action_menu_divider = global::Sarand.BusinessMgr.Resource.Id.action_menu_divider; + global::Xamarin.Forms.Platform.Android.Resource.Id.action_menu_presenter = global::Sarand.BusinessMgr.Resource.Id.action_menu_presenter; + global::Xamarin.Forms.Platform.Android.Resource.Id.action_mode_bar = global::Sarand.BusinessMgr.Resource.Id.action_mode_bar; + global::Xamarin.Forms.Platform.Android.Resource.Id.action_mode_bar_stub = global::Sarand.BusinessMgr.Resource.Id.action_mode_bar_stub; + global::Xamarin.Forms.Platform.Android.Resource.Id.action_mode_close_button = global::Sarand.BusinessMgr.Resource.Id.action_mode_close_button; + global::Xamarin.Forms.Platform.Android.Resource.Id.action_text = global::Sarand.BusinessMgr.Resource.Id.action_text; + global::Xamarin.Forms.Platform.Android.Resource.Id.actions = global::Sarand.BusinessMgr.Resource.Id.actions; + global::Xamarin.Forms.Platform.Android.Resource.Id.activity_chooser_view_content = global::Sarand.BusinessMgr.Resource.Id.activity_chooser_view_content; + global::Xamarin.Forms.Platform.Android.Resource.Id.add = global::Sarand.BusinessMgr.Resource.Id.add; + global::Xamarin.Forms.Platform.Android.Resource.Id.alertTitle = global::Sarand.BusinessMgr.Resource.Id.alertTitle; + global::Xamarin.Forms.Platform.Android.Resource.Id.all = global::Sarand.BusinessMgr.Resource.Id.all; + global::Xamarin.Forms.Platform.Android.Resource.Id.always = global::Sarand.BusinessMgr.Resource.Id.always; + global::Xamarin.Forms.Platform.Android.Resource.Id.async = global::Sarand.BusinessMgr.Resource.Id.async; + global::Xamarin.Forms.Platform.Android.Resource.Id.auto = global::Sarand.BusinessMgr.Resource.Id.auto; + global::Xamarin.Forms.Platform.Android.Resource.Id.beginning = global::Sarand.BusinessMgr.Resource.Id.beginning; + global::Xamarin.Forms.Platform.Android.Resource.Id.blocking = global::Sarand.BusinessMgr.Resource.Id.blocking; + global::Xamarin.Forms.Platform.Android.Resource.Id.bottom = global::Sarand.BusinessMgr.Resource.Id.bottom; + global::Xamarin.Forms.Platform.Android.Resource.Id.bottomtab_navarea = global::Sarand.BusinessMgr.Resource.Id.bottomtab_navarea; + global::Xamarin.Forms.Platform.Android.Resource.Id.bottomtab_tabbar = global::Sarand.BusinessMgr.Resource.Id.bottomtab_tabbar; + global::Xamarin.Forms.Platform.Android.Resource.Id.buttonPanel = global::Sarand.BusinessMgr.Resource.Id.buttonPanel; + global::Xamarin.Forms.Platform.Android.Resource.Id.cancel_action = global::Sarand.BusinessMgr.Resource.Id.cancel_action; + global::Xamarin.Forms.Platform.Android.Resource.Id.center = global::Sarand.BusinessMgr.Resource.Id.center; + global::Xamarin.Forms.Platform.Android.Resource.Id.center_horizontal = global::Sarand.BusinessMgr.Resource.Id.center_horizontal; + global::Xamarin.Forms.Platform.Android.Resource.Id.center_vertical = global::Sarand.BusinessMgr.Resource.Id.center_vertical; + global::Xamarin.Forms.Platform.Android.Resource.Id.checkbox = global::Sarand.BusinessMgr.Resource.Id.checkbox; + global::Xamarin.Forms.Platform.Android.Resource.Id.chronometer = global::Sarand.BusinessMgr.Resource.Id.chronometer; + global::Xamarin.Forms.Platform.Android.Resource.Id.clip_horizontal = global::Sarand.BusinessMgr.Resource.Id.clip_horizontal; + global::Xamarin.Forms.Platform.Android.Resource.Id.clip_vertical = global::Sarand.BusinessMgr.Resource.Id.clip_vertical; + global::Xamarin.Forms.Platform.Android.Resource.Id.collapseActionView = global::Sarand.BusinessMgr.Resource.Id.collapseActionView; + global::Xamarin.Forms.Platform.Android.Resource.Id.container = global::Sarand.BusinessMgr.Resource.Id.container; + global::Xamarin.Forms.Platform.Android.Resource.Id.contentPanel = global::Sarand.BusinessMgr.Resource.Id.contentPanel; + global::Xamarin.Forms.Platform.Android.Resource.Id.coordinator = global::Sarand.BusinessMgr.Resource.Id.coordinator; + global::Xamarin.Forms.Platform.Android.Resource.Id.custom = global::Sarand.BusinessMgr.Resource.Id.custom; + global::Xamarin.Forms.Platform.Android.Resource.Id.customPanel = global::Sarand.BusinessMgr.Resource.Id.customPanel; + global::Xamarin.Forms.Platform.Android.Resource.Id.decor_content_parent = global::Sarand.BusinessMgr.Resource.Id.decor_content_parent; + global::Xamarin.Forms.Platform.Android.Resource.Id.default_activity_button = global::Sarand.BusinessMgr.Resource.Id.default_activity_button; + global::Xamarin.Forms.Platform.Android.Resource.Id.design_bottom_sheet = global::Sarand.BusinessMgr.Resource.Id.design_bottom_sheet; + global::Xamarin.Forms.Platform.Android.Resource.Id.design_menu_item_action_area = global::Sarand.BusinessMgr.Resource.Id.design_menu_item_action_area; + global::Xamarin.Forms.Platform.Android.Resource.Id.design_menu_item_action_area_stub = global::Sarand.BusinessMgr.Resource.Id.design_menu_item_action_area_stub; + global::Xamarin.Forms.Platform.Android.Resource.Id.design_menu_item_text = global::Sarand.BusinessMgr.Resource.Id.design_menu_item_text; + global::Xamarin.Forms.Platform.Android.Resource.Id.design_navigation_view = global::Sarand.BusinessMgr.Resource.Id.design_navigation_view; + global::Xamarin.Forms.Platform.Android.Resource.Id.disableHome = global::Sarand.BusinessMgr.Resource.Id.disableHome; + global::Xamarin.Forms.Platform.Android.Resource.Id.edit_query = global::Sarand.BusinessMgr.Resource.Id.edit_query; + global::Xamarin.Forms.Platform.Android.Resource.Id.end = global::Sarand.BusinessMgr.Resource.Id.end; + global::Xamarin.Forms.Platform.Android.Resource.Id.end_padder = global::Sarand.BusinessMgr.Resource.Id.end_padder; + global::Xamarin.Forms.Platform.Android.Resource.Id.enterAlways = global::Sarand.BusinessMgr.Resource.Id.enterAlways; + global::Xamarin.Forms.Platform.Android.Resource.Id.enterAlwaysCollapsed = global::Sarand.BusinessMgr.Resource.Id.enterAlwaysCollapsed; + global::Xamarin.Forms.Platform.Android.Resource.Id.exitUntilCollapsed = global::Sarand.BusinessMgr.Resource.Id.exitUntilCollapsed; + global::Xamarin.Forms.Platform.Android.Resource.Id.expand_activities_button = global::Sarand.BusinessMgr.Resource.Id.expand_activities_button; + global::Xamarin.Forms.Platform.Android.Resource.Id.expanded_menu = global::Sarand.BusinessMgr.Resource.Id.expanded_menu; + global::Xamarin.Forms.Platform.Android.Resource.Id.fill = global::Sarand.BusinessMgr.Resource.Id.fill; + global::Xamarin.Forms.Platform.Android.Resource.Id.fill_horizontal = global::Sarand.BusinessMgr.Resource.Id.fill_horizontal; + global::Xamarin.Forms.Platform.Android.Resource.Id.fill_vertical = global::Sarand.BusinessMgr.Resource.Id.fill_vertical; + global::Xamarin.Forms.Platform.Android.Resource.Id.@fixed = global::Sarand.BusinessMgr.Resource.Id.@fixed; + global::Xamarin.Forms.Platform.Android.Resource.Id.flyoutcontent_appbar = global::Sarand.BusinessMgr.Resource.Id.flyoutcontent_appbar; + global::Xamarin.Forms.Platform.Android.Resource.Id.flyoutcontent_recycler = global::Sarand.BusinessMgr.Resource.Id.flyoutcontent_recycler; + global::Xamarin.Forms.Platform.Android.Resource.Id.forever = global::Sarand.BusinessMgr.Resource.Id.forever; + global::Xamarin.Forms.Platform.Android.Resource.Id.ghost_view = global::Sarand.BusinessMgr.Resource.Id.ghost_view; + global::Xamarin.Forms.Platform.Android.Resource.Id.home = global::Sarand.BusinessMgr.Resource.Id.home; + global::Xamarin.Forms.Platform.Android.Resource.Id.homeAsUp = global::Sarand.BusinessMgr.Resource.Id.homeAsUp; + global::Xamarin.Forms.Platform.Android.Resource.Id.icon = global::Sarand.BusinessMgr.Resource.Id.icon; + global::Xamarin.Forms.Platform.Android.Resource.Id.icon_group = global::Sarand.BusinessMgr.Resource.Id.icon_group; + global::Xamarin.Forms.Platform.Android.Resource.Id.ifRoom = global::Sarand.BusinessMgr.Resource.Id.ifRoom; + global::Xamarin.Forms.Platform.Android.Resource.Id.image = global::Sarand.BusinessMgr.Resource.Id.image; + global::Xamarin.Forms.Platform.Android.Resource.Id.info = global::Sarand.BusinessMgr.Resource.Id.info; + global::Xamarin.Forms.Platform.Android.Resource.Id.italic = global::Sarand.BusinessMgr.Resource.Id.italic; + global::Xamarin.Forms.Platform.Android.Resource.Id.item_touch_helper_previous_elevation = global::Sarand.BusinessMgr.Resource.Id.item_touch_helper_previous_elevation; + global::Xamarin.Forms.Platform.Android.Resource.Id.largeLabel = global::Sarand.BusinessMgr.Resource.Id.largeLabel; + global::Xamarin.Forms.Platform.Android.Resource.Id.left = global::Sarand.BusinessMgr.Resource.Id.left; + global::Xamarin.Forms.Platform.Android.Resource.Id.line1 = global::Sarand.BusinessMgr.Resource.Id.line1; + global::Xamarin.Forms.Platform.Android.Resource.Id.line3 = global::Sarand.BusinessMgr.Resource.Id.line3; + global::Xamarin.Forms.Platform.Android.Resource.Id.listMode = global::Sarand.BusinessMgr.Resource.Id.listMode; + global::Xamarin.Forms.Platform.Android.Resource.Id.list_item = global::Sarand.BusinessMgr.Resource.Id.list_item; + global::Xamarin.Forms.Platform.Android.Resource.Id.main_appbar = global::Sarand.BusinessMgr.Resource.Id.main_appbar; + global::Xamarin.Forms.Platform.Android.Resource.Id.main_scrollview = global::Sarand.BusinessMgr.Resource.Id.main_scrollview; + global::Xamarin.Forms.Platform.Android.Resource.Id.main_tablayout = global::Sarand.BusinessMgr.Resource.Id.main_tablayout; + global::Xamarin.Forms.Platform.Android.Resource.Id.main_toolbar = global::Sarand.BusinessMgr.Resource.Id.main_toolbar; + global::Xamarin.Forms.Platform.Android.Resource.Id.masked = global::Sarand.BusinessMgr.Resource.Id.masked; + global::Xamarin.Forms.Platform.Android.Resource.Id.media_actions = global::Sarand.BusinessMgr.Resource.Id.media_actions; + global::Xamarin.Forms.Platform.Android.Resource.Id.message = global::Sarand.BusinessMgr.Resource.Id.message; + global::Xamarin.Forms.Platform.Android.Resource.Id.middle = global::Sarand.BusinessMgr.Resource.Id.middle; + global::Xamarin.Forms.Platform.Android.Resource.Id.mini = global::Sarand.BusinessMgr.Resource.Id.mini; + global::Xamarin.Forms.Platform.Android.Resource.Id.multiply = global::Sarand.BusinessMgr.Resource.Id.multiply; + global::Xamarin.Forms.Platform.Android.Resource.Id.navigation_header_container = global::Sarand.BusinessMgr.Resource.Id.navigation_header_container; + global::Xamarin.Forms.Platform.Android.Resource.Id.never = global::Sarand.BusinessMgr.Resource.Id.never; + global::Xamarin.Forms.Platform.Android.Resource.Id.none = global::Sarand.BusinessMgr.Resource.Id.none; + global::Xamarin.Forms.Platform.Android.Resource.Id.normal = global::Sarand.BusinessMgr.Resource.Id.normal; + global::Xamarin.Forms.Platform.Android.Resource.Id.notification_background = global::Sarand.BusinessMgr.Resource.Id.notification_background; + global::Xamarin.Forms.Platform.Android.Resource.Id.notification_main_column = global::Sarand.BusinessMgr.Resource.Id.notification_main_column; + global::Xamarin.Forms.Platform.Android.Resource.Id.notification_main_column_container = global::Sarand.BusinessMgr.Resource.Id.notification_main_column_container; + global::Xamarin.Forms.Platform.Android.Resource.Id.parallax = global::Sarand.BusinessMgr.Resource.Id.parallax; + global::Xamarin.Forms.Platform.Android.Resource.Id.parentPanel = global::Sarand.BusinessMgr.Resource.Id.parentPanel; + global::Xamarin.Forms.Platform.Android.Resource.Id.parent_matrix = global::Sarand.BusinessMgr.Resource.Id.parent_matrix; + global::Xamarin.Forms.Platform.Android.Resource.Id.pin = global::Sarand.BusinessMgr.Resource.Id.pin; + global::Xamarin.Forms.Platform.Android.Resource.Id.progress_circular = global::Sarand.BusinessMgr.Resource.Id.progress_circular; + global::Xamarin.Forms.Platform.Android.Resource.Id.progress_horizontal = global::Sarand.BusinessMgr.Resource.Id.progress_horizontal; + global::Xamarin.Forms.Platform.Android.Resource.Id.radio = global::Sarand.BusinessMgr.Resource.Id.radio; + global::Xamarin.Forms.Platform.Android.Resource.Id.right = global::Sarand.BusinessMgr.Resource.Id.right; + global::Xamarin.Forms.Platform.Android.Resource.Id.right_icon = global::Sarand.BusinessMgr.Resource.Id.right_icon; + global::Xamarin.Forms.Platform.Android.Resource.Id.right_side = global::Sarand.BusinessMgr.Resource.Id.right_side; + global::Xamarin.Forms.Platform.Android.Resource.Id.save_image_matrix = global::Sarand.BusinessMgr.Resource.Id.save_image_matrix; + global::Xamarin.Forms.Platform.Android.Resource.Id.save_non_transition_alpha = global::Sarand.BusinessMgr.Resource.Id.save_non_transition_alpha; + global::Xamarin.Forms.Platform.Android.Resource.Id.save_scale_type = global::Sarand.BusinessMgr.Resource.Id.save_scale_type; + global::Xamarin.Forms.Platform.Android.Resource.Id.screen = global::Sarand.BusinessMgr.Resource.Id.screen; + global::Xamarin.Forms.Platform.Android.Resource.Id.scroll = global::Sarand.BusinessMgr.Resource.Id.scroll; + global::Xamarin.Forms.Platform.Android.Resource.Id.scrollIndicatorDown = global::Sarand.BusinessMgr.Resource.Id.scrollIndicatorDown; + global::Xamarin.Forms.Platform.Android.Resource.Id.scrollIndicatorUp = global::Sarand.BusinessMgr.Resource.Id.scrollIndicatorUp; + global::Xamarin.Forms.Platform.Android.Resource.Id.scrollView = global::Sarand.BusinessMgr.Resource.Id.scrollView; + global::Xamarin.Forms.Platform.Android.Resource.Id.scrollable = global::Sarand.BusinessMgr.Resource.Id.scrollable; + global::Xamarin.Forms.Platform.Android.Resource.Id.search_badge = global::Sarand.BusinessMgr.Resource.Id.search_badge; + global::Xamarin.Forms.Platform.Android.Resource.Id.search_bar = global::Sarand.BusinessMgr.Resource.Id.search_bar; + global::Xamarin.Forms.Platform.Android.Resource.Id.search_button = global::Sarand.BusinessMgr.Resource.Id.search_button; + global::Xamarin.Forms.Platform.Android.Resource.Id.search_close_btn = global::Sarand.BusinessMgr.Resource.Id.search_close_btn; + global::Xamarin.Forms.Platform.Android.Resource.Id.search_edit_frame = global::Sarand.BusinessMgr.Resource.Id.search_edit_frame; + global::Xamarin.Forms.Platform.Android.Resource.Id.search_go_btn = global::Sarand.BusinessMgr.Resource.Id.search_go_btn; + global::Xamarin.Forms.Platform.Android.Resource.Id.search_mag_icon = global::Sarand.BusinessMgr.Resource.Id.search_mag_icon; + global::Xamarin.Forms.Platform.Android.Resource.Id.search_plate = global::Sarand.BusinessMgr.Resource.Id.search_plate; + global::Xamarin.Forms.Platform.Android.Resource.Id.search_src_text = global::Sarand.BusinessMgr.Resource.Id.search_src_text; + global::Xamarin.Forms.Platform.Android.Resource.Id.search_voice_btn = global::Sarand.BusinessMgr.Resource.Id.search_voice_btn; + global::Xamarin.Forms.Platform.Android.Resource.Id.select_dialog_listview = global::Sarand.BusinessMgr.Resource.Id.select_dialog_listview; + global::Xamarin.Forms.Platform.Android.Resource.Id.shellcontent_appbar = global::Sarand.BusinessMgr.Resource.Id.shellcontent_appbar; + global::Xamarin.Forms.Platform.Android.Resource.Id.shellcontent_scrollview = global::Sarand.BusinessMgr.Resource.Id.shellcontent_scrollview; + global::Xamarin.Forms.Platform.Android.Resource.Id.shellcontent_toolbar = global::Sarand.BusinessMgr.Resource.Id.shellcontent_toolbar; + global::Xamarin.Forms.Platform.Android.Resource.Id.shortcut = global::Sarand.BusinessMgr.Resource.Id.shortcut; + global::Xamarin.Forms.Platform.Android.Resource.Id.showCustom = global::Sarand.BusinessMgr.Resource.Id.showCustom; + global::Xamarin.Forms.Platform.Android.Resource.Id.showHome = global::Sarand.BusinessMgr.Resource.Id.showHome; + global::Xamarin.Forms.Platform.Android.Resource.Id.showTitle = global::Sarand.BusinessMgr.Resource.Id.showTitle; + global::Xamarin.Forms.Platform.Android.Resource.Id.smallLabel = global::Sarand.BusinessMgr.Resource.Id.smallLabel; + global::Xamarin.Forms.Platform.Android.Resource.Id.snackbar_action = global::Sarand.BusinessMgr.Resource.Id.snackbar_action; + global::Xamarin.Forms.Platform.Android.Resource.Id.snackbar_text = global::Sarand.BusinessMgr.Resource.Id.snackbar_text; + global::Xamarin.Forms.Platform.Android.Resource.Id.snap = global::Sarand.BusinessMgr.Resource.Id.snap; + global::Xamarin.Forms.Platform.Android.Resource.Id.spacer = global::Sarand.BusinessMgr.Resource.Id.spacer; + global::Xamarin.Forms.Platform.Android.Resource.Id.split_action_bar = global::Sarand.BusinessMgr.Resource.Id.split_action_bar; + global::Xamarin.Forms.Platform.Android.Resource.Id.src_atop = global::Sarand.BusinessMgr.Resource.Id.src_atop; + global::Xamarin.Forms.Platform.Android.Resource.Id.src_in = global::Sarand.BusinessMgr.Resource.Id.src_in; + global::Xamarin.Forms.Platform.Android.Resource.Id.src_over = global::Sarand.BusinessMgr.Resource.Id.src_over; + global::Xamarin.Forms.Platform.Android.Resource.Id.start = global::Sarand.BusinessMgr.Resource.Id.start; + global::Xamarin.Forms.Platform.Android.Resource.Id.status_bar_latest_event_content = global::Sarand.BusinessMgr.Resource.Id.status_bar_latest_event_content; + global::Xamarin.Forms.Platform.Android.Resource.Id.submenuarrow = global::Sarand.BusinessMgr.Resource.Id.submenuarrow; + global::Xamarin.Forms.Platform.Android.Resource.Id.submit_area = global::Sarand.BusinessMgr.Resource.Id.submit_area; + global::Xamarin.Forms.Platform.Android.Resource.Id.tabMode = global::Sarand.BusinessMgr.Resource.Id.tabMode; + global::Xamarin.Forms.Platform.Android.Resource.Id.tag_transition_group = global::Sarand.BusinessMgr.Resource.Id.tag_transition_group; + global::Xamarin.Forms.Platform.Android.Resource.Id.text = global::Sarand.BusinessMgr.Resource.Id.text; + global::Xamarin.Forms.Platform.Android.Resource.Id.text2 = global::Sarand.BusinessMgr.Resource.Id.text2; + global::Xamarin.Forms.Platform.Android.Resource.Id.textSpacerNoButtons = global::Sarand.BusinessMgr.Resource.Id.textSpacerNoButtons; + global::Xamarin.Forms.Platform.Android.Resource.Id.textSpacerNoTitle = global::Sarand.BusinessMgr.Resource.Id.textSpacerNoTitle; + global::Xamarin.Forms.Platform.Android.Resource.Id.text_input_password_toggle = global::Sarand.BusinessMgr.Resource.Id.text_input_password_toggle; + global::Xamarin.Forms.Platform.Android.Resource.Id.textinput_counter = global::Sarand.BusinessMgr.Resource.Id.textinput_counter; + global::Xamarin.Forms.Platform.Android.Resource.Id.textinput_error = global::Sarand.BusinessMgr.Resource.Id.textinput_error; + global::Xamarin.Forms.Platform.Android.Resource.Id.time = global::Sarand.BusinessMgr.Resource.Id.time; + global::Xamarin.Forms.Platform.Android.Resource.Id.title = global::Sarand.BusinessMgr.Resource.Id.title; + global::Xamarin.Forms.Platform.Android.Resource.Id.titleDividerNoCustom = global::Sarand.BusinessMgr.Resource.Id.titleDividerNoCustom; + global::Xamarin.Forms.Platform.Android.Resource.Id.title_template = global::Sarand.BusinessMgr.Resource.Id.title_template; + global::Xamarin.Forms.Platform.Android.Resource.Id.top = global::Sarand.BusinessMgr.Resource.Id.top; + global::Xamarin.Forms.Platform.Android.Resource.Id.topPanel = global::Sarand.BusinessMgr.Resource.Id.topPanel; + global::Xamarin.Forms.Platform.Android.Resource.Id.touch_outside = global::Sarand.BusinessMgr.Resource.Id.touch_outside; + global::Xamarin.Forms.Platform.Android.Resource.Id.transition_current_scene = global::Sarand.BusinessMgr.Resource.Id.transition_current_scene; + global::Xamarin.Forms.Platform.Android.Resource.Id.transition_layout_save = global::Sarand.BusinessMgr.Resource.Id.transition_layout_save; + global::Xamarin.Forms.Platform.Android.Resource.Id.transition_position = global::Sarand.BusinessMgr.Resource.Id.transition_position; + global::Xamarin.Forms.Platform.Android.Resource.Id.transition_scene_layoutid_cache = global::Sarand.BusinessMgr.Resource.Id.transition_scene_layoutid_cache; + global::Xamarin.Forms.Platform.Android.Resource.Id.transition_transform = global::Sarand.BusinessMgr.Resource.Id.transition_transform; + global::Xamarin.Forms.Platform.Android.Resource.Id.uniform = global::Sarand.BusinessMgr.Resource.Id.uniform; + global::Xamarin.Forms.Platform.Android.Resource.Id.up = global::Sarand.BusinessMgr.Resource.Id.up; + global::Xamarin.Forms.Platform.Android.Resource.Id.useLogo = global::Sarand.BusinessMgr.Resource.Id.useLogo; + global::Xamarin.Forms.Platform.Android.Resource.Id.view_offset_helper = global::Sarand.BusinessMgr.Resource.Id.view_offset_helper; + global::Xamarin.Forms.Platform.Android.Resource.Id.visible = global::Sarand.BusinessMgr.Resource.Id.visible; + global::Xamarin.Forms.Platform.Android.Resource.Id.withText = global::Sarand.BusinessMgr.Resource.Id.withText; + global::Xamarin.Forms.Platform.Android.Resource.Id.wrap_content = global::Sarand.BusinessMgr.Resource.Id.wrap_content; + global::Xamarin.Forms.Platform.Android.Resource.Integer.abc_config_activityDefaultDur = global::Sarand.BusinessMgr.Resource.Integer.abc_config_activityDefaultDur; + global::Xamarin.Forms.Platform.Android.Resource.Integer.abc_config_activityShortDur = global::Sarand.BusinessMgr.Resource.Integer.abc_config_activityShortDur; + global::Xamarin.Forms.Platform.Android.Resource.Integer.app_bar_elevation_anim_duration = global::Sarand.BusinessMgr.Resource.Integer.app_bar_elevation_anim_duration; + global::Xamarin.Forms.Platform.Android.Resource.Integer.bottom_sheet_slide_duration = global::Sarand.BusinessMgr.Resource.Integer.bottom_sheet_slide_duration; + global::Xamarin.Forms.Platform.Android.Resource.Integer.cancel_button_image_alpha = global::Sarand.BusinessMgr.Resource.Integer.cancel_button_image_alpha; + global::Xamarin.Forms.Platform.Android.Resource.Integer.config_tooltipAnimTime = global::Sarand.BusinessMgr.Resource.Integer.config_tooltipAnimTime; + global::Xamarin.Forms.Platform.Android.Resource.Integer.design_snackbar_text_max_lines = global::Sarand.BusinessMgr.Resource.Integer.design_snackbar_text_max_lines; + global::Xamarin.Forms.Platform.Android.Resource.Integer.hide_password_duration = global::Sarand.BusinessMgr.Resource.Integer.hide_password_duration; + global::Xamarin.Forms.Platform.Android.Resource.Integer.show_password_duration = global::Sarand.BusinessMgr.Resource.Integer.show_password_duration; + global::Xamarin.Forms.Platform.Android.Resource.Integer.status_bar_notification_info_maxnum = global::Sarand.BusinessMgr.Resource.Integer.status_bar_notification_info_maxnum; + global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_action_bar_title_item = global::Sarand.BusinessMgr.Resource.Layout.abc_action_bar_title_item; + global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_action_bar_up_container = global::Sarand.BusinessMgr.Resource.Layout.abc_action_bar_up_container; + global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_action_menu_item_layout = global::Sarand.BusinessMgr.Resource.Layout.abc_action_menu_item_layout; + global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_action_menu_layout = global::Sarand.BusinessMgr.Resource.Layout.abc_action_menu_layout; + global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_action_mode_bar = global::Sarand.BusinessMgr.Resource.Layout.abc_action_mode_bar; + global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_action_mode_close_item_material = global::Sarand.BusinessMgr.Resource.Layout.abc_action_mode_close_item_material; + global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_activity_chooser_view = global::Sarand.BusinessMgr.Resource.Layout.abc_activity_chooser_view; + global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_activity_chooser_view_list_item = global::Sarand.BusinessMgr.Resource.Layout.abc_activity_chooser_view_list_item; + global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_alert_dialog_button_bar_material = global::Sarand.BusinessMgr.Resource.Layout.abc_alert_dialog_button_bar_material; + global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_alert_dialog_material = global::Sarand.BusinessMgr.Resource.Layout.abc_alert_dialog_material; + global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_alert_dialog_title_material = global::Sarand.BusinessMgr.Resource.Layout.abc_alert_dialog_title_material; + global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_dialog_title_material = global::Sarand.BusinessMgr.Resource.Layout.abc_dialog_title_material; + global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_expanded_menu_layout = global::Sarand.BusinessMgr.Resource.Layout.abc_expanded_menu_layout; + global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_list_menu_item_checkbox = global::Sarand.BusinessMgr.Resource.Layout.abc_list_menu_item_checkbox; + global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_list_menu_item_icon = global::Sarand.BusinessMgr.Resource.Layout.abc_list_menu_item_icon; + global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_list_menu_item_layout = global::Sarand.BusinessMgr.Resource.Layout.abc_list_menu_item_layout; + global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_list_menu_item_radio = global::Sarand.BusinessMgr.Resource.Layout.abc_list_menu_item_radio; + global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_popup_menu_header_item_layout = global::Sarand.BusinessMgr.Resource.Layout.abc_popup_menu_header_item_layout; + global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_popup_menu_item_layout = global::Sarand.BusinessMgr.Resource.Layout.abc_popup_menu_item_layout; + global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_screen_content_include = global::Sarand.BusinessMgr.Resource.Layout.abc_screen_content_include; + global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_screen_simple = global::Sarand.BusinessMgr.Resource.Layout.abc_screen_simple; + global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_screen_simple_overlay_action_mode = global::Sarand.BusinessMgr.Resource.Layout.abc_screen_simple_overlay_action_mode; + global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_screen_toolbar = global::Sarand.BusinessMgr.Resource.Layout.abc_screen_toolbar; + global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_search_dropdown_item_icons_2line = global::Sarand.BusinessMgr.Resource.Layout.abc_search_dropdown_item_icons_2line; + global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_search_view = global::Sarand.BusinessMgr.Resource.Layout.abc_search_view; + global::Xamarin.Forms.Platform.Android.Resource.Layout.abc_select_dialog_material = global::Sarand.BusinessMgr.Resource.Layout.abc_select_dialog_material; + global::Xamarin.Forms.Platform.Android.Resource.Layout.BottomTabLayout = global::Sarand.BusinessMgr.Resource.Layout.BottomTabLayout; + global::Xamarin.Forms.Platform.Android.Resource.Layout.design_bottom_navigation_item = global::Sarand.BusinessMgr.Resource.Layout.design_bottom_navigation_item; + global::Xamarin.Forms.Platform.Android.Resource.Layout.design_bottom_sheet_dialog = global::Sarand.BusinessMgr.Resource.Layout.design_bottom_sheet_dialog; + global::Xamarin.Forms.Platform.Android.Resource.Layout.design_layout_snackbar = global::Sarand.BusinessMgr.Resource.Layout.design_layout_snackbar; + global::Xamarin.Forms.Platform.Android.Resource.Layout.design_layout_snackbar_include = global::Sarand.BusinessMgr.Resource.Layout.design_layout_snackbar_include; + global::Xamarin.Forms.Platform.Android.Resource.Layout.design_layout_tab_icon = global::Sarand.BusinessMgr.Resource.Layout.design_layout_tab_icon; + global::Xamarin.Forms.Platform.Android.Resource.Layout.design_layout_tab_text = global::Sarand.BusinessMgr.Resource.Layout.design_layout_tab_text; + global::Xamarin.Forms.Platform.Android.Resource.Layout.design_menu_item_action_area = global::Sarand.BusinessMgr.Resource.Layout.design_menu_item_action_area; + global::Xamarin.Forms.Platform.Android.Resource.Layout.design_navigation_item = global::Sarand.BusinessMgr.Resource.Layout.design_navigation_item; + global::Xamarin.Forms.Platform.Android.Resource.Layout.design_navigation_item_header = global::Sarand.BusinessMgr.Resource.Layout.design_navigation_item_header; + global::Xamarin.Forms.Platform.Android.Resource.Layout.design_navigation_item_separator = global::Sarand.BusinessMgr.Resource.Layout.design_navigation_item_separator; + global::Xamarin.Forms.Platform.Android.Resource.Layout.design_navigation_item_subheader = global::Sarand.BusinessMgr.Resource.Layout.design_navigation_item_subheader; + global::Xamarin.Forms.Platform.Android.Resource.Layout.design_navigation_menu = global::Sarand.BusinessMgr.Resource.Layout.design_navigation_menu; + global::Xamarin.Forms.Platform.Android.Resource.Layout.design_navigation_menu_item = global::Sarand.BusinessMgr.Resource.Layout.design_navigation_menu_item; + global::Xamarin.Forms.Platform.Android.Resource.Layout.design_text_input_password_icon = global::Sarand.BusinessMgr.Resource.Layout.design_text_input_password_icon; + global::Xamarin.Forms.Platform.Android.Resource.Layout.FlyoutContent = global::Sarand.BusinessMgr.Resource.Layout.FlyoutContent; + global::Xamarin.Forms.Platform.Android.Resource.Layout.notification_action = global::Sarand.BusinessMgr.Resource.Layout.notification_action; + global::Xamarin.Forms.Platform.Android.Resource.Layout.notification_action_tombstone = global::Sarand.BusinessMgr.Resource.Layout.notification_action_tombstone; + global::Xamarin.Forms.Platform.Android.Resource.Layout.notification_media_action = global::Sarand.BusinessMgr.Resource.Layout.notification_media_action; + global::Xamarin.Forms.Platform.Android.Resource.Layout.notification_media_cancel_action = global::Sarand.BusinessMgr.Resource.Layout.notification_media_cancel_action; + global::Xamarin.Forms.Platform.Android.Resource.Layout.notification_template_big_media = global::Sarand.BusinessMgr.Resource.Layout.notification_template_big_media; + global::Xamarin.Forms.Platform.Android.Resource.Layout.notification_template_big_media_custom = global::Sarand.BusinessMgr.Resource.Layout.notification_template_big_media_custom; + global::Xamarin.Forms.Platform.Android.Resource.Layout.notification_template_big_media_narrow = global::Sarand.BusinessMgr.Resource.Layout.notification_template_big_media_narrow; + global::Xamarin.Forms.Platform.Android.Resource.Layout.notification_template_big_media_narrow_custom = global::Sarand.BusinessMgr.Resource.Layout.notification_template_big_media_narrow_custom; + global::Xamarin.Forms.Platform.Android.Resource.Layout.notification_template_custom_big = global::Sarand.BusinessMgr.Resource.Layout.notification_template_custom_big; + global::Xamarin.Forms.Platform.Android.Resource.Layout.notification_template_icon_group = global::Sarand.BusinessMgr.Resource.Layout.notification_template_icon_group; + global::Xamarin.Forms.Platform.Android.Resource.Layout.notification_template_lines_media = global::Sarand.BusinessMgr.Resource.Layout.notification_template_lines_media; + global::Xamarin.Forms.Platform.Android.Resource.Layout.notification_template_media = global::Sarand.BusinessMgr.Resource.Layout.notification_template_media; + global::Xamarin.Forms.Platform.Android.Resource.Layout.notification_template_media_custom = global::Sarand.BusinessMgr.Resource.Layout.notification_template_media_custom; + global::Xamarin.Forms.Platform.Android.Resource.Layout.notification_template_part_chronometer = global::Sarand.BusinessMgr.Resource.Layout.notification_template_part_chronometer; + global::Xamarin.Forms.Platform.Android.Resource.Layout.notification_template_part_time = global::Sarand.BusinessMgr.Resource.Layout.notification_template_part_time; + global::Xamarin.Forms.Platform.Android.Resource.Layout.RootLayout = global::Sarand.BusinessMgr.Resource.Layout.RootLayout; + global::Xamarin.Forms.Platform.Android.Resource.Layout.select_dialog_item_material = global::Sarand.BusinessMgr.Resource.Layout.select_dialog_item_material; + global::Xamarin.Forms.Platform.Android.Resource.Layout.select_dialog_multichoice_material = global::Sarand.BusinessMgr.Resource.Layout.select_dialog_multichoice_material; + global::Xamarin.Forms.Platform.Android.Resource.Layout.select_dialog_singlechoice_material = global::Sarand.BusinessMgr.Resource.Layout.select_dialog_singlechoice_material; + global::Xamarin.Forms.Platform.Android.Resource.Layout.ShellContent = global::Sarand.BusinessMgr.Resource.Layout.ShellContent; + global::Xamarin.Forms.Platform.Android.Resource.Layout.support_simple_spinner_dropdown_item = global::Sarand.BusinessMgr.Resource.Layout.support_simple_spinner_dropdown_item; + global::Xamarin.Forms.Platform.Android.Resource.Layout.tooltip = global::Sarand.BusinessMgr.Resource.Layout.tooltip; + global::Xamarin.Forms.Platform.Android.Resource.String.abc_action_bar_home_description = global::Sarand.BusinessMgr.Resource.String.abc_action_bar_home_description; + global::Xamarin.Forms.Platform.Android.Resource.String.abc_action_bar_up_description = global::Sarand.BusinessMgr.Resource.String.abc_action_bar_up_description; + global::Xamarin.Forms.Platform.Android.Resource.String.abc_action_menu_overflow_description = global::Sarand.BusinessMgr.Resource.String.abc_action_menu_overflow_description; + global::Xamarin.Forms.Platform.Android.Resource.String.abc_action_mode_done = global::Sarand.BusinessMgr.Resource.String.abc_action_mode_done; + global::Xamarin.Forms.Platform.Android.Resource.String.abc_activity_chooser_view_see_all = global::Sarand.BusinessMgr.Resource.String.abc_activity_chooser_view_see_all; + global::Xamarin.Forms.Platform.Android.Resource.String.abc_activitychooserview_choose_application = global::Sarand.BusinessMgr.Resource.String.abc_activitychooserview_choose_application; + global::Xamarin.Forms.Platform.Android.Resource.String.abc_capital_off = global::Sarand.BusinessMgr.Resource.String.abc_capital_off; + global::Xamarin.Forms.Platform.Android.Resource.String.abc_capital_on = global::Sarand.BusinessMgr.Resource.String.abc_capital_on; + global::Xamarin.Forms.Platform.Android.Resource.String.abc_font_family_body_1_material = global::Sarand.BusinessMgr.Resource.String.abc_font_family_body_1_material; + global::Xamarin.Forms.Platform.Android.Resource.String.abc_font_family_body_2_material = global::Sarand.BusinessMgr.Resource.String.abc_font_family_body_2_material; + global::Xamarin.Forms.Platform.Android.Resource.String.abc_font_family_button_material = global::Sarand.BusinessMgr.Resource.String.abc_font_family_button_material; + global::Xamarin.Forms.Platform.Android.Resource.String.abc_font_family_caption_material = global::Sarand.BusinessMgr.Resource.String.abc_font_family_caption_material; + global::Xamarin.Forms.Platform.Android.Resource.String.abc_font_family_display_1_material = global::Sarand.BusinessMgr.Resource.String.abc_font_family_display_1_material; + global::Xamarin.Forms.Platform.Android.Resource.String.abc_font_family_display_2_material = global::Sarand.BusinessMgr.Resource.String.abc_font_family_display_2_material; + global::Xamarin.Forms.Platform.Android.Resource.String.abc_font_family_display_3_material = global::Sarand.BusinessMgr.Resource.String.abc_font_family_display_3_material; + global::Xamarin.Forms.Platform.Android.Resource.String.abc_font_family_display_4_material = global::Sarand.BusinessMgr.Resource.String.abc_font_family_display_4_material; + global::Xamarin.Forms.Platform.Android.Resource.String.abc_font_family_headline_material = global::Sarand.BusinessMgr.Resource.String.abc_font_family_headline_material; + global::Xamarin.Forms.Platform.Android.Resource.String.abc_font_family_menu_material = global::Sarand.BusinessMgr.Resource.String.abc_font_family_menu_material; + global::Xamarin.Forms.Platform.Android.Resource.String.abc_font_family_subhead_material = global::Sarand.BusinessMgr.Resource.String.abc_font_family_subhead_material; + global::Xamarin.Forms.Platform.Android.Resource.String.abc_font_family_title_material = global::Sarand.BusinessMgr.Resource.String.abc_font_family_title_material; + global::Xamarin.Forms.Platform.Android.Resource.String.abc_search_hint = global::Sarand.BusinessMgr.Resource.String.abc_search_hint; + global::Xamarin.Forms.Platform.Android.Resource.String.abc_searchview_description_clear = global::Sarand.BusinessMgr.Resource.String.abc_searchview_description_clear; + global::Xamarin.Forms.Platform.Android.Resource.String.abc_searchview_description_query = global::Sarand.BusinessMgr.Resource.String.abc_searchview_description_query; + global::Xamarin.Forms.Platform.Android.Resource.String.abc_searchview_description_search = global::Sarand.BusinessMgr.Resource.String.abc_searchview_description_search; + global::Xamarin.Forms.Platform.Android.Resource.String.abc_searchview_description_submit = global::Sarand.BusinessMgr.Resource.String.abc_searchview_description_submit; + global::Xamarin.Forms.Platform.Android.Resource.String.abc_searchview_description_voice = global::Sarand.BusinessMgr.Resource.String.abc_searchview_description_voice; + global::Xamarin.Forms.Platform.Android.Resource.String.abc_shareactionprovider_share_with = global::Sarand.BusinessMgr.Resource.String.abc_shareactionprovider_share_with; + global::Xamarin.Forms.Platform.Android.Resource.String.abc_shareactionprovider_share_with_application = global::Sarand.BusinessMgr.Resource.String.abc_shareactionprovider_share_with_application; + global::Xamarin.Forms.Platform.Android.Resource.String.abc_toolbar_collapse_description = global::Sarand.BusinessMgr.Resource.String.abc_toolbar_collapse_description; + global::Xamarin.Forms.Platform.Android.Resource.String.appbar_scrolling_view_behavior = global::Sarand.BusinessMgr.Resource.String.appbar_scrolling_view_behavior; + global::Xamarin.Forms.Platform.Android.Resource.String.bottom_sheet_behavior = global::Sarand.BusinessMgr.Resource.String.bottom_sheet_behavior; + global::Xamarin.Forms.Platform.Android.Resource.String.character_counter_pattern = global::Sarand.BusinessMgr.Resource.String.character_counter_pattern; + global::Xamarin.Forms.Platform.Android.Resource.String.password_toggle_content_description = global::Sarand.BusinessMgr.Resource.String.password_toggle_content_description; + global::Xamarin.Forms.Platform.Android.Resource.String.path_password_eye = global::Sarand.BusinessMgr.Resource.String.path_password_eye; + global::Xamarin.Forms.Platform.Android.Resource.String.path_password_eye_mask_strike_through = global::Sarand.BusinessMgr.Resource.String.path_password_eye_mask_strike_through; + global::Xamarin.Forms.Platform.Android.Resource.String.path_password_eye_mask_visible = global::Sarand.BusinessMgr.Resource.String.path_password_eye_mask_visible; + global::Xamarin.Forms.Platform.Android.Resource.String.path_password_strike_through = global::Sarand.BusinessMgr.Resource.String.path_password_strike_through; + global::Xamarin.Forms.Platform.Android.Resource.String.search_menu_title = global::Sarand.BusinessMgr.Resource.String.search_menu_title; + global::Xamarin.Forms.Platform.Android.Resource.String.status_bar_notification_info_overflow = global::Sarand.BusinessMgr.Resource.String.status_bar_notification_info_overflow; + global::Xamarin.Forms.Platform.Android.Resource.Style.AlertDialog_AppCompat = global::Sarand.BusinessMgr.Resource.Style.AlertDialog_AppCompat; + global::Xamarin.Forms.Platform.Android.Resource.Style.AlertDialog_AppCompat_Light = global::Sarand.BusinessMgr.Resource.Style.AlertDialog_AppCompat_Light; + global::Xamarin.Forms.Platform.Android.Resource.Style.Animation_AppCompat_Dialog = global::Sarand.BusinessMgr.Resource.Style.Animation_AppCompat_Dialog; + global::Xamarin.Forms.Platform.Android.Resource.Style.Animation_AppCompat_DropDownUp = global::Sarand.BusinessMgr.Resource.Style.Animation_AppCompat_DropDownUp; + global::Xamarin.Forms.Platform.Android.Resource.Style.Animation_AppCompat_Tooltip = global::Sarand.BusinessMgr.Resource.Style.Animation_AppCompat_Tooltip; + global::Xamarin.Forms.Platform.Android.Resource.Style.Animation_Design_BottomSheetDialog = global::Sarand.BusinessMgr.Resource.Style.Animation_Design_BottomSheetDialog; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_AlertDialog_AppCompat = global::Sarand.BusinessMgr.Resource.Style.Base_AlertDialog_AppCompat; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_AlertDialog_AppCompat_Light = global::Sarand.BusinessMgr.Resource.Style.Base_AlertDialog_AppCompat_Light; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Animation_AppCompat_Dialog = global::Sarand.BusinessMgr.Resource.Style.Base_Animation_AppCompat_Dialog; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Animation_AppCompat_DropDownUp = global::Sarand.BusinessMgr.Resource.Style.Base_Animation_AppCompat_DropDownUp; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Animation_AppCompat_Tooltip = global::Sarand.BusinessMgr.Resource.Style.Base_Animation_AppCompat_Tooltip; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_CardView = global::Sarand.BusinessMgr.Resource.Style.Base_CardView; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_DialogWindowTitle_AppCompat = global::Sarand.BusinessMgr.Resource.Style.Base_DialogWindowTitle_AppCompat; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_DialogWindowTitleBackground_AppCompat = global::Sarand.BusinessMgr.Resource.Style.Base_DialogWindowTitleBackground_AppCompat; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Body1 = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_Body1; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Body2 = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_Body2; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Button = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_Button; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Caption = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_Caption; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Display1 = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_Display1; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Display2 = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_Display2; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Display3 = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_Display3; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Display4 = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_Display4; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Headline = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_Headline; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Inverse = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_Inverse; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Large = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_Large; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Large_Inverse = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_Large_Inverse; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Light_Widget_PopupMenu_Large = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_Light_Widget_PopupMenu_Large; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Light_Widget_PopupMenu_Small = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_Light_Widget_PopupMenu_Small; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Medium = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_Medium; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Medium_Inverse = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_Medium_Inverse; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Menu = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_Menu; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_SearchResult = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_SearchResult; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_SearchResult_Subtitle = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_SearchResult_Subtitle; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_SearchResult_Title = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_SearchResult_Title; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Small = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_Small; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Small_Inverse = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_Small_Inverse; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Subhead = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_Subhead; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Subhead_Inverse = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_Subhead_Inverse; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Title = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_Title; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Title_Inverse = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_Title_Inverse; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Tooltip = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_Tooltip; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Widget_ActionBar_Menu = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_Widget_ActionBar_Menu; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Widget_ActionBar_Subtitle = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_Widget_ActionBar_Subtitle; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Widget_ActionBar_Subtitle_Inverse = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_Widget_ActionBar_Subtitle_Inverse; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Widget_ActionBar_Title = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_Widget_ActionBar_Title; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Widget_ActionBar_Title_Inverse = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_Widget_ActionBar_Title_Inverse; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Widget_ActionMode_Subtitle = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_Widget_ActionMode_Subtitle; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Widget_ActionMode_Title = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_Widget_ActionMode_Title; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Widget_Button = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_Widget_Button; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Widget_Button_Borderless_Colored = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_Widget_Button_Borderless_Colored; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Widget_Button_Colored = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_Widget_Button_Colored; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Widget_Button_Inverse = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_Widget_Button_Inverse; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Widget_DropDownItem = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_Widget_DropDownItem; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Widget_PopupMenu_Header = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_Widget_PopupMenu_Header; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Widget_PopupMenu_Large = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_Widget_PopupMenu_Large; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Widget_PopupMenu_Small = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_Widget_PopupMenu_Small; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Widget_Switch = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_Widget_Switch; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_AppCompat_Widget_TextView_SpinnerItem = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_AppCompat_Widget_TextView_SpinnerItem; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_Widget_AppCompat_ExpandedMenu_Item = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_Widget_AppCompat_ExpandedMenu_Item; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_Widget_AppCompat_Toolbar_Subtitle = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_Widget_AppCompat_Toolbar_Subtitle; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_TextAppearance_Widget_AppCompat_Toolbar_Title = global::Sarand.BusinessMgr.Resource.Style.Base_TextAppearance_Widget_AppCompat_Toolbar_Title; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_AppCompat = global::Sarand.BusinessMgr.Resource.Style.Base_Theme_AppCompat; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_AppCompat_CompactMenu = global::Sarand.BusinessMgr.Resource.Style.Base_Theme_AppCompat_CompactMenu; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_AppCompat_Dialog = global::Sarand.BusinessMgr.Resource.Style.Base_Theme_AppCompat_Dialog; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_AppCompat_Dialog_Alert = global::Sarand.BusinessMgr.Resource.Style.Base_Theme_AppCompat_Dialog_Alert; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_AppCompat_Dialog_FixedSize = global::Sarand.BusinessMgr.Resource.Style.Base_Theme_AppCompat_Dialog_FixedSize; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_AppCompat_Dialog_MinWidth = global::Sarand.BusinessMgr.Resource.Style.Base_Theme_AppCompat_Dialog_MinWidth; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_AppCompat_DialogWhenLarge = global::Sarand.BusinessMgr.Resource.Style.Base_Theme_AppCompat_DialogWhenLarge; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_AppCompat_Light = global::Sarand.BusinessMgr.Resource.Style.Base_Theme_AppCompat_Light; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_AppCompat_Light_DarkActionBar = global::Sarand.BusinessMgr.Resource.Style.Base_Theme_AppCompat_Light_DarkActionBar; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_AppCompat_Light_Dialog = global::Sarand.BusinessMgr.Resource.Style.Base_Theme_AppCompat_Light_Dialog; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_AppCompat_Light_Dialog_Alert = global::Sarand.BusinessMgr.Resource.Style.Base_Theme_AppCompat_Light_Dialog_Alert; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_AppCompat_Light_Dialog_FixedSize = global::Sarand.BusinessMgr.Resource.Style.Base_Theme_AppCompat_Light_Dialog_FixedSize; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_AppCompat_Light_Dialog_MinWidth = global::Sarand.BusinessMgr.Resource.Style.Base_Theme_AppCompat_Light_Dialog_MinWidth; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Theme_AppCompat_Light_DialogWhenLarge = global::Sarand.BusinessMgr.Resource.Style.Base_Theme_AppCompat_Light_DialogWhenLarge; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_ThemeOverlay_AppCompat = global::Sarand.BusinessMgr.Resource.Style.Base_ThemeOverlay_AppCompat; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_ThemeOverlay_AppCompat_ActionBar = global::Sarand.BusinessMgr.Resource.Style.Base_ThemeOverlay_AppCompat_ActionBar; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_ThemeOverlay_AppCompat_Dark = global::Sarand.BusinessMgr.Resource.Style.Base_ThemeOverlay_AppCompat_Dark; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_ThemeOverlay_AppCompat_Dark_ActionBar = global::Sarand.BusinessMgr.Resource.Style.Base_ThemeOverlay_AppCompat_Dark_ActionBar; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_ThemeOverlay_AppCompat_Dialog = global::Sarand.BusinessMgr.Resource.Style.Base_ThemeOverlay_AppCompat_Dialog; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_ThemeOverlay_AppCompat_Dialog_Alert = global::Sarand.BusinessMgr.Resource.Style.Base_ThemeOverlay_AppCompat_Dialog_Alert; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_ThemeOverlay_AppCompat_Light = global::Sarand.BusinessMgr.Resource.Style.Base_ThemeOverlay_AppCompat_Light; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V11_Theme_AppCompat_Dialog = global::Sarand.BusinessMgr.Resource.Style.Base_V11_Theme_AppCompat_Dialog; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V11_Theme_AppCompat_Light_Dialog = global::Sarand.BusinessMgr.Resource.Style.Base_V11_Theme_AppCompat_Light_Dialog; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V11_ThemeOverlay_AppCompat_Dialog = global::Sarand.BusinessMgr.Resource.Style.Base_V11_ThemeOverlay_AppCompat_Dialog; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V12_Widget_AppCompat_AutoCompleteTextView = global::Sarand.BusinessMgr.Resource.Style.Base_V12_Widget_AppCompat_AutoCompleteTextView; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V12_Widget_AppCompat_EditText = global::Sarand.BusinessMgr.Resource.Style.Base_V12_Widget_AppCompat_EditText; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V14_Widget_Design_AppBarLayout = global::Sarand.BusinessMgr.Resource.Style.Base_V14_Widget_Design_AppBarLayout; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V21_Theme_AppCompat = global::Sarand.BusinessMgr.Resource.Style.Base_V21_Theme_AppCompat; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V21_Theme_AppCompat_Dialog = global::Sarand.BusinessMgr.Resource.Style.Base_V21_Theme_AppCompat_Dialog; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V21_Theme_AppCompat_Light = global::Sarand.BusinessMgr.Resource.Style.Base_V21_Theme_AppCompat_Light; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V21_Theme_AppCompat_Light_Dialog = global::Sarand.BusinessMgr.Resource.Style.Base_V21_Theme_AppCompat_Light_Dialog; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V21_ThemeOverlay_AppCompat_Dialog = global::Sarand.BusinessMgr.Resource.Style.Base_V21_ThemeOverlay_AppCompat_Dialog; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V21_Widget_Design_AppBarLayout = global::Sarand.BusinessMgr.Resource.Style.Base_V21_Widget_Design_AppBarLayout; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V22_Theme_AppCompat = global::Sarand.BusinessMgr.Resource.Style.Base_V22_Theme_AppCompat; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V22_Theme_AppCompat_Light = global::Sarand.BusinessMgr.Resource.Style.Base_V22_Theme_AppCompat_Light; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V23_Theme_AppCompat = global::Sarand.BusinessMgr.Resource.Style.Base_V23_Theme_AppCompat; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V23_Theme_AppCompat_Light = global::Sarand.BusinessMgr.Resource.Style.Base_V23_Theme_AppCompat_Light; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V26_Theme_AppCompat = global::Sarand.BusinessMgr.Resource.Style.Base_V26_Theme_AppCompat; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V26_Theme_AppCompat_Light = global::Sarand.BusinessMgr.Resource.Style.Base_V26_Theme_AppCompat_Light; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V26_Widget_AppCompat_Toolbar = global::Sarand.BusinessMgr.Resource.Style.Base_V26_Widget_AppCompat_Toolbar; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V26_Widget_Design_AppBarLayout = global::Sarand.BusinessMgr.Resource.Style.Base_V26_Widget_Design_AppBarLayout; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V7_Theme_AppCompat = global::Sarand.BusinessMgr.Resource.Style.Base_V7_Theme_AppCompat; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V7_Theme_AppCompat_Dialog = global::Sarand.BusinessMgr.Resource.Style.Base_V7_Theme_AppCompat_Dialog; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V7_Theme_AppCompat_Light = global::Sarand.BusinessMgr.Resource.Style.Base_V7_Theme_AppCompat_Light; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V7_Theme_AppCompat_Light_Dialog = global::Sarand.BusinessMgr.Resource.Style.Base_V7_Theme_AppCompat_Light_Dialog; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V7_ThemeOverlay_AppCompat_Dialog = global::Sarand.BusinessMgr.Resource.Style.Base_V7_ThemeOverlay_AppCompat_Dialog; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V7_Widget_AppCompat_AutoCompleteTextView = global::Sarand.BusinessMgr.Resource.Style.Base_V7_Widget_AppCompat_AutoCompleteTextView; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V7_Widget_AppCompat_EditText = global::Sarand.BusinessMgr.Resource.Style.Base_V7_Widget_AppCompat_EditText; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_V7_Widget_AppCompat_Toolbar = global::Sarand.BusinessMgr.Resource.Style.Base_V7_Widget_AppCompat_Toolbar; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_ActionBar = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_ActionBar; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_ActionBar_Solid = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_ActionBar_Solid; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_ActionBar_TabBar = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_ActionBar_TabBar; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_ActionBar_TabText = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_ActionBar_TabText; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_ActionBar_TabView = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_ActionBar_TabView; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_ActionButton = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_ActionButton; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_ActionButton_CloseMode = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_ActionButton_CloseMode; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_ActionButton_Overflow = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_ActionButton_Overflow; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_ActionMode = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_ActionMode; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_ActivityChooserView = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_ActivityChooserView; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_AutoCompleteTextView = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_AutoCompleteTextView; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_Button = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_Button; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_Button_Borderless = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_Button_Borderless; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_Button_Borderless_Colored = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_Button_Borderless_Colored; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_Button_ButtonBar_AlertDialog = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_Button_ButtonBar_AlertDialog; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_Button_Colored = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_Button_Colored; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_Button_Small = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_Button_Small; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_ButtonBar = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_ButtonBar; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_ButtonBar_AlertDialog = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_ButtonBar_AlertDialog; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_CompoundButton_CheckBox = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_CompoundButton_CheckBox; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_CompoundButton_RadioButton = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_CompoundButton_RadioButton; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_CompoundButton_Switch = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_CompoundButton_Switch; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_DrawerArrowToggle = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_DrawerArrowToggle; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_DrawerArrowToggle_Common = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_DrawerArrowToggle_Common; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_DropDownItem_Spinner = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_DropDownItem_Spinner; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_EditText = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_EditText; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_ImageButton = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_ImageButton; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_Light_ActionBar = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_Light_ActionBar; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_Light_ActionBar_Solid = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_Light_ActionBar_Solid; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_Light_ActionBar_TabBar = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_Light_ActionBar_TabBar; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_Light_ActionBar_TabText = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_Light_ActionBar_TabText; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_Light_ActionBar_TabText_Inverse = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_Light_ActionBar_TabText_Inverse; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_Light_ActionBar_TabView = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_Light_ActionBar_TabView; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_Light_PopupMenu = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_Light_PopupMenu; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_Light_PopupMenu_Overflow = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_Light_PopupMenu_Overflow; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_ListMenuView = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_ListMenuView; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_ListPopupWindow = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_ListPopupWindow; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_ListView = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_ListView; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_ListView_DropDown = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_ListView_DropDown; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_ListView_Menu = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_ListView_Menu; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_PopupMenu = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_PopupMenu; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_PopupMenu_Overflow = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_PopupMenu_Overflow; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_PopupWindow = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_PopupWindow; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_ProgressBar = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_ProgressBar; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_ProgressBar_Horizontal = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_ProgressBar_Horizontal; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_RatingBar = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_RatingBar; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_RatingBar_Indicator = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_RatingBar_Indicator; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_RatingBar_Small = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_RatingBar_Small; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_SearchView = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_SearchView; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_SearchView_ActionBar = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_SearchView_ActionBar; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_SeekBar = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_SeekBar; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_SeekBar_Discrete = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_SeekBar_Discrete; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_Spinner = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_Spinner; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_Spinner_Underlined = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_Spinner_Underlined; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_TextView_SpinnerItem = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_TextView_SpinnerItem; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_Toolbar = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_Toolbar; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_AppCompat_Toolbar_Button_Navigation = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_AppCompat_Toolbar_Button_Navigation; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_Design_AppBarLayout = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_Design_AppBarLayout; + global::Xamarin.Forms.Platform.Android.Resource.Style.Base_Widget_Design_TabLayout = global::Sarand.BusinessMgr.Resource.Style.Base_Widget_Design_TabLayout; + global::Xamarin.Forms.Platform.Android.Resource.Style.CardView = global::Sarand.BusinessMgr.Resource.Style.CardView; + global::Xamarin.Forms.Platform.Android.Resource.Style.CardView_Dark = global::Sarand.BusinessMgr.Resource.Style.CardView_Dark; + global::Xamarin.Forms.Platform.Android.Resource.Style.CardView_Light = global::Sarand.BusinessMgr.Resource.Style.CardView_Light; + global::Xamarin.Forms.Platform.Android.Resource.Style.Platform_AppCompat = global::Sarand.BusinessMgr.Resource.Style.Platform_AppCompat; + global::Xamarin.Forms.Platform.Android.Resource.Style.Platform_AppCompat_Light = global::Sarand.BusinessMgr.Resource.Style.Platform_AppCompat_Light; + global::Xamarin.Forms.Platform.Android.Resource.Style.Platform_ThemeOverlay_AppCompat = global::Sarand.BusinessMgr.Resource.Style.Platform_ThemeOverlay_AppCompat; + global::Xamarin.Forms.Platform.Android.Resource.Style.Platform_ThemeOverlay_AppCompat_Dark = global::Sarand.BusinessMgr.Resource.Style.Platform_ThemeOverlay_AppCompat_Dark; + global::Xamarin.Forms.Platform.Android.Resource.Style.Platform_ThemeOverlay_AppCompat_Light = global::Sarand.BusinessMgr.Resource.Style.Platform_ThemeOverlay_AppCompat_Light; + global::Xamarin.Forms.Platform.Android.Resource.Style.Platform_V11_AppCompat = global::Sarand.BusinessMgr.Resource.Style.Platform_V11_AppCompat; + global::Xamarin.Forms.Platform.Android.Resource.Style.Platform_V11_AppCompat_Light = global::Sarand.BusinessMgr.Resource.Style.Platform_V11_AppCompat_Light; + global::Xamarin.Forms.Platform.Android.Resource.Style.Platform_V14_AppCompat = global::Sarand.BusinessMgr.Resource.Style.Platform_V14_AppCompat; + global::Xamarin.Forms.Platform.Android.Resource.Style.Platform_V14_AppCompat_Light = global::Sarand.BusinessMgr.Resource.Style.Platform_V14_AppCompat_Light; + global::Xamarin.Forms.Platform.Android.Resource.Style.Platform_V21_AppCompat = global::Sarand.BusinessMgr.Resource.Style.Platform_V21_AppCompat; + global::Xamarin.Forms.Platform.Android.Resource.Style.Platform_V21_AppCompat_Light = global::Sarand.BusinessMgr.Resource.Style.Platform_V21_AppCompat_Light; + global::Xamarin.Forms.Platform.Android.Resource.Style.Platform_V25_AppCompat = global::Sarand.BusinessMgr.Resource.Style.Platform_V25_AppCompat; + global::Xamarin.Forms.Platform.Android.Resource.Style.Platform_V25_AppCompat_Light = global::Sarand.BusinessMgr.Resource.Style.Platform_V25_AppCompat_Light; + global::Xamarin.Forms.Platform.Android.Resource.Style.Platform_Widget_AppCompat_Spinner = global::Sarand.BusinessMgr.Resource.Style.Platform_Widget_AppCompat_Spinner; + global::Xamarin.Forms.Platform.Android.Resource.Style.RtlOverlay_DialogWindowTitle_AppCompat = global::Sarand.BusinessMgr.Resource.Style.RtlOverlay_DialogWindowTitle_AppCompat; + global::Xamarin.Forms.Platform.Android.Resource.Style.RtlOverlay_Widget_AppCompat_ActionBar_TitleItem = global::Sarand.BusinessMgr.Resource.Style.RtlOverlay_Widget_AppCompat_ActionBar_TitleItem; + global::Xamarin.Forms.Platform.Android.Resource.Style.RtlOverlay_Widget_AppCompat_DialogTitle_Icon = global::Sarand.BusinessMgr.Resource.Style.RtlOverlay_Widget_AppCompat_DialogTitle_Icon; + global::Xamarin.Forms.Platform.Android.Resource.Style.RtlOverlay_Widget_AppCompat_PopupMenuItem = global::Sarand.BusinessMgr.Resource.Style.RtlOverlay_Widget_AppCompat_PopupMenuItem; + global::Xamarin.Forms.Platform.Android.Resource.Style.RtlOverlay_Widget_AppCompat_PopupMenuItem_InternalGroup = global::Sarand.BusinessMgr.Resource.Style.RtlOverlay_Widget_AppCompat_PopupMenuItem_InternalGroup; + global::Xamarin.Forms.Platform.Android.Resource.Style.RtlOverlay_Widget_AppCompat_PopupMenuItem_Text = global::Sarand.BusinessMgr.Resource.Style.RtlOverlay_Widget_AppCompat_PopupMenuItem_Text; + global::Xamarin.Forms.Platform.Android.Resource.Style.RtlOverlay_Widget_AppCompat_Search_DropDown = global::Sarand.BusinessMgr.Resource.Style.RtlOverlay_Widget_AppCompat_Search_DropDown; + global::Xamarin.Forms.Platform.Android.Resource.Style.RtlOverlay_Widget_AppCompat_Search_DropDown_Icon1 = global::Sarand.BusinessMgr.Resource.Style.RtlOverlay_Widget_AppCompat_Search_DropDown_Icon1; + global::Xamarin.Forms.Platform.Android.Resource.Style.RtlOverlay_Widget_AppCompat_Search_DropDown_Icon2 = global::Sarand.BusinessMgr.Resource.Style.RtlOverlay_Widget_AppCompat_Search_DropDown_Icon2; + global::Xamarin.Forms.Platform.Android.Resource.Style.RtlOverlay_Widget_AppCompat_Search_DropDown_Query = global::Sarand.BusinessMgr.Resource.Style.RtlOverlay_Widget_AppCompat_Search_DropDown_Query; + global::Xamarin.Forms.Platform.Android.Resource.Style.RtlOverlay_Widget_AppCompat_Search_DropDown_Text = global::Sarand.BusinessMgr.Resource.Style.RtlOverlay_Widget_AppCompat_Search_DropDown_Text; + global::Xamarin.Forms.Platform.Android.Resource.Style.RtlOverlay_Widget_AppCompat_SearchView_MagIcon = global::Sarand.BusinessMgr.Resource.Style.RtlOverlay_Widget_AppCompat_SearchView_MagIcon; + global::Xamarin.Forms.Platform.Android.Resource.Style.RtlUnderlay_Widget_AppCompat_ActionButton = global::Sarand.BusinessMgr.Resource.Style.RtlUnderlay_Widget_AppCompat_ActionButton; + global::Xamarin.Forms.Platform.Android.Resource.Style.RtlUnderlay_Widget_AppCompat_ActionButton_Overflow = global::Sarand.BusinessMgr.Resource.Style.RtlUnderlay_Widget_AppCompat_ActionButton_Overflow; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Body1 = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Body1; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Body2 = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Body2; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Button = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Button; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Caption = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Caption; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Display1 = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Display1; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Display2 = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Display2; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Display3 = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Display3; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Display4 = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Display4; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Headline = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Headline; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Inverse = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Inverse; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Large = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Large; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Large_Inverse = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Large_Inverse; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Light_SearchResult_Subtitle = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Light_SearchResult_Subtitle; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Light_SearchResult_Title = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Light_SearchResult_Title; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Light_Widget_PopupMenu_Large = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Light_Widget_PopupMenu_Large; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Light_Widget_PopupMenu_Small = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Light_Widget_PopupMenu_Small; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Medium = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Medium; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Medium_Inverse = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Medium_Inverse; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Menu = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Menu; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_SearchResult_Subtitle = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_SearchResult_Subtitle; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_SearchResult_Title = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_SearchResult_Title; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Small = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Small; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Small_Inverse = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Small_Inverse; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Subhead = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Subhead; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Subhead_Inverse = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Subhead_Inverse; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Title = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Title; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Title_Inverse = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Title_Inverse; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Tooltip = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Tooltip; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Widget_ActionBar_Menu = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Widget_ActionBar_Menu; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Widget_ActionBar_Subtitle = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Widget_ActionBar_Subtitle; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Widget_ActionBar_Subtitle_Inverse = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Widget_ActionBar_Subtitle_Inverse; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Widget_ActionBar_Title = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Widget_ActionBar_Title; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Widget_ActionBar_Title_Inverse = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Widget_ActionBar_Title_Inverse; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Widget_ActionMode_Subtitle = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Widget_ActionMode_Subtitle; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Widget_ActionMode_Subtitle_Inverse = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Widget_ActionMode_Subtitle_Inverse; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Widget_ActionMode_Title = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Widget_ActionMode_Title; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Widget_ActionMode_Title_Inverse = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Widget_ActionMode_Title_Inverse; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Widget_Button = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Widget_Button; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Widget_Button_Borderless_Colored = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Widget_Button_Borderless_Colored; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Widget_Button_Colored = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Widget_Button_Colored; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Widget_Button_Inverse = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Widget_Button_Inverse; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Widget_DropDownItem = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Widget_DropDownItem; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Widget_PopupMenu_Header = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Widget_PopupMenu_Header; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Widget_PopupMenu_Large = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Widget_PopupMenu_Large; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Widget_PopupMenu_Small = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Widget_PopupMenu_Small; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Widget_Switch = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Widget_Switch; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_AppCompat_Widget_TextView_SpinnerItem = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_AppCompat_Widget_TextView_SpinnerItem; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_Compat_Notification = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_Compat_Notification; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_Compat_Notification_Info = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_Compat_Notification_Info; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_Compat_Notification_Info_Media = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_Compat_Notification_Info_Media; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_Compat_Notification_Line2 = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_Compat_Notification_Line2; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_Compat_Notification_Line2_Media = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_Compat_Notification_Line2_Media; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_Compat_Notification_Media = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_Compat_Notification_Media; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_Compat_Notification_Time = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_Compat_Notification_Time; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_Compat_Notification_Time_Media = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_Compat_Notification_Time_Media; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_Compat_Notification_Title = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_Compat_Notification_Title; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_Compat_Notification_Title_Media = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_Compat_Notification_Title_Media; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_Design_CollapsingToolbar_Expanded = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_Design_CollapsingToolbar_Expanded; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_Design_Counter = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_Design_Counter; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_Design_Counter_Overflow = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_Design_Counter_Overflow; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_Design_Error = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_Design_Error; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_Design_Hint = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_Design_Hint; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_Design_Snackbar_Message = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_Design_Snackbar_Message; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_Design_Tab = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_Design_Tab; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_Widget_AppCompat_ExpandedMenu_Item = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_Widget_AppCompat_ExpandedMenu_Item; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_Widget_AppCompat_Toolbar_Subtitle = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_Widget_AppCompat_Toolbar_Subtitle; + global::Xamarin.Forms.Platform.Android.Resource.Style.TextAppearance_Widget_AppCompat_Toolbar_Title = global::Sarand.BusinessMgr.Resource.Style.TextAppearance_Widget_AppCompat_Toolbar_Title; + global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_AppCompat = global::Sarand.BusinessMgr.Resource.Style.Theme_AppCompat; + global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_AppCompat_CompactMenu = global::Sarand.BusinessMgr.Resource.Style.Theme_AppCompat_CompactMenu; + global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_AppCompat_DayNight = global::Sarand.BusinessMgr.Resource.Style.Theme_AppCompat_DayNight; + global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_AppCompat_DayNight_DarkActionBar = global::Sarand.BusinessMgr.Resource.Style.Theme_AppCompat_DayNight_DarkActionBar; + global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_AppCompat_DayNight_Dialog = global::Sarand.BusinessMgr.Resource.Style.Theme_AppCompat_DayNight_Dialog; + global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_AppCompat_DayNight_Dialog_Alert = global::Sarand.BusinessMgr.Resource.Style.Theme_AppCompat_DayNight_Dialog_Alert; + global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_AppCompat_DayNight_Dialog_MinWidth = global::Sarand.BusinessMgr.Resource.Style.Theme_AppCompat_DayNight_Dialog_MinWidth; + global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_AppCompat_DayNight_DialogWhenLarge = global::Sarand.BusinessMgr.Resource.Style.Theme_AppCompat_DayNight_DialogWhenLarge; + global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_AppCompat_DayNight_NoActionBar = global::Sarand.BusinessMgr.Resource.Style.Theme_AppCompat_DayNight_NoActionBar; + global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_AppCompat_Dialog = global::Sarand.BusinessMgr.Resource.Style.Theme_AppCompat_Dialog; + global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_AppCompat_Dialog_Alert = global::Sarand.BusinessMgr.Resource.Style.Theme_AppCompat_Dialog_Alert; + global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_AppCompat_Dialog_MinWidth = global::Sarand.BusinessMgr.Resource.Style.Theme_AppCompat_Dialog_MinWidth; + global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_AppCompat_DialogWhenLarge = global::Sarand.BusinessMgr.Resource.Style.Theme_AppCompat_DialogWhenLarge; + global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_AppCompat_Light = global::Sarand.BusinessMgr.Resource.Style.Theme_AppCompat_Light; + global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_AppCompat_Light_DarkActionBar = global::Sarand.BusinessMgr.Resource.Style.Theme_AppCompat_Light_DarkActionBar; + global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_AppCompat_Light_Dialog = global::Sarand.BusinessMgr.Resource.Style.Theme_AppCompat_Light_Dialog; + global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_AppCompat_Light_Dialog_Alert = global::Sarand.BusinessMgr.Resource.Style.Theme_AppCompat_Light_Dialog_Alert; + global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_AppCompat_Light_Dialog_MinWidth = global::Sarand.BusinessMgr.Resource.Style.Theme_AppCompat_Light_Dialog_MinWidth; + global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_AppCompat_Light_DialogWhenLarge = global::Sarand.BusinessMgr.Resource.Style.Theme_AppCompat_Light_DialogWhenLarge; + global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_AppCompat_Light_NoActionBar = global::Sarand.BusinessMgr.Resource.Style.Theme_AppCompat_Light_NoActionBar; + global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_AppCompat_NoActionBar = global::Sarand.BusinessMgr.Resource.Style.Theme_AppCompat_NoActionBar; + global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_Design = global::Sarand.BusinessMgr.Resource.Style.Theme_Design; + global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_Design_BottomSheetDialog = global::Sarand.BusinessMgr.Resource.Style.Theme_Design_BottomSheetDialog; + global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_Design_Light = global::Sarand.BusinessMgr.Resource.Style.Theme_Design_Light; + global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_Design_Light_BottomSheetDialog = global::Sarand.BusinessMgr.Resource.Style.Theme_Design_Light_BottomSheetDialog; + global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_Design_Light_NoActionBar = global::Sarand.BusinessMgr.Resource.Style.Theme_Design_Light_NoActionBar; + global::Xamarin.Forms.Platform.Android.Resource.Style.Theme_Design_NoActionBar = global::Sarand.BusinessMgr.Resource.Style.Theme_Design_NoActionBar; + global::Xamarin.Forms.Platform.Android.Resource.Style.ThemeOverlay_AppCompat = global::Sarand.BusinessMgr.Resource.Style.ThemeOverlay_AppCompat; + global::Xamarin.Forms.Platform.Android.Resource.Style.ThemeOverlay_AppCompat_ActionBar = global::Sarand.BusinessMgr.Resource.Style.ThemeOverlay_AppCompat_ActionBar; + global::Xamarin.Forms.Platform.Android.Resource.Style.ThemeOverlay_AppCompat_Dark = global::Sarand.BusinessMgr.Resource.Style.ThemeOverlay_AppCompat_Dark; + global::Xamarin.Forms.Platform.Android.Resource.Style.ThemeOverlay_AppCompat_Dark_ActionBar = global::Sarand.BusinessMgr.Resource.Style.ThemeOverlay_AppCompat_Dark_ActionBar; + global::Xamarin.Forms.Platform.Android.Resource.Style.ThemeOverlay_AppCompat_Dialog = global::Sarand.BusinessMgr.Resource.Style.ThemeOverlay_AppCompat_Dialog; + global::Xamarin.Forms.Platform.Android.Resource.Style.ThemeOverlay_AppCompat_Dialog_Alert = global::Sarand.BusinessMgr.Resource.Style.ThemeOverlay_AppCompat_Dialog_Alert; + global::Xamarin.Forms.Platform.Android.Resource.Style.ThemeOverlay_AppCompat_Light = global::Sarand.BusinessMgr.Resource.Style.ThemeOverlay_AppCompat_Light; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_ActionBar = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_ActionBar; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_ActionBar_Solid = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_ActionBar_Solid; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_ActionBar_TabBar = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_ActionBar_TabBar; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_ActionBar_TabText = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_ActionBar_TabText; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_ActionBar_TabView = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_ActionBar_TabView; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_ActionButton = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_ActionButton; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_ActionButton_CloseMode = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_ActionButton_CloseMode; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_ActionButton_Overflow = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_ActionButton_Overflow; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_ActionMode = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_ActionMode; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_ActivityChooserView = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_ActivityChooserView; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_AutoCompleteTextView = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_AutoCompleteTextView; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Button = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_Button; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Button_Borderless = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_Button_Borderless; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Button_Borderless_Colored = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_Button_Borderless_Colored; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Button_ButtonBar_AlertDialog = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_Button_ButtonBar_AlertDialog; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Button_Colored = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_Button_Colored; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Button_Small = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_Button_Small; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_ButtonBar = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_ButtonBar; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_ButtonBar_AlertDialog = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_ButtonBar_AlertDialog; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_CompoundButton_CheckBox = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_CompoundButton_CheckBox; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_CompoundButton_RadioButton = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_CompoundButton_RadioButton; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_CompoundButton_Switch = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_CompoundButton_Switch; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_DrawerArrowToggle = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_DrawerArrowToggle; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_DropDownItem_Spinner = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_DropDownItem_Spinner; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_EditText = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_EditText; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_ImageButton = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_ImageButton; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_ActionBar = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_Light_ActionBar; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_ActionBar_Solid = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_Light_ActionBar_Solid; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_ActionBar_Solid_Inverse = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_Light_ActionBar_Solid_Inverse; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_ActionBar_TabBar = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_Light_ActionBar_TabBar; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_ActionBar_TabBar_Inverse = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_Light_ActionBar_TabBar_Inverse; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_ActionBar_TabText = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_Light_ActionBar_TabText; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_ActionBar_TabText_Inverse = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_Light_ActionBar_TabText_Inverse; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_ActionBar_TabView = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_Light_ActionBar_TabView; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_ActionBar_TabView_Inverse = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_Light_ActionBar_TabView_Inverse; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_ActionButton = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_Light_ActionButton; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_ActionButton_CloseMode = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_Light_ActionButton_CloseMode; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_ActionButton_Overflow = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_Light_ActionButton_Overflow; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_ActionMode_Inverse = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_Light_ActionMode_Inverse; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_ActivityChooserView = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_Light_ActivityChooserView; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_AutoCompleteTextView = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_Light_AutoCompleteTextView; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_DropDownItem_Spinner = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_Light_DropDownItem_Spinner; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_ListPopupWindow = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_Light_ListPopupWindow; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_ListView_DropDown = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_Light_ListView_DropDown; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_PopupMenu = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_Light_PopupMenu; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_PopupMenu_Overflow = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_Light_PopupMenu_Overflow; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_SearchView = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_Light_SearchView; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Light_Spinner_DropDown_ActionBar = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_Light_Spinner_DropDown_ActionBar; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_ListMenuView = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_ListMenuView; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_ListPopupWindow = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_ListPopupWindow; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_ListView = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_ListView; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_ListView_DropDown = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_ListView_DropDown; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_ListView_Menu = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_ListView_Menu; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_PopupMenu = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_PopupMenu; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_PopupMenu_Overflow = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_PopupMenu_Overflow; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_PopupWindow = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_PopupWindow; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_ProgressBar = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_ProgressBar; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_ProgressBar_Horizontal = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_ProgressBar_Horizontal; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_RatingBar = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_RatingBar; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_RatingBar_Indicator = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_RatingBar_Indicator; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_RatingBar_Small = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_RatingBar_Small; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_SearchView = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_SearchView; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_SearchView_ActionBar = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_SearchView_ActionBar; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_SeekBar = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_SeekBar; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_SeekBar_Discrete = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_SeekBar_Discrete; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Spinner = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_Spinner; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Spinner_DropDown = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_Spinner_DropDown; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Spinner_DropDown_ActionBar = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_Spinner_DropDown_ActionBar; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Spinner_Underlined = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_Spinner_Underlined; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_TextView_SpinnerItem = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_TextView_SpinnerItem; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Toolbar = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_Toolbar; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_AppCompat_Toolbar_Button_Navigation = global::Sarand.BusinessMgr.Resource.Style.Widget_AppCompat_Toolbar_Button_Navigation; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_Compat_NotificationActionContainer = global::Sarand.BusinessMgr.Resource.Style.Widget_Compat_NotificationActionContainer; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_Compat_NotificationActionText = global::Sarand.BusinessMgr.Resource.Style.Widget_Compat_NotificationActionText; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_Design_AppBarLayout = global::Sarand.BusinessMgr.Resource.Style.Widget_Design_AppBarLayout; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_Design_BottomNavigationView = global::Sarand.BusinessMgr.Resource.Style.Widget_Design_BottomNavigationView; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_Design_BottomSheet_Modal = global::Sarand.BusinessMgr.Resource.Style.Widget_Design_BottomSheet_Modal; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_Design_CollapsingToolbar = global::Sarand.BusinessMgr.Resource.Style.Widget_Design_CollapsingToolbar; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_Design_CoordinatorLayout = global::Sarand.BusinessMgr.Resource.Style.Widget_Design_CoordinatorLayout; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_Design_FloatingActionButton = global::Sarand.BusinessMgr.Resource.Style.Widget_Design_FloatingActionButton; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_Design_NavigationView = global::Sarand.BusinessMgr.Resource.Style.Widget_Design_NavigationView; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_Design_ScrimInsetsFrameLayout = global::Sarand.BusinessMgr.Resource.Style.Widget_Design_ScrimInsetsFrameLayout; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_Design_Snackbar = global::Sarand.BusinessMgr.Resource.Style.Widget_Design_Snackbar; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_Design_TabLayout = global::Sarand.BusinessMgr.Resource.Style.Widget_Design_TabLayout; + global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_Design_TextInputLayout = global::Sarand.BusinessMgr.Resource.Style.Widget_Design_TextInputLayout; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar = global::Sarand.BusinessMgr.Resource.Styleable.ActionBar; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_background = global::Sarand.BusinessMgr.Resource.Styleable.ActionBar_background; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_backgroundSplit = global::Sarand.BusinessMgr.Resource.Styleable.ActionBar_backgroundSplit; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_backgroundStacked = global::Sarand.BusinessMgr.Resource.Styleable.ActionBar_backgroundStacked; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_contentInsetEnd = global::Sarand.BusinessMgr.Resource.Styleable.ActionBar_contentInsetEnd; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_contentInsetEndWithActions = global::Sarand.BusinessMgr.Resource.Styleable.ActionBar_contentInsetEndWithActions; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_contentInsetLeft = global::Sarand.BusinessMgr.Resource.Styleable.ActionBar_contentInsetLeft; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_contentInsetRight = global::Sarand.BusinessMgr.Resource.Styleable.ActionBar_contentInsetRight; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_contentInsetStart = global::Sarand.BusinessMgr.Resource.Styleable.ActionBar_contentInsetStart; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_contentInsetStartWithNavigation = global::Sarand.BusinessMgr.Resource.Styleable.ActionBar_contentInsetStartWithNavigation; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_customNavigationLayout = global::Sarand.BusinessMgr.Resource.Styleable.ActionBar_customNavigationLayout; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_displayOptions = global::Sarand.BusinessMgr.Resource.Styleable.ActionBar_displayOptions; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_divider = global::Sarand.BusinessMgr.Resource.Styleable.ActionBar_divider; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_elevation = global::Sarand.BusinessMgr.Resource.Styleable.ActionBar_elevation; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_height = global::Sarand.BusinessMgr.Resource.Styleable.ActionBar_height; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_hideOnContentScroll = global::Sarand.BusinessMgr.Resource.Styleable.ActionBar_hideOnContentScroll; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_homeAsUpIndicator = global::Sarand.BusinessMgr.Resource.Styleable.ActionBar_homeAsUpIndicator; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_homeLayout = global::Sarand.BusinessMgr.Resource.Styleable.ActionBar_homeLayout; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_icon = global::Sarand.BusinessMgr.Resource.Styleable.ActionBar_icon; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_indeterminateProgressStyle = global::Sarand.BusinessMgr.Resource.Styleable.ActionBar_indeterminateProgressStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_itemPadding = global::Sarand.BusinessMgr.Resource.Styleable.ActionBar_itemPadding; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_logo = global::Sarand.BusinessMgr.Resource.Styleable.ActionBar_logo; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_navigationMode = global::Sarand.BusinessMgr.Resource.Styleable.ActionBar_navigationMode; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_popupTheme = global::Sarand.BusinessMgr.Resource.Styleable.ActionBar_popupTheme; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_progressBarPadding = global::Sarand.BusinessMgr.Resource.Styleable.ActionBar_progressBarPadding; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_progressBarStyle = global::Sarand.BusinessMgr.Resource.Styleable.ActionBar_progressBarStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_subtitle = global::Sarand.BusinessMgr.Resource.Styleable.ActionBar_subtitle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_subtitleTextStyle = global::Sarand.BusinessMgr.Resource.Styleable.ActionBar_subtitleTextStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_title = global::Sarand.BusinessMgr.Resource.Styleable.ActionBar_title; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_titleTextStyle = global::Sarand.BusinessMgr.Resource.Styleable.ActionBar_titleTextStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBarLayout = global::Sarand.BusinessMgr.Resource.Styleable.ActionBarLayout; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBarLayout_android_layout_gravity = global::Sarand.BusinessMgr.Resource.Styleable.ActionBarLayout_android_layout_gravity; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionMenuItemView = global::Sarand.BusinessMgr.Resource.Styleable.ActionMenuItemView; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionMenuItemView_android_minWidth = global::Sarand.BusinessMgr.Resource.Styleable.ActionMenuItemView_android_minWidth; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionMenuView = global::Sarand.BusinessMgr.Resource.Styleable.ActionMenuView; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionMode = global::Sarand.BusinessMgr.Resource.Styleable.ActionMode; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionMode_background = global::Sarand.BusinessMgr.Resource.Styleable.ActionMode_background; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionMode_backgroundSplit = global::Sarand.BusinessMgr.Resource.Styleable.ActionMode_backgroundSplit; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionMode_closeItemLayout = global::Sarand.BusinessMgr.Resource.Styleable.ActionMode_closeItemLayout; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionMode_height = global::Sarand.BusinessMgr.Resource.Styleable.ActionMode_height; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionMode_subtitleTextStyle = global::Sarand.BusinessMgr.Resource.Styleable.ActionMode_subtitleTextStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionMode_titleTextStyle = global::Sarand.BusinessMgr.Resource.Styleable.ActionMode_titleTextStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActivityChooserView = global::Sarand.BusinessMgr.Resource.Styleable.ActivityChooserView; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActivityChooserView_expandActivityOverflowButtonDrawable = global::Sarand.BusinessMgr.Resource.Styleable.ActivityChooserView_expandActivityOverflowButtonDrawable; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActivityChooserView_initialActivityCount = global::Sarand.BusinessMgr.Resource.Styleable.ActivityChooserView_initialActivityCount; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AlertDialog = global::Sarand.BusinessMgr.Resource.Styleable.AlertDialog; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AlertDialog_android_layout = global::Sarand.BusinessMgr.Resource.Styleable.AlertDialog_android_layout; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AlertDialog_buttonPanelSideLayout = global::Sarand.BusinessMgr.Resource.Styleable.AlertDialog_buttonPanelSideLayout; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AlertDialog_listItemLayout = global::Sarand.BusinessMgr.Resource.Styleable.AlertDialog_listItemLayout; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AlertDialog_listLayout = global::Sarand.BusinessMgr.Resource.Styleable.AlertDialog_listLayout; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AlertDialog_multiChoiceItemLayout = global::Sarand.BusinessMgr.Resource.Styleable.AlertDialog_multiChoiceItemLayout; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AlertDialog_showTitle = global::Sarand.BusinessMgr.Resource.Styleable.AlertDialog_showTitle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AlertDialog_singleChoiceItemLayout = global::Sarand.BusinessMgr.Resource.Styleable.AlertDialog_singleChoiceItemLayout; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppBarLayout = global::Sarand.BusinessMgr.Resource.Styleable.AppBarLayout; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppBarLayout_android_background = global::Sarand.BusinessMgr.Resource.Styleable.AppBarLayout_android_background; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppBarLayout_android_keyboardNavigationCluster = global::Sarand.BusinessMgr.Resource.Styleable.AppBarLayout_android_keyboardNavigationCluster; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppBarLayout_android_touchscreenBlocksFocus = global::Sarand.BusinessMgr.Resource.Styleable.AppBarLayout_android_touchscreenBlocksFocus; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppBarLayout_elevation = global::Sarand.BusinessMgr.Resource.Styleable.AppBarLayout_elevation; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppBarLayout_expanded = global::Sarand.BusinessMgr.Resource.Styleable.AppBarLayout_expanded; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppBarLayoutStates = global::Sarand.BusinessMgr.Resource.Styleable.AppBarLayoutStates; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppBarLayoutStates_state_collapsed = global::Sarand.BusinessMgr.Resource.Styleable.AppBarLayoutStates_state_collapsed; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppBarLayoutStates_state_collapsible = global::Sarand.BusinessMgr.Resource.Styleable.AppBarLayoutStates_state_collapsible; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppBarLayout_Layout = global::Sarand.BusinessMgr.Resource.Styleable.AppBarLayout_Layout; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppBarLayout_Layout_layout_scrollFlags = global::Sarand.BusinessMgr.Resource.Styleable.AppBarLayout_Layout_layout_scrollFlags; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppBarLayout_Layout_layout_scrollInterpolator = global::Sarand.BusinessMgr.Resource.Styleable.AppBarLayout_Layout_layout_scrollInterpolator; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatImageView = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatImageView; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatImageView_android_src = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatImageView_android_src; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatImageView_srcCompat = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatImageView_srcCompat; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatImageView_tint = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatImageView_tint; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatImageView_tintMode = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatImageView_tintMode; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatSeekBar = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatSeekBar; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatSeekBar_android_thumb = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatSeekBar_android_thumb; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatSeekBar_tickMark = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatSeekBar_tickMark; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatSeekBar_tickMarkTint = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatSeekBar_tickMarkTint; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatSeekBar_tickMarkTintMode = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatSeekBar_tickMarkTintMode; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTextHelper = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTextHelper; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTextHelper_android_drawableBottom = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTextHelper_android_drawableBottom; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTextHelper_android_drawableEnd = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTextHelper_android_drawableEnd; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTextHelper_android_drawableLeft = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTextHelper_android_drawableLeft; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTextHelper_android_drawableRight = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTextHelper_android_drawableRight; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTextHelper_android_drawableStart = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTextHelper_android_drawableStart; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTextHelper_android_drawableTop = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTextHelper_android_drawableTop; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTextHelper_android_textAppearance = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTextHelper_android_textAppearance; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTextView = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTextView; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTextView_android_textAppearance = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTextView_android_textAppearance; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTextView_autoSizeMaxTextSize = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTextView_autoSizeMaxTextSize; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTextView_autoSizeMinTextSize = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTextView_autoSizeMinTextSize; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTextView_autoSizePresetSizes = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTextView_autoSizePresetSizes; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTextView_autoSizeStepGranularity = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTextView_autoSizeStepGranularity; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTextView_autoSizeTextType = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTextView_autoSizeTextType; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTextView_fontFamily = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTextView_fontFamily; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTextView_textAllCaps = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTextView_textAllCaps; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionBarDivider = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_actionBarDivider; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionBarItemBackground = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_actionBarItemBackground; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionBarPopupTheme = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_actionBarPopupTheme; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionBarSize = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_actionBarSize; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionBarSplitStyle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_actionBarSplitStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionBarStyle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_actionBarStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionBarTabBarStyle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_actionBarTabBarStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionBarTabStyle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_actionBarTabStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionBarTabTextStyle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_actionBarTabTextStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionBarTheme = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_actionBarTheme; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionBarWidgetTheme = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_actionBarWidgetTheme; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionButtonStyle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_actionButtonStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionDropDownStyle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_actionDropDownStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionMenuTextAppearance = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_actionMenuTextAppearance; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionMenuTextColor = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_actionMenuTextColor; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionModeBackground = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_actionModeBackground; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionModeCloseButtonStyle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_actionModeCloseButtonStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionModeCloseDrawable = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_actionModeCloseDrawable; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionModeCopyDrawable = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_actionModeCopyDrawable; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionModeCutDrawable = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_actionModeCutDrawable; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionModeFindDrawable = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_actionModeFindDrawable; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionModePasteDrawable = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_actionModePasteDrawable; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionModePopupWindowStyle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_actionModePopupWindowStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionModeSelectAllDrawable = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_actionModeSelectAllDrawable; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionModeShareDrawable = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_actionModeShareDrawable; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionModeSplitBackground = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_actionModeSplitBackground; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionModeStyle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_actionModeStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionModeWebSearchDrawable = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_actionModeWebSearchDrawable; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionOverflowButtonStyle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_actionOverflowButtonStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_actionOverflowMenuStyle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_actionOverflowMenuStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_activityChooserViewStyle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_activityChooserViewStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_alertDialogButtonGroupStyle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_alertDialogButtonGroupStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_alertDialogCenterButtons = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_alertDialogCenterButtons; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_alertDialogStyle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_alertDialogStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_alertDialogTheme = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_alertDialogTheme; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_android_windowAnimationStyle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_android_windowAnimationStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_android_windowIsFloating = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_android_windowIsFloating; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_autoCompleteTextViewStyle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_autoCompleteTextViewStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_borderlessButtonStyle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_borderlessButtonStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_buttonBarButtonStyle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_buttonBarButtonStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_buttonBarNegativeButtonStyle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_buttonBarNegativeButtonStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_buttonBarNeutralButtonStyle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_buttonBarNeutralButtonStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_buttonBarPositiveButtonStyle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_buttonBarPositiveButtonStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_buttonBarStyle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_buttonBarStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_buttonStyle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_buttonStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_buttonStyleSmall = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_buttonStyleSmall; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_checkboxStyle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_checkboxStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_checkedTextViewStyle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_checkedTextViewStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_colorAccent = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_colorAccent; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_colorBackgroundFloating = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_colorBackgroundFloating; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_colorButtonNormal = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_colorButtonNormal; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_colorControlActivated = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_colorControlActivated; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_colorControlHighlight = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_colorControlHighlight; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_colorControlNormal = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_colorControlNormal; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_colorError = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_colorError; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_colorPrimary = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_colorPrimary; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_colorPrimaryDark = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_colorPrimaryDark; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_colorSwitchThumbNormal = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_colorSwitchThumbNormal; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_controlBackground = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_controlBackground; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_dialogPreferredPadding = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_dialogPreferredPadding; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_dialogTheme = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_dialogTheme; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_dividerHorizontal = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_dividerHorizontal; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_dividerVertical = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_dividerVertical; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_dropDownListViewStyle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_dropDownListViewStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_dropdownListPreferredItemHeight = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_dropdownListPreferredItemHeight; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_editTextBackground = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_editTextBackground; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_editTextColor = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_editTextColor; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_editTextStyle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_editTextStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_homeAsUpIndicator = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_homeAsUpIndicator; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_imageButtonStyle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_imageButtonStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_listChoiceBackgroundIndicator = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_listChoiceBackgroundIndicator; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_listDividerAlertDialog = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_listDividerAlertDialog; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_listMenuViewStyle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_listMenuViewStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_listPopupWindowStyle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_listPopupWindowStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_listPreferredItemHeight = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_listPreferredItemHeight; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_listPreferredItemHeightLarge = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_listPreferredItemHeightLarge; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_listPreferredItemHeightSmall = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_listPreferredItemHeightSmall; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_listPreferredItemPaddingLeft = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_listPreferredItemPaddingLeft; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_listPreferredItemPaddingRight = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_listPreferredItemPaddingRight; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_panelBackground = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_panelBackground; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_panelMenuListTheme = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_panelMenuListTheme; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_panelMenuListWidth = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_panelMenuListWidth; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_popupMenuStyle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_popupMenuStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_popupWindowStyle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_popupWindowStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_radioButtonStyle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_radioButtonStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_ratingBarStyle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_ratingBarStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_ratingBarStyleIndicator = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_ratingBarStyleIndicator; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_ratingBarStyleSmall = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_ratingBarStyleSmall; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_searchViewStyle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_searchViewStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_seekBarStyle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_seekBarStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_selectableItemBackground = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_selectableItemBackground; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_selectableItemBackgroundBorderless = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_selectableItemBackgroundBorderless; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_spinnerDropDownItemStyle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_spinnerDropDownItemStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_spinnerStyle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_spinnerStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_switchStyle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_switchStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_textAppearanceLargePopupMenu = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_textAppearanceLargePopupMenu; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_textAppearanceListItem = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_textAppearanceListItem; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_textAppearanceListItemSecondary = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_textAppearanceListItemSecondary; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_textAppearanceListItemSmall = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_textAppearanceListItemSmall; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_textAppearancePopupMenuHeader = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_textAppearancePopupMenuHeader; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_textAppearanceSearchResultSubtitle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_textAppearanceSearchResultSubtitle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_textAppearanceSearchResultTitle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_textAppearanceSearchResultTitle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_textAppearanceSmallPopupMenu = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_textAppearanceSmallPopupMenu; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_textColorAlertDialogListItem = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_textColorAlertDialogListItem; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_textColorSearchUrl = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_textColorSearchUrl; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_toolbarNavigationButtonStyle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_toolbarNavigationButtonStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_toolbarStyle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_toolbarStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_tooltipForegroundColor = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_tooltipForegroundColor; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_tooltipFrameBackground = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_tooltipFrameBackground; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_windowActionBar = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_windowActionBar; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_windowActionBarOverlay = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_windowActionBarOverlay; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_windowActionModeOverlay = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_windowActionModeOverlay; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_windowFixedHeightMajor = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_windowFixedHeightMajor; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_windowFixedHeightMinor = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_windowFixedHeightMinor; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_windowFixedWidthMajor = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_windowFixedWidthMajor; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_windowFixedWidthMinor = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_windowFixedWidthMinor; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_windowMinWidthMajor = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_windowMinWidthMajor; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_windowMinWidthMinor = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_windowMinWidthMinor; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.AppCompatTheme_windowNoTitle = global::Sarand.BusinessMgr.Resource.Styleable.AppCompatTheme_windowNoTitle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.BottomNavigationView = global::Sarand.BusinessMgr.Resource.Styleable.BottomNavigationView; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.BottomNavigationView_elevation = global::Sarand.BusinessMgr.Resource.Styleable.BottomNavigationView_elevation; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.BottomNavigationView_itemBackground = global::Sarand.BusinessMgr.Resource.Styleable.BottomNavigationView_itemBackground; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.BottomNavigationView_itemIconTint = global::Sarand.BusinessMgr.Resource.Styleable.BottomNavigationView_itemIconTint; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.BottomNavigationView_itemTextColor = global::Sarand.BusinessMgr.Resource.Styleable.BottomNavigationView_itemTextColor; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.BottomNavigationView_menu = global::Sarand.BusinessMgr.Resource.Styleable.BottomNavigationView_menu; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.BottomSheetBehavior_Layout = global::Sarand.BusinessMgr.Resource.Styleable.BottomSheetBehavior_Layout; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.BottomSheetBehavior_Layout_behavior_hideable = global::Sarand.BusinessMgr.Resource.Styleable.BottomSheetBehavior_Layout_behavior_hideable; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.BottomSheetBehavior_Layout_behavior_peekHeight = global::Sarand.BusinessMgr.Resource.Styleable.BottomSheetBehavior_Layout_behavior_peekHeight; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.BottomSheetBehavior_Layout_behavior_skipCollapsed = global::Sarand.BusinessMgr.Resource.Styleable.BottomSheetBehavior_Layout_behavior_skipCollapsed; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ButtonBarLayout = global::Sarand.BusinessMgr.Resource.Styleable.ButtonBarLayout; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ButtonBarLayout_allowStacking = global::Sarand.BusinessMgr.Resource.Styleable.ButtonBarLayout_allowStacking; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CardView = global::Sarand.BusinessMgr.Resource.Styleable.CardView; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CardView_android_minHeight = global::Sarand.BusinessMgr.Resource.Styleable.CardView_android_minHeight; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CardView_android_minWidth = global::Sarand.BusinessMgr.Resource.Styleable.CardView_android_minWidth; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CardView_cardBackgroundColor = global::Sarand.BusinessMgr.Resource.Styleable.CardView_cardBackgroundColor; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CardView_cardCornerRadius = global::Sarand.BusinessMgr.Resource.Styleable.CardView_cardCornerRadius; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CardView_cardElevation = global::Sarand.BusinessMgr.Resource.Styleable.CardView_cardElevation; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CardView_cardMaxElevation = global::Sarand.BusinessMgr.Resource.Styleable.CardView_cardMaxElevation; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CardView_cardPreventCornerOverlap = global::Sarand.BusinessMgr.Resource.Styleable.CardView_cardPreventCornerOverlap; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CardView_cardUseCompatPadding = global::Sarand.BusinessMgr.Resource.Styleable.CardView_cardUseCompatPadding; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CardView_contentPadding = global::Sarand.BusinessMgr.Resource.Styleable.CardView_contentPadding; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CardView_contentPaddingBottom = global::Sarand.BusinessMgr.Resource.Styleable.CardView_contentPaddingBottom; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CardView_contentPaddingLeft = global::Sarand.BusinessMgr.Resource.Styleable.CardView_contentPaddingLeft; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CardView_contentPaddingRight = global::Sarand.BusinessMgr.Resource.Styleable.CardView_contentPaddingRight; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CardView_contentPaddingTop = global::Sarand.BusinessMgr.Resource.Styleable.CardView_contentPaddingTop; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CollapsingToolbarLayout = global::Sarand.BusinessMgr.Resource.Styleable.CollapsingToolbarLayout; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CollapsingToolbarLayout_collapsedTitleGravity = global::Sarand.BusinessMgr.Resource.Styleable.CollapsingToolbarLayout_collapsedTitleGravity; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CollapsingToolbarLayout_collapsedTitleTextAppearance = global::Sarand.BusinessMgr.Resource.Styleable.CollapsingToolbarLayout_collapsedTitleTextAppearance; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CollapsingToolbarLayout_contentScrim = global::Sarand.BusinessMgr.Resource.Styleable.CollapsingToolbarLayout_contentScrim; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CollapsingToolbarLayout_expandedTitleGravity = global::Sarand.BusinessMgr.Resource.Styleable.CollapsingToolbarLayout_expandedTitleGravity; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CollapsingToolbarLayout_expandedTitleMargin = global::Sarand.BusinessMgr.Resource.Styleable.CollapsingToolbarLayout_expandedTitleMargin; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CollapsingToolbarLayout_expandedTitleMarginBottom = global::Sarand.BusinessMgr.Resource.Styleable.CollapsingToolbarLayout_expandedTitleMarginBottom; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CollapsingToolbarLayout_expandedTitleMarginEnd = global::Sarand.BusinessMgr.Resource.Styleable.CollapsingToolbarLayout_expandedTitleMarginEnd; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CollapsingToolbarLayout_expandedTitleMarginStart = global::Sarand.BusinessMgr.Resource.Styleable.CollapsingToolbarLayout_expandedTitleMarginStart; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CollapsingToolbarLayout_expandedTitleMarginTop = global::Sarand.BusinessMgr.Resource.Styleable.CollapsingToolbarLayout_expandedTitleMarginTop; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CollapsingToolbarLayout_expandedTitleTextAppearance = global::Sarand.BusinessMgr.Resource.Styleable.CollapsingToolbarLayout_expandedTitleTextAppearance; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CollapsingToolbarLayout_scrimAnimationDuration = global::Sarand.BusinessMgr.Resource.Styleable.CollapsingToolbarLayout_scrimAnimationDuration; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CollapsingToolbarLayout_scrimVisibleHeightTrigger = global::Sarand.BusinessMgr.Resource.Styleable.CollapsingToolbarLayout_scrimVisibleHeightTrigger; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CollapsingToolbarLayout_statusBarScrim = global::Sarand.BusinessMgr.Resource.Styleable.CollapsingToolbarLayout_statusBarScrim; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CollapsingToolbarLayout_title = global::Sarand.BusinessMgr.Resource.Styleable.CollapsingToolbarLayout_title; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CollapsingToolbarLayout_titleEnabled = global::Sarand.BusinessMgr.Resource.Styleable.CollapsingToolbarLayout_titleEnabled; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CollapsingToolbarLayout_toolbarId = global::Sarand.BusinessMgr.Resource.Styleable.CollapsingToolbarLayout_toolbarId; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CollapsingToolbarLayout_Layout = global::Sarand.BusinessMgr.Resource.Styleable.CollapsingToolbarLayout_Layout; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CollapsingToolbarLayout_Layout_layout_collapseMode = global::Sarand.BusinessMgr.Resource.Styleable.CollapsingToolbarLayout_Layout_layout_collapseMode; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CollapsingToolbarLayout_Layout_layout_collapseParallaxMultiplier = global::Sarand.BusinessMgr.Resource.Styleable.CollapsingToolbarLayout_Layout_layout_collapseParallaxMultiplier; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ColorStateListItem = global::Sarand.BusinessMgr.Resource.Styleable.ColorStateListItem; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ColorStateListItem_alpha = global::Sarand.BusinessMgr.Resource.Styleable.ColorStateListItem_alpha; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ColorStateListItem_android_alpha = global::Sarand.BusinessMgr.Resource.Styleable.ColorStateListItem_android_alpha; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ColorStateListItem_android_color = global::Sarand.BusinessMgr.Resource.Styleable.ColorStateListItem_android_color; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CompoundButton = global::Sarand.BusinessMgr.Resource.Styleable.CompoundButton; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CompoundButton_android_button = global::Sarand.BusinessMgr.Resource.Styleable.CompoundButton_android_button; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CompoundButton_buttonTint = global::Sarand.BusinessMgr.Resource.Styleable.CompoundButton_buttonTint; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CompoundButton_buttonTintMode = global::Sarand.BusinessMgr.Resource.Styleable.CompoundButton_buttonTintMode; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CoordinatorLayout = global::Sarand.BusinessMgr.Resource.Styleable.CoordinatorLayout; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CoordinatorLayout_keylines = global::Sarand.BusinessMgr.Resource.Styleable.CoordinatorLayout_keylines; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CoordinatorLayout_statusBarBackground = global::Sarand.BusinessMgr.Resource.Styleable.CoordinatorLayout_statusBarBackground; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CoordinatorLayout_Layout = global::Sarand.BusinessMgr.Resource.Styleable.CoordinatorLayout_Layout; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CoordinatorLayout_Layout_android_layout_gravity = global::Sarand.BusinessMgr.Resource.Styleable.CoordinatorLayout_Layout_android_layout_gravity; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CoordinatorLayout_Layout_layout_anchor = global::Sarand.BusinessMgr.Resource.Styleable.CoordinatorLayout_Layout_layout_anchor; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CoordinatorLayout_Layout_layout_anchorGravity = global::Sarand.BusinessMgr.Resource.Styleable.CoordinatorLayout_Layout_layout_anchorGravity; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CoordinatorLayout_Layout_layout_behavior = global::Sarand.BusinessMgr.Resource.Styleable.CoordinatorLayout_Layout_layout_behavior; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CoordinatorLayout_Layout_layout_dodgeInsetEdges = global::Sarand.BusinessMgr.Resource.Styleable.CoordinatorLayout_Layout_layout_dodgeInsetEdges; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CoordinatorLayout_Layout_layout_insetEdge = global::Sarand.BusinessMgr.Resource.Styleable.CoordinatorLayout_Layout_layout_insetEdge; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.CoordinatorLayout_Layout_layout_keyline = global::Sarand.BusinessMgr.Resource.Styleable.CoordinatorLayout_Layout_layout_keyline; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.DesignTheme = global::Sarand.BusinessMgr.Resource.Styleable.DesignTheme; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.DesignTheme_bottomSheetDialogTheme = global::Sarand.BusinessMgr.Resource.Styleable.DesignTheme_bottomSheetDialogTheme; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.DesignTheme_bottomSheetStyle = global::Sarand.BusinessMgr.Resource.Styleable.DesignTheme_bottomSheetStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.DesignTheme_textColorError = global::Sarand.BusinessMgr.Resource.Styleable.DesignTheme_textColorError; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.DrawerArrowToggle = global::Sarand.BusinessMgr.Resource.Styleable.DrawerArrowToggle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.DrawerArrowToggle_arrowHeadLength = global::Sarand.BusinessMgr.Resource.Styleable.DrawerArrowToggle_arrowHeadLength; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.DrawerArrowToggle_arrowShaftLength = global::Sarand.BusinessMgr.Resource.Styleable.DrawerArrowToggle_arrowShaftLength; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.DrawerArrowToggle_barLength = global::Sarand.BusinessMgr.Resource.Styleable.DrawerArrowToggle_barLength; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.DrawerArrowToggle_color = global::Sarand.BusinessMgr.Resource.Styleable.DrawerArrowToggle_color; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.DrawerArrowToggle_drawableSize = global::Sarand.BusinessMgr.Resource.Styleable.DrawerArrowToggle_drawableSize; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.DrawerArrowToggle_gapBetweenBars = global::Sarand.BusinessMgr.Resource.Styleable.DrawerArrowToggle_gapBetweenBars; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.DrawerArrowToggle_spinBars = global::Sarand.BusinessMgr.Resource.Styleable.DrawerArrowToggle_spinBars; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.DrawerArrowToggle_thickness = global::Sarand.BusinessMgr.Resource.Styleable.DrawerArrowToggle_thickness; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.FloatingActionButton = global::Sarand.BusinessMgr.Resource.Styleable.FloatingActionButton; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.FloatingActionButton_backgroundTint = global::Sarand.BusinessMgr.Resource.Styleable.FloatingActionButton_backgroundTint; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.FloatingActionButton_backgroundTintMode = global::Sarand.BusinessMgr.Resource.Styleable.FloatingActionButton_backgroundTintMode; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.FloatingActionButton_borderWidth = global::Sarand.BusinessMgr.Resource.Styleable.FloatingActionButton_borderWidth; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.FloatingActionButton_elevation = global::Sarand.BusinessMgr.Resource.Styleable.FloatingActionButton_elevation; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.FloatingActionButton_fabSize = global::Sarand.BusinessMgr.Resource.Styleable.FloatingActionButton_fabSize; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.FloatingActionButton_pressedTranslationZ = global::Sarand.BusinessMgr.Resource.Styleable.FloatingActionButton_pressedTranslationZ; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.FloatingActionButton_rippleColor = global::Sarand.BusinessMgr.Resource.Styleable.FloatingActionButton_rippleColor; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.FloatingActionButton_useCompatPadding = global::Sarand.BusinessMgr.Resource.Styleable.FloatingActionButton_useCompatPadding; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.FloatingActionButton_Behavior_Layout = global::Sarand.BusinessMgr.Resource.Styleable.FloatingActionButton_Behavior_Layout; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.FloatingActionButton_Behavior_Layout_behavior_autoHide = global::Sarand.BusinessMgr.Resource.Styleable.FloatingActionButton_Behavior_Layout_behavior_autoHide; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.FontFamily = global::Sarand.BusinessMgr.Resource.Styleable.FontFamily; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.FontFamily_fontProviderAuthority = global::Sarand.BusinessMgr.Resource.Styleable.FontFamily_fontProviderAuthority; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.FontFamily_fontProviderCerts = global::Sarand.BusinessMgr.Resource.Styleable.FontFamily_fontProviderCerts; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.FontFamily_fontProviderFetchStrategy = global::Sarand.BusinessMgr.Resource.Styleable.FontFamily_fontProviderFetchStrategy; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.FontFamily_fontProviderFetchTimeout = global::Sarand.BusinessMgr.Resource.Styleable.FontFamily_fontProviderFetchTimeout; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.FontFamily_fontProviderPackage = global::Sarand.BusinessMgr.Resource.Styleable.FontFamily_fontProviderPackage; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.FontFamily_fontProviderQuery = global::Sarand.BusinessMgr.Resource.Styleable.FontFamily_fontProviderQuery; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.FontFamilyFont = global::Sarand.BusinessMgr.Resource.Styleable.FontFamilyFont; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.FontFamilyFont_android_font = global::Sarand.BusinessMgr.Resource.Styleable.FontFamilyFont_android_font; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.FontFamilyFont_android_fontStyle = global::Sarand.BusinessMgr.Resource.Styleable.FontFamilyFont_android_fontStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.FontFamilyFont_android_fontWeight = global::Sarand.BusinessMgr.Resource.Styleable.FontFamilyFont_android_fontWeight; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.FontFamilyFont_font = global::Sarand.BusinessMgr.Resource.Styleable.FontFamilyFont_font; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.FontFamilyFont_fontStyle = global::Sarand.BusinessMgr.Resource.Styleable.FontFamilyFont_fontStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.FontFamilyFont_fontWeight = global::Sarand.BusinessMgr.Resource.Styleable.FontFamilyFont_fontWeight; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ForegroundLinearLayout = global::Sarand.BusinessMgr.Resource.Styleable.ForegroundLinearLayout; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ForegroundLinearLayout_android_foreground = global::Sarand.BusinessMgr.Resource.Styleable.ForegroundLinearLayout_android_foreground; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ForegroundLinearLayout_android_foregroundGravity = global::Sarand.BusinessMgr.Resource.Styleable.ForegroundLinearLayout_android_foregroundGravity; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ForegroundLinearLayout_foregroundInsidePadding = global::Sarand.BusinessMgr.Resource.Styleable.ForegroundLinearLayout_foregroundInsidePadding; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.LinearLayoutCompat = global::Sarand.BusinessMgr.Resource.Styleable.LinearLayoutCompat; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.LinearLayoutCompat_android_baselineAligned = global::Sarand.BusinessMgr.Resource.Styleable.LinearLayoutCompat_android_baselineAligned; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.LinearLayoutCompat_android_baselineAlignedChildIndex = global::Sarand.BusinessMgr.Resource.Styleable.LinearLayoutCompat_android_baselineAlignedChildIndex; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.LinearLayoutCompat_android_gravity = global::Sarand.BusinessMgr.Resource.Styleable.LinearLayoutCompat_android_gravity; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.LinearLayoutCompat_android_orientation = global::Sarand.BusinessMgr.Resource.Styleable.LinearLayoutCompat_android_orientation; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.LinearLayoutCompat_android_weightSum = global::Sarand.BusinessMgr.Resource.Styleable.LinearLayoutCompat_android_weightSum; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.LinearLayoutCompat_divider = global::Sarand.BusinessMgr.Resource.Styleable.LinearLayoutCompat_divider; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.LinearLayoutCompat_dividerPadding = global::Sarand.BusinessMgr.Resource.Styleable.LinearLayoutCompat_dividerPadding; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.LinearLayoutCompat_measureWithLargestChild = global::Sarand.BusinessMgr.Resource.Styleable.LinearLayoutCompat_measureWithLargestChild; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.LinearLayoutCompat_showDividers = global::Sarand.BusinessMgr.Resource.Styleable.LinearLayoutCompat_showDividers; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.LinearLayoutCompat_Layout = global::Sarand.BusinessMgr.Resource.Styleable.LinearLayoutCompat_Layout; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.LinearLayoutCompat_Layout_android_layout_gravity = global::Sarand.BusinessMgr.Resource.Styleable.LinearLayoutCompat_Layout_android_layout_gravity; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.LinearLayoutCompat_Layout_android_layout_height = global::Sarand.BusinessMgr.Resource.Styleable.LinearLayoutCompat_Layout_android_layout_height; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.LinearLayoutCompat_Layout_android_layout_weight = global::Sarand.BusinessMgr.Resource.Styleable.LinearLayoutCompat_Layout_android_layout_weight; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.LinearLayoutCompat_Layout_android_layout_width = global::Sarand.BusinessMgr.Resource.Styleable.LinearLayoutCompat_Layout_android_layout_width; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ListPopupWindow = global::Sarand.BusinessMgr.Resource.Styleable.ListPopupWindow; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ListPopupWindow_android_dropDownHorizontalOffset = global::Sarand.BusinessMgr.Resource.Styleable.ListPopupWindow_android_dropDownHorizontalOffset; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ListPopupWindow_android_dropDownVerticalOffset = global::Sarand.BusinessMgr.Resource.Styleable.ListPopupWindow_android_dropDownVerticalOffset; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuGroup = global::Sarand.BusinessMgr.Resource.Styleable.MenuGroup; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuGroup_android_checkableBehavior = global::Sarand.BusinessMgr.Resource.Styleable.MenuGroup_android_checkableBehavior; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuGroup_android_enabled = global::Sarand.BusinessMgr.Resource.Styleable.MenuGroup_android_enabled; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuGroup_android_id = global::Sarand.BusinessMgr.Resource.Styleable.MenuGroup_android_id; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuGroup_android_menuCategory = global::Sarand.BusinessMgr.Resource.Styleable.MenuGroup_android_menuCategory; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuGroup_android_orderInCategory = global::Sarand.BusinessMgr.Resource.Styleable.MenuGroup_android_orderInCategory; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuGroup_android_visible = global::Sarand.BusinessMgr.Resource.Styleable.MenuGroup_android_visible; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem = global::Sarand.BusinessMgr.Resource.Styleable.MenuItem; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_actionLayout = global::Sarand.BusinessMgr.Resource.Styleable.MenuItem_actionLayout; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_actionProviderClass = global::Sarand.BusinessMgr.Resource.Styleable.MenuItem_actionProviderClass; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_actionViewClass = global::Sarand.BusinessMgr.Resource.Styleable.MenuItem_actionViewClass; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_alphabeticModifiers = global::Sarand.BusinessMgr.Resource.Styleable.MenuItem_alphabeticModifiers; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_android_alphabeticShortcut = global::Sarand.BusinessMgr.Resource.Styleable.MenuItem_android_alphabeticShortcut; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_android_checkable = global::Sarand.BusinessMgr.Resource.Styleable.MenuItem_android_checkable; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_android_checked = global::Sarand.BusinessMgr.Resource.Styleable.MenuItem_android_checked; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_android_enabled = global::Sarand.BusinessMgr.Resource.Styleable.MenuItem_android_enabled; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_android_icon = global::Sarand.BusinessMgr.Resource.Styleable.MenuItem_android_icon; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_android_id = global::Sarand.BusinessMgr.Resource.Styleable.MenuItem_android_id; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_android_menuCategory = global::Sarand.BusinessMgr.Resource.Styleable.MenuItem_android_menuCategory; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_android_numericShortcut = global::Sarand.BusinessMgr.Resource.Styleable.MenuItem_android_numericShortcut; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_android_onClick = global::Sarand.BusinessMgr.Resource.Styleable.MenuItem_android_onClick; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_android_orderInCategory = global::Sarand.BusinessMgr.Resource.Styleable.MenuItem_android_orderInCategory; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_android_title = global::Sarand.BusinessMgr.Resource.Styleable.MenuItem_android_title; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_android_titleCondensed = global::Sarand.BusinessMgr.Resource.Styleable.MenuItem_android_titleCondensed; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_android_visible = global::Sarand.BusinessMgr.Resource.Styleable.MenuItem_android_visible; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_contentDescription = global::Sarand.BusinessMgr.Resource.Styleable.MenuItem_contentDescription; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_iconTint = global::Sarand.BusinessMgr.Resource.Styleable.MenuItem_iconTint; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_iconTintMode = global::Sarand.BusinessMgr.Resource.Styleable.MenuItem_iconTintMode; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_numericModifiers = global::Sarand.BusinessMgr.Resource.Styleable.MenuItem_numericModifiers; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_showAsAction = global::Sarand.BusinessMgr.Resource.Styleable.MenuItem_showAsAction; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuItem_tooltipText = global::Sarand.BusinessMgr.Resource.Styleable.MenuItem_tooltipText; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuView = global::Sarand.BusinessMgr.Resource.Styleable.MenuView; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuView_android_headerBackground = global::Sarand.BusinessMgr.Resource.Styleable.MenuView_android_headerBackground; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuView_android_horizontalDivider = global::Sarand.BusinessMgr.Resource.Styleable.MenuView_android_horizontalDivider; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuView_android_itemBackground = global::Sarand.BusinessMgr.Resource.Styleable.MenuView_android_itemBackground; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuView_android_itemIconDisabledAlpha = global::Sarand.BusinessMgr.Resource.Styleable.MenuView_android_itemIconDisabledAlpha; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuView_android_itemTextAppearance = global::Sarand.BusinessMgr.Resource.Styleable.MenuView_android_itemTextAppearance; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuView_android_verticalDivider = global::Sarand.BusinessMgr.Resource.Styleable.MenuView_android_verticalDivider; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuView_android_windowAnimationStyle = global::Sarand.BusinessMgr.Resource.Styleable.MenuView_android_windowAnimationStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuView_preserveIconSpacing = global::Sarand.BusinessMgr.Resource.Styleable.MenuView_preserveIconSpacing; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.MenuView_subMenuArrow = global::Sarand.BusinessMgr.Resource.Styleable.MenuView_subMenuArrow; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.NavigationView = global::Sarand.BusinessMgr.Resource.Styleable.NavigationView; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.NavigationView_android_background = global::Sarand.BusinessMgr.Resource.Styleable.NavigationView_android_background; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.NavigationView_android_fitsSystemWindows = global::Sarand.BusinessMgr.Resource.Styleable.NavigationView_android_fitsSystemWindows; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.NavigationView_android_maxWidth = global::Sarand.BusinessMgr.Resource.Styleable.NavigationView_android_maxWidth; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.NavigationView_elevation = global::Sarand.BusinessMgr.Resource.Styleable.NavigationView_elevation; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.NavigationView_headerLayout = global::Sarand.BusinessMgr.Resource.Styleable.NavigationView_headerLayout; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.NavigationView_itemBackground = global::Sarand.BusinessMgr.Resource.Styleable.NavigationView_itemBackground; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.NavigationView_itemIconTint = global::Sarand.BusinessMgr.Resource.Styleable.NavigationView_itemIconTint; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.NavigationView_itemTextAppearance = global::Sarand.BusinessMgr.Resource.Styleable.NavigationView_itemTextAppearance; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.NavigationView_itemTextColor = global::Sarand.BusinessMgr.Resource.Styleable.NavigationView_itemTextColor; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.NavigationView_menu = global::Sarand.BusinessMgr.Resource.Styleable.NavigationView_menu; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.PopupWindow = global::Sarand.BusinessMgr.Resource.Styleable.PopupWindow; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.PopupWindow_android_popupAnimationStyle = global::Sarand.BusinessMgr.Resource.Styleable.PopupWindow_android_popupAnimationStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.PopupWindow_android_popupBackground = global::Sarand.BusinessMgr.Resource.Styleable.PopupWindow_android_popupBackground; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.PopupWindow_overlapAnchor = global::Sarand.BusinessMgr.Resource.Styleable.PopupWindow_overlapAnchor; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.PopupWindowBackgroundState = global::Sarand.BusinessMgr.Resource.Styleable.PopupWindowBackgroundState; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.PopupWindowBackgroundState_state_above_anchor = global::Sarand.BusinessMgr.Resource.Styleable.PopupWindowBackgroundState_state_above_anchor; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.RecycleListView = global::Sarand.BusinessMgr.Resource.Styleable.RecycleListView; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.RecycleListView_paddingBottomNoButtons = global::Sarand.BusinessMgr.Resource.Styleable.RecycleListView_paddingBottomNoButtons; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.RecycleListView_paddingTopNoTitle = global::Sarand.BusinessMgr.Resource.Styleable.RecycleListView_paddingTopNoTitle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.RecyclerView = global::Sarand.BusinessMgr.Resource.Styleable.RecyclerView; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.RecyclerView_android_descendantFocusability = global::Sarand.BusinessMgr.Resource.Styleable.RecyclerView_android_descendantFocusability; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.RecyclerView_android_orientation = global::Sarand.BusinessMgr.Resource.Styleable.RecyclerView_android_orientation; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.RecyclerView_fastScrollEnabled = global::Sarand.BusinessMgr.Resource.Styleable.RecyclerView_fastScrollEnabled; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.RecyclerView_fastScrollHorizontalThumbDrawable = global::Sarand.BusinessMgr.Resource.Styleable.RecyclerView_fastScrollHorizontalThumbDrawable; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.RecyclerView_fastScrollHorizontalTrackDrawable = global::Sarand.BusinessMgr.Resource.Styleable.RecyclerView_fastScrollHorizontalTrackDrawable; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.RecyclerView_fastScrollVerticalThumbDrawable = global::Sarand.BusinessMgr.Resource.Styleable.RecyclerView_fastScrollVerticalThumbDrawable; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.RecyclerView_fastScrollVerticalTrackDrawable = global::Sarand.BusinessMgr.Resource.Styleable.RecyclerView_fastScrollVerticalTrackDrawable; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.RecyclerView_layoutManager = global::Sarand.BusinessMgr.Resource.Styleable.RecyclerView_layoutManager; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.RecyclerView_reverseLayout = global::Sarand.BusinessMgr.Resource.Styleable.RecyclerView_reverseLayout; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.RecyclerView_spanCount = global::Sarand.BusinessMgr.Resource.Styleable.RecyclerView_spanCount; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.RecyclerView_stackFromEnd = global::Sarand.BusinessMgr.Resource.Styleable.RecyclerView_stackFromEnd; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ScrimInsetsFrameLayout = global::Sarand.BusinessMgr.Resource.Styleable.ScrimInsetsFrameLayout; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ScrimInsetsFrameLayout_insetForeground = global::Sarand.BusinessMgr.Resource.Styleable.ScrimInsetsFrameLayout_insetForeground; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ScrollingViewBehavior_Layout = global::Sarand.BusinessMgr.Resource.Styleable.ScrollingViewBehavior_Layout; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ScrollingViewBehavior_Layout_behavior_overlapTop = global::Sarand.BusinessMgr.Resource.Styleable.ScrollingViewBehavior_Layout_behavior_overlapTop; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.SearchView = global::Sarand.BusinessMgr.Resource.Styleable.SearchView; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.SearchView_android_focusable = global::Sarand.BusinessMgr.Resource.Styleable.SearchView_android_focusable; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.SearchView_android_imeOptions = global::Sarand.BusinessMgr.Resource.Styleable.SearchView_android_imeOptions; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.SearchView_android_inputType = global::Sarand.BusinessMgr.Resource.Styleable.SearchView_android_inputType; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.SearchView_android_maxWidth = global::Sarand.BusinessMgr.Resource.Styleable.SearchView_android_maxWidth; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.SearchView_closeIcon = global::Sarand.BusinessMgr.Resource.Styleable.SearchView_closeIcon; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.SearchView_commitIcon = global::Sarand.BusinessMgr.Resource.Styleable.SearchView_commitIcon; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.SearchView_defaultQueryHint = global::Sarand.BusinessMgr.Resource.Styleable.SearchView_defaultQueryHint; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.SearchView_goIcon = global::Sarand.BusinessMgr.Resource.Styleable.SearchView_goIcon; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.SearchView_iconifiedByDefault = global::Sarand.BusinessMgr.Resource.Styleable.SearchView_iconifiedByDefault; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.SearchView_layout = global::Sarand.BusinessMgr.Resource.Styleable.SearchView_layout; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.SearchView_queryBackground = global::Sarand.BusinessMgr.Resource.Styleable.SearchView_queryBackground; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.SearchView_queryHint = global::Sarand.BusinessMgr.Resource.Styleable.SearchView_queryHint; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.SearchView_searchHintIcon = global::Sarand.BusinessMgr.Resource.Styleable.SearchView_searchHintIcon; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.SearchView_searchIcon = global::Sarand.BusinessMgr.Resource.Styleable.SearchView_searchIcon; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.SearchView_submitBackground = global::Sarand.BusinessMgr.Resource.Styleable.SearchView_submitBackground; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.SearchView_suggestionRowLayout = global::Sarand.BusinessMgr.Resource.Styleable.SearchView_suggestionRowLayout; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.SearchView_voiceIcon = global::Sarand.BusinessMgr.Resource.Styleable.SearchView_voiceIcon; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.SnackbarLayout = global::Sarand.BusinessMgr.Resource.Styleable.SnackbarLayout; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.SnackbarLayout_android_maxWidth = global::Sarand.BusinessMgr.Resource.Styleable.SnackbarLayout_android_maxWidth; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.SnackbarLayout_elevation = global::Sarand.BusinessMgr.Resource.Styleable.SnackbarLayout_elevation; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.SnackbarLayout_maxActionInlineWidth = global::Sarand.BusinessMgr.Resource.Styleable.SnackbarLayout_maxActionInlineWidth; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.Spinner = global::Sarand.BusinessMgr.Resource.Styleable.Spinner; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.Spinner_android_dropDownWidth = global::Sarand.BusinessMgr.Resource.Styleable.Spinner_android_dropDownWidth; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.Spinner_android_entries = global::Sarand.BusinessMgr.Resource.Styleable.Spinner_android_entries; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.Spinner_android_popupBackground = global::Sarand.BusinessMgr.Resource.Styleable.Spinner_android_popupBackground; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.Spinner_android_prompt = global::Sarand.BusinessMgr.Resource.Styleable.Spinner_android_prompt; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.Spinner_popupTheme = global::Sarand.BusinessMgr.Resource.Styleable.Spinner_popupTheme; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.SwitchCompat = global::Sarand.BusinessMgr.Resource.Styleable.SwitchCompat; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.SwitchCompat_android_textOff = global::Sarand.BusinessMgr.Resource.Styleable.SwitchCompat_android_textOff; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.SwitchCompat_android_textOn = global::Sarand.BusinessMgr.Resource.Styleable.SwitchCompat_android_textOn; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.SwitchCompat_android_thumb = global::Sarand.BusinessMgr.Resource.Styleable.SwitchCompat_android_thumb; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.SwitchCompat_showText = global::Sarand.BusinessMgr.Resource.Styleable.SwitchCompat_showText; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.SwitchCompat_splitTrack = global::Sarand.BusinessMgr.Resource.Styleable.SwitchCompat_splitTrack; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.SwitchCompat_switchMinWidth = global::Sarand.BusinessMgr.Resource.Styleable.SwitchCompat_switchMinWidth; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.SwitchCompat_switchPadding = global::Sarand.BusinessMgr.Resource.Styleable.SwitchCompat_switchPadding; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.SwitchCompat_switchTextAppearance = global::Sarand.BusinessMgr.Resource.Styleable.SwitchCompat_switchTextAppearance; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.SwitchCompat_thumbTextPadding = global::Sarand.BusinessMgr.Resource.Styleable.SwitchCompat_thumbTextPadding; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.SwitchCompat_thumbTint = global::Sarand.BusinessMgr.Resource.Styleable.SwitchCompat_thumbTint; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.SwitchCompat_thumbTintMode = global::Sarand.BusinessMgr.Resource.Styleable.SwitchCompat_thumbTintMode; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.SwitchCompat_track = global::Sarand.BusinessMgr.Resource.Styleable.SwitchCompat_track; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.SwitchCompat_trackTint = global::Sarand.BusinessMgr.Resource.Styleable.SwitchCompat_trackTint; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.SwitchCompat_trackTintMode = global::Sarand.BusinessMgr.Resource.Styleable.SwitchCompat_trackTintMode; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabItem = global::Sarand.BusinessMgr.Resource.Styleable.TabItem; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabItem_android_icon = global::Sarand.BusinessMgr.Resource.Styleable.TabItem_android_icon; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabItem_android_layout = global::Sarand.BusinessMgr.Resource.Styleable.TabItem_android_layout; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabItem_android_text = global::Sarand.BusinessMgr.Resource.Styleable.TabItem_android_text; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout = global::Sarand.BusinessMgr.Resource.Styleable.TabLayout; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout_tabBackground = global::Sarand.BusinessMgr.Resource.Styleable.TabLayout_tabBackground; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout_tabContentStart = global::Sarand.BusinessMgr.Resource.Styleable.TabLayout_tabContentStart; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout_tabGravity = global::Sarand.BusinessMgr.Resource.Styleable.TabLayout_tabGravity; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout_tabIndicatorColor = global::Sarand.BusinessMgr.Resource.Styleable.TabLayout_tabIndicatorColor; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout_tabIndicatorHeight = global::Sarand.BusinessMgr.Resource.Styleable.TabLayout_tabIndicatorHeight; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout_tabMaxWidth = global::Sarand.BusinessMgr.Resource.Styleable.TabLayout_tabMaxWidth; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout_tabMinWidth = global::Sarand.BusinessMgr.Resource.Styleable.TabLayout_tabMinWidth; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout_tabMode = global::Sarand.BusinessMgr.Resource.Styleable.TabLayout_tabMode; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout_tabPadding = global::Sarand.BusinessMgr.Resource.Styleable.TabLayout_tabPadding; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout_tabPaddingBottom = global::Sarand.BusinessMgr.Resource.Styleable.TabLayout_tabPaddingBottom; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout_tabPaddingEnd = global::Sarand.BusinessMgr.Resource.Styleable.TabLayout_tabPaddingEnd; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout_tabPaddingStart = global::Sarand.BusinessMgr.Resource.Styleable.TabLayout_tabPaddingStart; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout_tabPaddingTop = global::Sarand.BusinessMgr.Resource.Styleable.TabLayout_tabPaddingTop; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout_tabSelectedTextColor = global::Sarand.BusinessMgr.Resource.Styleable.TabLayout_tabSelectedTextColor; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout_tabTextAppearance = global::Sarand.BusinessMgr.Resource.Styleable.TabLayout_tabTextAppearance; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TabLayout_tabTextColor = global::Sarand.BusinessMgr.Resource.Styleable.TabLayout_tabTextColor; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextAppearance = global::Sarand.BusinessMgr.Resource.Styleable.TextAppearance; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextAppearance_android_fontFamily = global::Sarand.BusinessMgr.Resource.Styleable.TextAppearance_android_fontFamily; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextAppearance_android_shadowColor = global::Sarand.BusinessMgr.Resource.Styleable.TextAppearance_android_shadowColor; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextAppearance_android_shadowDx = global::Sarand.BusinessMgr.Resource.Styleable.TextAppearance_android_shadowDx; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextAppearance_android_shadowDy = global::Sarand.BusinessMgr.Resource.Styleable.TextAppearance_android_shadowDy; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextAppearance_android_shadowRadius = global::Sarand.BusinessMgr.Resource.Styleable.TextAppearance_android_shadowRadius; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextAppearance_android_textColor = global::Sarand.BusinessMgr.Resource.Styleable.TextAppearance_android_textColor; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextAppearance_android_textColorHint = global::Sarand.BusinessMgr.Resource.Styleable.TextAppearance_android_textColorHint; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextAppearance_android_textColorLink = global::Sarand.BusinessMgr.Resource.Styleable.TextAppearance_android_textColorLink; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextAppearance_android_textSize = global::Sarand.BusinessMgr.Resource.Styleable.TextAppearance_android_textSize; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextAppearance_android_textStyle = global::Sarand.BusinessMgr.Resource.Styleable.TextAppearance_android_textStyle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextAppearance_android_typeface = global::Sarand.BusinessMgr.Resource.Styleable.TextAppearance_android_typeface; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextAppearance_fontFamily = global::Sarand.BusinessMgr.Resource.Styleable.TextAppearance_fontFamily; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextAppearance_textAllCaps = global::Sarand.BusinessMgr.Resource.Styleable.TextAppearance_textAllCaps; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout = global::Sarand.BusinessMgr.Resource.Styleable.TextInputLayout; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_android_hint = global::Sarand.BusinessMgr.Resource.Styleable.TextInputLayout_android_hint; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_android_textColorHint = global::Sarand.BusinessMgr.Resource.Styleable.TextInputLayout_android_textColorHint; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_counterEnabled = global::Sarand.BusinessMgr.Resource.Styleable.TextInputLayout_counterEnabled; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_counterMaxLength = global::Sarand.BusinessMgr.Resource.Styleable.TextInputLayout_counterMaxLength; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_counterOverflowTextAppearance = global::Sarand.BusinessMgr.Resource.Styleable.TextInputLayout_counterOverflowTextAppearance; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_counterTextAppearance = global::Sarand.BusinessMgr.Resource.Styleable.TextInputLayout_counterTextAppearance; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_errorEnabled = global::Sarand.BusinessMgr.Resource.Styleable.TextInputLayout_errorEnabled; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_errorTextAppearance = global::Sarand.BusinessMgr.Resource.Styleable.TextInputLayout_errorTextAppearance; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_hintAnimationEnabled = global::Sarand.BusinessMgr.Resource.Styleable.TextInputLayout_hintAnimationEnabled; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_hintEnabled = global::Sarand.BusinessMgr.Resource.Styleable.TextInputLayout_hintEnabled; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_hintTextAppearance = global::Sarand.BusinessMgr.Resource.Styleable.TextInputLayout_hintTextAppearance; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_passwordToggleContentDescription = global::Sarand.BusinessMgr.Resource.Styleable.TextInputLayout_passwordToggleContentDescription; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_passwordToggleDrawable = global::Sarand.BusinessMgr.Resource.Styleable.TextInputLayout_passwordToggleDrawable; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_passwordToggleEnabled = global::Sarand.BusinessMgr.Resource.Styleable.TextInputLayout_passwordToggleEnabled; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_passwordToggleTint = global::Sarand.BusinessMgr.Resource.Styleable.TextInputLayout_passwordToggleTint; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.TextInputLayout_passwordToggleTintMode = global::Sarand.BusinessMgr.Resource.Styleable.TextInputLayout_passwordToggleTintMode; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar = global::Sarand.BusinessMgr.Resource.Styleable.Toolbar; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_android_gravity = global::Sarand.BusinessMgr.Resource.Styleable.Toolbar_android_gravity; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_android_minHeight = global::Sarand.BusinessMgr.Resource.Styleable.Toolbar_android_minHeight; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_buttonGravity = global::Sarand.BusinessMgr.Resource.Styleable.Toolbar_buttonGravity; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_collapseContentDescription = global::Sarand.BusinessMgr.Resource.Styleable.Toolbar_collapseContentDescription; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_collapseIcon = global::Sarand.BusinessMgr.Resource.Styleable.Toolbar_collapseIcon; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_contentInsetEnd = global::Sarand.BusinessMgr.Resource.Styleable.Toolbar_contentInsetEnd; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_contentInsetEndWithActions = global::Sarand.BusinessMgr.Resource.Styleable.Toolbar_contentInsetEndWithActions; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_contentInsetLeft = global::Sarand.BusinessMgr.Resource.Styleable.Toolbar_contentInsetLeft; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_contentInsetRight = global::Sarand.BusinessMgr.Resource.Styleable.Toolbar_contentInsetRight; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_contentInsetStart = global::Sarand.BusinessMgr.Resource.Styleable.Toolbar_contentInsetStart; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_contentInsetStartWithNavigation = global::Sarand.BusinessMgr.Resource.Styleable.Toolbar_contentInsetStartWithNavigation; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_logo = global::Sarand.BusinessMgr.Resource.Styleable.Toolbar_logo; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_logoDescription = global::Sarand.BusinessMgr.Resource.Styleable.Toolbar_logoDescription; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_maxButtonHeight = global::Sarand.BusinessMgr.Resource.Styleable.Toolbar_maxButtonHeight; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_navigationContentDescription = global::Sarand.BusinessMgr.Resource.Styleable.Toolbar_navigationContentDescription; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_navigationIcon = global::Sarand.BusinessMgr.Resource.Styleable.Toolbar_navigationIcon; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_popupTheme = global::Sarand.BusinessMgr.Resource.Styleable.Toolbar_popupTheme; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_subtitle = global::Sarand.BusinessMgr.Resource.Styleable.Toolbar_subtitle; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_subtitleTextAppearance = global::Sarand.BusinessMgr.Resource.Styleable.Toolbar_subtitleTextAppearance; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_subtitleTextColor = global::Sarand.BusinessMgr.Resource.Styleable.Toolbar_subtitleTextColor; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_title = global::Sarand.BusinessMgr.Resource.Styleable.Toolbar_title; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_titleMargin = global::Sarand.BusinessMgr.Resource.Styleable.Toolbar_titleMargin; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_titleMarginBottom = global::Sarand.BusinessMgr.Resource.Styleable.Toolbar_titleMarginBottom; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_titleMarginEnd = global::Sarand.BusinessMgr.Resource.Styleable.Toolbar_titleMarginEnd; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_titleMarginStart = global::Sarand.BusinessMgr.Resource.Styleable.Toolbar_titleMarginStart; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_titleMarginTop = global::Sarand.BusinessMgr.Resource.Styleable.Toolbar_titleMarginTop; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_titleMargins = global::Sarand.BusinessMgr.Resource.Styleable.Toolbar_titleMargins; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_titleTextAppearance = global::Sarand.BusinessMgr.Resource.Styleable.Toolbar_titleTextAppearance; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.Toolbar_titleTextColor = global::Sarand.BusinessMgr.Resource.Styleable.Toolbar_titleTextColor; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.View = global::Sarand.BusinessMgr.Resource.Styleable.View; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.View_android_focusable = global::Sarand.BusinessMgr.Resource.Styleable.View_android_focusable; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.View_android_theme = global::Sarand.BusinessMgr.Resource.Styleable.View_android_theme; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.View_paddingEnd = global::Sarand.BusinessMgr.Resource.Styleable.View_paddingEnd; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.View_paddingStart = global::Sarand.BusinessMgr.Resource.Styleable.View_paddingStart; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.View_theme = global::Sarand.BusinessMgr.Resource.Styleable.View_theme; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ViewBackgroundHelper = global::Sarand.BusinessMgr.Resource.Styleable.ViewBackgroundHelper; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ViewBackgroundHelper_android_background = global::Sarand.BusinessMgr.Resource.Styleable.ViewBackgroundHelper_android_background; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ViewBackgroundHelper_backgroundTint = global::Sarand.BusinessMgr.Resource.Styleable.ViewBackgroundHelper_backgroundTint; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ViewBackgroundHelper_backgroundTintMode = global::Sarand.BusinessMgr.Resource.Styleable.ViewBackgroundHelper_backgroundTintMode; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ViewStubCompat = global::Sarand.BusinessMgr.Resource.Styleable.ViewStubCompat; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ViewStubCompat_android_id = global::Sarand.BusinessMgr.Resource.Styleable.ViewStubCompat_android_id; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ViewStubCompat_android_inflatedId = global::Sarand.BusinessMgr.Resource.Styleable.ViewStubCompat_android_inflatedId; + global::Xamarin.Forms.Platform.Android.Resource.Styleable.ViewStubCompat_android_layout = global::Sarand.BusinessMgr.Resource.Styleable.ViewStubCompat_android_layout; + } + + public partial class Animation + { + + // aapt resource value: 0x7f050000 + public const int abc_fade_in = 2131034112; + + // aapt resource value: 0x7f050001 + public const int abc_fade_out = 2131034113; + + // aapt resource value: 0x7f050002 + public const int abc_grow_fade_in_from_bottom = 2131034114; + + // aapt resource value: 0x7f050003 + public const int abc_popup_enter = 2131034115; + + // aapt resource value: 0x7f050004 + public const int abc_popup_exit = 2131034116; + + // aapt resource value: 0x7f050005 + public const int abc_shrink_fade_out_from_bottom = 2131034117; + + // aapt resource value: 0x7f050006 + public const int abc_slide_in_bottom = 2131034118; + + // aapt resource value: 0x7f050007 + public const int abc_slide_in_top = 2131034119; + + // aapt resource value: 0x7f050008 + public const int abc_slide_out_bottom = 2131034120; + + // aapt resource value: 0x7f050009 + public const int abc_slide_out_top = 2131034121; + + // aapt resource value: 0x7f05000a + public const int design_bottom_sheet_slide_in = 2131034122; + + // aapt resource value: 0x7f05000b + public const int design_bottom_sheet_slide_out = 2131034123; + + // aapt resource value: 0x7f05000c + public const int design_snackbar_in = 2131034124; + + // aapt resource value: 0x7f05000d + public const int design_snackbar_out = 2131034125; + + // aapt resource value: 0x7f05000e + public const int EnterFromLeft = 2131034126; + + // aapt resource value: 0x7f05000f + public const int EnterFromRight = 2131034127; + + // aapt resource value: 0x7f050010 + public const int ExitToLeft = 2131034128; + + // aapt resource value: 0x7f050011 + public const int ExitToRight = 2131034129; + + // aapt resource value: 0x7f050012 + public const int tooltip_enter = 2131034130; + + // aapt resource value: 0x7f050013 + public const int tooltip_exit = 2131034131; + + static Animation() + { + global::Android.Runtime.ResourceIdManager.UpdateIdValues(); + } + + private Animation() + { + } + } + + public partial class Animator + { + + // aapt resource value: 0x7f060000 + public const int design_appbar_state_list_animator = 2131099648; + + static Animator() + { + global::Android.Runtime.ResourceIdManager.UpdateIdValues(); + } + + private Animator() + { + } + } + + public partial class Attribute + { + + // aapt resource value: 0x7f01006b + public const int actionBarDivider = 2130772075; + + // aapt resource value: 0x7f01006c + public const int actionBarItemBackground = 2130772076; + + // aapt resource value: 0x7f010065 + public const int actionBarPopupTheme = 2130772069; + + // aapt resource value: 0x7f01006a + public const int actionBarSize = 2130772074; + + // aapt resource value: 0x7f010067 + public const int actionBarSplitStyle = 2130772071; + + // aapt resource value: 0x7f010066 + public const int actionBarStyle = 2130772070; + + // aapt resource value: 0x7f010061 + public const int actionBarTabBarStyle = 2130772065; + + // aapt resource value: 0x7f010060 + public const int actionBarTabStyle = 2130772064; + + // aapt resource value: 0x7f010062 + public const int actionBarTabTextStyle = 2130772066; + + // aapt resource value: 0x7f010068 + public const int actionBarTheme = 2130772072; + + // aapt resource value: 0x7f010069 + public const int actionBarWidgetTheme = 2130772073; + + // aapt resource value: 0x7f010086 + public const int actionButtonStyle = 2130772102; + + // aapt resource value: 0x7f010082 + public const int actionDropDownStyle = 2130772098; + + // aapt resource value: 0x7f0100dd + public const int actionLayout = 2130772189; + + // aapt resource value: 0x7f01006d + public const int actionMenuTextAppearance = 2130772077; + + // aapt resource value: 0x7f01006e + public const int actionMenuTextColor = 2130772078; + + // aapt resource value: 0x7f010071 + public const int actionModeBackground = 2130772081; + + // aapt resource value: 0x7f010070 + public const int actionModeCloseButtonStyle = 2130772080; + + // aapt resource value: 0x7f010073 + public const int actionModeCloseDrawable = 2130772083; + + // aapt resource value: 0x7f010075 + public const int actionModeCopyDrawable = 2130772085; + + // aapt resource value: 0x7f010074 + public const int actionModeCutDrawable = 2130772084; + + // aapt resource value: 0x7f010079 + public const int actionModeFindDrawable = 2130772089; + + // aapt resource value: 0x7f010076 + public const int actionModePasteDrawable = 2130772086; + + // aapt resource value: 0x7f01007b + public const int actionModePopupWindowStyle = 2130772091; + + // aapt resource value: 0x7f010077 + public const int actionModeSelectAllDrawable = 2130772087; + + // aapt resource value: 0x7f010078 + public const int actionModeShareDrawable = 2130772088; + + // aapt resource value: 0x7f010072 + public const int actionModeSplitBackground = 2130772082; + + // aapt resource value: 0x7f01006f + public const int actionModeStyle = 2130772079; + + // aapt resource value: 0x7f01007a + public const int actionModeWebSearchDrawable = 2130772090; + + // aapt resource value: 0x7f010063 + public const int actionOverflowButtonStyle = 2130772067; + + // aapt resource value: 0x7f010064 + public const int actionOverflowMenuStyle = 2130772068; + + // aapt resource value: 0x7f0100df + public const int actionProviderClass = 2130772191; + + // aapt resource value: 0x7f0100de + public const int actionViewClass = 2130772190; + + // aapt resource value: 0x7f01008e + public const int activityChooserViewStyle = 2130772110; + + // aapt resource value: 0x7f0100b3 + public const int alertDialogButtonGroupStyle = 2130772147; + + // aapt resource value: 0x7f0100b4 + public const int alertDialogCenterButtons = 2130772148; + + // aapt resource value: 0x7f0100b2 + public const int alertDialogStyle = 2130772146; + + // aapt resource value: 0x7f0100b5 + public const int alertDialogTheme = 2130772149; + + // aapt resource value: 0x7f0100cb + public const int allowStacking = 2130772171; + + // aapt resource value: 0x7f0100cc + public const int alpha = 2130772172; + + // aapt resource value: 0x7f0100da + public const int alphabeticModifiers = 2130772186; + + // aapt resource value: 0x7f0100d3 + public const int arrowHeadLength = 2130772179; + + // aapt resource value: 0x7f0100d4 + public const int arrowShaftLength = 2130772180; + + // aapt resource value: 0x7f0100ba + public const int autoCompleteTextViewStyle = 2130772154; + + // aapt resource value: 0x7f010054 + public const int autoSizeMaxTextSize = 2130772052; + + // aapt resource value: 0x7f010053 + public const int autoSizeMinTextSize = 2130772051; + + // aapt resource value: 0x7f010052 + public const int autoSizePresetSizes = 2130772050; + + // aapt resource value: 0x7f010051 + public const int autoSizeStepGranularity = 2130772049; + + // aapt resource value: 0x7f010050 + public const int autoSizeTextType = 2130772048; + + // aapt resource value: 0x7f01002e + public const int background = 2130772014; + + // aapt resource value: 0x7f010030 + public const int backgroundSplit = 2130772016; + + // aapt resource value: 0x7f01002f + public const int backgroundStacked = 2130772015; + + // aapt resource value: 0x7f010116 + public const int backgroundTint = 2130772246; + + // aapt resource value: 0x7f010117 + public const int backgroundTintMode = 2130772247; + + // aapt resource value: 0x7f0100d5 + public const int barLength = 2130772181; + + // aapt resource value: 0x7f010141 + public const int behavior_autoHide = 2130772289; + + // aapt resource value: 0x7f01011e + public const int behavior_hideable = 2130772254; + + // aapt resource value: 0x7f01014a + public const int behavior_overlapTop = 2130772298; + + // aapt resource value: 0x7f01011d + public const int behavior_peekHeight = 2130772253; + + // aapt resource value: 0x7f01011f + public const int behavior_skipCollapsed = 2130772255; + + // aapt resource value: 0x7f01013f + public const int borderWidth = 2130772287; + + // aapt resource value: 0x7f01008b + public const int borderlessButtonStyle = 2130772107; + + // aapt resource value: 0x7f010139 + public const int bottomSheetDialogTheme = 2130772281; + + // aapt resource value: 0x7f01013a + public const int bottomSheetStyle = 2130772282; + + // aapt resource value: 0x7f010088 + public const int buttonBarButtonStyle = 2130772104; + + // aapt resource value: 0x7f0100b8 + public const int buttonBarNegativeButtonStyle = 2130772152; + + // aapt resource value: 0x7f0100b9 + public const int buttonBarNeutralButtonStyle = 2130772153; + + // aapt resource value: 0x7f0100b7 + public const int buttonBarPositiveButtonStyle = 2130772151; + + // aapt resource value: 0x7f010087 + public const int buttonBarStyle = 2130772103; + + // aapt resource value: 0x7f01010b + public const int buttonGravity = 2130772235; + + // aapt resource value: 0x7f010043 + public const int buttonPanelSideLayout = 2130772035; + + // aapt resource value: 0x7f0100bb + public const int buttonStyle = 2130772155; + + // aapt resource value: 0x7f0100bc + public const int buttonStyleSmall = 2130772156; + + // aapt resource value: 0x7f0100cd + public const int buttonTint = 2130772173; + + // aapt resource value: 0x7f0100ce + public const int buttonTintMode = 2130772174; + + // aapt resource value: 0x7f010017 + public const int cardBackgroundColor = 2130771991; + + // aapt resource value: 0x7f010018 + public const int cardCornerRadius = 2130771992; + + // aapt resource value: 0x7f010019 + public const int cardElevation = 2130771993; + + // aapt resource value: 0x7f01001a + public const int cardMaxElevation = 2130771994; + + // aapt resource value: 0x7f01001c + public const int cardPreventCornerOverlap = 2130771996; + + // aapt resource value: 0x7f01001b + public const int cardUseCompatPadding = 2130771995; + + // aapt resource value: 0x7f0100bd + public const int checkboxStyle = 2130772157; + + // aapt resource value: 0x7f0100be + public const int checkedTextViewStyle = 2130772158; + + // aapt resource value: 0x7f0100ee + public const int closeIcon = 2130772206; + + // aapt resource value: 0x7f010040 + public const int closeItemLayout = 2130772032; + + // aapt resource value: 0x7f01010d + public const int collapseContentDescription = 2130772237; + + // aapt resource value: 0x7f01010c + public const int collapseIcon = 2130772236; + + // aapt resource value: 0x7f01012c + public const int collapsedTitleGravity = 2130772268; + + // aapt resource value: 0x7f010126 + public const int collapsedTitleTextAppearance = 2130772262; + + // aapt resource value: 0x7f0100cf + public const int color = 2130772175; + + // aapt resource value: 0x7f0100aa + public const int colorAccent = 2130772138; + + // aapt resource value: 0x7f0100b1 + public const int colorBackgroundFloating = 2130772145; + + // aapt resource value: 0x7f0100ae + public const int colorButtonNormal = 2130772142; + + // aapt resource value: 0x7f0100ac + public const int colorControlActivated = 2130772140; + + // aapt resource value: 0x7f0100ad + public const int colorControlHighlight = 2130772141; + + // aapt resource value: 0x7f0100ab + public const int colorControlNormal = 2130772139; + + // aapt resource value: 0x7f0100ca + public const int colorError = 2130772170; + + // aapt resource value: 0x7f0100a8 + public const int colorPrimary = 2130772136; + + // aapt resource value: 0x7f0100a9 + public const int colorPrimaryDark = 2130772137; + + // aapt resource value: 0x7f0100af + public const int colorSwitchThumbNormal = 2130772143; + + // aapt resource value: 0x7f0100f3 + public const int commitIcon = 2130772211; + + // aapt resource value: 0x7f0100e0 + public const int contentDescription = 2130772192; + + // aapt resource value: 0x7f010039 + public const int contentInsetEnd = 2130772025; + + // aapt resource value: 0x7f01003d + public const int contentInsetEndWithActions = 2130772029; + + // aapt resource value: 0x7f01003a + public const int contentInsetLeft = 2130772026; + + // aapt resource value: 0x7f01003b + public const int contentInsetRight = 2130772027; + + // aapt resource value: 0x7f010038 + public const int contentInsetStart = 2130772024; + + // aapt resource value: 0x7f01003c + public const int contentInsetStartWithNavigation = 2130772028; + + // aapt resource value: 0x7f01001d + public const int contentPadding = 2130771997; + + // aapt resource value: 0x7f010021 + public const int contentPaddingBottom = 2130772001; + + // aapt resource value: 0x7f01001e + public const int contentPaddingLeft = 2130771998; + + // aapt resource value: 0x7f01001f + public const int contentPaddingRight = 2130771999; + + // aapt resource value: 0x7f010020 + public const int contentPaddingTop = 2130772000; + + // aapt resource value: 0x7f010127 + public const int contentScrim = 2130772263; + + // aapt resource value: 0x7f0100b0 + public const int controlBackground = 2130772144; + + // aapt resource value: 0x7f010160 + public const int counterEnabled = 2130772320; + + // aapt resource value: 0x7f010161 + public const int counterMaxLength = 2130772321; + + // aapt resource value: 0x7f010163 + public const int counterOverflowTextAppearance = 2130772323; + + // aapt resource value: 0x7f010162 + public const int counterTextAppearance = 2130772322; + + // aapt resource value: 0x7f010031 + public const int customNavigationLayout = 2130772017; + + // aapt resource value: 0x7f0100ed + public const int defaultQueryHint = 2130772205; + + // aapt resource value: 0x7f010080 + public const int dialogPreferredPadding = 2130772096; + + // aapt resource value: 0x7f01007f + public const int dialogTheme = 2130772095; + + // aapt resource value: 0x7f010027 + public const int displayOptions = 2130772007; + + // aapt resource value: 0x7f01002d + public const int divider = 2130772013; + + // aapt resource value: 0x7f01008d + public const int dividerHorizontal = 2130772109; + + // aapt resource value: 0x7f0100d9 + public const int dividerPadding = 2130772185; + + // aapt resource value: 0x7f01008c + public const int dividerVertical = 2130772108; + + // aapt resource value: 0x7f0100d1 + public const int drawableSize = 2130772177; + + // aapt resource value: 0x7f010022 + public const int drawerArrowStyle = 2130772002; + + // aapt resource value: 0x7f01009f + public const int dropDownListViewStyle = 2130772127; + + // aapt resource value: 0x7f010083 + public const int dropdownListPreferredItemHeight = 2130772099; + + // aapt resource value: 0x7f010094 + public const int editTextBackground = 2130772116; + + // aapt resource value: 0x7f010093 + public const int editTextColor = 2130772115; + + // aapt resource value: 0x7f0100bf + public const int editTextStyle = 2130772159; + + // aapt resource value: 0x7f01003e + public const int elevation = 2130772030; + + // aapt resource value: 0x7f01015e + public const int errorEnabled = 2130772318; + + // aapt resource value: 0x7f01015f + public const int errorTextAppearance = 2130772319; + + // aapt resource value: 0x7f010042 + public const int expandActivityOverflowButtonDrawable = 2130772034; + + // aapt resource value: 0x7f010118 + public const int expanded = 2130772248; + + // aapt resource value: 0x7f01012d + public const int expandedTitleGravity = 2130772269; + + // aapt resource value: 0x7f010120 + public const int expandedTitleMargin = 2130772256; + + // aapt resource value: 0x7f010124 + public const int expandedTitleMarginBottom = 2130772260; + + // aapt resource value: 0x7f010123 + public const int expandedTitleMarginEnd = 2130772259; + + // aapt resource value: 0x7f010121 + public const int expandedTitleMarginStart = 2130772257; + + // aapt resource value: 0x7f010122 + public const int expandedTitleMarginTop = 2130772258; + + // aapt resource value: 0x7f010125 + public const int expandedTitleTextAppearance = 2130772261; + + // aapt resource value: 0x7f010015 + public const int externalRouteEnabledDrawable = 2130771989; + + // aapt resource value: 0x7f01013d + public const int fabSize = 2130772285; + + // aapt resource value: 0x7f010004 + public const int fastScrollEnabled = 2130771972; + + // aapt resource value: 0x7f010007 + public const int fastScrollHorizontalThumbDrawable = 2130771975; + + // aapt resource value: 0x7f010008 + public const int fastScrollHorizontalTrackDrawable = 2130771976; + + // aapt resource value: 0x7f010005 + public const int fastScrollVerticalThumbDrawable = 2130771973; + + // aapt resource value: 0x7f010006 + public const int fastScrollVerticalTrackDrawable = 2130771974; + + // aapt resource value: 0x7f010171 + public const int font = 2130772337; + + // aapt resource value: 0x7f010055 + public const int fontFamily = 2130772053; + + // aapt resource value: 0x7f01016a + public const int fontProviderAuthority = 2130772330; + + // aapt resource value: 0x7f01016d + public const int fontProviderCerts = 2130772333; + + // aapt resource value: 0x7f01016e + public const int fontProviderFetchStrategy = 2130772334; + + // aapt resource value: 0x7f01016f + public const int fontProviderFetchTimeout = 2130772335; + + // aapt resource value: 0x7f01016b + public const int fontProviderPackage = 2130772331; + + // aapt resource value: 0x7f01016c + public const int fontProviderQuery = 2130772332; + + // aapt resource value: 0x7f010170 + public const int fontStyle = 2130772336; + + // aapt resource value: 0x7f010172 + public const int fontWeight = 2130772338; + + // aapt resource value: 0x7f010142 + public const int foregroundInsidePadding = 2130772290; + + // aapt resource value: 0x7f0100d2 + public const int gapBetweenBars = 2130772178; + + // aapt resource value: 0x7f0100ef + public const int goIcon = 2130772207; + + // aapt resource value: 0x7f010148 + public const int headerLayout = 2130772296; + + // aapt resource value: 0x7f010023 + public const int height = 2130772003; + + // aapt resource value: 0x7f010037 + public const int hideOnContentScroll = 2130772023; + + // aapt resource value: 0x7f010164 + public const int hintAnimationEnabled = 2130772324; + + // aapt resource value: 0x7f01015d + public const int hintEnabled = 2130772317; + + // aapt resource value: 0x7f01015c + public const int hintTextAppearance = 2130772316; + + // aapt resource value: 0x7f010085 + public const int homeAsUpIndicator = 2130772101; + + // aapt resource value: 0x7f010032 + public const int homeLayout = 2130772018; + + // aapt resource value: 0x7f01002b + public const int icon = 2130772011; + + // aapt resource value: 0x7f0100e2 + public const int iconTint = 2130772194; + + // aapt resource value: 0x7f0100e3 + public const int iconTintMode = 2130772195; + + // aapt resource value: 0x7f0100eb + public const int iconifiedByDefault = 2130772203; + + // aapt resource value: 0x7f010095 + public const int imageButtonStyle = 2130772117; + + // aapt resource value: 0x7f010034 + public const int indeterminateProgressStyle = 2130772020; + + // aapt resource value: 0x7f010041 + public const int initialActivityCount = 2130772033; + + // aapt resource value: 0x7f010149 + public const int insetForeground = 2130772297; + + // aapt resource value: 0x7f010024 + public const int isLightTheme = 2130772004; + + // aapt resource value: 0x7f010146 + public const int itemBackground = 2130772294; + + // aapt resource value: 0x7f010144 + public const int itemIconTint = 2130772292; + + // aapt resource value: 0x7f010036 + public const int itemPadding = 2130772022; + + // aapt resource value: 0x7f010147 + public const int itemTextAppearance = 2130772295; + + // aapt resource value: 0x7f010145 + public const int itemTextColor = 2130772293; + + // aapt resource value: 0x7f010131 + public const int keylines = 2130772273; + + // aapt resource value: 0x7f0100ea + public const int layout = 2130772202; + + // aapt resource value: 0x7f010000 + public const int layoutManager = 2130771968; + + // aapt resource value: 0x7f010134 + public const int layout_anchor = 2130772276; + + // aapt resource value: 0x7f010136 + public const int layout_anchorGravity = 2130772278; + + // aapt resource value: 0x7f010133 + public const int layout_behavior = 2130772275; + + // aapt resource value: 0x7f01012f + public const int layout_collapseMode = 2130772271; + + // aapt resource value: 0x7f010130 + public const int layout_collapseParallaxMultiplier = 2130772272; + + // aapt resource value: 0x7f010138 + public const int layout_dodgeInsetEdges = 2130772280; + + // aapt resource value: 0x7f010137 + public const int layout_insetEdge = 2130772279; + + // aapt resource value: 0x7f010135 + public const int layout_keyline = 2130772277; + + // aapt resource value: 0x7f01011b + public const int layout_scrollFlags = 2130772251; + + // aapt resource value: 0x7f01011c + public const int layout_scrollInterpolator = 2130772252; + + // aapt resource value: 0x7f0100a7 + public const int listChoiceBackgroundIndicator = 2130772135; + + // aapt resource value: 0x7f010081 + public const int listDividerAlertDialog = 2130772097; + + // aapt resource value: 0x7f010047 + public const int listItemLayout = 2130772039; + + // aapt resource value: 0x7f010044 + public const int listLayout = 2130772036; + + // aapt resource value: 0x7f0100c7 + public const int listMenuViewStyle = 2130772167; + + // aapt resource value: 0x7f0100a0 + public const int listPopupWindowStyle = 2130772128; + + // aapt resource value: 0x7f01009a + public const int listPreferredItemHeight = 2130772122; + + // aapt resource value: 0x7f01009c + public const int listPreferredItemHeightLarge = 2130772124; + + // aapt resource value: 0x7f01009b + public const int listPreferredItemHeightSmall = 2130772123; + + // aapt resource value: 0x7f01009d + public const int listPreferredItemPaddingLeft = 2130772125; + + // aapt resource value: 0x7f01009e + public const int listPreferredItemPaddingRight = 2130772126; + + // aapt resource value: 0x7f01002c + public const int logo = 2130772012; + + // aapt resource value: 0x7f010110 + public const int logoDescription = 2130772240; + + // aapt resource value: 0x7f01014b + public const int maxActionInlineWidth = 2130772299; + + // aapt resource value: 0x7f01010a + public const int maxButtonHeight = 2130772234; + + // aapt resource value: 0x7f0100d7 + public const int measureWithLargestChild = 2130772183; + + // aapt resource value: 0x7f010009 + public const int mediaRouteAudioTrackDrawable = 2130771977; + + // aapt resource value: 0x7f01000a + public const int mediaRouteButtonStyle = 2130771978; + + // aapt resource value: 0x7f010016 + public const int mediaRouteButtonTint = 2130771990; + + // aapt resource value: 0x7f01000b + public const int mediaRouteCloseDrawable = 2130771979; + + // aapt resource value: 0x7f01000c + public const int mediaRouteControlPanelThemeOverlay = 2130771980; + + // aapt resource value: 0x7f01000d + public const int mediaRouteDefaultIconDrawable = 2130771981; + + // aapt resource value: 0x7f01000e + public const int mediaRoutePauseDrawable = 2130771982; + + // aapt resource value: 0x7f01000f + public const int mediaRoutePlayDrawable = 2130771983; + + // aapt resource value: 0x7f010010 + public const int mediaRouteSpeakerGroupIconDrawable = 2130771984; + + // aapt resource value: 0x7f010011 + public const int mediaRouteSpeakerIconDrawable = 2130771985; + + // aapt resource value: 0x7f010012 + public const int mediaRouteStopDrawable = 2130771986; + + // aapt resource value: 0x7f010013 + public const int mediaRouteTheme = 2130771987; + + // aapt resource value: 0x7f010014 + public const int mediaRouteTvIconDrawable = 2130771988; + + // aapt resource value: 0x7f010143 + public const int menu = 2130772291; + + // aapt resource value: 0x7f010045 + public const int multiChoiceItemLayout = 2130772037; + + // aapt resource value: 0x7f01010f + public const int navigationContentDescription = 2130772239; + + // aapt resource value: 0x7f01010e + public const int navigationIcon = 2130772238; + + // aapt resource value: 0x7f010026 + public const int navigationMode = 2130772006; + + // aapt resource value: 0x7f0100db + public const int numericModifiers = 2130772187; + + // aapt resource value: 0x7f0100e6 + public const int overlapAnchor = 2130772198; + + // aapt resource value: 0x7f0100e8 + public const int paddingBottomNoButtons = 2130772200; + + // aapt resource value: 0x7f010114 + public const int paddingEnd = 2130772244; + + // aapt resource value: 0x7f010113 + public const int paddingStart = 2130772243; + + // aapt resource value: 0x7f0100e9 + public const int paddingTopNoTitle = 2130772201; + + // aapt resource value: 0x7f0100a4 + public const int panelBackground = 2130772132; + + // aapt resource value: 0x7f0100a6 + public const int panelMenuListTheme = 2130772134; + + // aapt resource value: 0x7f0100a5 + public const int panelMenuListWidth = 2130772133; + + // aapt resource value: 0x7f010167 + public const int passwordToggleContentDescription = 2130772327; + + // aapt resource value: 0x7f010166 + public const int passwordToggleDrawable = 2130772326; + + // aapt resource value: 0x7f010165 + public const int passwordToggleEnabled = 2130772325; + + // aapt resource value: 0x7f010168 + public const int passwordToggleTint = 2130772328; + + // aapt resource value: 0x7f010169 + public const int passwordToggleTintMode = 2130772329; + + // aapt resource value: 0x7f010091 + public const int popupMenuStyle = 2130772113; + + // aapt resource value: 0x7f01003f + public const int popupTheme = 2130772031; + + // aapt resource value: 0x7f010092 + public const int popupWindowStyle = 2130772114; + + // aapt resource value: 0x7f0100e4 + public const int preserveIconSpacing = 2130772196; + + // aapt resource value: 0x7f01013e + public const int pressedTranslationZ = 2130772286; + + // aapt resource value: 0x7f010035 + public const int progressBarPadding = 2130772021; + + // aapt resource value: 0x7f010033 + public const int progressBarStyle = 2130772019; + + // aapt resource value: 0x7f0100f5 + public const int queryBackground = 2130772213; + + // aapt resource value: 0x7f0100ec + public const int queryHint = 2130772204; + + // aapt resource value: 0x7f0100c0 + public const int radioButtonStyle = 2130772160; + + // aapt resource value: 0x7f0100c1 + public const int ratingBarStyle = 2130772161; + + // aapt resource value: 0x7f0100c2 + public const int ratingBarStyleIndicator = 2130772162; + + // aapt resource value: 0x7f0100c3 + public const int ratingBarStyleSmall = 2130772163; + + // aapt resource value: 0x7f010002 + public const int reverseLayout = 2130771970; + + // aapt resource value: 0x7f01013c + public const int rippleColor = 2130772284; + + // aapt resource value: 0x7f01012b + public const int scrimAnimationDuration = 2130772267; + + // aapt resource value: 0x7f01012a + public const int scrimVisibleHeightTrigger = 2130772266; + + // aapt resource value: 0x7f0100f1 + public const int searchHintIcon = 2130772209; + + // aapt resource value: 0x7f0100f0 + public const int searchIcon = 2130772208; + + // aapt resource value: 0x7f010099 + public const int searchViewStyle = 2130772121; + + // aapt resource value: 0x7f0100c4 + public const int seekBarStyle = 2130772164; + + // aapt resource value: 0x7f010089 + public const int selectableItemBackground = 2130772105; + + // aapt resource value: 0x7f01008a + public const int selectableItemBackgroundBorderless = 2130772106; + + // aapt resource value: 0x7f0100dc + public const int showAsAction = 2130772188; + + // aapt resource value: 0x7f0100d8 + public const int showDividers = 2130772184; + + // aapt resource value: 0x7f010101 + public const int showText = 2130772225; + + // aapt resource value: 0x7f010048 + public const int showTitle = 2130772040; + + // aapt resource value: 0x7f010046 + public const int singleChoiceItemLayout = 2130772038; + + // aapt resource value: 0x7f010001 + public const int spanCount = 2130771969; + + // aapt resource value: 0x7f0100d0 + public const int spinBars = 2130772176; + + // aapt resource value: 0x7f010084 + public const int spinnerDropDownItemStyle = 2130772100; + + // aapt resource value: 0x7f0100c5 + public const int spinnerStyle = 2130772165; + + // aapt resource value: 0x7f010100 + public const int splitTrack = 2130772224; + + // aapt resource value: 0x7f010049 + public const int srcCompat = 2130772041; + + // aapt resource value: 0x7f010003 + public const int stackFromEnd = 2130771971; + + // aapt resource value: 0x7f0100e7 + public const int state_above_anchor = 2130772199; + + // aapt resource value: 0x7f010119 + public const int state_collapsed = 2130772249; + + // aapt resource value: 0x7f01011a + public const int state_collapsible = 2130772250; + + // aapt resource value: 0x7f010132 + public const int statusBarBackground = 2130772274; + + // aapt resource value: 0x7f010128 + public const int statusBarScrim = 2130772264; + + // aapt resource value: 0x7f0100e5 + public const int subMenuArrow = 2130772197; + + // aapt resource value: 0x7f0100f6 + public const int submitBackground = 2130772214; + + // aapt resource value: 0x7f010028 + public const int subtitle = 2130772008; + + // aapt resource value: 0x7f010103 + public const int subtitleTextAppearance = 2130772227; + + // aapt resource value: 0x7f010112 + public const int subtitleTextColor = 2130772242; + + // aapt resource value: 0x7f01002a + public const int subtitleTextStyle = 2130772010; + + // aapt resource value: 0x7f0100f4 + public const int suggestionRowLayout = 2130772212; + + // aapt resource value: 0x7f0100fe + public const int switchMinWidth = 2130772222; + + // aapt resource value: 0x7f0100ff + public const int switchPadding = 2130772223; + + // aapt resource value: 0x7f0100c6 + public const int switchStyle = 2130772166; + + // aapt resource value: 0x7f0100fd + public const int switchTextAppearance = 2130772221; + + // aapt resource value: 0x7f01014f + public const int tabBackground = 2130772303; + + // aapt resource value: 0x7f01014e + public const int tabContentStart = 2130772302; + + // aapt resource value: 0x7f010151 + public const int tabGravity = 2130772305; + + // aapt resource value: 0x7f01014c + public const int tabIndicatorColor = 2130772300; + + // aapt resource value: 0x7f01014d + public const int tabIndicatorHeight = 2130772301; + + // aapt resource value: 0x7f010153 + public const int tabMaxWidth = 2130772307; + + // aapt resource value: 0x7f010152 + public const int tabMinWidth = 2130772306; + + // aapt resource value: 0x7f010150 + public const int tabMode = 2130772304; + + // aapt resource value: 0x7f01015b + public const int tabPadding = 2130772315; + + // aapt resource value: 0x7f01015a + public const int tabPaddingBottom = 2130772314; + + // aapt resource value: 0x7f010159 + public const int tabPaddingEnd = 2130772313; + + // aapt resource value: 0x7f010157 + public const int tabPaddingStart = 2130772311; + + // aapt resource value: 0x7f010158 + public const int tabPaddingTop = 2130772312; + + // aapt resource value: 0x7f010156 + public const int tabSelectedTextColor = 2130772310; + + // aapt resource value: 0x7f010154 + public const int tabTextAppearance = 2130772308; + + // aapt resource value: 0x7f010155 + public const int tabTextColor = 2130772309; + + // aapt resource value: 0x7f01004f + public const int textAllCaps = 2130772047; + + // aapt resource value: 0x7f01007c + public const int textAppearanceLargePopupMenu = 2130772092; + + // aapt resource value: 0x7f0100a1 + public const int textAppearanceListItem = 2130772129; + + // aapt resource value: 0x7f0100a2 + public const int textAppearanceListItemSecondary = 2130772130; + + // aapt resource value: 0x7f0100a3 + public const int textAppearanceListItemSmall = 2130772131; + + // aapt resource value: 0x7f01007e + public const int textAppearancePopupMenuHeader = 2130772094; + + // aapt resource value: 0x7f010097 + public const int textAppearanceSearchResultSubtitle = 2130772119; + + // aapt resource value: 0x7f010096 + public const int textAppearanceSearchResultTitle = 2130772118; + + // aapt resource value: 0x7f01007d + public const int textAppearanceSmallPopupMenu = 2130772093; + + // aapt resource value: 0x7f0100b6 + public const int textColorAlertDialogListItem = 2130772150; + + // aapt resource value: 0x7f01013b + public const int textColorError = 2130772283; + + // aapt resource value: 0x7f010098 + public const int textColorSearchUrl = 2130772120; + + // aapt resource value: 0x7f010115 + public const int theme = 2130772245; + + // aapt resource value: 0x7f0100d6 + public const int thickness = 2130772182; + + // aapt resource value: 0x7f0100fc + public const int thumbTextPadding = 2130772220; + + // aapt resource value: 0x7f0100f7 + public const int thumbTint = 2130772215; + + // aapt resource value: 0x7f0100f8 + public const int thumbTintMode = 2130772216; + + // aapt resource value: 0x7f01004c + public const int tickMark = 2130772044; + + // aapt resource value: 0x7f01004d + public const int tickMarkTint = 2130772045; + + // aapt resource value: 0x7f01004e + public const int tickMarkTintMode = 2130772046; + + // aapt resource value: 0x7f01004a + public const int tint = 2130772042; + + // aapt resource value: 0x7f01004b + public const int tintMode = 2130772043; + + // aapt resource value: 0x7f010025 + public const int title = 2130772005; + + // aapt resource value: 0x7f01012e + public const int titleEnabled = 2130772270; + + // aapt resource value: 0x7f010104 + public const int titleMargin = 2130772228; + + // aapt resource value: 0x7f010108 + public const int titleMarginBottom = 2130772232; + + // aapt resource value: 0x7f010106 + public const int titleMarginEnd = 2130772230; + + // aapt resource value: 0x7f010105 + public const int titleMarginStart = 2130772229; + + // aapt resource value: 0x7f010107 + public const int titleMarginTop = 2130772231; + + // aapt resource value: 0x7f010109 + public const int titleMargins = 2130772233; + + // aapt resource value: 0x7f010102 + public const int titleTextAppearance = 2130772226; + + // aapt resource value: 0x7f010111 + public const int titleTextColor = 2130772241; + + // aapt resource value: 0x7f010029 + public const int titleTextStyle = 2130772009; + + // aapt resource value: 0x7f010129 + public const int toolbarId = 2130772265; + + // aapt resource value: 0x7f010090 + public const int toolbarNavigationButtonStyle = 2130772112; + + // aapt resource value: 0x7f01008f + public const int toolbarStyle = 2130772111; + + // aapt resource value: 0x7f0100c9 + public const int tooltipForegroundColor = 2130772169; + + // aapt resource value: 0x7f0100c8 + public const int tooltipFrameBackground = 2130772168; + + // aapt resource value: 0x7f0100e1 + public const int tooltipText = 2130772193; + + // aapt resource value: 0x7f0100f9 + public const int track = 2130772217; + + // aapt resource value: 0x7f0100fa + public const int trackTint = 2130772218; + + // aapt resource value: 0x7f0100fb + public const int trackTintMode = 2130772219; + + // aapt resource value: 0x7f010140 + public const int useCompatPadding = 2130772288; + + // aapt resource value: 0x7f0100f2 + public const int voiceIcon = 2130772210; + + // aapt resource value: 0x7f010056 + public const int windowActionBar = 2130772054; + + // aapt resource value: 0x7f010058 + public const int windowActionBarOverlay = 2130772056; + + // aapt resource value: 0x7f010059 + public const int windowActionModeOverlay = 2130772057; + + // aapt resource value: 0x7f01005d + public const int windowFixedHeightMajor = 2130772061; + + // aapt resource value: 0x7f01005b + public const int windowFixedHeightMinor = 2130772059; + + // aapt resource value: 0x7f01005a + public const int windowFixedWidthMajor = 2130772058; + + // aapt resource value: 0x7f01005c + public const int windowFixedWidthMinor = 2130772060; + + // aapt resource value: 0x7f01005e + public const int windowMinWidthMajor = 2130772062; + + // aapt resource value: 0x7f01005f + public const int windowMinWidthMinor = 2130772063; + + // aapt resource value: 0x7f010057 + public const int windowNoTitle = 2130772055; + + static Attribute() + { + global::Android.Runtime.ResourceIdManager.UpdateIdValues(); + } + + private Attribute() + { + } + } + + public partial class Boolean + { + + // aapt resource value: 0x7f0f0000 + public const int abc_action_bar_embed_tabs = 2131689472; + + // aapt resource value: 0x7f0f0001 + public const int abc_allow_stacked_button_bar = 2131689473; + + // aapt resource value: 0x7f0f0002 + public const int abc_config_actionMenuItemAllCaps = 2131689474; + + // aapt resource value: 0x7f0f0003 + public const int abc_config_closeDialogWhenTouchOutside = 2131689475; + + // aapt resource value: 0x7f0f0004 + public const int abc_config_showMenuShortcutsWhenKeyboardPresent = 2131689476; + + static Boolean() + { + global::Android.Runtime.ResourceIdManager.UpdateIdValues(); + } + + private Boolean() + { + } + } + + public partial class Color + { + + // aapt resource value: 0x7f0e004f + public const int abc_background_cache_hint_selector_material_dark = 2131624015; + + // aapt resource value: 0x7f0e0050 + public const int abc_background_cache_hint_selector_material_light = 2131624016; + + // aapt resource value: 0x7f0e0051 + public const int abc_btn_colored_borderless_text_material = 2131624017; + + // aapt resource value: 0x7f0e0052 + public const int abc_btn_colored_text_material = 2131624018; + + // aapt resource value: 0x7f0e0053 + public const int abc_color_highlight_material = 2131624019; + + // aapt resource value: 0x7f0e0054 + public const int abc_hint_foreground_material_dark = 2131624020; + + // aapt resource value: 0x7f0e0055 + public const int abc_hint_foreground_material_light = 2131624021; + + // aapt resource value: 0x7f0e0004 + public const int abc_input_method_navigation_guard = 2131623940; + + // aapt resource value: 0x7f0e0056 + public const int abc_primary_text_disable_only_material_dark = 2131624022; + + // aapt resource value: 0x7f0e0057 + public const int abc_primary_text_disable_only_material_light = 2131624023; + + // aapt resource value: 0x7f0e0058 + public const int abc_primary_text_material_dark = 2131624024; + + // aapt resource value: 0x7f0e0059 + public const int abc_primary_text_material_light = 2131624025; + + // aapt resource value: 0x7f0e005a + public const int abc_search_url_text = 2131624026; + + // aapt resource value: 0x7f0e0005 + public const int abc_search_url_text_normal = 2131623941; + + // aapt resource value: 0x7f0e0006 + public const int abc_search_url_text_pressed = 2131623942; + + // aapt resource value: 0x7f0e0007 + public const int abc_search_url_text_selected = 2131623943; + + // aapt resource value: 0x7f0e005b + public const int abc_secondary_text_material_dark = 2131624027; + + // aapt resource value: 0x7f0e005c + public const int abc_secondary_text_material_light = 2131624028; + + // aapt resource value: 0x7f0e005d + public const int abc_tint_btn_checkable = 2131624029; + + // aapt resource value: 0x7f0e005e + public const int abc_tint_default = 2131624030; + + // aapt resource value: 0x7f0e005f + public const int abc_tint_edittext = 2131624031; + + // aapt resource value: 0x7f0e0060 + public const int abc_tint_seek_thumb = 2131624032; + + // aapt resource value: 0x7f0e0061 + public const int abc_tint_spinner = 2131624033; + + // aapt resource value: 0x7f0e0062 + public const int abc_tint_switch_track = 2131624034; + + // aapt resource value: 0x7f0e0008 + public const int accent_material_dark = 2131623944; + + // aapt resource value: 0x7f0e0009 + public const int accent_material_light = 2131623945; + + // aapt resource value: 0x7f0e000a + public const int background_floating_material_dark = 2131623946; + + // aapt resource value: 0x7f0e000b + public const int background_floating_material_light = 2131623947; + + // aapt resource value: 0x7f0e000c + public const int background_material_dark = 2131623948; + + // aapt resource value: 0x7f0e000d + public const int background_material_light = 2131623949; + + // aapt resource value: 0x7f0e000e + public const int bright_foreground_disabled_material_dark = 2131623950; + + // aapt resource value: 0x7f0e000f + public const int bright_foreground_disabled_material_light = 2131623951; + + // aapt resource value: 0x7f0e0010 + public const int bright_foreground_inverse_material_dark = 2131623952; + + // aapt resource value: 0x7f0e0011 + public const int bright_foreground_inverse_material_light = 2131623953; + + // aapt resource value: 0x7f0e0012 + public const int bright_foreground_material_dark = 2131623954; + + // aapt resource value: 0x7f0e0013 + public const int bright_foreground_material_light = 2131623955; + + // aapt resource value: 0x7f0e0014 + public const int button_material_dark = 2131623956; + + // aapt resource value: 0x7f0e0015 + public const int button_material_light = 2131623957; + + // aapt resource value: 0x7f0e0000 + public const int cardview_dark_background = 2131623936; + + // aapt resource value: 0x7f0e0001 + public const int cardview_light_background = 2131623937; + + // aapt resource value: 0x7f0e0002 + public const int cardview_shadow_end_color = 2131623938; + + // aapt resource value: 0x7f0e0003 + public const int cardview_shadow_start_color = 2131623939; + + // aapt resource value: 0x7f0e004e + public const int colorAccent = 2131624014; + + // aapt resource value: 0x7f0e004c + public const int colorPrimary = 2131624012; + + // aapt resource value: 0x7f0e004d + public const int colorPrimaryDark = 2131624013; + + // aapt resource value: 0x7f0e0040 + public const int design_bottom_navigation_shadow_color = 2131624000; + + // aapt resource value: 0x7f0e0063 + public const int design_error = 2131624035; + + // aapt resource value: 0x7f0e0041 + public const int design_fab_shadow_end_color = 2131624001; + + // aapt resource value: 0x7f0e0042 + public const int design_fab_shadow_mid_color = 2131624002; + + // aapt resource value: 0x7f0e0043 + public const int design_fab_shadow_start_color = 2131624003; + + // aapt resource value: 0x7f0e0044 + public const int design_fab_stroke_end_inner_color = 2131624004; + + // aapt resource value: 0x7f0e0045 + public const int design_fab_stroke_end_outer_color = 2131624005; + + // aapt resource value: 0x7f0e0046 + public const int design_fab_stroke_top_inner_color = 2131624006; + + // aapt resource value: 0x7f0e0047 + public const int design_fab_stroke_top_outer_color = 2131624007; + + // aapt resource value: 0x7f0e0048 + public const int design_snackbar_background_color = 2131624008; + + // aapt resource value: 0x7f0e0064 + public const int design_tint_password_toggle = 2131624036; + + // aapt resource value: 0x7f0e0016 + public const int dim_foreground_disabled_material_dark = 2131623958; + + // aapt resource value: 0x7f0e0017 + public const int dim_foreground_disabled_material_light = 2131623959; + + // aapt resource value: 0x7f0e0018 + public const int dim_foreground_material_dark = 2131623960; + + // aapt resource value: 0x7f0e0019 + public const int dim_foreground_material_light = 2131623961; + + // aapt resource value: 0x7f0e001a + public const int error_color_material = 2131623962; + + // aapt resource value: 0x7f0e001b + public const int foreground_material_dark = 2131623963; + + // aapt resource value: 0x7f0e001c + public const int foreground_material_light = 2131623964; + + // aapt resource value: 0x7f0e001d + public const int highlighted_text_material_dark = 2131623965; + + // aapt resource value: 0x7f0e001e + public const int highlighted_text_material_light = 2131623966; + + // aapt resource value: 0x7f0e004b + public const int launcher_background = 2131624011; + + // aapt resource value: 0x7f0e001f + public const int material_blue_grey_800 = 2131623967; + + // aapt resource value: 0x7f0e0020 + public const int material_blue_grey_900 = 2131623968; + + // aapt resource value: 0x7f0e0021 + public const int material_blue_grey_950 = 2131623969; + + // aapt resource value: 0x7f0e0022 + public const int material_deep_teal_200 = 2131623970; + + // aapt resource value: 0x7f0e0023 + public const int material_deep_teal_500 = 2131623971; + + // aapt resource value: 0x7f0e0024 + public const int material_grey_100 = 2131623972; + + // aapt resource value: 0x7f0e0025 + public const int material_grey_300 = 2131623973; + + // aapt resource value: 0x7f0e0026 + public const int material_grey_50 = 2131623974; + + // aapt resource value: 0x7f0e0027 + public const int material_grey_600 = 2131623975; + + // aapt resource value: 0x7f0e0028 + public const int material_grey_800 = 2131623976; + + // aapt resource value: 0x7f0e0029 + public const int material_grey_850 = 2131623977; + + // aapt resource value: 0x7f0e002a + public const int material_grey_900 = 2131623978; + + // aapt resource value: 0x7f0e0049 + public const int notification_action_color_filter = 2131624009; + + // aapt resource value: 0x7f0e004a + public const int notification_icon_bg_color = 2131624010; + + // aapt resource value: 0x7f0e003f + public const int notification_material_background_media_default_color = 2131623999; + + // aapt resource value: 0x7f0e002b + public const int primary_dark_material_dark = 2131623979; + + // aapt resource value: 0x7f0e002c + public const int primary_dark_material_light = 2131623980; + + // aapt resource value: 0x7f0e002d + public const int primary_material_dark = 2131623981; + + // aapt resource value: 0x7f0e002e + public const int primary_material_light = 2131623982; + + // aapt resource value: 0x7f0e002f + public const int primary_text_default_material_dark = 2131623983; + + // aapt resource value: 0x7f0e0030 + public const int primary_text_default_material_light = 2131623984; + + // aapt resource value: 0x7f0e0031 + public const int primary_text_disabled_material_dark = 2131623985; + + // aapt resource value: 0x7f0e0032 + public const int primary_text_disabled_material_light = 2131623986; + + // aapt resource value: 0x7f0e0033 + public const int ripple_material_dark = 2131623987; + + // aapt resource value: 0x7f0e0034 + public const int ripple_material_light = 2131623988; + + // aapt resource value: 0x7f0e0035 + public const int secondary_text_default_material_dark = 2131623989; + + // aapt resource value: 0x7f0e0036 + public const int secondary_text_default_material_light = 2131623990; + + // aapt resource value: 0x7f0e0037 + public const int secondary_text_disabled_material_dark = 2131623991; + + // aapt resource value: 0x7f0e0038 + public const int secondary_text_disabled_material_light = 2131623992; + + // aapt resource value: 0x7f0e0039 + public const int switch_thumb_disabled_material_dark = 2131623993; + + // aapt resource value: 0x7f0e003a + public const int switch_thumb_disabled_material_light = 2131623994; + + // aapt resource value: 0x7f0e0065 + public const int switch_thumb_material_dark = 2131624037; + + // aapt resource value: 0x7f0e0066 + public const int switch_thumb_material_light = 2131624038; + + // aapt resource value: 0x7f0e003b + public const int switch_thumb_normal_material_dark = 2131623995; + + // aapt resource value: 0x7f0e003c + public const int switch_thumb_normal_material_light = 2131623996; + + // aapt resource value: 0x7f0e003d + public const int tooltip_background_dark = 2131623997; + + // aapt resource value: 0x7f0e003e + public const int tooltip_background_light = 2131623998; + + static Color() + { + global::Android.Runtime.ResourceIdManager.UpdateIdValues(); + } + + private Color() + { + } + } + + public partial class Dimension + { + + // aapt resource value: 0x7f09001b + public const int abc_action_bar_content_inset_material = 2131296283; + + // aapt resource value: 0x7f09001c + public const int abc_action_bar_content_inset_with_nav = 2131296284; + + // aapt resource value: 0x7f090010 + public const int abc_action_bar_default_height_material = 2131296272; + + // aapt resource value: 0x7f09001d + public const int abc_action_bar_default_padding_end_material = 2131296285; + + // aapt resource value: 0x7f09001e + public const int abc_action_bar_default_padding_start_material = 2131296286; + + // aapt resource value: 0x7f090020 + public const int abc_action_bar_elevation_material = 2131296288; + + // aapt resource value: 0x7f090021 + public const int abc_action_bar_icon_vertical_padding_material = 2131296289; + + // aapt resource value: 0x7f090022 + public const int abc_action_bar_overflow_padding_end_material = 2131296290; + + // aapt resource value: 0x7f090023 + public const int abc_action_bar_overflow_padding_start_material = 2131296291; + + // aapt resource value: 0x7f090011 + public const int abc_action_bar_progress_bar_size = 2131296273; + + // aapt resource value: 0x7f090024 + public const int abc_action_bar_stacked_max_height = 2131296292; + + // aapt resource value: 0x7f090025 + public const int abc_action_bar_stacked_tab_max_width = 2131296293; + + // aapt resource value: 0x7f090026 + public const int abc_action_bar_subtitle_bottom_margin_material = 2131296294; + + // aapt resource value: 0x7f090027 + public const int abc_action_bar_subtitle_top_margin_material = 2131296295; + + // aapt resource value: 0x7f090028 + public const int abc_action_button_min_height_material = 2131296296; + + // aapt resource value: 0x7f090029 + public const int abc_action_button_min_width_material = 2131296297; + + // aapt resource value: 0x7f09002a + public const int abc_action_button_min_width_overflow_material = 2131296298; + + // aapt resource value: 0x7f09000f + public const int abc_alert_dialog_button_bar_height = 2131296271; + + // aapt resource value: 0x7f09002b + public const int abc_button_inset_horizontal_material = 2131296299; + + // aapt resource value: 0x7f09002c + public const int abc_button_inset_vertical_material = 2131296300; + + // aapt resource value: 0x7f09002d + public const int abc_button_padding_horizontal_material = 2131296301; + + // aapt resource value: 0x7f09002e + public const int abc_button_padding_vertical_material = 2131296302; + + // aapt resource value: 0x7f09002f + public const int abc_cascading_menus_min_smallest_width = 2131296303; + + // aapt resource value: 0x7f090014 + public const int abc_config_prefDialogWidth = 2131296276; + + // aapt resource value: 0x7f090030 + public const int abc_control_corner_material = 2131296304; + + // aapt resource value: 0x7f090031 + public const int abc_control_inset_material = 2131296305; + + // aapt resource value: 0x7f090032 + public const int abc_control_padding_material = 2131296306; + + // aapt resource value: 0x7f090015 + public const int abc_dialog_fixed_height_major = 2131296277; + + // aapt resource value: 0x7f090016 + public const int abc_dialog_fixed_height_minor = 2131296278; + + // aapt resource value: 0x7f090017 + public const int abc_dialog_fixed_width_major = 2131296279; + + // aapt resource value: 0x7f090018 + public const int abc_dialog_fixed_width_minor = 2131296280; + + // aapt resource value: 0x7f090033 + public const int abc_dialog_list_padding_bottom_no_buttons = 2131296307; + + // aapt resource value: 0x7f090034 + public const int abc_dialog_list_padding_top_no_title = 2131296308; + + // aapt resource value: 0x7f090019 + public const int abc_dialog_min_width_major = 2131296281; + + // aapt resource value: 0x7f09001a + public const int abc_dialog_min_width_minor = 2131296282; + + // aapt resource value: 0x7f090035 + public const int abc_dialog_padding_material = 2131296309; + + // aapt resource value: 0x7f090036 + public const int abc_dialog_padding_top_material = 2131296310; + + // aapt resource value: 0x7f090037 + public const int abc_dialog_title_divider_material = 2131296311; + + // aapt resource value: 0x7f090038 + public const int abc_disabled_alpha_material_dark = 2131296312; + + // aapt resource value: 0x7f090039 + public const int abc_disabled_alpha_material_light = 2131296313; + + // aapt resource value: 0x7f09003a + public const int abc_dropdownitem_icon_width = 2131296314; + + // aapt resource value: 0x7f09003b + public const int abc_dropdownitem_text_padding_left = 2131296315; + + // aapt resource value: 0x7f09003c + public const int abc_dropdownitem_text_padding_right = 2131296316; + + // aapt resource value: 0x7f09003d + public const int abc_edit_text_inset_bottom_material = 2131296317; + + // aapt resource value: 0x7f09003e + public const int abc_edit_text_inset_horizontal_material = 2131296318; + + // aapt resource value: 0x7f09003f + public const int abc_edit_text_inset_top_material = 2131296319; + + // aapt resource value: 0x7f090040 + public const int abc_floating_window_z = 2131296320; + + // aapt resource value: 0x7f090041 + public const int abc_list_item_padding_horizontal_material = 2131296321; + + // aapt resource value: 0x7f090042 + public const int abc_panel_menu_list_width = 2131296322; + + // aapt resource value: 0x7f090043 + public const int abc_progress_bar_height_material = 2131296323; + + // aapt resource value: 0x7f090044 + public const int abc_search_view_preferred_height = 2131296324; + + // aapt resource value: 0x7f090045 + public const int abc_search_view_preferred_width = 2131296325; + + // aapt resource value: 0x7f090046 + public const int abc_seekbar_track_background_height_material = 2131296326; + + // aapt resource value: 0x7f090047 + public const int abc_seekbar_track_progress_height_material = 2131296327; + + // aapt resource value: 0x7f090048 + public const int abc_select_dialog_padding_start_material = 2131296328; + + // aapt resource value: 0x7f09001f + public const int abc_switch_padding = 2131296287; + + // aapt resource value: 0x7f090049 + public const int abc_text_size_body_1_material = 2131296329; + + // aapt resource value: 0x7f09004a + public const int abc_text_size_body_2_material = 2131296330; + + // aapt resource value: 0x7f09004b + public const int abc_text_size_button_material = 2131296331; + + // aapt resource value: 0x7f09004c + public const int abc_text_size_caption_material = 2131296332; + + // aapt resource value: 0x7f09004d + public const int abc_text_size_display_1_material = 2131296333; + + // aapt resource value: 0x7f09004e + public const int abc_text_size_display_2_material = 2131296334; + + // aapt resource value: 0x7f09004f + public const int abc_text_size_display_3_material = 2131296335; + + // aapt resource value: 0x7f090050 + public const int abc_text_size_display_4_material = 2131296336; + + // aapt resource value: 0x7f090051 + public const int abc_text_size_headline_material = 2131296337; + + // aapt resource value: 0x7f090052 + public const int abc_text_size_large_material = 2131296338; + + // aapt resource value: 0x7f090053 + public const int abc_text_size_medium_material = 2131296339; + + // aapt resource value: 0x7f090054 + public const int abc_text_size_menu_header_material = 2131296340; + + // aapt resource value: 0x7f090055 + public const int abc_text_size_menu_material = 2131296341; + + // aapt resource value: 0x7f090056 + public const int abc_text_size_small_material = 2131296342; + + // aapt resource value: 0x7f090057 + public const int abc_text_size_subhead_material = 2131296343; + + // aapt resource value: 0x7f090012 + public const int abc_text_size_subtitle_material_toolbar = 2131296274; + + // aapt resource value: 0x7f090058 + public const int abc_text_size_title_material = 2131296344; + + // aapt resource value: 0x7f090013 + public const int abc_text_size_title_material_toolbar = 2131296275; + + // aapt resource value: 0x7f09000c + public const int cardview_compat_inset_shadow = 2131296268; + + // aapt resource value: 0x7f09000d + public const int cardview_default_elevation = 2131296269; + + // aapt resource value: 0x7f09000e + public const int cardview_default_radius = 2131296270; + + // aapt resource value: 0x7f090094 + public const int compat_button_inset_horizontal_material = 2131296404; + + // aapt resource value: 0x7f090095 + public const int compat_button_inset_vertical_material = 2131296405; + + // aapt resource value: 0x7f090096 + public const int compat_button_padding_horizontal_material = 2131296406; + + // aapt resource value: 0x7f090097 + public const int compat_button_padding_vertical_material = 2131296407; + + // aapt resource value: 0x7f090098 + public const int compat_control_corner_material = 2131296408; + + // aapt resource value: 0x7f090072 + public const int design_appbar_elevation = 2131296370; + + // aapt resource value: 0x7f090073 + public const int design_bottom_navigation_active_item_max_width = 2131296371; + + // aapt resource value: 0x7f090074 + public const int design_bottom_navigation_active_text_size = 2131296372; + + // aapt resource value: 0x7f090075 + public const int design_bottom_navigation_elevation = 2131296373; + + // aapt resource value: 0x7f090076 + public const int design_bottom_navigation_height = 2131296374; + + // aapt resource value: 0x7f090077 + public const int design_bottom_navigation_item_max_width = 2131296375; + + // aapt resource value: 0x7f090078 + public const int design_bottom_navigation_item_min_width = 2131296376; + + // aapt resource value: 0x7f090079 + public const int design_bottom_navigation_margin = 2131296377; + + // aapt resource value: 0x7f09007a + public const int design_bottom_navigation_shadow_height = 2131296378; + + // aapt resource value: 0x7f09007b + public const int design_bottom_navigation_text_size = 2131296379; + + // aapt resource value: 0x7f09007c + public const int design_bottom_sheet_modal_elevation = 2131296380; + + // aapt resource value: 0x7f09007d + public const int design_bottom_sheet_peek_height_min = 2131296381; + + // aapt resource value: 0x7f09007e + public const int design_fab_border_width = 2131296382; + + // aapt resource value: 0x7f09007f + public const int design_fab_elevation = 2131296383; + + // aapt resource value: 0x7f090080 + public const int design_fab_image_size = 2131296384; + + // aapt resource value: 0x7f090081 + public const int design_fab_size_mini = 2131296385; + + // aapt resource value: 0x7f090082 + public const int design_fab_size_normal = 2131296386; + + // aapt resource value: 0x7f090083 + public const int design_fab_translation_z_pressed = 2131296387; + + // aapt resource value: 0x7f090084 + public const int design_navigation_elevation = 2131296388; + + // aapt resource value: 0x7f090085 + public const int design_navigation_icon_padding = 2131296389; + + // aapt resource value: 0x7f090086 + public const int design_navigation_icon_size = 2131296390; + + // aapt resource value: 0x7f09006a + public const int design_navigation_max_width = 2131296362; + + // aapt resource value: 0x7f090087 + public const int design_navigation_padding_bottom = 2131296391; + + // aapt resource value: 0x7f090088 + public const int design_navigation_separator_vertical_padding = 2131296392; + + // aapt resource value: 0x7f09006b + public const int design_snackbar_action_inline_max_width = 2131296363; + + // aapt resource value: 0x7f09006c + public const int design_snackbar_background_corner_radius = 2131296364; + + // aapt resource value: 0x7f090089 + public const int design_snackbar_elevation = 2131296393; + + // aapt resource value: 0x7f09006d + public const int design_snackbar_extra_spacing_horizontal = 2131296365; + + // aapt resource value: 0x7f09006e + public const int design_snackbar_max_width = 2131296366; + + // aapt resource value: 0x7f09006f + public const int design_snackbar_min_width = 2131296367; + + // aapt resource value: 0x7f09008a + public const int design_snackbar_padding_horizontal = 2131296394; + + // aapt resource value: 0x7f09008b + public const int design_snackbar_padding_vertical = 2131296395; + + // aapt resource value: 0x7f090070 + public const int design_snackbar_padding_vertical_2lines = 2131296368; + + // aapt resource value: 0x7f09008c + public const int design_snackbar_text_size = 2131296396; + + // aapt resource value: 0x7f09008d + public const int design_tab_max_width = 2131296397; + + // aapt resource value: 0x7f090071 + public const int design_tab_scrollable_min_width = 2131296369; + + // aapt resource value: 0x7f09008e + public const int design_tab_text_size = 2131296398; + + // aapt resource value: 0x7f09008f + public const int design_tab_text_size_2line = 2131296399; + + // aapt resource value: 0x7f090059 + public const int disabled_alpha_material_dark = 2131296345; + + // aapt resource value: 0x7f09005a + public const int disabled_alpha_material_light = 2131296346; + + // aapt resource value: 0x7f090000 + public const int fastscroll_default_thickness = 2131296256; + + // aapt resource value: 0x7f090001 + public const int fastscroll_margin = 2131296257; + + // aapt resource value: 0x7f090002 + public const int fastscroll_minimum_range = 2131296258; + + // aapt resource value: 0x7f09005b + public const int highlight_alpha_material_colored = 2131296347; + + // aapt resource value: 0x7f09005c + public const int highlight_alpha_material_dark = 2131296348; + + // aapt resource value: 0x7f09005d + public const int highlight_alpha_material_light = 2131296349; + + // aapt resource value: 0x7f09005e + public const int hint_alpha_material_dark = 2131296350; + + // aapt resource value: 0x7f09005f + public const int hint_alpha_material_light = 2131296351; + + // aapt resource value: 0x7f090060 + public const int hint_pressed_alpha_material_dark = 2131296352; + + // aapt resource value: 0x7f090061 + public const int hint_pressed_alpha_material_light = 2131296353; + + // aapt resource value: 0x7f090003 + public const int item_touch_helper_max_drag_scroll_per_frame = 2131296259; + + // aapt resource value: 0x7f090004 + public const int item_touch_helper_swipe_escape_max_velocity = 2131296260; + + // aapt resource value: 0x7f090005 + public const int item_touch_helper_swipe_escape_velocity = 2131296261; + + // aapt resource value: 0x7f090006 + public const int mr_controller_volume_group_list_item_height = 2131296262; + + // aapt resource value: 0x7f090007 + public const int mr_controller_volume_group_list_item_icon_size = 2131296263; + + // aapt resource value: 0x7f090008 + public const int mr_controller_volume_group_list_max_height = 2131296264; + + // aapt resource value: 0x7f09000b + public const int mr_controller_volume_group_list_padding_top = 2131296267; + + // aapt resource value: 0x7f090009 + public const int mr_dialog_fixed_width_major = 2131296265; + + // aapt resource value: 0x7f09000a + public const int mr_dialog_fixed_width_minor = 2131296266; + + // aapt resource value: 0x7f090099 + public const int notification_action_icon_size = 2131296409; + + // aapt resource value: 0x7f09009a + public const int notification_action_text_size = 2131296410; + + // aapt resource value: 0x7f09009b + public const int notification_big_circle_margin = 2131296411; + + // aapt resource value: 0x7f090091 + public const int notification_content_margin_start = 2131296401; + + // aapt resource value: 0x7f09009c + public const int notification_large_icon_height = 2131296412; + + // aapt resource value: 0x7f09009d + public const int notification_large_icon_width = 2131296413; + + // aapt resource value: 0x7f090092 + public const int notification_main_column_padding_top = 2131296402; + + // aapt resource value: 0x7f090093 + public const int notification_media_narrow_margin = 2131296403; + + // aapt resource value: 0x7f09009e + public const int notification_right_icon_size = 2131296414; + + // aapt resource value: 0x7f090090 + public const int notification_right_side_padding_top = 2131296400; + + // aapt resource value: 0x7f09009f + public const int notification_small_icon_background_padding = 2131296415; + + // aapt resource value: 0x7f0900a0 + public const int notification_small_icon_size_as_large = 2131296416; + + // aapt resource value: 0x7f0900a1 + public const int notification_subtext_size = 2131296417; + + // aapt resource value: 0x7f0900a2 + public const int notification_top_pad = 2131296418; + + // aapt resource value: 0x7f0900a3 + public const int notification_top_pad_large_text = 2131296419; + + // aapt resource value: 0x7f090062 + public const int tooltip_corner_radius = 2131296354; + + // aapt resource value: 0x7f090063 + public const int tooltip_horizontal_padding = 2131296355; + + // aapt resource value: 0x7f090064 + public const int tooltip_margin = 2131296356; + + // aapt resource value: 0x7f090065 + public const int tooltip_precise_anchor_extra_offset = 2131296357; + + // aapt resource value: 0x7f090066 + public const int tooltip_precise_anchor_threshold = 2131296358; + + // aapt resource value: 0x7f090067 + public const int tooltip_vertical_padding = 2131296359; + + // aapt resource value: 0x7f090068 + public const int tooltip_y_offset_non_touch = 2131296360; + + // aapt resource value: 0x7f090069 + public const int tooltip_y_offset_touch = 2131296361; + + static Dimension() + { + global::Android.Runtime.ResourceIdManager.UpdateIdValues(); + } + + private Dimension() + { + } + } + + public partial class Drawable + { + + // aapt resource value: 0x7f020000 + public const int abc_ab_share_pack_mtrl_alpha = 2130837504; + + // aapt resource value: 0x7f020001 + public const int abc_action_bar_item_background_material = 2130837505; + + // aapt resource value: 0x7f020002 + public const int abc_btn_borderless_material = 2130837506; + + // aapt resource value: 0x7f020003 + public const int abc_btn_check_material = 2130837507; + + // aapt resource value: 0x7f020004 + public const int abc_btn_check_to_on_mtrl_000 = 2130837508; + + // aapt resource value: 0x7f020005 + public const int abc_btn_check_to_on_mtrl_015 = 2130837509; + + // aapt resource value: 0x7f020006 + public const int abc_btn_colored_material = 2130837510; + + // aapt resource value: 0x7f020007 + public const int abc_btn_default_mtrl_shape = 2130837511; + + // aapt resource value: 0x7f020008 + public const int abc_btn_radio_material = 2130837512; + + // aapt resource value: 0x7f020009 + public const int abc_btn_radio_to_on_mtrl_000 = 2130837513; + + // aapt resource value: 0x7f02000a + public const int abc_btn_radio_to_on_mtrl_015 = 2130837514; + + // aapt resource value: 0x7f02000b + public const int abc_btn_switch_to_on_mtrl_00001 = 2130837515; + + // aapt resource value: 0x7f02000c + public const int abc_btn_switch_to_on_mtrl_00012 = 2130837516; + + // aapt resource value: 0x7f02000d + public const int abc_cab_background_internal_bg = 2130837517; + + // aapt resource value: 0x7f02000e + public const int abc_cab_background_top_material = 2130837518; + + // aapt resource value: 0x7f02000f + public const int abc_cab_background_top_mtrl_alpha = 2130837519; + + // aapt resource value: 0x7f020010 + public const int abc_control_background_material = 2130837520; + + // aapt resource value: 0x7f020011 + public const int abc_dialog_material_background = 2130837521; + + // aapt resource value: 0x7f020012 + public const int abc_edit_text_material = 2130837522; + + // aapt resource value: 0x7f020013 + public const int abc_ic_ab_back_material = 2130837523; + + // aapt resource value: 0x7f020014 + public const int abc_ic_arrow_drop_right_black_24dp = 2130837524; + + // aapt resource value: 0x7f020015 + public const int abc_ic_clear_material = 2130837525; + + // aapt resource value: 0x7f020016 + public const int abc_ic_commit_search_api_mtrl_alpha = 2130837526; + + // aapt resource value: 0x7f020017 + public const int abc_ic_go_search_api_material = 2130837527; + + // aapt resource value: 0x7f020018 + public const int abc_ic_menu_copy_mtrl_am_alpha = 2130837528; + + // aapt resource value: 0x7f020019 + public const int abc_ic_menu_cut_mtrl_alpha = 2130837529; + + // aapt resource value: 0x7f02001a + public const int abc_ic_menu_overflow_material = 2130837530; + + // aapt resource value: 0x7f02001b + public const int abc_ic_menu_paste_mtrl_am_alpha = 2130837531; + + // aapt resource value: 0x7f02001c + public const int abc_ic_menu_selectall_mtrl_alpha = 2130837532; + + // aapt resource value: 0x7f02001d + public const int abc_ic_menu_share_mtrl_alpha = 2130837533; + + // aapt resource value: 0x7f02001e + public const int abc_ic_search_api_material = 2130837534; + + // aapt resource value: 0x7f02001f + public const int abc_ic_star_black_16dp = 2130837535; + + // aapt resource value: 0x7f020020 + public const int abc_ic_star_black_36dp = 2130837536; + + // aapt resource value: 0x7f020021 + public const int abc_ic_star_black_48dp = 2130837537; + + // aapt resource value: 0x7f020022 + public const int abc_ic_star_half_black_16dp = 2130837538; + + // aapt resource value: 0x7f020023 + public const int abc_ic_star_half_black_36dp = 2130837539; + + // aapt resource value: 0x7f020024 + public const int abc_ic_star_half_black_48dp = 2130837540; + + // aapt resource value: 0x7f020025 + public const int abc_ic_voice_search_api_material = 2130837541; + + // aapt resource value: 0x7f020026 + public const int abc_item_background_holo_dark = 2130837542; + + // aapt resource value: 0x7f020027 + public const int abc_item_background_holo_light = 2130837543; + + // aapt resource value: 0x7f020028 + public const int abc_list_divider_mtrl_alpha = 2130837544; + + // aapt resource value: 0x7f020029 + public const int abc_list_focused_holo = 2130837545; + + // aapt resource value: 0x7f02002a + public const int abc_list_longpressed_holo = 2130837546; + + // aapt resource value: 0x7f02002b + public const int abc_list_pressed_holo_dark = 2130837547; + + // aapt resource value: 0x7f02002c + public const int abc_list_pressed_holo_light = 2130837548; + + // aapt resource value: 0x7f02002d + public const int abc_list_selector_background_transition_holo_dark = 2130837549; + + // aapt resource value: 0x7f02002e + public const int abc_list_selector_background_transition_holo_light = 2130837550; + + // aapt resource value: 0x7f02002f + public const int abc_list_selector_disabled_holo_dark = 2130837551; + + // aapt resource value: 0x7f020030 + public const int abc_list_selector_disabled_holo_light = 2130837552; + + // aapt resource value: 0x7f020031 + public const int abc_list_selector_holo_dark = 2130837553; + + // aapt resource value: 0x7f020032 + public const int abc_list_selector_holo_light = 2130837554; + + // aapt resource value: 0x7f020033 + public const int abc_menu_hardkey_panel_mtrl_mult = 2130837555; + + // aapt resource value: 0x7f020034 + public const int abc_popup_background_mtrl_mult = 2130837556; + + // aapt resource value: 0x7f020035 + public const int abc_ratingbar_indicator_material = 2130837557; + + // aapt resource value: 0x7f020036 + public const int abc_ratingbar_material = 2130837558; + + // aapt resource value: 0x7f020037 + public const int abc_ratingbar_small_material = 2130837559; + + // aapt resource value: 0x7f020038 + public const int abc_scrubber_control_off_mtrl_alpha = 2130837560; + + // aapt resource value: 0x7f020039 + public const int abc_scrubber_control_to_pressed_mtrl_000 = 2130837561; + + // aapt resource value: 0x7f02003a + public const int abc_scrubber_control_to_pressed_mtrl_005 = 2130837562; + + // aapt resource value: 0x7f02003b + public const int abc_scrubber_primary_mtrl_alpha = 2130837563; + + // aapt resource value: 0x7f02003c + public const int abc_scrubber_track_mtrl_alpha = 2130837564; + + // aapt resource value: 0x7f02003d + public const int abc_seekbar_thumb_material = 2130837565; + + // aapt resource value: 0x7f02003e + public const int abc_seekbar_tick_mark_material = 2130837566; + + // aapt resource value: 0x7f02003f + public const int abc_seekbar_track_material = 2130837567; + + // aapt resource value: 0x7f020040 + public const int abc_spinner_mtrl_am_alpha = 2130837568; + + // aapt resource value: 0x7f020041 + public const int abc_spinner_textfield_background_material = 2130837569; + + // aapt resource value: 0x7f020042 + public const int abc_switch_thumb_material = 2130837570; + + // aapt resource value: 0x7f020043 + public const int abc_switch_track_mtrl_alpha = 2130837571; + + // aapt resource value: 0x7f020044 + public const int abc_tab_indicator_material = 2130837572; + + // aapt resource value: 0x7f020045 + public const int abc_tab_indicator_mtrl_alpha = 2130837573; + + // aapt resource value: 0x7f020046 + public const int abc_text_cursor_material = 2130837574; + + // aapt resource value: 0x7f020047 + public const int abc_text_select_handle_left_mtrl_dark = 2130837575; + + // aapt resource value: 0x7f020048 + public const int abc_text_select_handle_left_mtrl_light = 2130837576; + + // aapt resource value: 0x7f020049 + public const int abc_text_select_handle_middle_mtrl_dark = 2130837577; + + // aapt resource value: 0x7f02004a + public const int abc_text_select_handle_middle_mtrl_light = 2130837578; + + // aapt resource value: 0x7f02004b + public const int abc_text_select_handle_right_mtrl_dark = 2130837579; + + // aapt resource value: 0x7f02004c + public const int abc_text_select_handle_right_mtrl_light = 2130837580; + + // aapt resource value: 0x7f02004d + public const int abc_textfield_activated_mtrl_alpha = 2130837581; + + // aapt resource value: 0x7f02004e + public const int abc_textfield_default_mtrl_alpha = 2130837582; + + // aapt resource value: 0x7f02004f + public const int abc_textfield_search_activated_mtrl_alpha = 2130837583; + + // aapt resource value: 0x7f020050 + public const int abc_textfield_search_default_mtrl_alpha = 2130837584; + + // aapt resource value: 0x7f020051 + public const int abc_textfield_search_material = 2130837585; + + // aapt resource value: 0x7f020052 + public const int abc_vector_test = 2130837586; + + // aapt resource value: 0x7f020053 + public const int avd_hide_password = 2130837587; + + // aapt resource value: 0x7f02012f + public const int avd_hide_password_1 = 2130837807; + + // aapt resource value: 0x7f020130 + public const int avd_hide_password_2 = 2130837808; + + // aapt resource value: 0x7f020131 + public const int avd_hide_password_3 = 2130837809; + + // aapt resource value: 0x7f020054 + public const int avd_show_password = 2130837588; + + // aapt resource value: 0x7f020132 + public const int avd_show_password_1 = 2130837810; + + // aapt resource value: 0x7f020133 + public const int avd_show_password_2 = 2130837811; + + // aapt resource value: 0x7f020134 + public const int avd_show_password_3 = 2130837812; + + // aapt resource value: 0x7f020055 + public const int design_bottom_navigation_item_background = 2130837589; + + // aapt resource value: 0x7f020056 + public const int design_fab_background = 2130837590; + + // aapt resource value: 0x7f020057 + public const int design_ic_visibility = 2130837591; + + // aapt resource value: 0x7f020058 + public const int design_ic_visibility_off = 2130837592; + + // aapt resource value: 0x7f020059 + public const int design_password_eye = 2130837593; + + // aapt resource value: 0x7f02005a + public const int design_snackbar_background = 2130837594; + + // aapt resource value: 0x7f02005b + public const int ic_audiotrack_dark = 2130837595; + + // aapt resource value: 0x7f02005c + public const int ic_audiotrack_light = 2130837596; + + // aapt resource value: 0x7f02005d + public const int ic_dialog_close_dark = 2130837597; + + // aapt resource value: 0x7f02005e + public const int ic_dialog_close_light = 2130837598; + + // aapt resource value: 0x7f02005f + public const int ic_group_collapse_00 = 2130837599; + + // aapt resource value: 0x7f020060 + public const int ic_group_collapse_01 = 2130837600; + + // aapt resource value: 0x7f020061 + public const int ic_group_collapse_02 = 2130837601; + + // aapt resource value: 0x7f020062 + public const int ic_group_collapse_03 = 2130837602; + + // aapt resource value: 0x7f020063 + public const int ic_group_collapse_04 = 2130837603; + + // aapt resource value: 0x7f020064 + public const int ic_group_collapse_05 = 2130837604; + + // aapt resource value: 0x7f020065 + public const int ic_group_collapse_06 = 2130837605; + + // aapt resource value: 0x7f020066 + public const int ic_group_collapse_07 = 2130837606; + + // aapt resource value: 0x7f020067 + public const int ic_group_collapse_08 = 2130837607; + + // aapt resource value: 0x7f020068 + public const int ic_group_collapse_09 = 2130837608; + + // aapt resource value: 0x7f020069 + public const int ic_group_collapse_10 = 2130837609; + + // aapt resource value: 0x7f02006a + public const int ic_group_collapse_11 = 2130837610; + + // aapt resource value: 0x7f02006b + public const int ic_group_collapse_12 = 2130837611; + + // aapt resource value: 0x7f02006c + public const int ic_group_collapse_13 = 2130837612; + + // aapt resource value: 0x7f02006d + public const int ic_group_collapse_14 = 2130837613; + + // aapt resource value: 0x7f02006e + public const int ic_group_collapse_15 = 2130837614; + + // aapt resource value: 0x7f02006f + public const int ic_group_expand_00 = 2130837615; + + // aapt resource value: 0x7f020070 + public const int ic_group_expand_01 = 2130837616; + + // aapt resource value: 0x7f020071 + public const int ic_group_expand_02 = 2130837617; + + // aapt resource value: 0x7f020072 + public const int ic_group_expand_03 = 2130837618; + + // aapt resource value: 0x7f020073 + public const int ic_group_expand_04 = 2130837619; + + // aapt resource value: 0x7f020074 + public const int ic_group_expand_05 = 2130837620; + + // aapt resource value: 0x7f020075 + public const int ic_group_expand_06 = 2130837621; + + // aapt resource value: 0x7f020076 + public const int ic_group_expand_07 = 2130837622; + + // aapt resource value: 0x7f020077 + public const int ic_group_expand_08 = 2130837623; + + // aapt resource value: 0x7f020078 + public const int ic_group_expand_09 = 2130837624; + + // aapt resource value: 0x7f020079 + public const int ic_group_expand_10 = 2130837625; + + // aapt resource value: 0x7f02007a + public const int ic_group_expand_11 = 2130837626; + + // aapt resource value: 0x7f02007b + public const int ic_group_expand_12 = 2130837627; + + // aapt resource value: 0x7f02007c + public const int ic_group_expand_13 = 2130837628; + + // aapt resource value: 0x7f02007d + public const int ic_group_expand_14 = 2130837629; + + // aapt resource value: 0x7f02007e + public const int ic_group_expand_15 = 2130837630; + + // aapt resource value: 0x7f02007f + public const int ic_media_pause_dark = 2130837631; + + // aapt resource value: 0x7f020080 + public const int ic_media_pause_light = 2130837632; + + // aapt resource value: 0x7f020081 + public const int ic_media_play_dark = 2130837633; + + // aapt resource value: 0x7f020082 + public const int ic_media_play_light = 2130837634; + + // aapt resource value: 0x7f020083 + public const int ic_media_stop_dark = 2130837635; + + // aapt resource value: 0x7f020084 + public const int ic_media_stop_light = 2130837636; + + // aapt resource value: 0x7f020085 + public const int ic_mr_button_connected_00_dark = 2130837637; + + // aapt resource value: 0x7f020086 + public const int ic_mr_button_connected_00_light = 2130837638; + + // aapt resource value: 0x7f020087 + public const int ic_mr_button_connected_01_dark = 2130837639; + + // aapt resource value: 0x7f020088 + public const int ic_mr_button_connected_01_light = 2130837640; + + // aapt resource value: 0x7f020089 + public const int ic_mr_button_connected_02_dark = 2130837641; + + // aapt resource value: 0x7f02008a + public const int ic_mr_button_connected_02_light = 2130837642; + + // aapt resource value: 0x7f02008b + public const int ic_mr_button_connected_03_dark = 2130837643; + + // aapt resource value: 0x7f02008c + public const int ic_mr_button_connected_03_light = 2130837644; + + // aapt resource value: 0x7f02008d + public const int ic_mr_button_connected_04_dark = 2130837645; + + // aapt resource value: 0x7f02008e + public const int ic_mr_button_connected_04_light = 2130837646; + + // aapt resource value: 0x7f02008f + public const int ic_mr_button_connected_05_dark = 2130837647; + + // aapt resource value: 0x7f020090 + public const int ic_mr_button_connected_05_light = 2130837648; + + // aapt resource value: 0x7f020091 + public const int ic_mr_button_connected_06_dark = 2130837649; + + // aapt resource value: 0x7f020092 + public const int ic_mr_button_connected_06_light = 2130837650; + + // aapt resource value: 0x7f020093 + public const int ic_mr_button_connected_07_dark = 2130837651; + + // aapt resource value: 0x7f020094 + public const int ic_mr_button_connected_07_light = 2130837652; + + // aapt resource value: 0x7f020095 + public const int ic_mr_button_connected_08_dark = 2130837653; + + // aapt resource value: 0x7f020096 + public const int ic_mr_button_connected_08_light = 2130837654; + + // aapt resource value: 0x7f020097 + public const int ic_mr_button_connected_09_dark = 2130837655; + + // aapt resource value: 0x7f020098 + public const int ic_mr_button_connected_09_light = 2130837656; + + // aapt resource value: 0x7f020099 + public const int ic_mr_button_connected_10_dark = 2130837657; + + // aapt resource value: 0x7f02009a + public const int ic_mr_button_connected_10_light = 2130837658; + + // aapt resource value: 0x7f02009b + public const int ic_mr_button_connected_11_dark = 2130837659; + + // aapt resource value: 0x7f02009c + public const int ic_mr_button_connected_11_light = 2130837660; + + // aapt resource value: 0x7f02009d + public const int ic_mr_button_connected_12_dark = 2130837661; + + // aapt resource value: 0x7f02009e + public const int ic_mr_button_connected_12_light = 2130837662; + + // aapt resource value: 0x7f02009f + public const int ic_mr_button_connected_13_dark = 2130837663; + + // aapt resource value: 0x7f0200a0 + public const int ic_mr_button_connected_13_light = 2130837664; + + // aapt resource value: 0x7f0200a1 + public const int ic_mr_button_connected_14_dark = 2130837665; + + // aapt resource value: 0x7f0200a2 + public const int ic_mr_button_connected_14_light = 2130837666; + + // aapt resource value: 0x7f0200a3 + public const int ic_mr_button_connected_15_dark = 2130837667; + + // aapt resource value: 0x7f0200a4 + public const int ic_mr_button_connected_15_light = 2130837668; + + // aapt resource value: 0x7f0200a5 + public const int ic_mr_button_connected_16_dark = 2130837669; + + // aapt resource value: 0x7f0200a6 + public const int ic_mr_button_connected_16_light = 2130837670; + + // aapt resource value: 0x7f0200a7 + public const int ic_mr_button_connected_17_dark = 2130837671; + + // aapt resource value: 0x7f0200a8 + public const int ic_mr_button_connected_17_light = 2130837672; + + // aapt resource value: 0x7f0200a9 + public const int ic_mr_button_connected_18_dark = 2130837673; + + // aapt resource value: 0x7f0200aa + public const int ic_mr_button_connected_18_light = 2130837674; + + // aapt resource value: 0x7f0200ab + public const int ic_mr_button_connected_19_dark = 2130837675; + + // aapt resource value: 0x7f0200ac + public const int ic_mr_button_connected_19_light = 2130837676; + + // aapt resource value: 0x7f0200ad + public const int ic_mr_button_connected_20_dark = 2130837677; + + // aapt resource value: 0x7f0200ae + public const int ic_mr_button_connected_20_light = 2130837678; + + // aapt resource value: 0x7f0200af + public const int ic_mr_button_connected_21_dark = 2130837679; + + // aapt resource value: 0x7f0200b0 + public const int ic_mr_button_connected_21_light = 2130837680; + + // aapt resource value: 0x7f0200b1 + public const int ic_mr_button_connected_22_dark = 2130837681; + + // aapt resource value: 0x7f0200b2 + public const int ic_mr_button_connected_22_light = 2130837682; + + // aapt resource value: 0x7f0200b3 + public const int ic_mr_button_connected_23_dark = 2130837683; + + // aapt resource value: 0x7f0200b4 + public const int ic_mr_button_connected_23_light = 2130837684; + + // aapt resource value: 0x7f0200b5 + public const int ic_mr_button_connected_24_dark = 2130837685; + + // aapt resource value: 0x7f0200b6 + public const int ic_mr_button_connected_24_light = 2130837686; + + // aapt resource value: 0x7f0200b7 + public const int ic_mr_button_connected_25_dark = 2130837687; + + // aapt resource value: 0x7f0200b8 + public const int ic_mr_button_connected_25_light = 2130837688; + + // aapt resource value: 0x7f0200b9 + public const int ic_mr_button_connected_26_dark = 2130837689; + + // aapt resource value: 0x7f0200ba + public const int ic_mr_button_connected_26_light = 2130837690; + + // aapt resource value: 0x7f0200bb + public const int ic_mr_button_connected_27_dark = 2130837691; + + // aapt resource value: 0x7f0200bc + public const int ic_mr_button_connected_27_light = 2130837692; + + // aapt resource value: 0x7f0200bd + public const int ic_mr_button_connected_28_dark = 2130837693; + + // aapt resource value: 0x7f0200be + public const int ic_mr_button_connected_28_light = 2130837694; + + // aapt resource value: 0x7f0200bf + public const int ic_mr_button_connected_29_dark = 2130837695; + + // aapt resource value: 0x7f0200c0 + public const int ic_mr_button_connected_29_light = 2130837696; + + // aapt resource value: 0x7f0200c1 + public const int ic_mr_button_connected_30_dark = 2130837697; + + // aapt resource value: 0x7f0200c2 + public const int ic_mr_button_connected_30_light = 2130837698; + + // aapt resource value: 0x7f0200c3 + public const int ic_mr_button_connecting_00_dark = 2130837699; + + // aapt resource value: 0x7f0200c4 + public const int ic_mr_button_connecting_00_light = 2130837700; + + // aapt resource value: 0x7f0200c5 + public const int ic_mr_button_connecting_01_dark = 2130837701; + + // aapt resource value: 0x7f0200c6 + public const int ic_mr_button_connecting_01_light = 2130837702; + + // aapt resource value: 0x7f0200c7 + public const int ic_mr_button_connecting_02_dark = 2130837703; + + // aapt resource value: 0x7f0200c8 + public const int ic_mr_button_connecting_02_light = 2130837704; + + // aapt resource value: 0x7f0200c9 + public const int ic_mr_button_connecting_03_dark = 2130837705; + + // aapt resource value: 0x7f0200ca + public const int ic_mr_button_connecting_03_light = 2130837706; + + // aapt resource value: 0x7f0200cb + public const int ic_mr_button_connecting_04_dark = 2130837707; + + // aapt resource value: 0x7f0200cc + public const int ic_mr_button_connecting_04_light = 2130837708; + + // aapt resource value: 0x7f0200cd + public const int ic_mr_button_connecting_05_dark = 2130837709; + + // aapt resource value: 0x7f0200ce + public const int ic_mr_button_connecting_05_light = 2130837710; + + // aapt resource value: 0x7f0200cf + public const int ic_mr_button_connecting_06_dark = 2130837711; + + // aapt resource value: 0x7f0200d0 + public const int ic_mr_button_connecting_06_light = 2130837712; + + // aapt resource value: 0x7f0200d1 + public const int ic_mr_button_connecting_07_dark = 2130837713; + + // aapt resource value: 0x7f0200d2 + public const int ic_mr_button_connecting_07_light = 2130837714; + + // aapt resource value: 0x7f0200d3 + public const int ic_mr_button_connecting_08_dark = 2130837715; + + // aapt resource value: 0x7f0200d4 + public const int ic_mr_button_connecting_08_light = 2130837716; + + // aapt resource value: 0x7f0200d5 + public const int ic_mr_button_connecting_09_dark = 2130837717; + + // aapt resource value: 0x7f0200d6 + public const int ic_mr_button_connecting_09_light = 2130837718; + + // aapt resource value: 0x7f0200d7 + public const int ic_mr_button_connecting_10_dark = 2130837719; + + // aapt resource value: 0x7f0200d8 + public const int ic_mr_button_connecting_10_light = 2130837720; + + // aapt resource value: 0x7f0200d9 + public const int ic_mr_button_connecting_11_dark = 2130837721; + + // aapt resource value: 0x7f0200da + public const int ic_mr_button_connecting_11_light = 2130837722; + + // aapt resource value: 0x7f0200db + public const int ic_mr_button_connecting_12_dark = 2130837723; + + // aapt resource value: 0x7f0200dc + public const int ic_mr_button_connecting_12_light = 2130837724; + + // aapt resource value: 0x7f0200dd + public const int ic_mr_button_connecting_13_dark = 2130837725; + + // aapt resource value: 0x7f0200de + public const int ic_mr_button_connecting_13_light = 2130837726; + + // aapt resource value: 0x7f0200df + public const int ic_mr_button_connecting_14_dark = 2130837727; + + // aapt resource value: 0x7f0200e0 + public const int ic_mr_button_connecting_14_light = 2130837728; + + // aapt resource value: 0x7f0200e1 + public const int ic_mr_button_connecting_15_dark = 2130837729; + + // aapt resource value: 0x7f0200e2 + public const int ic_mr_button_connecting_15_light = 2130837730; + + // aapt resource value: 0x7f0200e3 + public const int ic_mr_button_connecting_16_dark = 2130837731; + + // aapt resource value: 0x7f0200e4 + public const int ic_mr_button_connecting_16_light = 2130837732; + + // aapt resource value: 0x7f0200e5 + public const int ic_mr_button_connecting_17_dark = 2130837733; + + // aapt resource value: 0x7f0200e6 + public const int ic_mr_button_connecting_17_light = 2130837734; + + // aapt resource value: 0x7f0200e7 + public const int ic_mr_button_connecting_18_dark = 2130837735; + + // aapt resource value: 0x7f0200e8 + public const int ic_mr_button_connecting_18_light = 2130837736; + + // aapt resource value: 0x7f0200e9 + public const int ic_mr_button_connecting_19_dark = 2130837737; + + // aapt resource value: 0x7f0200ea + public const int ic_mr_button_connecting_19_light = 2130837738; + + // aapt resource value: 0x7f0200eb + public const int ic_mr_button_connecting_20_dark = 2130837739; + + // aapt resource value: 0x7f0200ec + public const int ic_mr_button_connecting_20_light = 2130837740; + + // aapt resource value: 0x7f0200ed + public const int ic_mr_button_connecting_21_dark = 2130837741; + + // aapt resource value: 0x7f0200ee + public const int ic_mr_button_connecting_21_light = 2130837742; + + // aapt resource value: 0x7f0200ef + public const int ic_mr_button_connecting_22_dark = 2130837743; + + // aapt resource value: 0x7f0200f0 + public const int ic_mr_button_connecting_22_light = 2130837744; + + // aapt resource value: 0x7f0200f1 + public const int ic_mr_button_connecting_23_dark = 2130837745; + + // aapt resource value: 0x7f0200f2 + public const int ic_mr_button_connecting_23_light = 2130837746; + + // aapt resource value: 0x7f0200f3 + public const int ic_mr_button_connecting_24_dark = 2130837747; + + // aapt resource value: 0x7f0200f4 + public const int ic_mr_button_connecting_24_light = 2130837748; + + // aapt resource value: 0x7f0200f5 + public const int ic_mr_button_connecting_25_dark = 2130837749; + + // aapt resource value: 0x7f0200f6 + public const int ic_mr_button_connecting_25_light = 2130837750; + + // aapt resource value: 0x7f0200f7 + public const int ic_mr_button_connecting_26_dark = 2130837751; + + // aapt resource value: 0x7f0200f8 + public const int ic_mr_button_connecting_26_light = 2130837752; + + // aapt resource value: 0x7f0200f9 + public const int ic_mr_button_connecting_27_dark = 2130837753; + + // aapt resource value: 0x7f0200fa + public const int ic_mr_button_connecting_27_light = 2130837754; + + // aapt resource value: 0x7f0200fb + public const int ic_mr_button_connecting_28_dark = 2130837755; + + // aapt resource value: 0x7f0200fc + public const int ic_mr_button_connecting_28_light = 2130837756; + + // aapt resource value: 0x7f0200fd + public const int ic_mr_button_connecting_29_dark = 2130837757; + + // aapt resource value: 0x7f0200fe + public const int ic_mr_button_connecting_29_light = 2130837758; + + // aapt resource value: 0x7f0200ff + public const int ic_mr_button_connecting_30_dark = 2130837759; + + // aapt resource value: 0x7f020100 + public const int ic_mr_button_connecting_30_light = 2130837760; + + // aapt resource value: 0x7f020101 + public const int ic_mr_button_disabled_dark = 2130837761; + + // aapt resource value: 0x7f020102 + public const int ic_mr_button_disabled_light = 2130837762; + + // aapt resource value: 0x7f020103 + public const int ic_mr_button_disconnected_dark = 2130837763; + + // aapt resource value: 0x7f020104 + public const int ic_mr_button_disconnected_light = 2130837764; + + // aapt resource value: 0x7f020105 + public const int ic_mr_button_grey = 2130837765; + + // aapt resource value: 0x7f020106 + public const int ic_vol_type_speaker_dark = 2130837766; + + // aapt resource value: 0x7f020107 + public const int ic_vol_type_speaker_group_dark = 2130837767; + + // aapt resource value: 0x7f020108 + public const int ic_vol_type_speaker_group_light = 2130837768; + + // aapt resource value: 0x7f020109 + public const int ic_vol_type_speaker_light = 2130837769; + + // aapt resource value: 0x7f02010a + public const int ic_vol_type_tv_dark = 2130837770; + + // aapt resource value: 0x7f02010b + public const int ic_vol_type_tv_light = 2130837771; + + // aapt resource value: 0x7f02010c + public const int mr_button_connected_dark = 2130837772; + + // aapt resource value: 0x7f02010d + public const int mr_button_connected_light = 2130837773; + + // aapt resource value: 0x7f02010e + public const int mr_button_connecting_dark = 2130837774; + + // aapt resource value: 0x7f02010f + public const int mr_button_connecting_light = 2130837775; + + // aapt resource value: 0x7f020110 + public const int mr_button_dark = 2130837776; + + // aapt resource value: 0x7f020111 + public const int mr_button_light = 2130837777; + + // aapt resource value: 0x7f020112 + public const int mr_dialog_close_dark = 2130837778; + + // aapt resource value: 0x7f020113 + public const int mr_dialog_close_light = 2130837779; + + // aapt resource value: 0x7f020114 + public const int mr_dialog_material_background_dark = 2130837780; + + // aapt resource value: 0x7f020115 + public const int mr_dialog_material_background_light = 2130837781; + + // aapt resource value: 0x7f020116 + public const int mr_group_collapse = 2130837782; + + // aapt resource value: 0x7f020117 + public const int mr_group_expand = 2130837783; + + // aapt resource value: 0x7f020118 + public const int mr_media_pause_dark = 2130837784; + + // aapt resource value: 0x7f020119 + public const int mr_media_pause_light = 2130837785; + + // aapt resource value: 0x7f02011a + public const int mr_media_play_dark = 2130837786; + + // aapt resource value: 0x7f02011b + public const int mr_media_play_light = 2130837787; + + // aapt resource value: 0x7f02011c + public const int mr_media_stop_dark = 2130837788; + + // aapt resource value: 0x7f02011d + public const int mr_media_stop_light = 2130837789; + + // aapt resource value: 0x7f02011e + public const int mr_vol_type_audiotrack_dark = 2130837790; + + // aapt resource value: 0x7f02011f + public const int mr_vol_type_audiotrack_light = 2130837791; + + // aapt resource value: 0x7f020120 + public const int navigation_empty_icon = 2130837792; + + // aapt resource value: 0x7f020121 + public const int notification_action_background = 2130837793; + + // aapt resource value: 0x7f020122 + public const int notification_bg = 2130837794; + + // aapt resource value: 0x7f020123 + public const int notification_bg_low = 2130837795; + + // aapt resource value: 0x7f020124 + public const int notification_bg_low_normal = 2130837796; + + // aapt resource value: 0x7f020125 + public const int notification_bg_low_pressed = 2130837797; + + // aapt resource value: 0x7f020126 + public const int notification_bg_normal = 2130837798; + + // aapt resource value: 0x7f020127 + public const int notification_bg_normal_pressed = 2130837799; + + // aapt resource value: 0x7f020128 + public const int notification_icon_background = 2130837800; + + // aapt resource value: 0x7f02012d + public const int notification_template_icon_bg = 2130837805; + + // aapt resource value: 0x7f02012e + public const int notification_template_icon_low_bg = 2130837806; + + // aapt resource value: 0x7f020129 + public const int notification_tile_bg = 2130837801; + + // aapt resource value: 0x7f02012a + public const int notify_panel_notification_icon_bg = 2130837802; + + // aapt resource value: 0x7f02012b + public const int tooltip_frame_dark = 2130837803; + + // aapt resource value: 0x7f02012c + public const int tooltip_frame_light = 2130837804; + + static Drawable() + { + global::Android.Runtime.ResourceIdManager.UpdateIdValues(); + } + + private Drawable() + { + } + } + + public partial class Id + { + + // aapt resource value: 0x7f0a0032 + public const int ALT = 2131361842; + + // aapt resource value: 0x7f0a0033 + public const int CTRL = 2131361843; + + // aapt resource value: 0x7f0a0034 + public const int FUNCTION = 2131361844; + + // aapt resource value: 0x7f0a0035 + public const int META = 2131361845; + + // aapt resource value: 0x7f0a0036 + public const int SHIFT = 2131361846; + + // aapt resource value: 0x7f0a0037 + public const int SYM = 2131361847; + + // aapt resource value: 0x7f0a00ba + public const int action0 = 2131361978; + + // aapt resource value: 0x7f0a007c + public const int action_bar = 2131361916; + + // aapt resource value: 0x7f0a0001 + public const int action_bar_activity_content = 2131361793; + + // aapt resource value: 0x7f0a007b + public const int action_bar_container = 2131361915; + + // aapt resource value: 0x7f0a0077 + public const int action_bar_root = 2131361911; + + // aapt resource value: 0x7f0a0002 + public const int action_bar_spinner = 2131361794; + + // aapt resource value: 0x7f0a005b + public const int action_bar_subtitle = 2131361883; + + // aapt resource value: 0x7f0a005a + public const int action_bar_title = 2131361882; + + // aapt resource value: 0x7f0a00b7 + public const int action_container = 2131361975; + + // aapt resource value: 0x7f0a007d + public const int action_context_bar = 2131361917; + + // aapt resource value: 0x7f0a00be + public const int action_divider = 2131361982; + + // aapt resource value: 0x7f0a00b8 + public const int action_image = 2131361976; + + // aapt resource value: 0x7f0a0003 + public const int action_menu_divider = 2131361795; + + // aapt resource value: 0x7f0a0004 + public const int action_menu_presenter = 2131361796; + + // aapt resource value: 0x7f0a0079 + public const int action_mode_bar = 2131361913; + + // aapt resource value: 0x7f0a0078 + public const int action_mode_bar_stub = 2131361912; + + // aapt resource value: 0x7f0a005c + public const int action_mode_close_button = 2131361884; + + // aapt resource value: 0x7f0a00b9 + public const int action_text = 2131361977; + + // aapt resource value: 0x7f0a00c7 + public const int actions = 2131361991; + + // aapt resource value: 0x7f0a005d + public const int activity_chooser_view_content = 2131361885; + + // aapt resource value: 0x7f0a0027 + public const int add = 2131361831; + + // aapt resource value: 0x7f0a0070 + public const int alertTitle = 2131361904; + + // aapt resource value: 0x7f0a0052 + public const int all = 2131361874; + + // aapt resource value: 0x7f0a0038 + public const int always = 2131361848; + + // aapt resource value: 0x7f0a0056 + public const int async = 2131361878; + + // aapt resource value: 0x7f0a0044 + public const int auto = 2131361860; + + // aapt resource value: 0x7f0a002f + public const int beginning = 2131361839; + + // aapt resource value: 0x7f0a0057 + public const int blocking = 2131361879; + + // aapt resource value: 0x7f0a003d + public const int bottom = 2131361853; + + // aapt resource value: 0x7f0a008b + public const int bottomtab_navarea = 2131361931; + + // aapt resource value: 0x7f0a008c + public const int bottomtab_tabbar = 2131361932; + + // aapt resource value: 0x7f0a0063 + public const int buttonPanel = 2131361891; + + // aapt resource value: 0x7f0a00bb + public const int cancel_action = 2131361979; + + // aapt resource value: 0x7f0a0045 + public const int center = 2131361861; + + // aapt resource value: 0x7f0a0046 + public const int center_horizontal = 2131361862; + + // aapt resource value: 0x7f0a0047 + public const int center_vertical = 2131361863; + + // aapt resource value: 0x7f0a0073 + public const int checkbox = 2131361907; + + // aapt resource value: 0x7f0a00c3 + public const int chronometer = 2131361987; + + // aapt resource value: 0x7f0a004e + public const int clip_horizontal = 2131361870; + + // aapt resource value: 0x7f0a004f + public const int clip_vertical = 2131361871; + + // aapt resource value: 0x7f0a0039 + public const int collapseActionView = 2131361849; + + // aapt resource value: 0x7f0a008f + public const int container = 2131361935; + + // aapt resource value: 0x7f0a0066 + public const int contentPanel = 2131361894; + + // aapt resource value: 0x7f0a0090 + public const int coordinator = 2131361936; + + // aapt resource value: 0x7f0a006d + public const int custom = 2131361901; + + // aapt resource value: 0x7f0a006c + public const int customPanel = 2131361900; + + // aapt resource value: 0x7f0a007a + public const int decor_content_parent = 2131361914; + + // aapt resource value: 0x7f0a0060 + public const int default_activity_button = 2131361888; + + // aapt resource value: 0x7f0a0092 + public const int design_bottom_sheet = 2131361938; + + // aapt resource value: 0x7f0a0099 + public const int design_menu_item_action_area = 2131361945; + + // aapt resource value: 0x7f0a0098 + public const int design_menu_item_action_area_stub = 2131361944; + + // aapt resource value: 0x7f0a0097 + public const int design_menu_item_text = 2131361943; + + // aapt resource value: 0x7f0a0096 + public const int design_navigation_view = 2131361942; + + // aapt resource value: 0x7f0a0020 + public const int disableHome = 2131361824; + + // aapt resource value: 0x7f0a007e + public const int edit_query = 2131361918; + + // aapt resource value: 0x7f0a0030 + public const int end = 2131361840; + + // aapt resource value: 0x7f0a00c9 + public const int end_padder = 2131361993; + + // aapt resource value: 0x7f0a003f + public const int enterAlways = 2131361855; + + // aapt resource value: 0x7f0a0040 + public const int enterAlwaysCollapsed = 2131361856; + + // aapt resource value: 0x7f0a0041 + public const int exitUntilCollapsed = 2131361857; + + // aapt resource value: 0x7f0a005e + public const int expand_activities_button = 2131361886; + + // aapt resource value: 0x7f0a0072 + public const int expanded_menu = 2131361906; + + // aapt resource value: 0x7f0a0050 + public const int fill = 2131361872; + + // aapt resource value: 0x7f0a0051 + public const int fill_horizontal = 2131361873; + + // aapt resource value: 0x7f0a0048 + public const int fill_vertical = 2131361864; + + // aapt resource value: 0x7f0a0054 + public const int @fixed = 2131361876; + + // aapt resource value: 0x7f0a009b + public const int flyoutcontent_appbar = 2131361947; + + // aapt resource value: 0x7f0a009c + public const int flyoutcontent_recycler = 2131361948; + + // aapt resource value: 0x7f0a0058 + public const int forever = 2131361880; + + // aapt resource value: 0x7f0a000a + public const int ghost_view = 2131361802; + + // aapt resource value: 0x7f0a0005 + public const int home = 2131361797; + + // aapt resource value: 0x7f0a0021 + public const int homeAsUp = 2131361825; + + // aapt resource value: 0x7f0a0062 + public const int icon = 2131361890; + + // aapt resource value: 0x7f0a00c8 + public const int icon_group = 2131361992; + + // aapt resource value: 0x7f0a003a + public const int ifRoom = 2131361850; + + // aapt resource value: 0x7f0a005f + public const int image = 2131361887; + + // aapt resource value: 0x7f0a00c4 + public const int info = 2131361988; + + // aapt resource value: 0x7f0a0059 + public const int italic = 2131361881; + + // aapt resource value: 0x7f0a0000 + public const int item_touch_helper_previous_elevation = 2131361792; + + // aapt resource value: 0x7f0a008e + public const int largeLabel = 2131361934; + + // aapt resource value: 0x7f0a0049 + public const int left = 2131361865; + + // aapt resource value: 0x7f0a0017 + public const int line1 = 2131361815; + + // aapt resource value: 0x7f0a0018 + public const int line3 = 2131361816; + + // aapt resource value: 0x7f0a001d + public const int listMode = 2131361821; + + // aapt resource value: 0x7f0a0061 + public const int list_item = 2131361889; + + // aapt resource value: 0x7f0a00ca + public const int main_appbar = 2131361994; + + // aapt resource value: 0x7f0a00cd + public const int main_scrollview = 2131361997; + + // aapt resource value: 0x7f0a00cc + public const int main_tablayout = 2131361996; + + // aapt resource value: 0x7f0a00cb + public const int main_toolbar = 2131361995; + + // aapt resource value: 0x7f0a00d5 + public const int masked = 2131362005; + + // aapt resource value: 0x7f0a00bd + public const int media_actions = 2131361981; + + // aapt resource value: 0x7f0a00d3 + public const int message = 2131362003; + + // aapt resource value: 0x7f0a0031 + public const int middle = 2131361841; + + // aapt resource value: 0x7f0a0053 + public const int mini = 2131361875; + + // aapt resource value: 0x7f0a00a9 + public const int mr_art = 2131361961; + + // aapt resource value: 0x7f0a009e + public const int mr_chooser_list = 2131361950; + + // aapt resource value: 0x7f0a00a1 + public const int mr_chooser_route_desc = 2131361953; + + // aapt resource value: 0x7f0a009f + public const int mr_chooser_route_icon = 2131361951; + + // aapt resource value: 0x7f0a00a0 + public const int mr_chooser_route_name = 2131361952; + + // aapt resource value: 0x7f0a009d + public const int mr_chooser_title = 2131361949; + + // aapt resource value: 0x7f0a00a6 + public const int mr_close = 2131361958; + + // aapt resource value: 0x7f0a00ac + public const int mr_control_divider = 2131361964; + + // aapt resource value: 0x7f0a00b2 + public const int mr_control_playback_ctrl = 2131361970; + + // aapt resource value: 0x7f0a00b5 + public const int mr_control_subtitle = 2131361973; + + // aapt resource value: 0x7f0a00b4 + public const int mr_control_title = 2131361972; + + // aapt resource value: 0x7f0a00b3 + public const int mr_control_title_container = 2131361971; + + // aapt resource value: 0x7f0a00a7 + public const int mr_custom_control = 2131361959; + + // aapt resource value: 0x7f0a00a8 + public const int mr_default_control = 2131361960; + + // aapt resource value: 0x7f0a00a3 + public const int mr_dialog_area = 2131361955; + + // aapt resource value: 0x7f0a00a2 + public const int mr_expandable_area = 2131361954; + + // aapt resource value: 0x7f0a00b6 + public const int mr_group_expand_collapse = 2131361974; + + // aapt resource value: 0x7f0a00aa + public const int mr_media_main_control = 2131361962; + + // aapt resource value: 0x7f0a00a5 + public const int mr_name = 2131361957; + + // aapt resource value: 0x7f0a00ab + public const int mr_playback_control = 2131361963; + + // aapt resource value: 0x7f0a00a4 + public const int mr_title_bar = 2131361956; + + // aapt resource value: 0x7f0a00ad + public const int mr_volume_control = 2131361965; + + // aapt resource value: 0x7f0a00ae + public const int mr_volume_group_list = 2131361966; + + // aapt resource value: 0x7f0a00b0 + public const int mr_volume_item_icon = 2131361968; + + // aapt resource value: 0x7f0a00b1 + public const int mr_volume_slider = 2131361969; + + // aapt resource value: 0x7f0a0028 + public const int multiply = 2131361832; + + // aapt resource value: 0x7f0a0095 + public const int navigation_header_container = 2131361941; + + // aapt resource value: 0x7f0a003b + public const int never = 2131361851; + + // aapt resource value: 0x7f0a0022 + public const int none = 2131361826; + + // aapt resource value: 0x7f0a001e + public const int normal = 2131361822; + + // aapt resource value: 0x7f0a00c6 + public const int notification_background = 2131361990; + + // aapt resource value: 0x7f0a00c0 + public const int notification_main_column = 2131361984; + + // aapt resource value: 0x7f0a00bf + public const int notification_main_column_container = 2131361983; + + // aapt resource value: 0x7f0a004c + public const int parallax = 2131361868; + + // aapt resource value: 0x7f0a0065 + public const int parentPanel = 2131361893; + + // aapt resource value: 0x7f0a000b + public const int parent_matrix = 2131361803; + + // aapt resource value: 0x7f0a004d + public const int pin = 2131361869; + + // aapt resource value: 0x7f0a0006 + public const int progress_circular = 2131361798; + + // aapt resource value: 0x7f0a0007 + public const int progress_horizontal = 2131361799; + + // aapt resource value: 0x7f0a0075 + public const int radio = 2131361909; + + // aapt resource value: 0x7f0a004a + public const int right = 2131361866; + + // aapt resource value: 0x7f0a00c5 + public const int right_icon = 2131361989; + + // aapt resource value: 0x7f0a00c1 + public const int right_side = 2131361985; + + // aapt resource value: 0x7f0a000c + public const int save_image_matrix = 2131361804; + + // aapt resource value: 0x7f0a000d + public const int save_non_transition_alpha = 2131361805; + + // aapt resource value: 0x7f0a000e + public const int save_scale_type = 2131361806; + + // aapt resource value: 0x7f0a0029 + public const int screen = 2131361833; + + // aapt resource value: 0x7f0a0042 + public const int scroll = 2131361858; + + // aapt resource value: 0x7f0a006b + public const int scrollIndicatorDown = 2131361899; + + // aapt resource value: 0x7f0a0067 + public const int scrollIndicatorUp = 2131361895; + + // aapt resource value: 0x7f0a0068 + public const int scrollView = 2131361896; + + // aapt resource value: 0x7f0a0055 + public const int scrollable = 2131361877; + + // aapt resource value: 0x7f0a0080 + public const int search_badge = 2131361920; + + // aapt resource value: 0x7f0a007f + public const int search_bar = 2131361919; + + // aapt resource value: 0x7f0a0081 + public const int search_button = 2131361921; + + // aapt resource value: 0x7f0a0086 + public const int search_close_btn = 2131361926; + + // aapt resource value: 0x7f0a0082 + public const int search_edit_frame = 2131361922; + + // aapt resource value: 0x7f0a0088 + public const int search_go_btn = 2131361928; + + // aapt resource value: 0x7f0a0083 + public const int search_mag_icon = 2131361923; + + // aapt resource value: 0x7f0a0084 + public const int search_plate = 2131361924; + + // aapt resource value: 0x7f0a0085 + public const int search_src_text = 2131361925; + + // aapt resource value: 0x7f0a0089 + public const int search_voice_btn = 2131361929; + + // aapt resource value: 0x7f0a008a + public const int select_dialog_listview = 2131361930; + + // aapt resource value: 0x7f0a00ce + public const int shellcontent_appbar = 2131361998; + + // aapt resource value: 0x7f0a00d0 + public const int shellcontent_scrollview = 2131362000; + + // aapt resource value: 0x7f0a00cf + public const int shellcontent_toolbar = 2131361999; + + // aapt resource value: 0x7f0a0074 + public const int shortcut = 2131361908; + + // aapt resource value: 0x7f0a0023 + public const int showCustom = 2131361827; + + // aapt resource value: 0x7f0a0024 + public const int showHome = 2131361828; + + // aapt resource value: 0x7f0a0025 + public const int showTitle = 2131361829; + + // aapt resource value: 0x7f0a00d1 + public const int sliding_tabs = 2131362001; + + // aapt resource value: 0x7f0a008d + public const int smallLabel = 2131361933; + + // aapt resource value: 0x7f0a0094 + public const int snackbar_action = 2131361940; + + // aapt resource value: 0x7f0a0093 + public const int snackbar_text = 2131361939; + + // aapt resource value: 0x7f0a0043 + public const int snap = 2131361859; + + // aapt resource value: 0x7f0a0064 + public const int spacer = 2131361892; + + // aapt resource value: 0x7f0a0008 + public const int split_action_bar = 2131361800; + + // aapt resource value: 0x7f0a002a + public const int src_atop = 2131361834; + + // aapt resource value: 0x7f0a002b + public const int src_in = 2131361835; + + // aapt resource value: 0x7f0a002c + public const int src_over = 2131361836; + + // aapt resource value: 0x7f0a004b + public const int start = 2131361867; + + // aapt resource value: 0x7f0a00bc + public const int status_bar_latest_event_content = 2131361980; + + // aapt resource value: 0x7f0a0076 + public const int submenuarrow = 2131361910; + + // aapt resource value: 0x7f0a0087 + public const int submit_area = 2131361927; + + // aapt resource value: 0x7f0a001f + public const int tabMode = 2131361823; + + // aapt resource value: 0x7f0a0019 + public const int tag_transition_group = 2131361817; + + // aapt resource value: 0x7f0a001a + public const int text = 2131361818; + + // aapt resource value: 0x7f0a001b + public const int text2 = 2131361819; + + // aapt resource value: 0x7f0a006a + public const int textSpacerNoButtons = 2131361898; + + // aapt resource value: 0x7f0a0069 + public const int textSpacerNoTitle = 2131361897; + + // aapt resource value: 0x7f0a009a + public const int text_input_password_toggle = 2131361946; + + // aapt resource value: 0x7f0a0014 + public const int textinput_counter = 2131361812; + + // aapt resource value: 0x7f0a0015 + public const int textinput_error = 2131361813; + + // aapt resource value: 0x7f0a00c2 + public const int time = 2131361986; + + // aapt resource value: 0x7f0a001c + public const int title = 2131361820; + + // aapt resource value: 0x7f0a0071 + public const int titleDividerNoCustom = 2131361905; + + // aapt resource value: 0x7f0a006f + public const int title_template = 2131361903; + + // aapt resource value: 0x7f0a00d2 + public const int toolbar = 2131362002; + + // aapt resource value: 0x7f0a003e + public const int top = 2131361854; + + // aapt resource value: 0x7f0a006e + public const int topPanel = 2131361902; + + // aapt resource value: 0x7f0a0091 + public const int touch_outside = 2131361937; + + // aapt resource value: 0x7f0a000f + public const int transition_current_scene = 2131361807; + + // aapt resource value: 0x7f0a0010 + public const int transition_layout_save = 2131361808; + + // aapt resource value: 0x7f0a0011 + public const int transition_position = 2131361809; + + // aapt resource value: 0x7f0a0012 + public const int transition_scene_layoutid_cache = 2131361810; + + // aapt resource value: 0x7f0a0013 + public const int transition_transform = 2131361811; + + // aapt resource value: 0x7f0a002d + public const int uniform = 2131361837; + + // aapt resource value: 0x7f0a0009 + public const int up = 2131361801; + + // aapt resource value: 0x7f0a0026 + public const int useLogo = 2131361830; + + // aapt resource value: 0x7f0a0016 + public const int view_offset_helper = 2131361814; + + // aapt resource value: 0x7f0a00d4 + public const int visible = 2131362004; + + // aapt resource value: 0x7f0a00af + public const int volume_item_container = 2131361967; + + // aapt resource value: 0x7f0a003c + public const int withText = 2131361852; + + // aapt resource value: 0x7f0a002e + public const int wrap_content = 2131361838; + + static Id() + { + global::Android.Runtime.ResourceIdManager.UpdateIdValues(); + } + + private Id() + { + } + } + + public partial class Integer + { + + // aapt resource value: 0x7f0c0003 + public const int abc_config_activityDefaultDur = 2131492867; + + // aapt resource value: 0x7f0c0004 + public const int abc_config_activityShortDur = 2131492868; + + // aapt resource value: 0x7f0c0008 + public const int app_bar_elevation_anim_duration = 2131492872; + + // aapt resource value: 0x7f0c0009 + public const int bottom_sheet_slide_duration = 2131492873; + + // aapt resource value: 0x7f0c0005 + public const int cancel_button_image_alpha = 2131492869; + + // aapt resource value: 0x7f0c0006 + public const int config_tooltipAnimTime = 2131492870; + + // aapt resource value: 0x7f0c0007 + public const int design_snackbar_text_max_lines = 2131492871; + + // aapt resource value: 0x7f0c000a + public const int hide_password_duration = 2131492874; + + // aapt resource value: 0x7f0c0000 + public const int mr_controller_volume_group_list_animation_duration_ms = 2131492864; + + // aapt resource value: 0x7f0c0001 + public const int mr_controller_volume_group_list_fade_in_duration_ms = 2131492865; + + // aapt resource value: 0x7f0c0002 + public const int mr_controller_volume_group_list_fade_out_duration_ms = 2131492866; + + // aapt resource value: 0x7f0c000b + public const int show_password_duration = 2131492875; + + // aapt resource value: 0x7f0c000c + public const int status_bar_notification_info_maxnum = 2131492876; + + static Integer() + { + global::Android.Runtime.ResourceIdManager.UpdateIdValues(); + } + + private Integer() + { + } + } + + public partial class Interpolator + { + + // aapt resource value: 0x7f070000 + public const int mr_fast_out_slow_in = 2131165184; + + // aapt resource value: 0x7f070001 + public const int mr_linear_out_slow_in = 2131165185; + + static Interpolator() + { + global::Android.Runtime.ResourceIdManager.UpdateIdValues(); + } + + private Interpolator() + { + } + } + + public partial class Layout + { + + // aapt resource value: 0x7f040000 + public const int abc_action_bar_title_item = 2130968576; + + // aapt resource value: 0x7f040001 + public const int abc_action_bar_up_container = 2130968577; + + // aapt resource value: 0x7f040002 + public const int abc_action_menu_item_layout = 2130968578; + + // aapt resource value: 0x7f040003 + public const int abc_action_menu_layout = 2130968579; + + // aapt resource value: 0x7f040004 + public const int abc_action_mode_bar = 2130968580; + + // aapt resource value: 0x7f040005 + public const int abc_action_mode_close_item_material = 2130968581; + + // aapt resource value: 0x7f040006 + public const int abc_activity_chooser_view = 2130968582; + + // aapt resource value: 0x7f040007 + public const int abc_activity_chooser_view_list_item = 2130968583; + + // aapt resource value: 0x7f040008 + public const int abc_alert_dialog_button_bar_material = 2130968584; + + // aapt resource value: 0x7f040009 + public const int abc_alert_dialog_material = 2130968585; + + // aapt resource value: 0x7f04000a + public const int abc_alert_dialog_title_material = 2130968586; + + // aapt resource value: 0x7f04000b + public const int abc_dialog_title_material = 2130968587; + + // aapt resource value: 0x7f04000c + public const int abc_expanded_menu_layout = 2130968588; + + // aapt resource value: 0x7f04000d + public const int abc_list_menu_item_checkbox = 2130968589; + + // aapt resource value: 0x7f04000e + public const int abc_list_menu_item_icon = 2130968590; + + // aapt resource value: 0x7f04000f + public const int abc_list_menu_item_layout = 2130968591; + + // aapt resource value: 0x7f040010 + public const int abc_list_menu_item_radio = 2130968592; + + // aapt resource value: 0x7f040011 + public const int abc_popup_menu_header_item_layout = 2130968593; + + // aapt resource value: 0x7f040012 + public const int abc_popup_menu_item_layout = 2130968594; + + // aapt resource value: 0x7f040013 + public const int abc_screen_content_include = 2130968595; + + // aapt resource value: 0x7f040014 + public const int abc_screen_simple = 2130968596; + + // aapt resource value: 0x7f040015 + public const int abc_screen_simple_overlay_action_mode = 2130968597; + + // aapt resource value: 0x7f040016 + public const int abc_screen_toolbar = 2130968598; + + // aapt resource value: 0x7f040017 + public const int abc_search_dropdown_item_icons_2line = 2130968599; + + // aapt resource value: 0x7f040018 + public const int abc_search_view = 2130968600; + + // aapt resource value: 0x7f040019 + public const int abc_select_dialog_material = 2130968601; + + // aapt resource value: 0x7f04001a + public const int BottomTabLayout = 2130968602; + + // aapt resource value: 0x7f04001b + public const int design_bottom_navigation_item = 2130968603; + + // aapt resource value: 0x7f04001c + public const int design_bottom_sheet_dialog = 2130968604; + + // aapt resource value: 0x7f04001d + public const int design_layout_snackbar = 2130968605; + + // aapt resource value: 0x7f04001e + public const int design_layout_snackbar_include = 2130968606; + + // aapt resource value: 0x7f04001f + public const int design_layout_tab_icon = 2130968607; + + // aapt resource value: 0x7f040020 + public const int design_layout_tab_text = 2130968608; + + // aapt resource value: 0x7f040021 + public const int design_menu_item_action_area = 2130968609; + + // aapt resource value: 0x7f040022 + public const int design_navigation_item = 2130968610; + + // aapt resource value: 0x7f040023 + public const int design_navigation_item_header = 2130968611; + + // aapt resource value: 0x7f040024 + public const int design_navigation_item_separator = 2130968612; + + // aapt resource value: 0x7f040025 + public const int design_navigation_item_subheader = 2130968613; + + // aapt resource value: 0x7f040026 + public const int design_navigation_menu = 2130968614; + + // aapt resource value: 0x7f040027 + public const int design_navigation_menu_item = 2130968615; + + // aapt resource value: 0x7f040028 + public const int design_text_input_password_icon = 2130968616; + + // aapt resource value: 0x7f040029 + public const int FlyoutContent = 2130968617; + + // aapt resource value: 0x7f04002a + public const int mr_chooser_dialog = 2130968618; + + // aapt resource value: 0x7f04002b + public const int mr_chooser_list_item = 2130968619; + + // aapt resource value: 0x7f04002c + public const int mr_controller_material_dialog_b = 2130968620; + + // aapt resource value: 0x7f04002d + public const int mr_controller_volume_item = 2130968621; + + // aapt resource value: 0x7f04002e + public const int mr_playback_control = 2130968622; + + // aapt resource value: 0x7f04002f + public const int mr_volume_control = 2130968623; + + // aapt resource value: 0x7f040030 + public const int notification_action = 2130968624; + + // aapt resource value: 0x7f040031 + public const int notification_action_tombstone = 2130968625; + + // aapt resource value: 0x7f040032 + public const int notification_media_action = 2130968626; + + // aapt resource value: 0x7f040033 + public const int notification_media_cancel_action = 2130968627; + + // aapt resource value: 0x7f040034 + public const int notification_template_big_media = 2130968628; + + // aapt resource value: 0x7f040035 + public const int notification_template_big_media_custom = 2130968629; + + // aapt resource value: 0x7f040036 + public const int notification_template_big_media_narrow = 2130968630; + + // aapt resource value: 0x7f040037 + public const int notification_template_big_media_narrow_custom = 2130968631; + + // aapt resource value: 0x7f040038 + public const int notification_template_custom_big = 2130968632; + + // aapt resource value: 0x7f040039 + public const int notification_template_icon_group = 2130968633; + + // aapt resource value: 0x7f04003a + public const int notification_template_lines_media = 2130968634; + + // aapt resource value: 0x7f04003b + public const int notification_template_media = 2130968635; + + // aapt resource value: 0x7f04003c + public const int notification_template_media_custom = 2130968636; + + // aapt resource value: 0x7f04003d + public const int notification_template_part_chronometer = 2130968637; + + // aapt resource value: 0x7f04003e + public const int notification_template_part_time = 2130968638; + + // aapt resource value: 0x7f04003f + public const int RootLayout = 2130968639; + + // aapt resource value: 0x7f040040 + public const int select_dialog_item_material = 2130968640; + + // aapt resource value: 0x7f040041 + public const int select_dialog_multichoice_material = 2130968641; + + // aapt resource value: 0x7f040042 + public const int select_dialog_singlechoice_material = 2130968642; + + // aapt resource value: 0x7f040043 + public const int ShellContent = 2130968643; + + // aapt resource value: 0x7f040044 + public const int support_simple_spinner_dropdown_item = 2130968644; + + // aapt resource value: 0x7f040045 + public const int Tabbar = 2130968645; + + // aapt resource value: 0x7f040046 + public const int Toolbar = 2130968646; + + // aapt resource value: 0x7f040047 + public const int tooltip = 2130968647; + + static Layout() + { + global::Android.Runtime.ResourceIdManager.UpdateIdValues(); + } + + private Layout() + { + } + } + + public partial class Mipmap + { + + // aapt resource value: 0x7f030000 + public const int icon = 2130903040; + + // aapt resource value: 0x7f030001 + public const int icon_round = 2130903041; + + // aapt resource value: 0x7f030002 + public const int launcher_foreground = 2130903042; + + static Mipmap() + { + global::Android.Runtime.ResourceIdManager.UpdateIdValues(); + } + + private Mipmap() + { + } + } + + public partial class String + { + + // aapt resource value: 0x7f0b0015 + public const int abc_action_bar_home_description = 2131427349; + + // aapt resource value: 0x7f0b0016 + public const int abc_action_bar_up_description = 2131427350; + + // aapt resource value: 0x7f0b0017 + public const int abc_action_menu_overflow_description = 2131427351; + + // aapt resource value: 0x7f0b0018 + public const int abc_action_mode_done = 2131427352; + + // aapt resource value: 0x7f0b0019 + public const int abc_activity_chooser_view_see_all = 2131427353; + + // aapt resource value: 0x7f0b001a + public const int abc_activitychooserview_choose_application = 2131427354; + + // aapt resource value: 0x7f0b001b + public const int abc_capital_off = 2131427355; + + // aapt resource value: 0x7f0b001c + public const int abc_capital_on = 2131427356; + + // aapt resource value: 0x7f0b0027 + public const int abc_font_family_body_1_material = 2131427367; + + // aapt resource value: 0x7f0b0028 + public const int abc_font_family_body_2_material = 2131427368; + + // aapt resource value: 0x7f0b0029 + public const int abc_font_family_button_material = 2131427369; + + // aapt resource value: 0x7f0b002a + public const int abc_font_family_caption_material = 2131427370; + + // aapt resource value: 0x7f0b002b + public const int abc_font_family_display_1_material = 2131427371; + + // aapt resource value: 0x7f0b002c + public const int abc_font_family_display_2_material = 2131427372; + + // aapt resource value: 0x7f0b002d + public const int abc_font_family_display_3_material = 2131427373; + + // aapt resource value: 0x7f0b002e + public const int abc_font_family_display_4_material = 2131427374; + + // aapt resource value: 0x7f0b002f + public const int abc_font_family_headline_material = 2131427375; + + // aapt resource value: 0x7f0b0030 + public const int abc_font_family_menu_material = 2131427376; + + // aapt resource value: 0x7f0b0031 + public const int abc_font_family_subhead_material = 2131427377; + + // aapt resource value: 0x7f0b0032 + public const int abc_font_family_title_material = 2131427378; + + // aapt resource value: 0x7f0b001d + public const int abc_search_hint = 2131427357; + + // aapt resource value: 0x7f0b001e + public const int abc_searchview_description_clear = 2131427358; + + // aapt resource value: 0x7f0b001f + public const int abc_searchview_description_query = 2131427359; + + // aapt resource value: 0x7f0b0020 + public const int abc_searchview_description_search = 2131427360; + + // aapt resource value: 0x7f0b0021 + public const int abc_searchview_description_submit = 2131427361; + + // aapt resource value: 0x7f0b0022 + public const int abc_searchview_description_voice = 2131427362; + + // aapt resource value: 0x7f0b0023 + public const int abc_shareactionprovider_share_with = 2131427363; + + // aapt resource value: 0x7f0b0024 + public const int abc_shareactionprovider_share_with_application = 2131427364; + + // aapt resource value: 0x7f0b0025 + public const int abc_toolbar_collapse_description = 2131427365; + + // aapt resource value: 0x7f0b0033 + public const int appbar_scrolling_view_behavior = 2131427379; + + // aapt resource value: 0x7f0b0034 + public const int bottom_sheet_behavior = 2131427380; + + // aapt resource value: 0x7f0b0035 + public const int character_counter_pattern = 2131427381; + + // aapt resource value: 0x7f0b0000 + public const int mr_button_content_description = 2131427328; + + // aapt resource value: 0x7f0b0001 + public const int mr_cast_button_connected = 2131427329; + + // aapt resource value: 0x7f0b0002 + public const int mr_cast_button_connecting = 2131427330; + + // aapt resource value: 0x7f0b0003 + public const int mr_cast_button_disconnected = 2131427331; + + // aapt resource value: 0x7f0b0004 + public const int mr_chooser_searching = 2131427332; + + // aapt resource value: 0x7f0b0005 + public const int mr_chooser_title = 2131427333; + + // aapt resource value: 0x7f0b0006 + public const int mr_controller_album_art = 2131427334; + + // aapt resource value: 0x7f0b0007 + public const int mr_controller_casting_screen = 2131427335; + + // aapt resource value: 0x7f0b0008 + public const int mr_controller_close_description = 2131427336; + + // aapt resource value: 0x7f0b0009 + public const int mr_controller_collapse_group = 2131427337; + + // aapt resource value: 0x7f0b000a + public const int mr_controller_disconnect = 2131427338; + + // aapt resource value: 0x7f0b000b + public const int mr_controller_expand_group = 2131427339; + + // aapt resource value: 0x7f0b000c + public const int mr_controller_no_info_available = 2131427340; + + // aapt resource value: 0x7f0b000d + public const int mr_controller_no_media_selected = 2131427341; + + // aapt resource value: 0x7f0b000e + public const int mr_controller_pause = 2131427342; + + // aapt resource value: 0x7f0b000f + public const int mr_controller_play = 2131427343; + + // aapt resource value: 0x7f0b0010 + public const int mr_controller_stop = 2131427344; + + // aapt resource value: 0x7f0b0011 + public const int mr_controller_stop_casting = 2131427345; + + // aapt resource value: 0x7f0b0012 + public const int mr_controller_volume_slider = 2131427346; + + // aapt resource value: 0x7f0b0013 + public const int mr_system_route_name = 2131427347; + + // aapt resource value: 0x7f0b0014 + public const int mr_user_route_category_name = 2131427348; + + // aapt resource value: 0x7f0b0036 + public const int password_toggle_content_description = 2131427382; + + // aapt resource value: 0x7f0b0037 + public const int path_password_eye = 2131427383; + + // aapt resource value: 0x7f0b0038 + public const int path_password_eye_mask_strike_through = 2131427384; + + // aapt resource value: 0x7f0b0039 + public const int path_password_eye_mask_visible = 2131427385; + + // aapt resource value: 0x7f0b003a + public const int path_password_strike_through = 2131427386; + + // aapt resource value: 0x7f0b0026 + public const int search_menu_title = 2131427366; + + // aapt resource value: 0x7f0b003b + public const int status_bar_notification_info_overflow = 2131427387; + + static String() + { + global::Android.Runtime.ResourceIdManager.UpdateIdValues(); + } + + private String() + { + } + } + + public partial class Style + { + + // aapt resource value: 0x7f0d00a4 + public const int AlertDialog_AppCompat = 2131558564; + + // aapt resource value: 0x7f0d00a5 + public const int AlertDialog_AppCompat_Light = 2131558565; + + // aapt resource value: 0x7f0d00a6 + public const int Animation_AppCompat_Dialog = 2131558566; + + // aapt resource value: 0x7f0d00a7 + public const int Animation_AppCompat_DropDownUp = 2131558567; + + // aapt resource value: 0x7f0d00a8 + public const int Animation_AppCompat_Tooltip = 2131558568; + + // aapt resource value: 0x7f0d016e + public const int Animation_Design_BottomSheetDialog = 2131558766; + + // aapt resource value: 0x7f0d0191 + public const int AppCompatDialogStyle = 2131558801; + + // aapt resource value: 0x7f0d00a9 + public const int Base_AlertDialog_AppCompat = 2131558569; + + // aapt resource value: 0x7f0d00aa + public const int Base_AlertDialog_AppCompat_Light = 2131558570; + + // aapt resource value: 0x7f0d00ab + public const int Base_Animation_AppCompat_Dialog = 2131558571; + + // aapt resource value: 0x7f0d00ac + public const int Base_Animation_AppCompat_DropDownUp = 2131558572; + + // aapt resource value: 0x7f0d00ad + public const int Base_Animation_AppCompat_Tooltip = 2131558573; + + // aapt resource value: 0x7f0d000c + public const int Base_CardView = 2131558412; + + // aapt resource value: 0x7f0d00ae + public const int Base_DialogWindowTitle_AppCompat = 2131558574; + + // aapt resource value: 0x7f0d00af + public const int Base_DialogWindowTitleBackground_AppCompat = 2131558575; + + // aapt resource value: 0x7f0d0048 + public const int Base_TextAppearance_AppCompat = 2131558472; + + // aapt resource value: 0x7f0d0049 + public const int Base_TextAppearance_AppCompat_Body1 = 2131558473; + + // aapt resource value: 0x7f0d004a + public const int Base_TextAppearance_AppCompat_Body2 = 2131558474; + + // aapt resource value: 0x7f0d0036 + public const int Base_TextAppearance_AppCompat_Button = 2131558454; + + // aapt resource value: 0x7f0d004b + public const int Base_TextAppearance_AppCompat_Caption = 2131558475; + + // aapt resource value: 0x7f0d004c + public const int Base_TextAppearance_AppCompat_Display1 = 2131558476; + + // aapt resource value: 0x7f0d004d + public const int Base_TextAppearance_AppCompat_Display2 = 2131558477; + + // aapt resource value: 0x7f0d004e + public const int Base_TextAppearance_AppCompat_Display3 = 2131558478; + + // aapt resource value: 0x7f0d004f + public const int Base_TextAppearance_AppCompat_Display4 = 2131558479; + + // aapt resource value: 0x7f0d0050 + public const int Base_TextAppearance_AppCompat_Headline = 2131558480; + + // aapt resource value: 0x7f0d001a + public const int Base_TextAppearance_AppCompat_Inverse = 2131558426; + + // aapt resource value: 0x7f0d0051 + public const int Base_TextAppearance_AppCompat_Large = 2131558481; + + // aapt resource value: 0x7f0d001b + public const int Base_TextAppearance_AppCompat_Large_Inverse = 2131558427; + + // aapt resource value: 0x7f0d0052 + public const int Base_TextAppearance_AppCompat_Light_Widget_PopupMenu_Large = 2131558482; + + // aapt resource value: 0x7f0d0053 + public const int Base_TextAppearance_AppCompat_Light_Widget_PopupMenu_Small = 2131558483; + + // aapt resource value: 0x7f0d0054 + public const int Base_TextAppearance_AppCompat_Medium = 2131558484; + + // aapt resource value: 0x7f0d001c + public const int Base_TextAppearance_AppCompat_Medium_Inverse = 2131558428; + + // aapt resource value: 0x7f0d0055 + public const int Base_TextAppearance_AppCompat_Menu = 2131558485; + + // aapt resource value: 0x7f0d00b0 + public const int Base_TextAppearance_AppCompat_SearchResult = 2131558576; + + // aapt resource value: 0x7f0d0056 + public const int Base_TextAppearance_AppCompat_SearchResult_Subtitle = 2131558486; + + // aapt resource value: 0x7f0d0057 + public const int Base_TextAppearance_AppCompat_SearchResult_Title = 2131558487; + + // aapt resource value: 0x7f0d0058 + public const int Base_TextAppearance_AppCompat_Small = 2131558488; + + // aapt resource value: 0x7f0d001d + public const int Base_TextAppearance_AppCompat_Small_Inverse = 2131558429; + + // aapt resource value: 0x7f0d0059 + public const int Base_TextAppearance_AppCompat_Subhead = 2131558489; + + // aapt resource value: 0x7f0d001e + public const int Base_TextAppearance_AppCompat_Subhead_Inverse = 2131558430; + + // aapt resource value: 0x7f0d005a + public const int Base_TextAppearance_AppCompat_Title = 2131558490; + + // aapt resource value: 0x7f0d001f + public const int Base_TextAppearance_AppCompat_Title_Inverse = 2131558431; + + // aapt resource value: 0x7f0d00b1 + public const int Base_TextAppearance_AppCompat_Tooltip = 2131558577; + + // aapt resource value: 0x7f0d0095 + public const int Base_TextAppearance_AppCompat_Widget_ActionBar_Menu = 2131558549; + + // aapt resource value: 0x7f0d005b + public const int Base_TextAppearance_AppCompat_Widget_ActionBar_Subtitle = 2131558491; + + // aapt resource value: 0x7f0d005c + public const int Base_TextAppearance_AppCompat_Widget_ActionBar_Subtitle_Inverse = 2131558492; + + // aapt resource value: 0x7f0d005d + public const int Base_TextAppearance_AppCompat_Widget_ActionBar_Title = 2131558493; + + // aapt resource value: 0x7f0d005e + public const int Base_TextAppearance_AppCompat_Widget_ActionBar_Title_Inverse = 2131558494; + + // aapt resource value: 0x7f0d005f + public const int Base_TextAppearance_AppCompat_Widget_ActionMode_Subtitle = 2131558495; + + // aapt resource value: 0x7f0d0060 + public const int Base_TextAppearance_AppCompat_Widget_ActionMode_Title = 2131558496; + + // aapt resource value: 0x7f0d0061 + public const int Base_TextAppearance_AppCompat_Widget_Button = 2131558497; + + // aapt resource value: 0x7f0d009c + public const int Base_TextAppearance_AppCompat_Widget_Button_Borderless_Colored = 2131558556; + + // aapt resource value: 0x7f0d009d + public const int Base_TextAppearance_AppCompat_Widget_Button_Colored = 2131558557; + + // aapt resource value: 0x7f0d0096 + public const int Base_TextAppearance_AppCompat_Widget_Button_Inverse = 2131558550; + + // aapt resource value: 0x7f0d00b2 + public const int Base_TextAppearance_AppCompat_Widget_DropDownItem = 2131558578; + + // aapt resource value: 0x7f0d0062 + public const int Base_TextAppearance_AppCompat_Widget_PopupMenu_Header = 2131558498; + + // aapt resource value: 0x7f0d0063 + public const int Base_TextAppearance_AppCompat_Widget_PopupMenu_Large = 2131558499; + + // aapt resource value: 0x7f0d0064 + public const int Base_TextAppearance_AppCompat_Widget_PopupMenu_Small = 2131558500; + + // aapt resource value: 0x7f0d0065 + public const int Base_TextAppearance_AppCompat_Widget_Switch = 2131558501; + + // aapt resource value: 0x7f0d0066 + public const int Base_TextAppearance_AppCompat_Widget_TextView_SpinnerItem = 2131558502; + + // aapt resource value: 0x7f0d00b3 + public const int Base_TextAppearance_Widget_AppCompat_ExpandedMenu_Item = 2131558579; + + // aapt resource value: 0x7f0d0067 + public const int Base_TextAppearance_Widget_AppCompat_Toolbar_Subtitle = 2131558503; + + // aapt resource value: 0x7f0d0068 + public const int Base_TextAppearance_Widget_AppCompat_Toolbar_Title = 2131558504; + + // aapt resource value: 0x7f0d0069 + public const int Base_Theme_AppCompat = 2131558505; + + // aapt resource value: 0x7f0d00b4 + public const int Base_Theme_AppCompat_CompactMenu = 2131558580; + + // aapt resource value: 0x7f0d0020 + public const int Base_Theme_AppCompat_Dialog = 2131558432; + + // aapt resource value: 0x7f0d0021 + public const int Base_Theme_AppCompat_Dialog_Alert = 2131558433; + + // aapt resource value: 0x7f0d00b5 + public const int Base_Theme_AppCompat_Dialog_FixedSize = 2131558581; + + // aapt resource value: 0x7f0d0022 + public const int Base_Theme_AppCompat_Dialog_MinWidth = 2131558434; + + // aapt resource value: 0x7f0d0010 + public const int Base_Theme_AppCompat_DialogWhenLarge = 2131558416; + + // aapt resource value: 0x7f0d006a + public const int Base_Theme_AppCompat_Light = 2131558506; + + // aapt resource value: 0x7f0d00b6 + public const int Base_Theme_AppCompat_Light_DarkActionBar = 2131558582; + + // aapt resource value: 0x7f0d0023 + public const int Base_Theme_AppCompat_Light_Dialog = 2131558435; + + // aapt resource value: 0x7f0d0024 + public const int Base_Theme_AppCompat_Light_Dialog_Alert = 2131558436; + + // aapt resource value: 0x7f0d00b7 + public const int Base_Theme_AppCompat_Light_Dialog_FixedSize = 2131558583; + + // aapt resource value: 0x7f0d0025 + public const int Base_Theme_AppCompat_Light_Dialog_MinWidth = 2131558437; + + // aapt resource value: 0x7f0d0011 + public const int Base_Theme_AppCompat_Light_DialogWhenLarge = 2131558417; + + // aapt resource value: 0x7f0d00b8 + public const int Base_ThemeOverlay_AppCompat = 2131558584; + + // aapt resource value: 0x7f0d00b9 + public const int Base_ThemeOverlay_AppCompat_ActionBar = 2131558585; + + // aapt resource value: 0x7f0d00ba + public const int Base_ThemeOverlay_AppCompat_Dark = 2131558586; + + // aapt resource value: 0x7f0d00bb + public const int Base_ThemeOverlay_AppCompat_Dark_ActionBar = 2131558587; + + // aapt resource value: 0x7f0d0026 + public const int Base_ThemeOverlay_AppCompat_Dialog = 2131558438; + + // aapt resource value: 0x7f0d0027 + public const int Base_ThemeOverlay_AppCompat_Dialog_Alert = 2131558439; + + // aapt resource value: 0x7f0d00bc + public const int Base_ThemeOverlay_AppCompat_Light = 2131558588; + + // aapt resource value: 0x7f0d0028 + public const int Base_V11_Theme_AppCompat_Dialog = 2131558440; + + // aapt resource value: 0x7f0d0029 + public const int Base_V11_Theme_AppCompat_Light_Dialog = 2131558441; + + // aapt resource value: 0x7f0d002a + public const int Base_V11_ThemeOverlay_AppCompat_Dialog = 2131558442; + + // aapt resource value: 0x7f0d0032 + public const int Base_V12_Widget_AppCompat_AutoCompleteTextView = 2131558450; + + // aapt resource value: 0x7f0d0033 + public const int Base_V12_Widget_AppCompat_EditText = 2131558451; + + // aapt resource value: 0x7f0d016f + public const int Base_V14_Widget_Design_AppBarLayout = 2131558767; + + // aapt resource value: 0x7f0d006b + public const int Base_V21_Theme_AppCompat = 2131558507; + + // aapt resource value: 0x7f0d006c + public const int Base_V21_Theme_AppCompat_Dialog = 2131558508; + + // aapt resource value: 0x7f0d006d + public const int Base_V21_Theme_AppCompat_Light = 2131558509; + + // aapt resource value: 0x7f0d006e + public const int Base_V21_Theme_AppCompat_Light_Dialog = 2131558510; + + // aapt resource value: 0x7f0d006f + public const int Base_V21_ThemeOverlay_AppCompat_Dialog = 2131558511; + + // aapt resource value: 0x7f0d016b + public const int Base_V21_Widget_Design_AppBarLayout = 2131558763; + + // aapt resource value: 0x7f0d0093 + public const int Base_V22_Theme_AppCompat = 2131558547; + + // aapt resource value: 0x7f0d0094 + public const int Base_V22_Theme_AppCompat_Light = 2131558548; + + // aapt resource value: 0x7f0d0097 + public const int Base_V23_Theme_AppCompat = 2131558551; + + // aapt resource value: 0x7f0d0098 + public const int Base_V23_Theme_AppCompat_Light = 2131558552; + + // aapt resource value: 0x7f0d00a0 + public const int Base_V26_Theme_AppCompat = 2131558560; + + // aapt resource value: 0x7f0d00a1 + public const int Base_V26_Theme_AppCompat_Light = 2131558561; + + // aapt resource value: 0x7f0d00a2 + public const int Base_V26_Widget_AppCompat_Toolbar = 2131558562; + + // aapt resource value: 0x7f0d016d + public const int Base_V26_Widget_Design_AppBarLayout = 2131558765; + + // aapt resource value: 0x7f0d00bd + public const int Base_V7_Theme_AppCompat = 2131558589; + + // aapt resource value: 0x7f0d00be + public const int Base_V7_Theme_AppCompat_Dialog = 2131558590; + + // aapt resource value: 0x7f0d00bf + public const int Base_V7_Theme_AppCompat_Light = 2131558591; + + // aapt resource value: 0x7f0d00c0 + public const int Base_V7_Theme_AppCompat_Light_Dialog = 2131558592; + + // aapt resource value: 0x7f0d00c1 + public const int Base_V7_ThemeOverlay_AppCompat_Dialog = 2131558593; + + // aapt resource value: 0x7f0d00c2 + public const int Base_V7_Widget_AppCompat_AutoCompleteTextView = 2131558594; + + // aapt resource value: 0x7f0d00c3 + public const int Base_V7_Widget_AppCompat_EditText = 2131558595; + + // aapt resource value: 0x7f0d00c4 + public const int Base_V7_Widget_AppCompat_Toolbar = 2131558596; + + // aapt resource value: 0x7f0d00c5 + public const int Base_Widget_AppCompat_ActionBar = 2131558597; + + // aapt resource value: 0x7f0d00c6 + public const int Base_Widget_AppCompat_ActionBar_Solid = 2131558598; + + // aapt resource value: 0x7f0d00c7 + public const int Base_Widget_AppCompat_ActionBar_TabBar = 2131558599; + + // aapt resource value: 0x7f0d0070 + public const int Base_Widget_AppCompat_ActionBar_TabText = 2131558512; + + // aapt resource value: 0x7f0d0071 + public const int Base_Widget_AppCompat_ActionBar_TabView = 2131558513; + + // aapt resource value: 0x7f0d0072 + public const int Base_Widget_AppCompat_ActionButton = 2131558514; + + // aapt resource value: 0x7f0d0073 + public const int Base_Widget_AppCompat_ActionButton_CloseMode = 2131558515; + + // aapt resource value: 0x7f0d0074 + public const int Base_Widget_AppCompat_ActionButton_Overflow = 2131558516; + + // aapt resource value: 0x7f0d00c8 + public const int Base_Widget_AppCompat_ActionMode = 2131558600; + + // aapt resource value: 0x7f0d00c9 + public const int Base_Widget_AppCompat_ActivityChooserView = 2131558601; + + // aapt resource value: 0x7f0d0034 + public const int Base_Widget_AppCompat_AutoCompleteTextView = 2131558452; + + // aapt resource value: 0x7f0d0075 + public const int Base_Widget_AppCompat_Button = 2131558517; + + // aapt resource value: 0x7f0d0076 + public const int Base_Widget_AppCompat_Button_Borderless = 2131558518; + + // aapt resource value: 0x7f0d0077 + public const int Base_Widget_AppCompat_Button_Borderless_Colored = 2131558519; + + // aapt resource value: 0x7f0d00ca + public const int Base_Widget_AppCompat_Button_ButtonBar_AlertDialog = 2131558602; + + // aapt resource value: 0x7f0d0099 + public const int Base_Widget_AppCompat_Button_Colored = 2131558553; + + // aapt resource value: 0x7f0d0078 + public const int Base_Widget_AppCompat_Button_Small = 2131558520; + + // aapt resource value: 0x7f0d0079 + public const int Base_Widget_AppCompat_ButtonBar = 2131558521; + + // aapt resource value: 0x7f0d00cb + public const int Base_Widget_AppCompat_ButtonBar_AlertDialog = 2131558603; + + // aapt resource value: 0x7f0d007a + public const int Base_Widget_AppCompat_CompoundButton_CheckBox = 2131558522; + + // aapt resource value: 0x7f0d007b + public const int Base_Widget_AppCompat_CompoundButton_RadioButton = 2131558523; + + // aapt resource value: 0x7f0d00cc + public const int Base_Widget_AppCompat_CompoundButton_Switch = 2131558604; + + // aapt resource value: 0x7f0d000f + public const int Base_Widget_AppCompat_DrawerArrowToggle = 2131558415; + + // aapt resource value: 0x7f0d00cd + public const int Base_Widget_AppCompat_DrawerArrowToggle_Common = 2131558605; + + // aapt resource value: 0x7f0d007c + public const int Base_Widget_AppCompat_DropDownItem_Spinner = 2131558524; + + // aapt resource value: 0x7f0d0035 + public const int Base_Widget_AppCompat_EditText = 2131558453; + + // aapt resource value: 0x7f0d007d + public const int Base_Widget_AppCompat_ImageButton = 2131558525; + + // aapt resource value: 0x7f0d00ce + public const int Base_Widget_AppCompat_Light_ActionBar = 2131558606; + + // aapt resource value: 0x7f0d00cf + public const int Base_Widget_AppCompat_Light_ActionBar_Solid = 2131558607; + + // aapt resource value: 0x7f0d00d0 + public const int Base_Widget_AppCompat_Light_ActionBar_TabBar = 2131558608; + + // aapt resource value: 0x7f0d007e + public const int Base_Widget_AppCompat_Light_ActionBar_TabText = 2131558526; + + // aapt resource value: 0x7f0d007f + public const int Base_Widget_AppCompat_Light_ActionBar_TabText_Inverse = 2131558527; + + // aapt resource value: 0x7f0d0080 + public const int Base_Widget_AppCompat_Light_ActionBar_TabView = 2131558528; + + // aapt resource value: 0x7f0d0081 + public const int Base_Widget_AppCompat_Light_PopupMenu = 2131558529; + + // aapt resource value: 0x7f0d0082 + public const int Base_Widget_AppCompat_Light_PopupMenu_Overflow = 2131558530; + + // aapt resource value: 0x7f0d00d1 + public const int Base_Widget_AppCompat_ListMenuView = 2131558609; + + // aapt resource value: 0x7f0d0083 + public const int Base_Widget_AppCompat_ListPopupWindow = 2131558531; + + // aapt resource value: 0x7f0d0084 + public const int Base_Widget_AppCompat_ListView = 2131558532; + + // aapt resource value: 0x7f0d0085 + public const int Base_Widget_AppCompat_ListView_DropDown = 2131558533; + + // aapt resource value: 0x7f0d0086 + public const int Base_Widget_AppCompat_ListView_Menu = 2131558534; + + // aapt resource value: 0x7f0d0087 + public const int Base_Widget_AppCompat_PopupMenu = 2131558535; + + // aapt resource value: 0x7f0d0088 + public const int Base_Widget_AppCompat_PopupMenu_Overflow = 2131558536; + + // aapt resource value: 0x7f0d00d2 + public const int Base_Widget_AppCompat_PopupWindow = 2131558610; + + // aapt resource value: 0x7f0d002b + public const int Base_Widget_AppCompat_ProgressBar = 2131558443; + + // aapt resource value: 0x7f0d002c + public const int Base_Widget_AppCompat_ProgressBar_Horizontal = 2131558444; + + // aapt resource value: 0x7f0d0089 + public const int Base_Widget_AppCompat_RatingBar = 2131558537; + + // aapt resource value: 0x7f0d009a + public const int Base_Widget_AppCompat_RatingBar_Indicator = 2131558554; + + // aapt resource value: 0x7f0d009b + public const int Base_Widget_AppCompat_RatingBar_Small = 2131558555; + + // aapt resource value: 0x7f0d00d3 + public const int Base_Widget_AppCompat_SearchView = 2131558611; + + // aapt resource value: 0x7f0d00d4 + public const int Base_Widget_AppCompat_SearchView_ActionBar = 2131558612; + + // aapt resource value: 0x7f0d008a + public const int Base_Widget_AppCompat_SeekBar = 2131558538; + + // aapt resource value: 0x7f0d00d5 + public const int Base_Widget_AppCompat_SeekBar_Discrete = 2131558613; + + // aapt resource value: 0x7f0d008b + public const int Base_Widget_AppCompat_Spinner = 2131558539; + + // aapt resource value: 0x7f0d0012 + public const int Base_Widget_AppCompat_Spinner_Underlined = 2131558418; + + // aapt resource value: 0x7f0d008c + public const int Base_Widget_AppCompat_TextView_SpinnerItem = 2131558540; + + // aapt resource value: 0x7f0d00a3 + public const int Base_Widget_AppCompat_Toolbar = 2131558563; + + // aapt resource value: 0x7f0d008d + public const int Base_Widget_AppCompat_Toolbar_Button_Navigation = 2131558541; + + // aapt resource value: 0x7f0d016c + public const int Base_Widget_Design_AppBarLayout = 2131558764; + + // aapt resource value: 0x7f0d0170 + public const int Base_Widget_Design_TabLayout = 2131558768; + + // aapt resource value: 0x7f0d000b + public const int CardView = 2131558411; + + // aapt resource value: 0x7f0d000d + public const int CardView_Dark = 2131558413; + + // aapt resource value: 0x7f0d000e + public const int CardView_Light = 2131558414; + + // aapt resource value: 0x7f0d018f + public const int MainTheme = 2131558799; + + // aapt resource value: 0x7f0d0190 + public const int MainTheme_Base = 2131558800; + + // aapt resource value: 0x7f0d002d + public const int Platform_AppCompat = 2131558445; + + // aapt resource value: 0x7f0d002e + public const int Platform_AppCompat_Light = 2131558446; + + // aapt resource value: 0x7f0d008e + public const int Platform_ThemeOverlay_AppCompat = 2131558542; + + // aapt resource value: 0x7f0d008f + public const int Platform_ThemeOverlay_AppCompat_Dark = 2131558543; + + // aapt resource value: 0x7f0d0090 + public const int Platform_ThemeOverlay_AppCompat_Light = 2131558544; + + // aapt resource value: 0x7f0d002f + public const int Platform_V11_AppCompat = 2131558447; + + // aapt resource value: 0x7f0d0030 + public const int Platform_V11_AppCompat_Light = 2131558448; + + // aapt resource value: 0x7f0d0037 + public const int Platform_V14_AppCompat = 2131558455; + + // aapt resource value: 0x7f0d0038 + public const int Platform_V14_AppCompat_Light = 2131558456; + + // aapt resource value: 0x7f0d0091 + public const int Platform_V21_AppCompat = 2131558545; + + // aapt resource value: 0x7f0d0092 + public const int Platform_V21_AppCompat_Light = 2131558546; + + // aapt resource value: 0x7f0d009e + public const int Platform_V25_AppCompat = 2131558558; + + // aapt resource value: 0x7f0d009f + public const int Platform_V25_AppCompat_Light = 2131558559; + + // aapt resource value: 0x7f0d0031 + public const int Platform_Widget_AppCompat_Spinner = 2131558449; + + // aapt resource value: 0x7f0d003a + public const int RtlOverlay_DialogWindowTitle_AppCompat = 2131558458; + + // aapt resource value: 0x7f0d003b + public const int RtlOverlay_Widget_AppCompat_ActionBar_TitleItem = 2131558459; + + // aapt resource value: 0x7f0d003c + public const int RtlOverlay_Widget_AppCompat_DialogTitle_Icon = 2131558460; + + // aapt resource value: 0x7f0d003d + public const int RtlOverlay_Widget_AppCompat_PopupMenuItem = 2131558461; + + // aapt resource value: 0x7f0d003e + public const int RtlOverlay_Widget_AppCompat_PopupMenuItem_InternalGroup = 2131558462; + + // aapt resource value: 0x7f0d003f + public const int RtlOverlay_Widget_AppCompat_PopupMenuItem_Text = 2131558463; + + // aapt resource value: 0x7f0d0040 + public const int RtlOverlay_Widget_AppCompat_Search_DropDown = 2131558464; + + // aapt resource value: 0x7f0d0041 + public const int RtlOverlay_Widget_AppCompat_Search_DropDown_Icon1 = 2131558465; + + // aapt resource value: 0x7f0d0042 + public const int RtlOverlay_Widget_AppCompat_Search_DropDown_Icon2 = 2131558466; + + // aapt resource value: 0x7f0d0043 + public const int RtlOverlay_Widget_AppCompat_Search_DropDown_Query = 2131558467; + + // aapt resource value: 0x7f0d0044 + public const int RtlOverlay_Widget_AppCompat_Search_DropDown_Text = 2131558468; + + // aapt resource value: 0x7f0d0045 + public const int RtlOverlay_Widget_AppCompat_SearchView_MagIcon = 2131558469; + + // aapt resource value: 0x7f0d0046 + public const int RtlUnderlay_Widget_AppCompat_ActionButton = 2131558470; + + // aapt resource value: 0x7f0d0047 + public const int RtlUnderlay_Widget_AppCompat_ActionButton_Overflow = 2131558471; + + // aapt resource value: 0x7f0d00d6 + public const int TextAppearance_AppCompat = 2131558614; + + // aapt resource value: 0x7f0d00d7 + public const int TextAppearance_AppCompat_Body1 = 2131558615; + + // aapt resource value: 0x7f0d00d8 + public const int TextAppearance_AppCompat_Body2 = 2131558616; + + // aapt resource value: 0x7f0d00d9 + public const int TextAppearance_AppCompat_Button = 2131558617; + + // aapt resource value: 0x7f0d00da + public const int TextAppearance_AppCompat_Caption = 2131558618; + + // aapt resource value: 0x7f0d00db + public const int TextAppearance_AppCompat_Display1 = 2131558619; + + // aapt resource value: 0x7f0d00dc + public const int TextAppearance_AppCompat_Display2 = 2131558620; + + // aapt resource value: 0x7f0d00dd + public const int TextAppearance_AppCompat_Display3 = 2131558621; + + // aapt resource value: 0x7f0d00de + public const int TextAppearance_AppCompat_Display4 = 2131558622; + + // aapt resource value: 0x7f0d00df + public const int TextAppearance_AppCompat_Headline = 2131558623; + + // aapt resource value: 0x7f0d00e0 + public const int TextAppearance_AppCompat_Inverse = 2131558624; + + // aapt resource value: 0x7f0d00e1 + public const int TextAppearance_AppCompat_Large = 2131558625; + + // aapt resource value: 0x7f0d00e2 + public const int TextAppearance_AppCompat_Large_Inverse = 2131558626; + + // aapt resource value: 0x7f0d00e3 + public const int TextAppearance_AppCompat_Light_SearchResult_Subtitle = 2131558627; + + // aapt resource value: 0x7f0d00e4 + public const int TextAppearance_AppCompat_Light_SearchResult_Title = 2131558628; + + // aapt resource value: 0x7f0d00e5 + public const int TextAppearance_AppCompat_Light_Widget_PopupMenu_Large = 2131558629; + + // aapt resource value: 0x7f0d00e6 + public const int TextAppearance_AppCompat_Light_Widget_PopupMenu_Small = 2131558630; + + // aapt resource value: 0x7f0d00e7 + public const int TextAppearance_AppCompat_Medium = 2131558631; + + // aapt resource value: 0x7f0d00e8 + public const int TextAppearance_AppCompat_Medium_Inverse = 2131558632; + + // aapt resource value: 0x7f0d00e9 + public const int TextAppearance_AppCompat_Menu = 2131558633; + + // aapt resource value: 0x7f0d00ea + public const int TextAppearance_AppCompat_SearchResult_Subtitle = 2131558634; + + // aapt resource value: 0x7f0d00eb + public const int TextAppearance_AppCompat_SearchResult_Title = 2131558635; + + // aapt resource value: 0x7f0d00ec + public const int TextAppearance_AppCompat_Small = 2131558636; + + // aapt resource value: 0x7f0d00ed + public const int TextAppearance_AppCompat_Small_Inverse = 2131558637; + + // aapt resource value: 0x7f0d00ee + public const int TextAppearance_AppCompat_Subhead = 2131558638; + + // aapt resource value: 0x7f0d00ef + public const int TextAppearance_AppCompat_Subhead_Inverse = 2131558639; + + // aapt resource value: 0x7f0d00f0 + public const int TextAppearance_AppCompat_Title = 2131558640; + + // aapt resource value: 0x7f0d00f1 + public const int TextAppearance_AppCompat_Title_Inverse = 2131558641; + + // aapt resource value: 0x7f0d0039 + public const int TextAppearance_AppCompat_Tooltip = 2131558457; + + // aapt resource value: 0x7f0d00f2 + public const int TextAppearance_AppCompat_Widget_ActionBar_Menu = 2131558642; + + // aapt resource value: 0x7f0d00f3 + public const int TextAppearance_AppCompat_Widget_ActionBar_Subtitle = 2131558643; + + // aapt resource value: 0x7f0d00f4 + public const int TextAppearance_AppCompat_Widget_ActionBar_Subtitle_Inverse = 2131558644; + + // aapt resource value: 0x7f0d00f5 + public const int TextAppearance_AppCompat_Widget_ActionBar_Title = 2131558645; + + // aapt resource value: 0x7f0d00f6 + public const int TextAppearance_AppCompat_Widget_ActionBar_Title_Inverse = 2131558646; + + // aapt resource value: 0x7f0d00f7 + public const int TextAppearance_AppCompat_Widget_ActionMode_Subtitle = 2131558647; + + // aapt resource value: 0x7f0d00f8 + public const int TextAppearance_AppCompat_Widget_ActionMode_Subtitle_Inverse = 2131558648; + + // aapt resource value: 0x7f0d00f9 + public const int TextAppearance_AppCompat_Widget_ActionMode_Title = 2131558649; + + // aapt resource value: 0x7f0d00fa + public const int TextAppearance_AppCompat_Widget_ActionMode_Title_Inverse = 2131558650; + + // aapt resource value: 0x7f0d00fb + public const int TextAppearance_AppCompat_Widget_Button = 2131558651; + + // aapt resource value: 0x7f0d00fc + public const int TextAppearance_AppCompat_Widget_Button_Borderless_Colored = 2131558652; + + // aapt resource value: 0x7f0d00fd + public const int TextAppearance_AppCompat_Widget_Button_Colored = 2131558653; + + // aapt resource value: 0x7f0d00fe + public const int TextAppearance_AppCompat_Widget_Button_Inverse = 2131558654; + + // aapt resource value: 0x7f0d00ff + public const int TextAppearance_AppCompat_Widget_DropDownItem = 2131558655; + + // aapt resource value: 0x7f0d0100 + public const int TextAppearance_AppCompat_Widget_PopupMenu_Header = 2131558656; + + // aapt resource value: 0x7f0d0101 + public const int TextAppearance_AppCompat_Widget_PopupMenu_Large = 2131558657; + + // aapt resource value: 0x7f0d0102 + public const int TextAppearance_AppCompat_Widget_PopupMenu_Small = 2131558658; + + // aapt resource value: 0x7f0d0103 + public const int TextAppearance_AppCompat_Widget_Switch = 2131558659; + + // aapt resource value: 0x7f0d0104 + public const int TextAppearance_AppCompat_Widget_TextView_SpinnerItem = 2131558660; + + // aapt resource value: 0x7f0d0188 + public const int TextAppearance_Compat_Notification = 2131558792; + + // aapt resource value: 0x7f0d0189 + public const int TextAppearance_Compat_Notification_Info = 2131558793; + + // aapt resource value: 0x7f0d0165 + public const int TextAppearance_Compat_Notification_Info_Media = 2131558757; + + // aapt resource value: 0x7f0d018e + public const int TextAppearance_Compat_Notification_Line2 = 2131558798; + + // aapt resource value: 0x7f0d0169 + public const int TextAppearance_Compat_Notification_Line2_Media = 2131558761; + + // aapt resource value: 0x7f0d0166 + public const int TextAppearance_Compat_Notification_Media = 2131558758; + + // aapt resource value: 0x7f0d018a + public const int TextAppearance_Compat_Notification_Time = 2131558794; + + // aapt resource value: 0x7f0d0167 + public const int TextAppearance_Compat_Notification_Time_Media = 2131558759; + + // aapt resource value: 0x7f0d018b + public const int TextAppearance_Compat_Notification_Title = 2131558795; + + // aapt resource value: 0x7f0d0168 + public const int TextAppearance_Compat_Notification_Title_Media = 2131558760; + + // aapt resource value: 0x7f0d0171 + public const int TextAppearance_Design_CollapsingToolbar_Expanded = 2131558769; + + // aapt resource value: 0x7f0d0172 + public const int TextAppearance_Design_Counter = 2131558770; + + // aapt resource value: 0x7f0d0173 + public const int TextAppearance_Design_Counter_Overflow = 2131558771; + + // aapt resource value: 0x7f0d0174 + public const int TextAppearance_Design_Error = 2131558772; + + // aapt resource value: 0x7f0d0175 + public const int TextAppearance_Design_Hint = 2131558773; + + // aapt resource value: 0x7f0d0176 + public const int TextAppearance_Design_Snackbar_Message = 2131558774; + + // aapt resource value: 0x7f0d0177 + public const int TextAppearance_Design_Tab = 2131558775; + + // aapt resource value: 0x7f0d0000 + public const int TextAppearance_MediaRouter_PrimaryText = 2131558400; + + // aapt resource value: 0x7f0d0001 + public const int TextAppearance_MediaRouter_SecondaryText = 2131558401; + + // aapt resource value: 0x7f0d0002 + public const int TextAppearance_MediaRouter_Title = 2131558402; + + // aapt resource value: 0x7f0d0105 + public const int TextAppearance_Widget_AppCompat_ExpandedMenu_Item = 2131558661; + + // aapt resource value: 0x7f0d0106 + public const int TextAppearance_Widget_AppCompat_Toolbar_Subtitle = 2131558662; + + // aapt resource value: 0x7f0d0107 + public const int TextAppearance_Widget_AppCompat_Toolbar_Title = 2131558663; + + // aapt resource value: 0x7f0d0108 + public const int Theme_AppCompat = 2131558664; + + // aapt resource value: 0x7f0d0109 + public const int Theme_AppCompat_CompactMenu = 2131558665; + + // aapt resource value: 0x7f0d0013 + public const int Theme_AppCompat_DayNight = 2131558419; + + // aapt resource value: 0x7f0d0014 + public const int Theme_AppCompat_DayNight_DarkActionBar = 2131558420; + + // aapt resource value: 0x7f0d0015 + public const int Theme_AppCompat_DayNight_Dialog = 2131558421; + + // aapt resource value: 0x7f0d0016 + public const int Theme_AppCompat_DayNight_Dialog_Alert = 2131558422; + + // aapt resource value: 0x7f0d0017 + public const int Theme_AppCompat_DayNight_Dialog_MinWidth = 2131558423; + + // aapt resource value: 0x7f0d0018 + public const int Theme_AppCompat_DayNight_DialogWhenLarge = 2131558424; + + // aapt resource value: 0x7f0d0019 + public const int Theme_AppCompat_DayNight_NoActionBar = 2131558425; + + // aapt resource value: 0x7f0d010a + public const int Theme_AppCompat_Dialog = 2131558666; + + // aapt resource value: 0x7f0d010b + public const int Theme_AppCompat_Dialog_Alert = 2131558667; + + // aapt resource value: 0x7f0d010c + public const int Theme_AppCompat_Dialog_MinWidth = 2131558668; + + // aapt resource value: 0x7f0d010d + public const int Theme_AppCompat_DialogWhenLarge = 2131558669; + + // aapt resource value: 0x7f0d010e + public const int Theme_AppCompat_Light = 2131558670; + + // aapt resource value: 0x7f0d010f + public const int Theme_AppCompat_Light_DarkActionBar = 2131558671; + + // aapt resource value: 0x7f0d0110 + public const int Theme_AppCompat_Light_Dialog = 2131558672; + + // aapt resource value: 0x7f0d0111 + public const int Theme_AppCompat_Light_Dialog_Alert = 2131558673; + + // aapt resource value: 0x7f0d0112 + public const int Theme_AppCompat_Light_Dialog_MinWidth = 2131558674; + + // aapt resource value: 0x7f0d0113 + public const int Theme_AppCompat_Light_DialogWhenLarge = 2131558675; + + // aapt resource value: 0x7f0d0114 + public const int Theme_AppCompat_Light_NoActionBar = 2131558676; + + // aapt resource value: 0x7f0d0115 + public const int Theme_AppCompat_NoActionBar = 2131558677; + + // aapt resource value: 0x7f0d0178 + public const int Theme_Design = 2131558776; + + // aapt resource value: 0x7f0d0179 + public const int Theme_Design_BottomSheetDialog = 2131558777; + + // aapt resource value: 0x7f0d017a + public const int Theme_Design_Light = 2131558778; + + // aapt resource value: 0x7f0d017b + public const int Theme_Design_Light_BottomSheetDialog = 2131558779; + + // aapt resource value: 0x7f0d017c + public const int Theme_Design_Light_NoActionBar = 2131558780; + + // aapt resource value: 0x7f0d017d + public const int Theme_Design_NoActionBar = 2131558781; + + // aapt resource value: 0x7f0d0003 + public const int Theme_MediaRouter = 2131558403; + + // aapt resource value: 0x7f0d0004 + public const int Theme_MediaRouter_Light = 2131558404; + + // aapt resource value: 0x7f0d0005 + public const int Theme_MediaRouter_Light_DarkControlPanel = 2131558405; + + // aapt resource value: 0x7f0d0006 + public const int Theme_MediaRouter_LightControlPanel = 2131558406; + + // aapt resource value: 0x7f0d0116 + public const int ThemeOverlay_AppCompat = 2131558678; + + // aapt resource value: 0x7f0d0117 + public const int ThemeOverlay_AppCompat_ActionBar = 2131558679; + + // aapt resource value: 0x7f0d0118 + public const int ThemeOverlay_AppCompat_Dark = 2131558680; + + // aapt resource value: 0x7f0d0119 + public const int ThemeOverlay_AppCompat_Dark_ActionBar = 2131558681; + + // aapt resource value: 0x7f0d011a + public const int ThemeOverlay_AppCompat_Dialog = 2131558682; + + // aapt resource value: 0x7f0d011b + public const int ThemeOverlay_AppCompat_Dialog_Alert = 2131558683; + + // aapt resource value: 0x7f0d011c + public const int ThemeOverlay_AppCompat_Light = 2131558684; + + // aapt resource value: 0x7f0d0007 + public const int ThemeOverlay_MediaRouter_Dark = 2131558407; + + // aapt resource value: 0x7f0d0008 + public const int ThemeOverlay_MediaRouter_Light = 2131558408; + + // aapt resource value: 0x7f0d011d + public const int Widget_AppCompat_ActionBar = 2131558685; + + // aapt resource value: 0x7f0d011e + public const int Widget_AppCompat_ActionBar_Solid = 2131558686; + + // aapt resource value: 0x7f0d011f + public const int Widget_AppCompat_ActionBar_TabBar = 2131558687; + + // aapt resource value: 0x7f0d0120 + public const int Widget_AppCompat_ActionBar_TabText = 2131558688; + + // aapt resource value: 0x7f0d0121 + public const int Widget_AppCompat_ActionBar_TabView = 2131558689; + + // aapt resource value: 0x7f0d0122 + public const int Widget_AppCompat_ActionButton = 2131558690; + + // aapt resource value: 0x7f0d0123 + public const int Widget_AppCompat_ActionButton_CloseMode = 2131558691; + + // aapt resource value: 0x7f0d0124 + public const int Widget_AppCompat_ActionButton_Overflow = 2131558692; + + // aapt resource value: 0x7f0d0125 + public const int Widget_AppCompat_ActionMode = 2131558693; + + // aapt resource value: 0x7f0d0126 + public const int Widget_AppCompat_ActivityChooserView = 2131558694; + + // aapt resource value: 0x7f0d0127 + public const int Widget_AppCompat_AutoCompleteTextView = 2131558695; + + // aapt resource value: 0x7f0d0128 + public const int Widget_AppCompat_Button = 2131558696; + + // aapt resource value: 0x7f0d0129 + public const int Widget_AppCompat_Button_Borderless = 2131558697; + + // aapt resource value: 0x7f0d012a + public const int Widget_AppCompat_Button_Borderless_Colored = 2131558698; + + // aapt resource value: 0x7f0d012b + public const int Widget_AppCompat_Button_ButtonBar_AlertDialog = 2131558699; + + // aapt resource value: 0x7f0d012c + public const int Widget_AppCompat_Button_Colored = 2131558700; + + // aapt resource value: 0x7f0d012d + public const int Widget_AppCompat_Button_Small = 2131558701; + + // aapt resource value: 0x7f0d012e + public const int Widget_AppCompat_ButtonBar = 2131558702; + + // aapt resource value: 0x7f0d012f + public const int Widget_AppCompat_ButtonBar_AlertDialog = 2131558703; + + // aapt resource value: 0x7f0d0130 + public const int Widget_AppCompat_CompoundButton_CheckBox = 2131558704; + + // aapt resource value: 0x7f0d0131 + public const int Widget_AppCompat_CompoundButton_RadioButton = 2131558705; + + // aapt resource value: 0x7f0d0132 + public const int Widget_AppCompat_CompoundButton_Switch = 2131558706; + + // aapt resource value: 0x7f0d0133 + public const int Widget_AppCompat_DrawerArrowToggle = 2131558707; + + // aapt resource value: 0x7f0d0134 + public const int Widget_AppCompat_DropDownItem_Spinner = 2131558708; + + // aapt resource value: 0x7f0d0135 + public const int Widget_AppCompat_EditText = 2131558709; + + // aapt resource value: 0x7f0d0136 + public const int Widget_AppCompat_ImageButton = 2131558710; + + // aapt resource value: 0x7f0d0137 + public const int Widget_AppCompat_Light_ActionBar = 2131558711; + + // aapt resource value: 0x7f0d0138 + public const int Widget_AppCompat_Light_ActionBar_Solid = 2131558712; + + // aapt resource value: 0x7f0d0139 + public const int Widget_AppCompat_Light_ActionBar_Solid_Inverse = 2131558713; + + // aapt resource value: 0x7f0d013a + public const int Widget_AppCompat_Light_ActionBar_TabBar = 2131558714; + + // aapt resource value: 0x7f0d013b + public const int Widget_AppCompat_Light_ActionBar_TabBar_Inverse = 2131558715; + + // aapt resource value: 0x7f0d013c + public const int Widget_AppCompat_Light_ActionBar_TabText = 2131558716; + + // aapt resource value: 0x7f0d013d + public const int Widget_AppCompat_Light_ActionBar_TabText_Inverse = 2131558717; + + // aapt resource value: 0x7f0d013e + public const int Widget_AppCompat_Light_ActionBar_TabView = 2131558718; + + // aapt resource value: 0x7f0d013f + public const int Widget_AppCompat_Light_ActionBar_TabView_Inverse = 2131558719; + + // aapt resource value: 0x7f0d0140 + public const int Widget_AppCompat_Light_ActionButton = 2131558720; + + // aapt resource value: 0x7f0d0141 + public const int Widget_AppCompat_Light_ActionButton_CloseMode = 2131558721; + + // aapt resource value: 0x7f0d0142 + public const int Widget_AppCompat_Light_ActionButton_Overflow = 2131558722; + + // aapt resource value: 0x7f0d0143 + public const int Widget_AppCompat_Light_ActionMode_Inverse = 2131558723; + + // aapt resource value: 0x7f0d0144 + public const int Widget_AppCompat_Light_ActivityChooserView = 2131558724; + + // aapt resource value: 0x7f0d0145 + public const int Widget_AppCompat_Light_AutoCompleteTextView = 2131558725; + + // aapt resource value: 0x7f0d0146 + public const int Widget_AppCompat_Light_DropDownItem_Spinner = 2131558726; + + // aapt resource value: 0x7f0d0147 + public const int Widget_AppCompat_Light_ListPopupWindow = 2131558727; + + // aapt resource value: 0x7f0d0148 + public const int Widget_AppCompat_Light_ListView_DropDown = 2131558728; + + // aapt resource value: 0x7f0d0149 + public const int Widget_AppCompat_Light_PopupMenu = 2131558729; + + // aapt resource value: 0x7f0d014a + public const int Widget_AppCompat_Light_PopupMenu_Overflow = 2131558730; + + // aapt resource value: 0x7f0d014b + public const int Widget_AppCompat_Light_SearchView = 2131558731; + + // aapt resource value: 0x7f0d014c + public const int Widget_AppCompat_Light_Spinner_DropDown_ActionBar = 2131558732; + + // aapt resource value: 0x7f0d014d + public const int Widget_AppCompat_ListMenuView = 2131558733; + + // aapt resource value: 0x7f0d014e + public const int Widget_AppCompat_ListPopupWindow = 2131558734; + + // aapt resource value: 0x7f0d014f + public const int Widget_AppCompat_ListView = 2131558735; + + // aapt resource value: 0x7f0d0150 + public const int Widget_AppCompat_ListView_DropDown = 2131558736; + + // aapt resource value: 0x7f0d0151 + public const int Widget_AppCompat_ListView_Menu = 2131558737; + + // aapt resource value: 0x7f0d0152 + public const int Widget_AppCompat_PopupMenu = 2131558738; + + // aapt resource value: 0x7f0d0153 + public const int Widget_AppCompat_PopupMenu_Overflow = 2131558739; + + // aapt resource value: 0x7f0d0154 + public const int Widget_AppCompat_PopupWindow = 2131558740; + + // aapt resource value: 0x7f0d0155 + public const int Widget_AppCompat_ProgressBar = 2131558741; + + // aapt resource value: 0x7f0d0156 + public const int Widget_AppCompat_ProgressBar_Horizontal = 2131558742; + + // aapt resource value: 0x7f0d0157 + public const int Widget_AppCompat_RatingBar = 2131558743; + + // aapt resource value: 0x7f0d0158 + public const int Widget_AppCompat_RatingBar_Indicator = 2131558744; + + // aapt resource value: 0x7f0d0159 + public const int Widget_AppCompat_RatingBar_Small = 2131558745; + + // aapt resource value: 0x7f0d015a + public const int Widget_AppCompat_SearchView = 2131558746; + + // aapt resource value: 0x7f0d015b + public const int Widget_AppCompat_SearchView_ActionBar = 2131558747; + + // aapt resource value: 0x7f0d015c + public const int Widget_AppCompat_SeekBar = 2131558748; + + // aapt resource value: 0x7f0d015d + public const int Widget_AppCompat_SeekBar_Discrete = 2131558749; + + // aapt resource value: 0x7f0d015e + public const int Widget_AppCompat_Spinner = 2131558750; + + // aapt resource value: 0x7f0d015f + public const int Widget_AppCompat_Spinner_DropDown = 2131558751; + + // aapt resource value: 0x7f0d0160 + public const int Widget_AppCompat_Spinner_DropDown_ActionBar = 2131558752; + + // aapt resource value: 0x7f0d0161 + public const int Widget_AppCompat_Spinner_Underlined = 2131558753; + + // aapt resource value: 0x7f0d0162 + public const int Widget_AppCompat_TextView_SpinnerItem = 2131558754; + + // aapt resource value: 0x7f0d0163 + public const int Widget_AppCompat_Toolbar = 2131558755; + + // aapt resource value: 0x7f0d0164 + public const int Widget_AppCompat_Toolbar_Button_Navigation = 2131558756; + + // aapt resource value: 0x7f0d018c + public const int Widget_Compat_NotificationActionContainer = 2131558796; + + // aapt resource value: 0x7f0d018d + public const int Widget_Compat_NotificationActionText = 2131558797; + + // aapt resource value: 0x7f0d017e + public const int Widget_Design_AppBarLayout = 2131558782; + + // aapt resource value: 0x7f0d017f + public const int Widget_Design_BottomNavigationView = 2131558783; + + // aapt resource value: 0x7f0d0180 + public const int Widget_Design_BottomSheet_Modal = 2131558784; + + // aapt resource value: 0x7f0d0181 + public const int Widget_Design_CollapsingToolbar = 2131558785; + + // aapt resource value: 0x7f0d0182 + public const int Widget_Design_CoordinatorLayout = 2131558786; + + // aapt resource value: 0x7f0d0183 + public const int Widget_Design_FloatingActionButton = 2131558787; + + // aapt resource value: 0x7f0d0184 + public const int Widget_Design_NavigationView = 2131558788; + + // aapt resource value: 0x7f0d0185 + public const int Widget_Design_ScrimInsetsFrameLayout = 2131558789; + + // aapt resource value: 0x7f0d0186 + public const int Widget_Design_Snackbar = 2131558790; + + // aapt resource value: 0x7f0d016a + public const int Widget_Design_TabLayout = 2131558762; + + // aapt resource value: 0x7f0d0187 + public const int Widget_Design_TextInputLayout = 2131558791; + + // aapt resource value: 0x7f0d0009 + public const int Widget_MediaRouter_Light_MediaRouteButton = 2131558409; + + // aapt resource value: 0x7f0d000a + public const int Widget_MediaRouter_MediaRouteButton = 2131558410; + + static Style() + { + global::Android.Runtime.ResourceIdManager.UpdateIdValues(); + } + + private Style() + { + } + } + + public partial class Xml + { + + // aapt resource value: 0x7f080000 + public const int xamarin_essentials_fileprovider_file_paths = 2131230720; + + static Xml() + { + global::Android.Runtime.ResourceIdManager.UpdateIdValues(); + } + + private Xml() + { + } + } + + public partial class Styleable + { + + public static int[] ActionBar = new int[] { + 2130772003, + 2130772005, + 2130772006, + 2130772007, + 2130772008, + 2130772009, + 2130772010, + 2130772011, + 2130772012, + 2130772013, + 2130772014, + 2130772015, + 2130772016, + 2130772017, + 2130772018, + 2130772019, + 2130772020, + 2130772021, + 2130772022, + 2130772023, + 2130772024, + 2130772025, + 2130772026, + 2130772027, + 2130772028, + 2130772029, + 2130772030, + 2130772031, + 2130772101}; + + // aapt resource value: 10 + public const int ActionBar_background = 10; + + // aapt resource value: 12 + public const int ActionBar_backgroundSplit = 12; + + // aapt resource value: 11 + public const int ActionBar_backgroundStacked = 11; + + // aapt resource value: 21 + public const int ActionBar_contentInsetEnd = 21; + + // aapt resource value: 25 + public const int ActionBar_contentInsetEndWithActions = 25; + + // aapt resource value: 22 + public const int ActionBar_contentInsetLeft = 22; + + // aapt resource value: 23 + public const int ActionBar_contentInsetRight = 23; + + // aapt resource value: 20 + public const int ActionBar_contentInsetStart = 20; + + // aapt resource value: 24 + public const int ActionBar_contentInsetStartWithNavigation = 24; + + // aapt resource value: 13 + public const int ActionBar_customNavigationLayout = 13; + + // aapt resource value: 3 + public const int ActionBar_displayOptions = 3; + + // aapt resource value: 9 + public const int ActionBar_divider = 9; + + // aapt resource value: 26 + public const int ActionBar_elevation = 26; + + // aapt resource value: 0 + public const int ActionBar_height = 0; + + // aapt resource value: 19 + public const int ActionBar_hideOnContentScroll = 19; + + // aapt resource value: 28 + public const int ActionBar_homeAsUpIndicator = 28; + + // aapt resource value: 14 + public const int ActionBar_homeLayout = 14; + + // aapt resource value: 7 + public const int ActionBar_icon = 7; + + // aapt resource value: 16 + public const int ActionBar_indeterminateProgressStyle = 16; + + // aapt resource value: 18 + public const int ActionBar_itemPadding = 18; + + // aapt resource value: 8 + public const int ActionBar_logo = 8; + + // aapt resource value: 2 + public const int ActionBar_navigationMode = 2; + + // aapt resource value: 27 + public const int ActionBar_popupTheme = 27; + + // aapt resource value: 17 + public const int ActionBar_progressBarPadding = 17; + + // aapt resource value: 15 + public const int ActionBar_progressBarStyle = 15; + + // aapt resource value: 4 + public const int ActionBar_subtitle = 4; + + // aapt resource value: 6 + public const int ActionBar_subtitleTextStyle = 6; + + // aapt resource value: 1 + public const int ActionBar_title = 1; + + // aapt resource value: 5 + public const int ActionBar_titleTextStyle = 5; + + public static int[] ActionBarLayout = new int[] { + 16842931}; + + // aapt resource value: 0 + public const int ActionBarLayout_android_layout_gravity = 0; + + public static int[] ActionMenuItemView = new int[] { + 16843071}; + + // aapt resource value: 0 + public const int ActionMenuItemView_android_minWidth = 0; + + public static int[] ActionMenuView; + + public static int[] ActionMode = new int[] { + 2130772003, + 2130772009, + 2130772010, + 2130772014, + 2130772016, + 2130772032}; + + // aapt resource value: 3 + public const int ActionMode_background = 3; + + // aapt resource value: 4 + public const int ActionMode_backgroundSplit = 4; + + // aapt resource value: 5 + public const int ActionMode_closeItemLayout = 5; + + // aapt resource value: 0 + public const int ActionMode_height = 0; + + // aapt resource value: 2 + public const int ActionMode_subtitleTextStyle = 2; + + // aapt resource value: 1 + public const int ActionMode_titleTextStyle = 1; + + public static int[] ActivityChooserView = new int[] { + 2130772033, + 2130772034}; + + // aapt resource value: 1 + public const int ActivityChooserView_expandActivityOverflowButtonDrawable = 1; + + // aapt resource value: 0 + public const int ActivityChooserView_initialActivityCount = 0; + + public static int[] AlertDialog = new int[] { + 16842994, + 2130772035, + 2130772036, + 2130772037, + 2130772038, + 2130772039, + 2130772040}; + + // aapt resource value: 0 + public const int AlertDialog_android_layout = 0; + + // aapt resource value: 1 + public const int AlertDialog_buttonPanelSideLayout = 1; + + // aapt resource value: 5 + public const int AlertDialog_listItemLayout = 5; + + // aapt resource value: 2 + public const int AlertDialog_listLayout = 2; + + // aapt resource value: 3 + public const int AlertDialog_multiChoiceItemLayout = 3; + + // aapt resource value: 6 + public const int AlertDialog_showTitle = 6; + + // aapt resource value: 4 + public const int AlertDialog_singleChoiceItemLayout = 4; + + public static int[] AppBarLayout = new int[] { + 16842964, + 16843919, + 16844096, + 2130772030, + 2130772248}; + + // aapt resource value: 0 + public const int AppBarLayout_android_background = 0; + + // aapt resource value: 2 + public const int AppBarLayout_android_keyboardNavigationCluster = 2; + + // aapt resource value: 1 + public const int AppBarLayout_android_touchscreenBlocksFocus = 1; + + // aapt resource value: 3 + public const int AppBarLayout_elevation = 3; + + // aapt resource value: 4 + public const int AppBarLayout_expanded = 4; + + public static int[] AppBarLayoutStates = new int[] { + 2130772249, + 2130772250}; + + // aapt resource value: 0 + public const int AppBarLayoutStates_state_collapsed = 0; + + // aapt resource value: 1 + public const int AppBarLayoutStates_state_collapsible = 1; + + public static int[] AppBarLayout_Layout = new int[] { + 2130772251, + 2130772252}; + + // aapt resource value: 0 + public const int AppBarLayout_Layout_layout_scrollFlags = 0; + + // aapt resource value: 1 + public const int AppBarLayout_Layout_layout_scrollInterpolator = 1; + + public static int[] AppCompatImageView = new int[] { + 16843033, + 2130772041, + 2130772042, + 2130772043}; + + // aapt resource value: 0 + public const int AppCompatImageView_android_src = 0; + + // aapt resource value: 1 + public const int AppCompatImageView_srcCompat = 1; + + // aapt resource value: 2 + public const int AppCompatImageView_tint = 2; + + // aapt resource value: 3 + public const int AppCompatImageView_tintMode = 3; + + public static int[] AppCompatSeekBar = new int[] { + 16843074, + 2130772044, + 2130772045, + 2130772046}; + + // aapt resource value: 0 + public const int AppCompatSeekBar_android_thumb = 0; + + // aapt resource value: 1 + public const int AppCompatSeekBar_tickMark = 1; + + // aapt resource value: 2 + public const int AppCompatSeekBar_tickMarkTint = 2; + + // aapt resource value: 3 + public const int AppCompatSeekBar_tickMarkTintMode = 3; + + public static int[] AppCompatTextHelper = new int[] { + 16842804, + 16843117, + 16843118, + 16843119, + 16843120, + 16843666, + 16843667}; + + // aapt resource value: 2 + public const int AppCompatTextHelper_android_drawableBottom = 2; + + // aapt resource value: 6 + public const int AppCompatTextHelper_android_drawableEnd = 6; + + // aapt resource value: 3 + public const int AppCompatTextHelper_android_drawableLeft = 3; + + // aapt resource value: 4 + public const int AppCompatTextHelper_android_drawableRight = 4; + + // aapt resource value: 5 + public const int AppCompatTextHelper_android_drawableStart = 5; + + // aapt resource value: 1 + public const int AppCompatTextHelper_android_drawableTop = 1; + + // aapt resource value: 0 + public const int AppCompatTextHelper_android_textAppearance = 0; + + public static int[] AppCompatTextView = new int[] { + 16842804, + 2130772047, + 2130772048, + 2130772049, + 2130772050, + 2130772051, + 2130772052, + 2130772053}; + + // aapt resource value: 0 + public const int AppCompatTextView_android_textAppearance = 0; + + // aapt resource value: 6 + public const int AppCompatTextView_autoSizeMaxTextSize = 6; + + // aapt resource value: 5 + public const int AppCompatTextView_autoSizeMinTextSize = 5; + + // aapt resource value: 4 + public const int AppCompatTextView_autoSizePresetSizes = 4; + + // aapt resource value: 3 + public const int AppCompatTextView_autoSizeStepGranularity = 3; + + // aapt resource value: 2 + public const int AppCompatTextView_autoSizeTextType = 2; + + // aapt resource value: 7 + public const int AppCompatTextView_fontFamily = 7; + + // aapt resource value: 1 + public const int AppCompatTextView_textAllCaps = 1; + + public static int[] AppCompatTheme = new int[] { + 16842839, + 16842926, + 2130772054, + 2130772055, + 2130772056, + 2130772057, + 2130772058, + 2130772059, + 2130772060, + 2130772061, + 2130772062, + 2130772063, + 2130772064, + 2130772065, + 2130772066, + 2130772067, + 2130772068, + 2130772069, + 2130772070, + 2130772071, + 2130772072, + 2130772073, + 2130772074, + 2130772075, + 2130772076, + 2130772077, + 2130772078, + 2130772079, + 2130772080, + 2130772081, + 2130772082, + 2130772083, + 2130772084, + 2130772085, + 2130772086, + 2130772087, + 2130772088, + 2130772089, + 2130772090, + 2130772091, + 2130772092, + 2130772093, + 2130772094, + 2130772095, + 2130772096, + 2130772097, + 2130772098, + 2130772099, + 2130772100, + 2130772101, + 2130772102, + 2130772103, + 2130772104, + 2130772105, + 2130772106, + 2130772107, + 2130772108, + 2130772109, + 2130772110, + 2130772111, + 2130772112, + 2130772113, + 2130772114, + 2130772115, + 2130772116, + 2130772117, + 2130772118, + 2130772119, + 2130772120, + 2130772121, + 2130772122, + 2130772123, + 2130772124, + 2130772125, + 2130772126, + 2130772127, + 2130772128, + 2130772129, + 2130772130, + 2130772131, + 2130772132, + 2130772133, + 2130772134, + 2130772135, + 2130772136, + 2130772137, + 2130772138, + 2130772139, + 2130772140, + 2130772141, + 2130772142, + 2130772143, + 2130772144, + 2130772145, + 2130772146, + 2130772147, + 2130772148, + 2130772149, + 2130772150, + 2130772151, + 2130772152, + 2130772153, + 2130772154, + 2130772155, + 2130772156, + 2130772157, + 2130772158, + 2130772159, + 2130772160, + 2130772161, + 2130772162, + 2130772163, + 2130772164, + 2130772165, + 2130772166, + 2130772167, + 2130772168, + 2130772169, + 2130772170}; + + // aapt resource value: 23 + public const int AppCompatTheme_actionBarDivider = 23; + + // aapt resource value: 24 + public const int AppCompatTheme_actionBarItemBackground = 24; + + // aapt resource value: 17 + public const int AppCompatTheme_actionBarPopupTheme = 17; + + // aapt resource value: 22 + public const int AppCompatTheme_actionBarSize = 22; + + // aapt resource value: 19 + public const int AppCompatTheme_actionBarSplitStyle = 19; + + // aapt resource value: 18 + public const int AppCompatTheme_actionBarStyle = 18; + + // aapt resource value: 13 + public const int AppCompatTheme_actionBarTabBarStyle = 13; + + // aapt resource value: 12 + public const int AppCompatTheme_actionBarTabStyle = 12; + + // aapt resource value: 14 + public const int AppCompatTheme_actionBarTabTextStyle = 14; + + // aapt resource value: 20 + public const int AppCompatTheme_actionBarTheme = 20; + + // aapt resource value: 21 + public const int AppCompatTheme_actionBarWidgetTheme = 21; + + // aapt resource value: 50 + public const int AppCompatTheme_actionButtonStyle = 50; + + // aapt resource value: 46 + public const int AppCompatTheme_actionDropDownStyle = 46; + + // aapt resource value: 25 + public const int AppCompatTheme_actionMenuTextAppearance = 25; + + // aapt resource value: 26 + public const int AppCompatTheme_actionMenuTextColor = 26; + + // aapt resource value: 29 + public const int AppCompatTheme_actionModeBackground = 29; + + // aapt resource value: 28 + public const int AppCompatTheme_actionModeCloseButtonStyle = 28; + + // aapt resource value: 31 + public const int AppCompatTheme_actionModeCloseDrawable = 31; + + // aapt resource value: 33 + public const int AppCompatTheme_actionModeCopyDrawable = 33; + + // aapt resource value: 32 + public const int AppCompatTheme_actionModeCutDrawable = 32; + + // aapt resource value: 37 + public const int AppCompatTheme_actionModeFindDrawable = 37; + + // aapt resource value: 34 + public const int AppCompatTheme_actionModePasteDrawable = 34; + + // aapt resource value: 39 + public const int AppCompatTheme_actionModePopupWindowStyle = 39; + + // aapt resource value: 35 + public const int AppCompatTheme_actionModeSelectAllDrawable = 35; + + // aapt resource value: 36 + public const int AppCompatTheme_actionModeShareDrawable = 36; + + // aapt resource value: 30 + public const int AppCompatTheme_actionModeSplitBackground = 30; + + // aapt resource value: 27 + public const int AppCompatTheme_actionModeStyle = 27; + + // aapt resource value: 38 + public const int AppCompatTheme_actionModeWebSearchDrawable = 38; + + // aapt resource value: 15 + public const int AppCompatTheme_actionOverflowButtonStyle = 15; + + // aapt resource value: 16 + public const int AppCompatTheme_actionOverflowMenuStyle = 16; + + // aapt resource value: 58 + public const int AppCompatTheme_activityChooserViewStyle = 58; + + // aapt resource value: 95 + public const int AppCompatTheme_alertDialogButtonGroupStyle = 95; + + // aapt resource value: 96 + public const int AppCompatTheme_alertDialogCenterButtons = 96; + + // aapt resource value: 94 + public const int AppCompatTheme_alertDialogStyle = 94; + + // aapt resource value: 97 + public const int AppCompatTheme_alertDialogTheme = 97; + + // aapt resource value: 1 + public const int AppCompatTheme_android_windowAnimationStyle = 1; + + // aapt resource value: 0 + public const int AppCompatTheme_android_windowIsFloating = 0; + + // aapt resource value: 102 + public const int AppCompatTheme_autoCompleteTextViewStyle = 102; + + // aapt resource value: 55 + public const int AppCompatTheme_borderlessButtonStyle = 55; + + // aapt resource value: 52 + public const int AppCompatTheme_buttonBarButtonStyle = 52; + + // aapt resource value: 100 + public const int AppCompatTheme_buttonBarNegativeButtonStyle = 100; + + // aapt resource value: 101 + public const int AppCompatTheme_buttonBarNeutralButtonStyle = 101; + + // aapt resource value: 99 + public const int AppCompatTheme_buttonBarPositiveButtonStyle = 99; + + // aapt resource value: 51 + public const int AppCompatTheme_buttonBarStyle = 51; + + // aapt resource value: 103 + public const int AppCompatTheme_buttonStyle = 103; + + // aapt resource value: 104 + public const int AppCompatTheme_buttonStyleSmall = 104; + + // aapt resource value: 105 + public const int AppCompatTheme_checkboxStyle = 105; + + // aapt resource value: 106 + public const int AppCompatTheme_checkedTextViewStyle = 106; + + // aapt resource value: 86 + public const int AppCompatTheme_colorAccent = 86; + + // aapt resource value: 93 + public const int AppCompatTheme_colorBackgroundFloating = 93; + + // aapt resource value: 90 + public const int AppCompatTheme_colorButtonNormal = 90; + + // aapt resource value: 88 + public const int AppCompatTheme_colorControlActivated = 88; + + // aapt resource value: 89 + public const int AppCompatTheme_colorControlHighlight = 89; + + // aapt resource value: 87 + public const int AppCompatTheme_colorControlNormal = 87; + + // aapt resource value: 118 + public const int AppCompatTheme_colorError = 118; + + // aapt resource value: 84 + public const int AppCompatTheme_colorPrimary = 84; + + // aapt resource value: 85 + public const int AppCompatTheme_colorPrimaryDark = 85; + + // aapt resource value: 91 + public const int AppCompatTheme_colorSwitchThumbNormal = 91; + + // aapt resource value: 92 + public const int AppCompatTheme_controlBackground = 92; + + // aapt resource value: 44 + public const int AppCompatTheme_dialogPreferredPadding = 44; + + // aapt resource value: 43 + public const int AppCompatTheme_dialogTheme = 43; + + // aapt resource value: 57 + public const int AppCompatTheme_dividerHorizontal = 57; + + // aapt resource value: 56 + public const int AppCompatTheme_dividerVertical = 56; + + // aapt resource value: 75 + public const int AppCompatTheme_dropDownListViewStyle = 75; + + // aapt resource value: 47 + public const int AppCompatTheme_dropdownListPreferredItemHeight = 47; + + // aapt resource value: 64 + public const int AppCompatTheme_editTextBackground = 64; + + // aapt resource value: 63 + public const int AppCompatTheme_editTextColor = 63; + + // aapt resource value: 107 + public const int AppCompatTheme_editTextStyle = 107; + + // aapt resource value: 49 + public const int AppCompatTheme_homeAsUpIndicator = 49; + + // aapt resource value: 65 + public const int AppCompatTheme_imageButtonStyle = 65; + + // aapt resource value: 83 + public const int AppCompatTheme_listChoiceBackgroundIndicator = 83; + + // aapt resource value: 45 + public const int AppCompatTheme_listDividerAlertDialog = 45; + + // aapt resource value: 115 + public const int AppCompatTheme_listMenuViewStyle = 115; + + // aapt resource value: 76 + public const int AppCompatTheme_listPopupWindowStyle = 76; + + // aapt resource value: 70 + public const int AppCompatTheme_listPreferredItemHeight = 70; + + // aapt resource value: 72 + public const int AppCompatTheme_listPreferredItemHeightLarge = 72; + + // aapt resource value: 71 + public const int AppCompatTheme_listPreferredItemHeightSmall = 71; + + // aapt resource value: 73 + public const int AppCompatTheme_listPreferredItemPaddingLeft = 73; + + // aapt resource value: 74 + public const int AppCompatTheme_listPreferredItemPaddingRight = 74; + + // aapt resource value: 80 + public const int AppCompatTheme_panelBackground = 80; + + // aapt resource value: 82 + public const int AppCompatTheme_panelMenuListTheme = 82; + + // aapt resource value: 81 + public const int AppCompatTheme_panelMenuListWidth = 81; + + // aapt resource value: 61 + public const int AppCompatTheme_popupMenuStyle = 61; + + // aapt resource value: 62 + public const int AppCompatTheme_popupWindowStyle = 62; + + // aapt resource value: 108 + public const int AppCompatTheme_radioButtonStyle = 108; + + // aapt resource value: 109 + public const int AppCompatTheme_ratingBarStyle = 109; + + // aapt resource value: 110 + public const int AppCompatTheme_ratingBarStyleIndicator = 110; + + // aapt resource value: 111 + public const int AppCompatTheme_ratingBarStyleSmall = 111; + + // aapt resource value: 69 + public const int AppCompatTheme_searchViewStyle = 69; + + // aapt resource value: 112 + public const int AppCompatTheme_seekBarStyle = 112; + + // aapt resource value: 53 + public const int AppCompatTheme_selectableItemBackground = 53; + + // aapt resource value: 54 + public const int AppCompatTheme_selectableItemBackgroundBorderless = 54; + + // aapt resource value: 48 + public const int AppCompatTheme_spinnerDropDownItemStyle = 48; + + // aapt resource value: 113 + public const int AppCompatTheme_spinnerStyle = 113; + + // aapt resource value: 114 + public const int AppCompatTheme_switchStyle = 114; + + // aapt resource value: 40 + public const int AppCompatTheme_textAppearanceLargePopupMenu = 40; + + // aapt resource value: 77 + public const int AppCompatTheme_textAppearanceListItem = 77; + + // aapt resource value: 78 + public const int AppCompatTheme_textAppearanceListItemSecondary = 78; + + // aapt resource value: 79 + public const int AppCompatTheme_textAppearanceListItemSmall = 79; + + // aapt resource value: 42 + public const int AppCompatTheme_textAppearancePopupMenuHeader = 42; + + // aapt resource value: 67 + public const int AppCompatTheme_textAppearanceSearchResultSubtitle = 67; + + // aapt resource value: 66 + public const int AppCompatTheme_textAppearanceSearchResultTitle = 66; + + // aapt resource value: 41 + public const int AppCompatTheme_textAppearanceSmallPopupMenu = 41; + + // aapt resource value: 98 + public const int AppCompatTheme_textColorAlertDialogListItem = 98; + + // aapt resource value: 68 + public const int AppCompatTheme_textColorSearchUrl = 68; + + // aapt resource value: 60 + public const int AppCompatTheme_toolbarNavigationButtonStyle = 60; + + // aapt resource value: 59 + public const int AppCompatTheme_toolbarStyle = 59; + + // aapt resource value: 117 + public const int AppCompatTheme_tooltipForegroundColor = 117; + + // aapt resource value: 116 + public const int AppCompatTheme_tooltipFrameBackground = 116; + + // aapt resource value: 2 + public const int AppCompatTheme_windowActionBar = 2; + + // aapt resource value: 4 + public const int AppCompatTheme_windowActionBarOverlay = 4; + + // aapt resource value: 5 + public const int AppCompatTheme_windowActionModeOverlay = 5; + + // aapt resource value: 9 + public const int AppCompatTheme_windowFixedHeightMajor = 9; + + // aapt resource value: 7 + public const int AppCompatTheme_windowFixedHeightMinor = 7; + + // aapt resource value: 6 + public const int AppCompatTheme_windowFixedWidthMajor = 6; + + // aapt resource value: 8 + public const int AppCompatTheme_windowFixedWidthMinor = 8; + + // aapt resource value: 10 + public const int AppCompatTheme_windowMinWidthMajor = 10; + + // aapt resource value: 11 + public const int AppCompatTheme_windowMinWidthMinor = 11; + + // aapt resource value: 3 + public const int AppCompatTheme_windowNoTitle = 3; + + public static int[] BottomNavigationView = new int[] { + 2130772030, + 2130772291, + 2130772292, + 2130772293, + 2130772294}; + + // aapt resource value: 0 + public const int BottomNavigationView_elevation = 0; + + // aapt resource value: 4 + public const int BottomNavigationView_itemBackground = 4; + + // aapt resource value: 2 + public const int BottomNavigationView_itemIconTint = 2; + + // aapt resource value: 3 + public const int BottomNavigationView_itemTextColor = 3; + + // aapt resource value: 1 + public const int BottomNavigationView_menu = 1; + + public static int[] BottomSheetBehavior_Layout = new int[] { + 2130772253, + 2130772254, + 2130772255}; + + // aapt resource value: 1 + public const int BottomSheetBehavior_Layout_behavior_hideable = 1; + + // aapt resource value: 0 + public const int BottomSheetBehavior_Layout_behavior_peekHeight = 0; + + // aapt resource value: 2 + public const int BottomSheetBehavior_Layout_behavior_skipCollapsed = 2; + + public static int[] ButtonBarLayout = new int[] { + 2130772171}; + + // aapt resource value: 0 + public const int ButtonBarLayout_allowStacking = 0; + + public static int[] CardView = new int[] { + 16843071, + 16843072, + 2130771991, + 2130771992, + 2130771993, + 2130771994, + 2130771995, + 2130771996, + 2130771997, + 2130771998, + 2130771999, + 2130772000, + 2130772001}; + + // aapt resource value: 1 + public const int CardView_android_minHeight = 1; + + // aapt resource value: 0 + public const int CardView_android_minWidth = 0; + + // aapt resource value: 2 + public const int CardView_cardBackgroundColor = 2; + + // aapt resource value: 3 + public const int CardView_cardCornerRadius = 3; + + // aapt resource value: 4 + public const int CardView_cardElevation = 4; + + // aapt resource value: 5 + public const int CardView_cardMaxElevation = 5; + + // aapt resource value: 7 + public const int CardView_cardPreventCornerOverlap = 7; + + // aapt resource value: 6 + public const int CardView_cardUseCompatPadding = 6; + + // aapt resource value: 8 + public const int CardView_contentPadding = 8; + + // aapt resource value: 12 + public const int CardView_contentPaddingBottom = 12; + + // aapt resource value: 9 + public const int CardView_contentPaddingLeft = 9; + + // aapt resource value: 10 + public const int CardView_contentPaddingRight = 10; + + // aapt resource value: 11 + public const int CardView_contentPaddingTop = 11; + + public static int[] CollapsingToolbarLayout = new int[] { + 2130772005, + 2130772256, + 2130772257, + 2130772258, + 2130772259, + 2130772260, + 2130772261, + 2130772262, + 2130772263, + 2130772264, + 2130772265, + 2130772266, + 2130772267, + 2130772268, + 2130772269, + 2130772270}; + + // aapt resource value: 13 + public const int CollapsingToolbarLayout_collapsedTitleGravity = 13; + + // aapt resource value: 7 + public const int CollapsingToolbarLayout_collapsedTitleTextAppearance = 7; + + // aapt resource value: 8 + public const int CollapsingToolbarLayout_contentScrim = 8; + + // aapt resource value: 14 + public const int CollapsingToolbarLayout_expandedTitleGravity = 14; + + // aapt resource value: 1 + public const int CollapsingToolbarLayout_expandedTitleMargin = 1; + + // aapt resource value: 5 + public const int CollapsingToolbarLayout_expandedTitleMarginBottom = 5; + + // aapt resource value: 4 + public const int CollapsingToolbarLayout_expandedTitleMarginEnd = 4; + + // aapt resource value: 2 + public const int CollapsingToolbarLayout_expandedTitleMarginStart = 2; + + // aapt resource value: 3 + public const int CollapsingToolbarLayout_expandedTitleMarginTop = 3; + + // aapt resource value: 6 + public const int CollapsingToolbarLayout_expandedTitleTextAppearance = 6; + + // aapt resource value: 12 + public const int CollapsingToolbarLayout_scrimAnimationDuration = 12; + + // aapt resource value: 11 + public const int CollapsingToolbarLayout_scrimVisibleHeightTrigger = 11; + + // aapt resource value: 9 + public const int CollapsingToolbarLayout_statusBarScrim = 9; + + // aapt resource value: 0 + public const int CollapsingToolbarLayout_title = 0; + + // aapt resource value: 15 + public const int CollapsingToolbarLayout_titleEnabled = 15; + + // aapt resource value: 10 + public const int CollapsingToolbarLayout_toolbarId = 10; + + public static int[] CollapsingToolbarLayout_Layout = new int[] { + 2130772271, + 2130772272}; + + // aapt resource value: 0 + public const int CollapsingToolbarLayout_Layout_layout_collapseMode = 0; + + // aapt resource value: 1 + public const int CollapsingToolbarLayout_Layout_layout_collapseParallaxMultiplier = 1; + + public static int[] ColorStateListItem = new int[] { + 16843173, + 16843551, + 2130772172}; + + // aapt resource value: 2 + public const int ColorStateListItem_alpha = 2; + + // aapt resource value: 1 + public const int ColorStateListItem_android_alpha = 1; + + // aapt resource value: 0 + public const int ColorStateListItem_android_color = 0; + + public static int[] CompoundButton = new int[] { + 16843015, + 2130772173, + 2130772174}; + + // aapt resource value: 0 + public const int CompoundButton_android_button = 0; + + // aapt resource value: 1 + public const int CompoundButton_buttonTint = 1; + + // aapt resource value: 2 + public const int CompoundButton_buttonTintMode = 2; + + public static int[] CoordinatorLayout = new int[] { + 2130772273, + 2130772274}; + + // aapt resource value: 0 + public const int CoordinatorLayout_keylines = 0; + + // aapt resource value: 1 + public const int CoordinatorLayout_statusBarBackground = 1; + + public static int[] CoordinatorLayout_Layout = new int[] { + 16842931, + 2130772275, + 2130772276, + 2130772277, + 2130772278, + 2130772279, + 2130772280}; + + // aapt resource value: 0 + public const int CoordinatorLayout_Layout_android_layout_gravity = 0; + + // aapt resource value: 2 + public const int CoordinatorLayout_Layout_layout_anchor = 2; + + // aapt resource value: 4 + public const int CoordinatorLayout_Layout_layout_anchorGravity = 4; + + // aapt resource value: 1 + public const int CoordinatorLayout_Layout_layout_behavior = 1; + + // aapt resource value: 6 + public const int CoordinatorLayout_Layout_layout_dodgeInsetEdges = 6; + + // aapt resource value: 5 + public const int CoordinatorLayout_Layout_layout_insetEdge = 5; + + // aapt resource value: 3 + public const int CoordinatorLayout_Layout_layout_keyline = 3; + + public static int[] DesignTheme = new int[] { + 2130772281, + 2130772282, + 2130772283}; + + // aapt resource value: 0 + public const int DesignTheme_bottomSheetDialogTheme = 0; + + // aapt resource value: 1 + public const int DesignTheme_bottomSheetStyle = 1; + + // aapt resource value: 2 + public const int DesignTheme_textColorError = 2; + + public static int[] DrawerArrowToggle = new int[] { + 2130772175, + 2130772176, + 2130772177, + 2130772178, + 2130772179, + 2130772180, + 2130772181, + 2130772182}; + + // aapt resource value: 4 + public const int DrawerArrowToggle_arrowHeadLength = 4; + + // aapt resource value: 5 + public const int DrawerArrowToggle_arrowShaftLength = 5; + + // aapt resource value: 6 + public const int DrawerArrowToggle_barLength = 6; + + // aapt resource value: 0 + public const int DrawerArrowToggle_color = 0; + + // aapt resource value: 2 + public const int DrawerArrowToggle_drawableSize = 2; + + // aapt resource value: 3 + public const int DrawerArrowToggle_gapBetweenBars = 3; + + // aapt resource value: 1 + public const int DrawerArrowToggle_spinBars = 1; + + // aapt resource value: 7 + public const int DrawerArrowToggle_thickness = 7; + + public static int[] FloatingActionButton = new int[] { + 2130772030, + 2130772246, + 2130772247, + 2130772284, + 2130772285, + 2130772286, + 2130772287, + 2130772288}; + + // aapt resource value: 1 + public const int FloatingActionButton_backgroundTint = 1; + + // aapt resource value: 2 + public const int FloatingActionButton_backgroundTintMode = 2; + + // aapt resource value: 6 + public const int FloatingActionButton_borderWidth = 6; + + // aapt resource value: 0 + public const int FloatingActionButton_elevation = 0; + + // aapt resource value: 4 + public const int FloatingActionButton_fabSize = 4; + + // aapt resource value: 5 + public const int FloatingActionButton_pressedTranslationZ = 5; + + // aapt resource value: 3 + public const int FloatingActionButton_rippleColor = 3; + + // aapt resource value: 7 + public const int FloatingActionButton_useCompatPadding = 7; + + public static int[] FloatingActionButton_Behavior_Layout = new int[] { + 2130772289}; + + // aapt resource value: 0 + public const int FloatingActionButton_Behavior_Layout_behavior_autoHide = 0; + + public static int[] FontFamily = new int[] { + 2130772330, + 2130772331, + 2130772332, + 2130772333, + 2130772334, + 2130772335}; + + // aapt resource value: 0 + public const int FontFamily_fontProviderAuthority = 0; + + // aapt resource value: 3 + public const int FontFamily_fontProviderCerts = 3; + + // aapt resource value: 4 + public const int FontFamily_fontProviderFetchStrategy = 4; + + // aapt resource value: 5 + public const int FontFamily_fontProviderFetchTimeout = 5; + + // aapt resource value: 1 + public const int FontFamily_fontProviderPackage = 1; + + // aapt resource value: 2 + public const int FontFamily_fontProviderQuery = 2; + + public static int[] FontFamilyFont = new int[] { + 16844082, + 16844083, + 16844095, + 2130772336, + 2130772337, + 2130772338}; + + // aapt resource value: 0 + public const int FontFamilyFont_android_font = 0; + + // aapt resource value: 2 + public const int FontFamilyFont_android_fontStyle = 2; + + // aapt resource value: 1 + public const int FontFamilyFont_android_fontWeight = 1; + + // aapt resource value: 4 + public const int FontFamilyFont_font = 4; + + // aapt resource value: 3 + public const int FontFamilyFont_fontStyle = 3; + + // aapt resource value: 5 + public const int FontFamilyFont_fontWeight = 5; + + public static int[] ForegroundLinearLayout = new int[] { + 16843017, + 16843264, + 2130772290}; + + // aapt resource value: 0 + public const int ForegroundLinearLayout_android_foreground = 0; + + // aapt resource value: 1 + public const int ForegroundLinearLayout_android_foregroundGravity = 1; + + // aapt resource value: 2 + public const int ForegroundLinearLayout_foregroundInsidePadding = 2; + + public static int[] LinearLayoutCompat = new int[] { + 16842927, + 16842948, + 16843046, + 16843047, + 16843048, + 2130772013, + 2130772183, + 2130772184, + 2130772185}; + + // aapt resource value: 2 + public const int LinearLayoutCompat_android_baselineAligned = 2; + + // aapt resource value: 3 + public const int LinearLayoutCompat_android_baselineAlignedChildIndex = 3; + + // aapt resource value: 0 + public const int LinearLayoutCompat_android_gravity = 0; + + // aapt resource value: 1 + public const int LinearLayoutCompat_android_orientation = 1; + + // aapt resource value: 4 + public const int LinearLayoutCompat_android_weightSum = 4; + + // aapt resource value: 5 + public const int LinearLayoutCompat_divider = 5; + + // aapt resource value: 8 + public const int LinearLayoutCompat_dividerPadding = 8; + + // aapt resource value: 6 + public const int LinearLayoutCompat_measureWithLargestChild = 6; + + // aapt resource value: 7 + public const int LinearLayoutCompat_showDividers = 7; + + public static int[] LinearLayoutCompat_Layout = new int[] { + 16842931, + 16842996, + 16842997, + 16843137}; + + // aapt resource value: 0 + public const int LinearLayoutCompat_Layout_android_layout_gravity = 0; + + // aapt resource value: 2 + public const int LinearLayoutCompat_Layout_android_layout_height = 2; + + // aapt resource value: 3 + public const int LinearLayoutCompat_Layout_android_layout_weight = 3; + + // aapt resource value: 1 + public const int LinearLayoutCompat_Layout_android_layout_width = 1; + + public static int[] ListPopupWindow = new int[] { + 16843436, + 16843437}; + + // aapt resource value: 0 + public const int ListPopupWindow_android_dropDownHorizontalOffset = 0; + + // aapt resource value: 1 + public const int ListPopupWindow_android_dropDownVerticalOffset = 1; + + public static int[] MediaRouteButton = new int[] { + 16843071, + 16843072, + 2130771989, + 2130771990}; + + // aapt resource value: 1 + public const int MediaRouteButton_android_minHeight = 1; + + // aapt resource value: 0 + public const int MediaRouteButton_android_minWidth = 0; + + // aapt resource value: 2 + public const int MediaRouteButton_externalRouteEnabledDrawable = 2; + + // aapt resource value: 3 + public const int MediaRouteButton_mediaRouteButtonTint = 3; + + public static int[] MenuGroup = new int[] { + 16842766, + 16842960, + 16843156, + 16843230, + 16843231, + 16843232}; + + // aapt resource value: 5 + public const int MenuGroup_android_checkableBehavior = 5; + + // aapt resource value: 0 + public const int MenuGroup_android_enabled = 0; + + // aapt resource value: 1 + public const int MenuGroup_android_id = 1; + + // aapt resource value: 3 + public const int MenuGroup_android_menuCategory = 3; + + // aapt resource value: 4 + public const int MenuGroup_android_orderInCategory = 4; + + // aapt resource value: 2 + public const int MenuGroup_android_visible = 2; + + public static int[] MenuItem = new int[] { + 16842754, + 16842766, + 16842960, + 16843014, + 16843156, + 16843230, + 16843231, + 16843233, + 16843234, + 16843235, + 16843236, + 16843237, + 16843375, + 2130772186, + 2130772187, + 2130772188, + 2130772189, + 2130772190, + 2130772191, + 2130772192, + 2130772193, + 2130772194, + 2130772195}; + + // aapt resource value: 16 + public const int MenuItem_actionLayout = 16; + + // aapt resource value: 18 + public const int MenuItem_actionProviderClass = 18; + + // aapt resource value: 17 + public const int MenuItem_actionViewClass = 17; + + // aapt resource value: 13 + public const int MenuItem_alphabeticModifiers = 13; + + // aapt resource value: 9 + public const int MenuItem_android_alphabeticShortcut = 9; + + // aapt resource value: 11 + public const int MenuItem_android_checkable = 11; + + // aapt resource value: 3 + public const int MenuItem_android_checked = 3; + + // aapt resource value: 1 + public const int MenuItem_android_enabled = 1; + + // aapt resource value: 0 + public const int MenuItem_android_icon = 0; + + // aapt resource value: 2 + public const int MenuItem_android_id = 2; + + // aapt resource value: 5 + public const int MenuItem_android_menuCategory = 5; + + // aapt resource value: 10 + public const int MenuItem_android_numericShortcut = 10; + + // aapt resource value: 12 + public const int MenuItem_android_onClick = 12; + + // aapt resource value: 6 + public const int MenuItem_android_orderInCategory = 6; + + // aapt resource value: 7 + public const int MenuItem_android_title = 7; + + // aapt resource value: 8 + public const int MenuItem_android_titleCondensed = 8; + + // aapt resource value: 4 + public const int MenuItem_android_visible = 4; + + // aapt resource value: 19 + public const int MenuItem_contentDescription = 19; + + // aapt resource value: 21 + public const int MenuItem_iconTint = 21; + + // aapt resource value: 22 + public const int MenuItem_iconTintMode = 22; + + // aapt resource value: 14 + public const int MenuItem_numericModifiers = 14; + + // aapt resource value: 15 + public const int MenuItem_showAsAction = 15; + + // aapt resource value: 20 + public const int MenuItem_tooltipText = 20; + + public static int[] MenuView = new int[] { + 16842926, + 16843052, + 16843053, + 16843054, + 16843055, + 16843056, + 16843057, + 2130772196, + 2130772197}; + + // aapt resource value: 4 + public const int MenuView_android_headerBackground = 4; + + // aapt resource value: 2 + public const int MenuView_android_horizontalDivider = 2; + + // aapt resource value: 5 + public const int MenuView_android_itemBackground = 5; + + // aapt resource value: 6 + public const int MenuView_android_itemIconDisabledAlpha = 6; + + // aapt resource value: 1 + public const int MenuView_android_itemTextAppearance = 1; + + // aapt resource value: 3 + public const int MenuView_android_verticalDivider = 3; + + // aapt resource value: 0 + public const int MenuView_android_windowAnimationStyle = 0; + + // aapt resource value: 7 + public const int MenuView_preserveIconSpacing = 7; + + // aapt resource value: 8 + public const int MenuView_subMenuArrow = 8; + + public static int[] NavigationView = new int[] { + 16842964, + 16842973, + 16843039, + 2130772030, + 2130772291, + 2130772292, + 2130772293, + 2130772294, + 2130772295, + 2130772296}; + + // aapt resource value: 0 + public const int NavigationView_android_background = 0; + + // aapt resource value: 1 + public const int NavigationView_android_fitsSystemWindows = 1; + + // aapt resource value: 2 + public const int NavigationView_android_maxWidth = 2; + + // aapt resource value: 3 + public const int NavigationView_elevation = 3; + + // aapt resource value: 9 + public const int NavigationView_headerLayout = 9; + + // aapt resource value: 7 + public const int NavigationView_itemBackground = 7; + + // aapt resource value: 5 + public const int NavigationView_itemIconTint = 5; + + // aapt resource value: 8 + public const int NavigationView_itemTextAppearance = 8; + + // aapt resource value: 6 + public const int NavigationView_itemTextColor = 6; + + // aapt resource value: 4 + public const int NavigationView_menu = 4; + + public static int[] PopupWindow = new int[] { + 16843126, + 16843465, + 2130772198}; + + // aapt resource value: 1 + public const int PopupWindow_android_popupAnimationStyle = 1; + + // aapt resource value: 0 + public const int PopupWindow_android_popupBackground = 0; + + // aapt resource value: 2 + public const int PopupWindow_overlapAnchor = 2; + + public static int[] PopupWindowBackgroundState = new int[] { + 2130772199}; + + // aapt resource value: 0 + public const int PopupWindowBackgroundState_state_above_anchor = 0; + + public static int[] RecycleListView = new int[] { + 2130772200, + 2130772201}; + + // aapt resource value: 0 + public const int RecycleListView_paddingBottomNoButtons = 0; + + // aapt resource value: 1 + public const int RecycleListView_paddingTopNoTitle = 1; + + public static int[] RecyclerView = new int[] { + 16842948, + 16842993, + 2130771968, + 2130771969, + 2130771970, + 2130771971, + 2130771972, + 2130771973, + 2130771974, + 2130771975, + 2130771976}; + + // aapt resource value: 1 + public const int RecyclerView_android_descendantFocusability = 1; + + // aapt resource value: 0 + public const int RecyclerView_android_orientation = 0; + + // aapt resource value: 6 + public const int RecyclerView_fastScrollEnabled = 6; + + // aapt resource value: 9 + public const int RecyclerView_fastScrollHorizontalThumbDrawable = 9; + + // aapt resource value: 10 + public const int RecyclerView_fastScrollHorizontalTrackDrawable = 10; + + // aapt resource value: 7 + public const int RecyclerView_fastScrollVerticalThumbDrawable = 7; + + // aapt resource value: 8 + public const int RecyclerView_fastScrollVerticalTrackDrawable = 8; + + // aapt resource value: 2 + public const int RecyclerView_layoutManager = 2; + + // aapt resource value: 4 + public const int RecyclerView_reverseLayout = 4; + + // aapt resource value: 3 + public const int RecyclerView_spanCount = 3; + + // aapt resource value: 5 + public const int RecyclerView_stackFromEnd = 5; + + public static int[] ScrimInsetsFrameLayout = new int[] { + 2130772297}; + + // aapt resource value: 0 + public const int ScrimInsetsFrameLayout_insetForeground = 0; + + public static int[] ScrollingViewBehavior_Layout = new int[] { + 2130772298}; + + // aapt resource value: 0 + public const int ScrollingViewBehavior_Layout_behavior_overlapTop = 0; + + public static int[] SearchView = new int[] { + 16842970, + 16843039, + 16843296, + 16843364, + 2130772202, + 2130772203, + 2130772204, + 2130772205, + 2130772206, + 2130772207, + 2130772208, + 2130772209, + 2130772210, + 2130772211, + 2130772212, + 2130772213, + 2130772214}; + + // aapt resource value: 0 + public const int SearchView_android_focusable = 0; + + // aapt resource value: 3 + public const int SearchView_android_imeOptions = 3; + + // aapt resource value: 2 + public const int SearchView_android_inputType = 2; + + // aapt resource value: 1 + public const int SearchView_android_maxWidth = 1; + + // aapt resource value: 8 + public const int SearchView_closeIcon = 8; + + // aapt resource value: 13 + public const int SearchView_commitIcon = 13; + + // aapt resource value: 7 + public const int SearchView_defaultQueryHint = 7; + + // aapt resource value: 9 + public const int SearchView_goIcon = 9; + + // aapt resource value: 5 + public const int SearchView_iconifiedByDefault = 5; + + // aapt resource value: 4 + public const int SearchView_layout = 4; + + // aapt resource value: 15 + public const int SearchView_queryBackground = 15; + + // aapt resource value: 6 + public const int SearchView_queryHint = 6; + + // aapt resource value: 11 + public const int SearchView_searchHintIcon = 11; + + // aapt resource value: 10 + public const int SearchView_searchIcon = 10; + + // aapt resource value: 16 + public const int SearchView_submitBackground = 16; + + // aapt resource value: 14 + public const int SearchView_suggestionRowLayout = 14; + + // aapt resource value: 12 + public const int SearchView_voiceIcon = 12; + + public static int[] SnackbarLayout = new int[] { + 16843039, + 2130772030, + 2130772299}; + + // aapt resource value: 0 + public const int SnackbarLayout_android_maxWidth = 0; + + // aapt resource value: 1 + public const int SnackbarLayout_elevation = 1; + + // aapt resource value: 2 + public const int SnackbarLayout_maxActionInlineWidth = 2; + + public static int[] Spinner = new int[] { + 16842930, + 16843126, + 16843131, + 16843362, + 2130772031}; + + // aapt resource value: 3 + public const int Spinner_android_dropDownWidth = 3; + + // aapt resource value: 0 + public const int Spinner_android_entries = 0; + + // aapt resource value: 1 + public const int Spinner_android_popupBackground = 1; + + // aapt resource value: 2 + public const int Spinner_android_prompt = 2; + + // aapt resource value: 4 + public const int Spinner_popupTheme = 4; + + public static int[] SwitchCompat = new int[] { + 16843044, + 16843045, + 16843074, + 2130772215, + 2130772216, + 2130772217, + 2130772218, + 2130772219, + 2130772220, + 2130772221, + 2130772222, + 2130772223, + 2130772224, + 2130772225}; + + // aapt resource value: 1 + public const int SwitchCompat_android_textOff = 1; + + // aapt resource value: 0 + public const int SwitchCompat_android_textOn = 0; + + // aapt resource value: 2 + public const int SwitchCompat_android_thumb = 2; + + // aapt resource value: 13 + public const int SwitchCompat_showText = 13; + + // aapt resource value: 12 + public const int SwitchCompat_splitTrack = 12; + + // aapt resource value: 10 + public const int SwitchCompat_switchMinWidth = 10; + + // aapt resource value: 11 + public const int SwitchCompat_switchPadding = 11; + + // aapt resource value: 9 + public const int SwitchCompat_switchTextAppearance = 9; + + // aapt resource value: 8 + public const int SwitchCompat_thumbTextPadding = 8; + + // aapt resource value: 3 + public const int SwitchCompat_thumbTint = 3; + + // aapt resource value: 4 + public const int SwitchCompat_thumbTintMode = 4; + + // aapt resource value: 5 + public const int SwitchCompat_track = 5; + + // aapt resource value: 6 + public const int SwitchCompat_trackTint = 6; + + // aapt resource value: 7 + public const int SwitchCompat_trackTintMode = 7; + + public static int[] TabItem = new int[] { + 16842754, + 16842994, + 16843087}; + + // aapt resource value: 0 + public const int TabItem_android_icon = 0; + + // aapt resource value: 1 + public const int TabItem_android_layout = 1; + + // aapt resource value: 2 + public const int TabItem_android_text = 2; + + public static int[] TabLayout = new int[] { + 2130772300, + 2130772301, + 2130772302, + 2130772303, + 2130772304, + 2130772305, + 2130772306, + 2130772307, + 2130772308, + 2130772309, + 2130772310, + 2130772311, + 2130772312, + 2130772313, + 2130772314, + 2130772315}; + + // aapt resource value: 3 + public const int TabLayout_tabBackground = 3; + + // aapt resource value: 2 + public const int TabLayout_tabContentStart = 2; + + // aapt resource value: 5 + public const int TabLayout_tabGravity = 5; + + // aapt resource value: 0 + public const int TabLayout_tabIndicatorColor = 0; + + // aapt resource value: 1 + public const int TabLayout_tabIndicatorHeight = 1; + + // aapt resource value: 7 + public const int TabLayout_tabMaxWidth = 7; + + // aapt resource value: 6 + public const int TabLayout_tabMinWidth = 6; + + // aapt resource value: 4 + public const int TabLayout_tabMode = 4; + + // aapt resource value: 15 + public const int TabLayout_tabPadding = 15; + + // aapt resource value: 14 + public const int TabLayout_tabPaddingBottom = 14; + + // aapt resource value: 13 + public const int TabLayout_tabPaddingEnd = 13; + + // aapt resource value: 11 + public const int TabLayout_tabPaddingStart = 11; + + // aapt resource value: 12 + public const int TabLayout_tabPaddingTop = 12; + + // aapt resource value: 10 + public const int TabLayout_tabSelectedTextColor = 10; + + // aapt resource value: 8 + public const int TabLayout_tabTextAppearance = 8; + + // aapt resource value: 9 + public const int TabLayout_tabTextColor = 9; + + public static int[] TextAppearance = new int[] { + 16842901, + 16842902, + 16842903, + 16842904, + 16842906, + 16842907, + 16843105, + 16843106, + 16843107, + 16843108, + 16843692, + 2130772047, + 2130772053}; + + // aapt resource value: 10 + public const int TextAppearance_android_fontFamily = 10; + + // aapt resource value: 6 + public const int TextAppearance_android_shadowColor = 6; + + // aapt resource value: 7 + public const int TextAppearance_android_shadowDx = 7; + + // aapt resource value: 8 + public const int TextAppearance_android_shadowDy = 8; + + // aapt resource value: 9 + public const int TextAppearance_android_shadowRadius = 9; + + // aapt resource value: 3 + public const int TextAppearance_android_textColor = 3; + + // aapt resource value: 4 + public const int TextAppearance_android_textColorHint = 4; + + // aapt resource value: 5 + public const int TextAppearance_android_textColorLink = 5; + + // aapt resource value: 0 + public const int TextAppearance_android_textSize = 0; + + // aapt resource value: 2 + public const int TextAppearance_android_textStyle = 2; + + // aapt resource value: 1 + public const int TextAppearance_android_typeface = 1; + + // aapt resource value: 12 + public const int TextAppearance_fontFamily = 12; + + // aapt resource value: 11 + public const int TextAppearance_textAllCaps = 11; + + public static int[] TextInputLayout = new int[] { + 16842906, + 16843088, + 2130772316, + 2130772317, + 2130772318, + 2130772319, + 2130772320, + 2130772321, + 2130772322, + 2130772323, + 2130772324, + 2130772325, + 2130772326, + 2130772327, + 2130772328, + 2130772329}; + + // aapt resource value: 1 + public const int TextInputLayout_android_hint = 1; + + // aapt resource value: 0 + public const int TextInputLayout_android_textColorHint = 0; + + // aapt resource value: 6 + public const int TextInputLayout_counterEnabled = 6; + + // aapt resource value: 7 + public const int TextInputLayout_counterMaxLength = 7; + + // aapt resource value: 9 + public const int TextInputLayout_counterOverflowTextAppearance = 9; + + // aapt resource value: 8 + public const int TextInputLayout_counterTextAppearance = 8; + + // aapt resource value: 4 + public const int TextInputLayout_errorEnabled = 4; + + // aapt resource value: 5 + public const int TextInputLayout_errorTextAppearance = 5; + + // aapt resource value: 10 + public const int TextInputLayout_hintAnimationEnabled = 10; + + // aapt resource value: 3 + public const int TextInputLayout_hintEnabled = 3; + + // aapt resource value: 2 + public const int TextInputLayout_hintTextAppearance = 2; + + // aapt resource value: 13 + public const int TextInputLayout_passwordToggleContentDescription = 13; + + // aapt resource value: 12 + public const int TextInputLayout_passwordToggleDrawable = 12; + + // aapt resource value: 11 + public const int TextInputLayout_passwordToggleEnabled = 11; + + // aapt resource value: 14 + public const int TextInputLayout_passwordToggleTint = 14; + + // aapt resource value: 15 + public const int TextInputLayout_passwordToggleTintMode = 15; + + public static int[] Toolbar = new int[] { + 16842927, + 16843072, + 2130772005, + 2130772008, + 2130772012, + 2130772024, + 2130772025, + 2130772026, + 2130772027, + 2130772028, + 2130772029, + 2130772031, + 2130772226, + 2130772227, + 2130772228, + 2130772229, + 2130772230, + 2130772231, + 2130772232, + 2130772233, + 2130772234, + 2130772235, + 2130772236, + 2130772237, + 2130772238, + 2130772239, + 2130772240, + 2130772241, + 2130772242}; + + // aapt resource value: 0 + public const int Toolbar_android_gravity = 0; + + // aapt resource value: 1 + public const int Toolbar_android_minHeight = 1; + + // aapt resource value: 21 + public const int Toolbar_buttonGravity = 21; + + // aapt resource value: 23 + public const int Toolbar_collapseContentDescription = 23; + + // aapt resource value: 22 + public const int Toolbar_collapseIcon = 22; + + // aapt resource value: 6 + public const int Toolbar_contentInsetEnd = 6; + + // aapt resource value: 10 + public const int Toolbar_contentInsetEndWithActions = 10; + + // aapt resource value: 7 + public const int Toolbar_contentInsetLeft = 7; + + // aapt resource value: 8 + public const int Toolbar_contentInsetRight = 8; + + // aapt resource value: 5 + public const int Toolbar_contentInsetStart = 5; + + // aapt resource value: 9 + public const int Toolbar_contentInsetStartWithNavigation = 9; + + // aapt resource value: 4 + public const int Toolbar_logo = 4; + + // aapt resource value: 26 + public const int Toolbar_logoDescription = 26; + + // aapt resource value: 20 + public const int Toolbar_maxButtonHeight = 20; + + // aapt resource value: 25 + public const int Toolbar_navigationContentDescription = 25; + + // aapt resource value: 24 + public const int Toolbar_navigationIcon = 24; + + // aapt resource value: 11 + public const int Toolbar_popupTheme = 11; + + // aapt resource value: 3 + public const int Toolbar_subtitle = 3; + + // aapt resource value: 13 + public const int Toolbar_subtitleTextAppearance = 13; + + // aapt resource value: 28 + public const int Toolbar_subtitleTextColor = 28; + + // aapt resource value: 2 + public const int Toolbar_title = 2; + + // aapt resource value: 14 + public const int Toolbar_titleMargin = 14; + + // aapt resource value: 18 + public const int Toolbar_titleMarginBottom = 18; + + // aapt resource value: 16 + public const int Toolbar_titleMarginEnd = 16; + + // aapt resource value: 15 + public const int Toolbar_titleMarginStart = 15; + + // aapt resource value: 17 + public const int Toolbar_titleMarginTop = 17; + + // aapt resource value: 19 + public const int Toolbar_titleMargins = 19; + + // aapt resource value: 12 + public const int Toolbar_titleTextAppearance = 12; + + // aapt resource value: 27 + public const int Toolbar_titleTextColor = 27; + + public static int[] View = new int[] { + 16842752, + 16842970, + 2130772243, + 2130772244, + 2130772245}; + + // aapt resource value: 1 + public const int View_android_focusable = 1; + + // aapt resource value: 0 + public const int View_android_theme = 0; + + // aapt resource value: 3 + public const int View_paddingEnd = 3; + + // aapt resource value: 2 + public const int View_paddingStart = 2; + + // aapt resource value: 4 + public const int View_theme = 4; + + public static int[] ViewBackgroundHelper = new int[] { + 16842964, + 2130772246, + 2130772247}; + + // aapt resource value: 0 + public const int ViewBackgroundHelper_android_background = 0; + + // aapt resource value: 1 + public const int ViewBackgroundHelper_backgroundTint = 1; + + // aapt resource value: 2 + public const int ViewBackgroundHelper_backgroundTintMode = 2; + + public static int[] ViewStubCompat = new int[] { + 16842960, + 16842994, + 16842995}; + + // aapt resource value: 0 + public const int ViewStubCompat_android_id = 0; + + // aapt resource value: 2 + public const int ViewStubCompat_android_inflatedId = 2; + + // aapt resource value: 1 + public const int ViewStubCompat_android_layout = 1; + + static Styleable() + { + global::Android.Runtime.ResourceIdManager.UpdateIdValues(); + } + + private Styleable() + { + } + } + } +} +#pragma warning restore 1591 diff --git a/BusinessMgrMobile/BusinessMgrMobile.Android/Resources/layout/Tabbar.axml b/BusinessMgrMobile/BusinessMgrMobile.Android/Resources/layout/Tabbar.axml new file mode 100644 index 0000000..ad1f87d --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile.Android/Resources/layout/Tabbar.axml @@ -0,0 +1,11 @@ + + diff --git a/BusinessMgrMobile/BusinessMgrMobile.Android/Resources/layout/Toolbar.axml b/BusinessMgrMobile/BusinessMgrMobile.Android/Resources/layout/Toolbar.axml new file mode 100644 index 0000000..aabd0a3 --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile.Android/Resources/layout/Toolbar.axml @@ -0,0 +1,9 @@ + + diff --git a/BusinessMgrMobile/BusinessMgrMobile.Android/Resources/mipmap-anydpi-v26/icon.xml b/BusinessMgrMobile/BusinessMgrMobile.Android/Resources/mipmap-anydpi-v26/icon.xml new file mode 100644 index 0000000..88d1d0a --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile.Android/Resources/mipmap-anydpi-v26/icon.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/BusinessMgrMobile/BusinessMgrMobile.Android/Resources/mipmap-anydpi-v26/icon_round.xml b/BusinessMgrMobile/BusinessMgrMobile.Android/Resources/mipmap-anydpi-v26/icon_round.xml new file mode 100644 index 0000000..88d1d0a --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile.Android/Resources/mipmap-anydpi-v26/icon_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/BusinessMgrMobile/BusinessMgrMobile.Android/Resources/mipmap-hdpi/icon.png b/BusinessMgrMobile/BusinessMgrMobile.Android/Resources/mipmap-hdpi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4623ca2c42f2a8574089377b0419413605ae977e GIT binary patch literal 4754 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

IB1M9 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 literal 0 HcmV?d00001 diff --git a/BusinessMgrMobile/BusinessMgrMobile.Android/Resources/mipmap-mdpi/icon.png b/BusinessMgrMobile/BusinessMgrMobile.Android/Resources/mipmap-mdpi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..9b1d25e25de64c1ee12f91c9b41f85b0e84664e3 GIT binary patch literal 2807 zcmVV%+Ahsfn`@<87OU$M|p)R8nh*~mfD9x3|b9X zVyqe|v6VJPOicq@OC(q@n0D0&wvk#;wAN}-Y_vs;ZLwjyZ7C42<+aSd*w@U?>(0!* ze!p|?cjnAxc6P`9;~)LVo%7xA`TM?e?z!hKLcCA!ci=sBz^Kx@TKg))D|1J2qcGI~ zlD4-UY@a_qQum91VO-}3JB;|8&1S}z)FBJUr{i0UhA^_WW3&w<6JI;LV#!I*olShv zN^i$nfV5kFpndj)`p7>zQ&w{_Z!6#k>1YU%SzaCl9Z9)j;9nOs#nifRY%r1h#4Dd& z@(yG~x~nVk{hGe}O1DNsedH(S64~Zq0m#jnJDQ71 zKb8Vyu+Kc-wxTPYTW)!s_Jc%3&dMWaVcU_q&vtn#y)&J^b@?BUe%h1yL$RqE$5Mc3 zX=yP;U1Vz_S5S`3_`44|12%l=X{`&${Br3-PUsDCIFZO!nUj-L7)L8WLU`kbJ2&)Z za`PFO9?$U5_^?Va0K`7B`*bH|EYt$&MRljM3twKk>RwOn53P9#QKU?>D(0DFgVF` zMonI-ckLkqC@de%1tAobllP>p=Bq#S!4@(a5j+Bnq?Gboo_XyWW5N}0(ZgE@V?X)3 z54{9TKNt~&3xE!!gM|)MDnq$0O^Jk3p?GTH;V&*d>xo$9-Hx(^>Kn)H=<$JP(6((0 zyHF4Xx-iNMGVg81;8iAK02Ka?^vjcvdvQ!a2SV;@cPdv`+gSgoCep)6o^5r7l-=>? zwi^?{@JmD4{AD­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 SHSs+F0000i@UqKyKMfI+WmKH-}Yf2 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 P@D>J7S3j3^P6 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 |g84p7#db3$Hn3iwQ|;AP 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/XFAC|otxVq4mdH0gtTc)G)?7Zf7)_f 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 literal 0 HcmV?d00001 diff --git a/BusinessMgrMobile/BusinessMgrMobile.Android/Resources/values/colors.xml b/BusinessMgrMobile/BusinessMgrMobile.Android/Resources/values/colors.xml new file mode 100644 index 0000000..d9f6e0b --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile.Android/Resources/values/colors.xml @@ -0,0 +1,7 @@ + + + #FFFFFF + #3F51B5 + #303F9F + #FF4081 + diff --git a/BusinessMgrMobile/BusinessMgrMobile.Android/Resources/values/styles.xml b/BusinessMgrMobile/BusinessMgrMobile.Android/Resources/values/styles.xml new file mode 100644 index 0000000..43b0a58 --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile.Android/Resources/values/styles.xml @@ -0,0 +1,30 @@ + + + + + + + + + diff --git a/BusinessMgrMobile/BusinessMgrMobile.UWP/App.xaml b/BusinessMgrMobile/BusinessMgrMobile.UWP/App.xaml new file mode 100644 index 0000000..eafc9df --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile.UWP/App.xaml @@ -0,0 +1,8 @@ + + + diff --git a/BusinessMgrMobile/BusinessMgrMobile.UWP/App.xaml.cs b/BusinessMgrMobile/BusinessMgrMobile.UWP/App.xaml.cs new file mode 100644 index 0000000..dead033 --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile.UWP/App.xaml.cs @@ -0,0 +1,101 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices.WindowsRuntime; +using Windows.ApplicationModel; +using Windows.ApplicationModel.Activation; +using Windows.Foundation; +using Windows.Foundation.Collections; +using Windows.UI.Xaml; +using Windows.UI.Xaml.Controls; +using Windows.UI.Xaml.Controls.Primitives; +using Windows.UI.Xaml.Data; +using Windows.UI.Xaml.Input; +using Windows.UI.Xaml.Media; +using Windows.UI.Xaml.Navigation; + +namespace BusinessMgrMobile.UWP +{ + ///

+ /// Provides application-specific behavior to supplement the default Application class. + /// + sealed partial class App : Application + { + /// + /// Initializes the singleton application object. This is the first line of authored code + /// executed, and as such is the logical equivalent of main() or WinMain(). + /// + public App() + { + this.InitializeComponent(); + this.Suspending += OnSuspending; + } + + /// + /// Invoked when the application is launched normally by the end user. Other entry points + /// will be used such as when the application is launched to open a specific file. + /// + /// Details about the launch request and process. + protected override void OnLaunched(LaunchActivatedEventArgs e) + { + + + Frame rootFrame = Window.Current.Content as Frame; + + // Do not repeat app initialization when the Window already has content, + // just ensure that the window is active + if (rootFrame == null) + { + // Create a Frame to act as the navigation context and navigate to the first page + rootFrame = new Frame(); + + rootFrame.NavigationFailed += OnNavigationFailed; + + Xamarin.Forms.Forms.Init(e); + + if (e.PreviousExecutionState == ApplicationExecutionState.Terminated) + { + //TODO: Load state from previously suspended application + } + + // Place the frame in the current Window + Window.Current.Content = rootFrame; + } + + if (rootFrame.Content == null) + { + // When the navigation stack isn't restored navigate to the first page, + // configuring the new page by passing required information as a navigation + // parameter + rootFrame.Navigate(typeof(MainPage), e.Arguments); + } + // Ensure the current window is active + Window.Current.Activate(); + } + + /// + /// Invoked when Navigation to a certain page fails + /// + /// The Frame which failed navigation + /// Details about the navigation failure + void OnNavigationFailed(object sender, NavigationFailedEventArgs e) + { + throw new Exception("Failed to load Page " + e.SourcePageType.FullName); + } + + /// + /// Invoked when application execution is being suspended. Application state is saved + /// without knowing whether the application will be terminated or resumed with the contents + /// of memory still intact. + /// + /// The source of the suspend request. + /// Details about the suspend request. + private void OnSuspending(object sender, SuspendingEventArgs e) + { + var deferral = e.SuspendingOperation.GetDeferral(); + //TODO: Save application state and stop any background activity + deferral.Complete(); + } + } +} diff --git a/BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/LargeTile.scale-100.png b/BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/LargeTile.scale-100.png new file mode 100644 index 0000000000000000000000000000000000000000..c3e93b09cc891ab4b8d9498dde12f6ef2a4f92b9 GIT binary patch literal 6143 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 literal 0 HcmV?d00001 diff --git a/BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/LargeTile.scale-200.png b/BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/LargeTile.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..2709372a29fbade1f686880c06c950c4ced3ec2b GIT binary patch literal 13916 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 literal 0 HcmV?d00001 diff --git a/BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/LargeTile.scale-400.png b/BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/LargeTile.scale-400.png new file mode 100644 index 0000000000000000000000000000000000000000..ff031995a08d3af674c1bb3634af4bd26a3278e3 GIT binary patch literal 31561 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 G&;$UmLP-?> literal 0 HcmV?d00001 diff --git a/BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/SmallTile.scale-200.png b/BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/SmallTile.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..c63509583af3bd391d71e0114a4518fe9afc3b6d GIT binary patch literal 2536 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 literal 0 HcmV?d00001 diff --git a/BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/SmallTile.scale-400.png b/BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/SmallTile.scale-400.png new file mode 100644 index 0000000000000000000000000000000000000000..e28c05283eeee25ee350349a0c803300612c66d6 GIT binary patch literal 5566 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 literal 0 HcmV?d00001 diff --git a/BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/SplashScreen.scale-100.png b/BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/SplashScreen.scale-100.png new file mode 100644 index 0000000000000000000000000000000000000000..eacdf203d4ca4f824bb62ad8e1762cd8d19cdab4 GIT binary patch literal 6555 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 K8&yWgr~d;j`DY&h literal 0 HcmV?d00001 diff --git a/BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/SplashScreen.scale-200.png b/BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/SplashScreen.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..caa5fc9cb677844c4502acf45b322fdd2721b8e5 GIT binary patch literal 15240 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 literal 0 HcmV?d00001 diff --git a/BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/SplashScreen.scale-400.png b/BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/SplashScreen.scale-400.png new file mode 100644 index 0000000000000000000000000000000000000000..16d97844daf823996b3da528577117f127c72c22 GIT binary patch literal 39781 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 literal 0 HcmV?d00001 diff --git a/BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/Square150x150Logo.scale-100.png b/BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/Square150x150Logo.scale-100.png new file mode 100644 index 0000000000000000000000000000000000000000..c1709f2b8b46b60ee45f42ac5e633160429f8ba8 GIT binary patch literal 2772 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 NAY8nh8-BT(^&ee%L&yLC literal 0 HcmV?d00001 diff --git a/BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/Square150x150Logo.scale-200.png b/BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/Square150x150Logo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..48732ffe3a8a82627fc9b02a6e945595a8a712ca GIT binary patch literal 5904 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

Y|+5yP;M_cxnA?h(+`B3+D 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 ID%r&R58=IJSpWb4 literal 0 HcmV?d00001 diff --git a/BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/Square44x44Logo.altform-unplated_targetsize-48.png b/BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/Square44x44Logo.altform-unplated_targetsize-48.png new file mode 100644 index 0000000000000000000000000000000000000000..ee58ea6df88a138ed3a8b0bed7ef2287c0b242b4 GIT binary patch literal 1245 zcmV<31S0#1P)0`^oT}neLv6 zJ_0Fds=KDD{;KYo-X_oK;*^)|0HRWN0@U~vy9bj( z9o1Q;HpaowGqV9G2^E(s* zbCma#7-c$og&JSCU{6(Z6#7##bp%T=sUFhBrcHq1><8QC7Y`-Da6eYM6JhuKd=XR| ztOWh9svU>@m4Koe{GCSkT~K@`BT!3^4Dfn@JeMF2Qk^Vq!0rnu^2L5ZrGrOr2yBxd zC_V<_yO!$u&^qU1JES&782MQCE5yb8S>t4J!B8jIpq@VcJ%8>1-_49_sma0 zHv$O)>8a5X+C_lP=zamL4bTI~YBO{;rYk%zf|cu>3bvX&=J@IOCIH9`9F*!~{{=J* zpem}nR69v~8GNWxIZI-#tEotv(5y-Mb!YE0O%#4pQvv|b_zdV zX#aWFkw>Wk)(MG?+zwb9dFxLs>qRCo7KrhhS?-I%Oqffe_R_nR=Y*zZ!um{MsYXQ0! zB^JNux{o-HgP8`aagDqlQX$Y0uoWIUJ0%#I%L(Wadh$*$)dc@dVhGX+OhEP^a>R22 zHdKJzcI|_Nc6%kPw#brLqY}xUX%6zf0U^`}?Sq6&rcvp+#a=s7~DX8yJ&e9G0#c3V5^1myNuowhpbdOb~BY;UH8LY)WX9-ky+-!Cg` zq#qp4?*q^O{lOum02{jOFQ(24AS!kLrOY;UCy;IG@(KI|qj~bVw`{B$00000NkvXX Hu0mjfhF&;| literal 0 HcmV?d00001 diff --git a/BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/Square44x44Logo.scale-100.png b/BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/Square44x44Logo.scale-100.png new file mode 100644 index 0000000000000000000000000000000000000000..06fc87c130f018a94a2745b7771bebb25e7cf518 GIT binary patch literal 1141 zcmV-*1d98KP)RCt{2m}!VkQ5eVHSr|*!Fhz=~5nt@e-Xy*#8GG?T63Jjj z%wlG|MYGwmPbMZsj4WC5MFv?iS!ccpA--rPg9wdTUcV=2a_619oO9oqB=gkMdG5K- z`Tzg-x%ZrV?u`xnV;1|j1(;fg;P$o-!R>9n1UEG`jiH%^$NA)~i;9XW$Df)GG!`5R zg%;wcA?sv1HVmhM3tt)?9evJZoRMHidgF&96)OftELg>eE=Tky-EpRZvmqK_F3;Y; z>IY^n;U?WN+JdP>BF%a~!aOVm>=LT{LMPdz!bMc1i%(IG24);p-a$A|Ctpi26-WYj zeniS#4D4h$W>DpuUb&uvx%w!4ciTvFwO#OxM|{XFNk{MsK*rhhKcmUOqwxfC_PStH z(`>}Q;l1z@^1E7dI37#hO2T8l1#_Ev&}?@&-50;jZTzZoCqTN?AvZ`~naWF|aatC) zA^I#hUwjG1vKTzb?gahufFB`Trn!JNoA*~UI{6)d?Xz!n1QxRJO_nwm&3?W~nxcq_TG z3X>|6|CanbiFq7kq8`N`;(Zr`yakY7Ag(4ZkhR)F><{5~I`1eL;5QKL3%I-{0WU+$ zeTmfu-|m*@$qNL$di((KD%wOB%?H4IWh_{UE`ngWddG*0t)YL7C08b0tFLJKhl@zU zV&Xb3Yz@cP?3OwD-_u{wH!}r7-kD$5gHD2Y$)0}b3fuoWRyK9hEA@@`#lrj+47a^Qsy4x0Z zxOrEnW2QT(e6`H=H`mqL!1_RwXEMfA@Mo%=qJ9QO^s5$(Mw)dd|JB5dN#$=NqGjti z6ZiEeNS<4o>tH=G9qX$~ipZF(E$sjJ1OGRzLvVZBKPUJX76sv@6p32H00000NkvXX Hu0mjfohcpA literal 0 HcmV?d00001 diff --git a/BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/Square44x44Logo.scale-200.png b/BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/Square44x44Logo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..eaf27573f8c4a2f26b942220521b145932dbb8b3 GIT binary patch literal 2468 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 b=$}Z|!9CkAhpfeCZx@rPp(V0T-!1xIbVsNn literal 0 HcmV?d00001 diff --git a/BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/Square44x44Logo.scale-400.png b/BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/Square44x44Logo.scale-400.png new file mode 100644 index 0000000000000000000000000000000000000000..8a4ee54f9efd6103777dd2a6f428956287581f85 GIT binary patch literal 4740 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 ID%r&R58=IJSpWb4 literal 0 HcmV?d00001 diff --git a/BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/Square44x44Logo.targetsize-48.png b/BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/Square44x44Logo.targetsize-48.png new file mode 100644 index 0000000000000000000000000000000000000000..ee58ea6df88a138ed3a8b0bed7ef2287c0b242b4 GIT binary patch literal 1245 zcmV<31S0#1P)0`^oT}neLv6 zJ_0Fds=KDD{;KYo-X_oK;*^)|0HRWN0@U~vy9bj( z9o1Q;HpaowGqV9G2^E(s* zbCma#7-c$og&JSCU{6(Z6#7##bp%T=sUFhBrcHq1><8QC7Y`-Da6eYM6JhuKd=XR| ztOWh9svU>@m4Koe{GCSkT~K@`BT!3^4Dfn@JeMF2Qk^Vq!0rnu^2L5ZrGrOr2yBxd zC_V<_yO!$u&^qU1JES&782MQCE5yb8S>t4J!B8jIpq@VcJ%8>1-_49_sma0 zHv$O)>8a5X+C_lP=zamL4bTI~YBO{;rYk%zf|cu>3bvX&=J@IOCIH9`9F*!~{{=J* zpem}nR69v~8GNWxIZI-#tEotv(5y-Mb!YE0O%#4pQvv|b_zdV zX#aWFkw>Wk)(MG?+zwb9dFxLs>qRCo7KrhhS?-I%Oqffe_R_nR=Y*zZ!um{MsYXQ0! zB^JNux{o-HgP8`aagDqlQX$Y0uoWIUJ0%#I%L(Wadh$*$)dc@dVhGX+OhEP^a>R22 zHdKJzcI|_Nc6%kPw#brLqY}xUX%6zf0U^`}?Sq6&rcvp+#a=s7~DX8yJ&e9G0#c3V5^1myNuowhpbdOb~BY;UH8LY)WX9-ky+-!Cg` zq#qp4?*q^O{lOum02{jOFQ(24AS!kLrOY;UCy;IG@(KI|qj~bVw`{B$00000NkvXX Hu0mjfhF&;| literal 0 HcmV?d00001 diff --git a/BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/StoreLogo.backup.png b/BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/StoreLogo.backup.png new file mode 100644 index 0000000000000000000000000000000000000000..a197aaf558f9d8f7a32d2451753824be2f2880c0 GIT binary patch literal 392 zcmV;30eAk1P)7<)krtq(aFl~uLs1fDksy_Fk~`(1kz2k6vM!@`6AA2R`4W~V z`L?`Fq{jHr>g`DhP!{2CAK5GGSY}++SFC7aR8Z{5osi7Y literal 0 HcmV?d00001 diff --git a/BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/StoreLogo.scale-100.png b/BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/StoreLogo.scale-100.png new file mode 100644 index 0000000000000000000000000000000000000000..4fbbc70d82bac538916c24e7af1eb95a63990f45 GIT binary patch literal 836 zcmV-K1H1f*P)~LE8Z`$Wc+lIz=Bgh+k6uJjgQti&i032-I_s~n7KU*aW~STN30+WB zb@ikE|LLCYp6Lu$iFE#N0Jg*vaZNlC*TfTXO*|3T#1nB%JQ3H#Dv@Th*@2eQv@H}0 z^XM;Ixvdci!>|O2m$_8=sV z0xZnZPx{dJ0JHMO6oVBa0IEg&V#|*cOR6Jw53}DCgE0{Rox$|BfMLI5LI8FP@Ce|d z)_=ovpc|!*crUYZnpt^ag2RXiKsKPa022*M`3do1>{zVJFnS*?qZ5(%ZQ9S!ejzUw zQz9cIFU6KnKl+gPIPp{1ZQAw|{vC7;{`trlp^h;^aWpTM+(byc6&*}?4|Wn8W2szc z$qW%{Xw@KfO=1(+Ezy4J%UDmTn_F%olO$aiC!*yc>@(_T0REoxBE(+d@4z2O+TC=l zN!$~8@Z=&w!o8TjcH1qW)>9|%!V&Z&`ctc>b!q+8PnVdCS;fA~ifK9ST5@Iifqwj# zNpca9C&n_V>k~|Rx{H_rEj~t<&^>5Bbsv)Q>Q-H631*&+AZfs~LgK3=K8)Ly0O&4& zzC!k#yx0=Q?;}>nJ|K2E;oVx2G4tXvAuLSLwmfVp5cR}t<`s6nywQDUgAs8*=zBRpPiCEcw z0aXUnYxUb+<=gCVWg8f*5RvZ*mRLi+FS7KLm*2*>h=|Pt@e;sx1t~vuky+_uE4eiy z^6d?geJlRwgNOqAVsp&2;{R*8CZ33E;)%E>o``GWiMS@7h-tEabTpx$Y0RSNG!k{k-_T|9rEFo-Qg%T1o%_K*h}!d+rM_ z{~g6|zBFyV@cb75X|DdU0DuPk@5s5G`_Bge;G64iSjY2;rOTxO5xO|d0k05#TSQ@f zlzOnmd=5I%F_}mnagMwIwU#oqTE-YW<0z&r5kk$aZk^1PQu1$5&jK7j_rR&*F#Y|aA+3ln70q7|VqQ_3_ z$P-PgtP_FY&~}5TG{@XG49#B^PGl;FeETnkVvWl&G3z#chwG%(e`#FRDX`>NgO;GA9`=!)L-*c#Q#dQu%CD3Xchi1+)iy`tZ zq6H#$b$Q^Ga@M+&Ttt_R$|ZMjq8VG%@YOg!>!_o&4)HSdzQv?~I%u2l%p5l*U;!OzLITK1j(Z%d-D))0 zdp!!73v~RETTYKQU1$<1cX6eV%1JOJ5KMm?2x_Pg8t^`Z+*30F#?t0akeBW?()YYr ziI`K|rc(`OIn5UknbX5tmQj}ut;b__VbqbOb-t>^5KjQz3WH8ycN zi=~4>e#g2ed$#0w3F5KcQlOb4Y8|F?&F}wI3X!I>z^Kk%oo__@=jJ?LMLl)IOxQdE+*;nbksH+ML#8b3vG(k#P12LfSP zvxis@$Qv@aXX@581yU=ft$+j~%Z5(@!%?Q@!K{>-k9Bb_8UBUay2a%O*B)?|J5 zVwx{Iu*cgctk%ke0Dh__8Qj=2Hzl!k=~jruqW878j5ZF>^I3dsnz1zBw0BcTXK&Mk_6t!tbP-dWJS>^r6NS3sqF>bE<^I~=0CJGs3y^{27RZC}w=3#wsLpx&KHGlQ6 z>U{oKPF3{q$(Ouo1ZN6bt9mx4ASK&^NjjS=F&r^%u@$Y<-+X@b3$n@ePoO=^qxK6E0D5g($4mAb4 zTXXKA`s=bvUpnqZQdU>!Ld)~W#eAP37k8)MRmwWzF?$%V(W?Hwh7Q|DzTC*R$4T<) z*xvbLB`)J^@_MRse*V5i?rTe}E5h5A|DK(WD(A1+1P^(u^59j14qM?k(0^+YYr zg7L^3Zj*Mxi&9+^Si6C$>|G_^X<5{_t@pr?wH!lG9T7secu#^F%d3)@ z7|yko0t^Bjn~)nYAvXU_QLWNYA^_NmF1myFJ(+s;B(oJ4o2omh+AsnT#_K<;!koHG zb`Cu9SO6?-r|GaWqz+caaTiVWdYXATM literal 0 HcmV?d00001 diff --git a/BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/StoreLogo.scale-400.png b/BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/StoreLogo.scale-400.png new file mode 100644 index 0000000000000000000000000000000000000000..383ad6e49ca80219238d6c4a44438b6086cd7d05 GIT binary patch literal 3654 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 K8&yWgr~d;j`DY&h literal 0 HcmV?d00001 diff --git a/BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/Wide310x150Logo.scale-400.png b/BusinessMgrMobile/BusinessMgrMobile.UWP/Assets/Wide310x150Logo.scale-400.png new file mode 100644 index 0000000000000000000000000000000000000000..caa5fc9cb677844c4502acf45b322fdd2721b8e5 GIT binary patch literal 15240 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 literal 0 HcmV?d00001 diff --git a/BusinessMgrMobile/BusinessMgrMobile.UWP/BusinessMgrMobile.UWP.csproj b/BusinessMgrMobile/BusinessMgrMobile.UWP/BusinessMgrMobile.UWP.csproj new file mode 100644 index 0000000..d158f04 --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile.UWP/BusinessMgrMobile.UWP.csproj @@ -0,0 +1,172 @@ + + + + + Debug + x86 + {11104E8D-C345-4E49-B07B-94321E2FA80C} + AppContainerExe + Properties + BusinessMgrMobile.UWP + BusinessMgrMobile.UWP + en-US + UAP + 10.0.17134.0 + 10.0.16299.0 + 14 + true + 512 + {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + BusinessMgrMobile.UWP_TemporaryKey.pfx + + + true + bin\ARM\Debug\ + DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP + ;2008 + full + ARM + false + prompt + true + + + bin\ARM\Release\ + TRACE;NETFX_CORE;WINDOWS_UWP + true + ;2008 + pdbonly + ARM + false + prompt + true + true + + + true + bin\x64\Debug\ + DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP + ;2008 + full + x64 + false + prompt + true + + + bin\x64\Release\ + TRACE;NETFX_CORE;WINDOWS_UWP + true + ;2008 + pdbonly + x64 + false + prompt + true + true + + + true + bin\x86\Debug\ + DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP + ;2008 + full + x86 + false + prompt + true + + + bin\x86\Release\ + TRACE;NETFX_CORE;WINDOWS_UWP + true + ;2008 + pdbonly + x86 + false + prompt + true + true + + + + App.xaml + + + MainPage.xaml + + + + + + Designer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + + + + + + + {f9a541c6-bbea-4594-9b2e-effa982d9e2e} + SaBusMgrCore + + + {9fb2542a-6bf7-47b9-8f45-d551f6a318c8} + SacsCoreBase + + + {00cd1237-514f-4b70-bb14-65fc05e38222} + SacsCoreMob + + + {0de3a997-9167-48e7-bc74-66576324b7c5} + SaBusMgrMobCore + + + + + 14.0 + + + \ No newline at end of file diff --git a/BusinessMgrMobile/BusinessMgrMobile.UWP/MainPage.xaml b/BusinessMgrMobile/BusinessMgrMobile.UWP/MainPage.xaml new file mode 100644 index 0000000..f7ae2a4 --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile.UWP/MainPage.xaml @@ -0,0 +1,15 @@ + + + + + + \ No newline at end of file diff --git a/BusinessMgrMobile/BusinessMgrMobile.UWP/MainPage.xaml.cs b/BusinessMgrMobile/BusinessMgrMobile.UWP/MainPage.xaml.cs new file mode 100644 index 0000000..70a007f --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile.UWP/MainPage.xaml.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices.WindowsRuntime; +using Windows.Foundation; +using Windows.Foundation.Collections; +using Windows.UI.Xaml; +using Windows.UI.Xaml.Controls; +using Windows.UI.Xaml.Controls.Primitives; +using Windows.UI.Xaml.Data; +using Windows.UI.Xaml.Input; +using Windows.UI.Xaml.Media; +using Windows.UI.Xaml.Navigation; + +namespace BusinessMgrMobile.UWP +{ + public sealed partial class MainPage + { + public MainPage() + { + this.InitializeComponent(); + + LoadApplication(new BusinessMgrMobile.App()); + } + } +} diff --git a/BusinessMgrMobile/BusinessMgrMobile.UWP/Package.appxmanifest b/BusinessMgrMobile/BusinessMgrMobile.UWP/Package.appxmanifest new file mode 100644 index 0000000..f84e696 --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile.UWP/Package.appxmanifest @@ -0,0 +1,55 @@ + + + + + + + + + + BusinessMgrMobile.UWP + 38ebead7-97f8-46e8-a7f0-39613de21df4 + Assets\StoreLogo.png + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BusinessMgrMobile/BusinessMgrMobile.UWP/Properties/AssemblyInfo.cs b/BusinessMgrMobile/BusinessMgrMobile.UWP/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..9ee39e4 --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile.UWP/Properties/AssemblyInfo.cs @@ -0,0 +1,29 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("BusinessMgrMobile.UWP")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("BusinessMgrMobile.UWP")] +[assembly: AssemblyCopyright("Copyright © 2015")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: ComVisible(false)] \ No newline at end of file diff --git a/BusinessMgrMobile/BusinessMgrMobile.UWP/Properties/Default.rd.xml b/BusinessMgrMobile/BusinessMgrMobile.UWP/Properties/Default.rd.xml new file mode 100644 index 0000000..80a960c --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile.UWP/Properties/Default.rd.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/BusinessMgrMobile/BusinessMgrMobile.iOS/AppDelegate.cs b/BusinessMgrMobile/BusinessMgrMobile.iOS/AppDelegate.cs new file mode 100644 index 0000000..df728e1 --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile.iOS/AppDelegate.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +using Foundation; +using UIKit; + +namespace BusinessMgrMobile.iOS +{ + // The UIApplicationDelegate for the application. This class is responsible for launching the + // User Interface of the application, as well as listening (and optionally responding) to + // application events from iOS. + [Register("AppDelegate")] + public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate + { + // + // This method is invoked when the application has loaded and is ready to run. In this + // method you should instantiate the window, load the UI into it and then make the window + // visible. + // + // You have 17 seconds to return from this method, or iOS will terminate your application. + // + public override bool FinishedLaunching(UIApplication app, NSDictionary options) + { + global::Xamarin.Forms.Forms.Init(); + LoadApplication(new App()); + + return base.FinishedLaunching(app, options); + } + } +} diff --git a/BusinessMgrMobile/BusinessMgrMobile.iOS/Assets.xcassets/AppIcon.appiconset/Contents.json b/BusinessMgrMobile/BusinessMgrMobile.iOS/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..98f4d03 --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile.iOS/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,117 @@ +{ + "images": [ + { + "scale": "2x", + "size": "20x20", + "idiom": "iphone", + "filename": "Icon40.png" + }, + { + "scale": "3x", + "size": "20x20", + "idiom": "iphone", + "filename": "Icon60.png" + }, + { + "scale": "2x", + "size": "29x29", + "idiom": "iphone", + "filename": "Icon58.png" + }, + { + "scale": "3x", + "size": "29x29", + "idiom": "iphone", + "filename": "Icon87.png" + }, + { + "scale": "2x", + "size": "40x40", + "idiom": "iphone", + "filename": "Icon80.png" + }, + { + "scale": "3x", + "size": "40x40", + "idiom": "iphone", + "filename": "Icon120.png" + }, + { + "scale": "2x", + "size": "60x60", + "idiom": "iphone", + "filename": "Icon120.png" + }, + { + "scale": "3x", + "size": "60x60", + "idiom": "iphone", + "filename": "Icon180.png" + }, + { + "scale": "1x", + "size": "20x20", + "idiom": "ipad", + "filename": "Icon20.png" + }, + { + "scale": "2x", + "size": "20x20", + "idiom": "ipad", + "filename": "Icon40.png" + }, + { + "scale": "1x", + "size": "29x29", + "idiom": "ipad", + "filename": "Icon29.png" + }, + { + "scale": "2x", + "size": "29x29", + "idiom": "ipad", + "filename": "Icon58.png" + }, + { + "scale": "1x", + "size": "40x40", + "idiom": "ipad", + "filename": "Icon40.png" + }, + { + "scale": "2x", + "size": "40x40", + "idiom": "ipad", + "filename": "Icon80.png" + }, + { + "scale": "1x", + "size": "76x76", + "idiom": "ipad", + "filename": "Icon76.png" + }, + { + "scale": "2x", + "size": "76x76", + "idiom": "ipad", + "filename": "Icon152.png" + }, + { + "scale": "2x", + "size": "83.5x83.5", + "idiom": "ipad", + "filename": "Icon167.png" + }, + { + "scale": "1x", + "size": "1024x1024", + "idiom": "ios-marketing", + "filename": "Icon1024.png" + } + ], + "properties": {}, + "info": { + "version": 1, + "author": "xcode" + } +} \ No newline at end of file diff --git a/BusinessMgrMobile/BusinessMgrMobile.iOS/Assets.xcassets/AppIcon.appiconset/Icon1024.png b/BusinessMgrMobile/BusinessMgrMobile.iOS/Assets.xcassets/AppIcon.appiconset/Icon1024.png new file mode 100644 index 0000000000000000000000000000000000000000..9174c989a9c8b8a5ca133228f4ed7c173fffd2ee GIT binary patch literal 70429 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 z zCn)b8&=oMu6ygwwJfdasJX|@L6?m1Dv0X9t>JAWO^UIj0#&(3UrHx;vP^3g= zL{(XT!?`D*pP8)WoGHYEZZc$!odTzb8n)q0|88*>6P z`?6&CSv_W7r2yF0beQ2*?V^_%pKktVAo`)T^26X@NpK_*-ni{D7{Sp{C0A<|16l(; zOL*xGW|*sKsiwHvE!h3QXe@^a#6W3}8!DQu-h?A_4gkeRYkt4NC~GR5P8eyp;9kVQ8$QG$5ad7Fo23Z~ak1jY~RXG{v?3G$RarFe`XePu3X{R+=mBOw&X zks)|Sc$RcG-jhn!`~-x|vg!&DA&@}QH^RNdyy9nq56yrU$^qAaS+F_NOaeFb)CVaH z?!UvPajgrK&zqdAs>&Def#wkcG_UhmYOVw^M`VZz@+4IWAVzK%`+za9rm2SD9={u@ zlx5D6UDL;lc7#9`+%vnlP3PescU=N`DHQPt_N55GNBMkVCRMR4?fvp zAFsvcHN4c9rb>J@{*IH>RTr9de%9i4Gd(cbFa9SP4anhoP;TA0!oZyB8?lNMDHPHK zCaOaFU9?x2A!o>p>mCF9r+hKs9Czu_P1l$LWU%}q#)=T3p`ZnYyeHmsewqw`}L^4LuHqfo+CG6<2n7#l^3;H^^!1 zsaieYFnN)Kc7Mv}^xE)4kXUw8<9I+jMB@QV9T9I8haLDt1Ne#exWUfGYG$4uMoEu& zo81#2up18Y40h%tIsOZglp(ltVsE*j1~$lVd|;rN)&${~o~-%KZnJp&3|OFR{^8E9 zJ;fCu53Ysw%}@VYWE*z7r)&4P=^B-SF%a@>*9g84<4aFUZT7x)qdsS+#2tu5NbpU@ zg;EwV)l-#sK>#r9>(0Figx{9lKm>KvRj;y<8 zc8SxMW4<11(s@QMV_}n9MRzA*62->vzxmHh1)GVASEJY7LVtRw`Rv{v`(Fuc00(&o z%m>gS2aJekmdNQ4p<{pD3HqZ-%4hdU1__xYhLi9mTJXD|E zE`t6SX)}l_DY5vO0Xrs#O6_DKtPKn0f+e~SprDYmJL_`<053iA5P`zn z4<5etc%aF58sHFr#M;U-9|=;l)J#Q2vS!Q9(d(EX6fubL%uA_lqa2%!cpNIv78QZ}Ayo(>C(ZpsRtKhzD--fpuoCch87cX-Bna9_{z%$b*dHM0?+T&Hk!+^UM`r|vq z2Id$??bX^|tfYaE+h#Nik(ZcN+wt)28q^gWe!y8jDCXrD<2qV#49x@5$8&Zrd5NTs zNYcix;9fe#PQQ;T?!6hG>9K{K+RCPqiGc9z%t{=`QaX>7O{l(+#7mJ1>Rae^J?82e z6cLqLypskTCyu>uc~$0-XZ^1Qvhwr+pKQ#CKImhGu*MGM*ZrROuAHWuT*yM$ieEy8*KLFMMdLZL|D+yDmy@3_PELTEVMI6nwfcYA3ZQ9wwKdtkT z;`;z7fU{U6>CS7kr3=A-()_G*G(Mjf2wXKe

Fpy)y!S(AQHSG#udd_8#b4sQu!R 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 PgFh2POM|ilu9yD@)d*=D literal 0 HcmV?d00001 diff --git a/BusinessMgrMobile/BusinessMgrMobile.iOS/Assets.xcassets/AppIcon.appiconset/Icon120.png b/BusinessMgrMobile/BusinessMgrMobile.iOS/Assets.xcassets/AppIcon.appiconset/Icon120.png new file mode 100644 index 0000000000000000000000000000000000000000..9c60a1761dbf62cc2a45ff98b9fdb63ade16e4d9 GIT binary patch literal 3773 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 Dh-f%Y literal 0 HcmV?d00001 diff --git a/BusinessMgrMobile/BusinessMgrMobile.iOS/Assets.xcassets/AppIcon.appiconset/Icon152.png b/BusinessMgrMobile/BusinessMgrMobile.iOS/Assets.xcassets/AppIcon.appiconset/Icon152.png new file mode 100644 index 0000000000000000000000000000000000000000..448d6efb577d07e227a5c62545173ddf6bd86b55 GIT binary patch literal 4750 zcmdsb=QrF9wDnK#B^X9;Q9^V{l#CXA)L_)ej2hhtqlaMh5WS5Wg6N_|8RZ$G_vkf9 z5JZU<_2zy5i+ewuz1RM*&sqD^UhBjd=xI=qvycM-K&7Rr`urbf{=Xq5{)gcIxVZlj zp`)^{G62*iQd}d50Dw+SOI6v}4{!ekg(s{Rq@YE5pOB7&`>m3SpD-<+qnxv4BTc@~ zM{1D|O$!#56?*b|pjiA#`~(%lh{=Se_>I>=aGy#&c20J1)xLMF9?|AKE-r2*uD9=L zRY*6d50*AXL)Jq$@9tJ}ma)sZ0~?*^w~ptSKl}5a9mjs_?y7Pd#S^L|D+OqJQxG540qoJ9dxD4)lwK(7)=k+md0c4*X=xd1L*Bu!u z%IRa8oVJY=UYOj>NnpuG}*2TYAF24V94?je zUn_6KJ`0DnJuwUn#kMy`qNMZoy|$PAr?*5OdiL(X0#Lq<3T~)ZC0OaK@7P&x#jE<9*CKd^1)k_8t0b@>!&CT(6^Vy?`Uq7#5j&EGJlORzv>e%! znNY2P<X(KdS7AjZJSP76n+gVPg|8`_aX=2NCQjf`n$&Bz-=oXMpPbt_7ZJ zh^-Xlyca1Utv+%7>m5TkZ{%Qx(C#Z=+|Ej(;ElO(DCF9luaWBuyGh>)*@GDaGT|BR zod!zD@$y#$wNz2RUfGI#+@(Fab9)QAnmytV*y@sSQ!PL@jUse^PgI$Z$)92HQ~LD{ zETF}D!n%DLy>--g$73{;S&vPo1Op{M5Ow8=Dym*(FD85KiP$$c8#!85;PhF2Y`QUV zFYV765M%m}sXorn6EC=*dKDqU(97Y^MD|aU`n#>k#$3a<^jHyE$E_ zemwewpe2Do>xLc2Qs2o)m%*~Rw{ONg2CjLpZNk*!h2eNhni=!5W?Yo`zF-Mw~$kw3gkv;)WEeRJ%Q#FGB11W}4wRlTZ_TV#D%k#g~SnL+{^%` z!z{{}F%_S;kjB;peqTqeD8S#O4Ew}rkJt3(C6$|Ej8)nF0RPHbe;HZy_f4`qbZctO zJ2n+lCL2LrHFIF=$KUYnMUKU>8P|%UNaM)h9GZRy8an#?)qVHE{XY9^6FT@3&eTm2 zmfrOrEy4-?BYRLOE8bpz~Nldc&T14?{R<3(Au5u#{QUh8Td$cUzy#9flp8IQ*Qj(u}oeZ78W=8^%vHP{^4|N#Bvl`98)G7?ib* zoNPdZFMTRlbt^A=-Q`Xz1*?wU!9+Z|UQXAZ4X|G}riTAG)jiQR$py2ZLE0uN+dG^# zd|fWhqc=?NN~|J)y}8VM=fCrBnVqCpaREogX!bt^Fy07PpnjHSW{Q!Bo<5CWE_v+C za)!T*V-&cDBb&5_`CZuHK1=TW9^ef&mq1{}F}JQk3LuBJgZ?)WRXSZx>W@9xHFd1& z&9ObICBPZVUc`-DDv1^r@5_aaB#W^8`xpJe=_J(qB`m&bHhNh4vRAri(u({~Q_F39 z?XYMfzb{3*TeZj0rikqNKnRpM^k`v$yt0mH8Rs@J2g!{RSc%zeO3#=U3;(IRwN~+Z z?myI?|BNin+Teiq%C8Vcs0l_Ktl+_X0#26De~_A4M%i^+d&6aNuFS(tgT>TdY~>n! zf$orZ*ktv&J&p-vx*+|e5GAexQaP~l%|!2T;*w{bBb1FFeD~T*8Pe8S&hJJ-QNvJ~ z8ime-a|vZ8+`v?z%T8ur9xjS4tY)jqR34HEH!x}F_V^I2Ag~?Q%yiCKO0Gsnp9akF zMysFO^KhSgTd!K}e?JTXbPXNIR_mw~#ra3fza zNY9x!b;s{dzWU16;-4K4r<<&q*^G0ipD3G%<#l*-DqVqNVh&*3SSzn2a&d*F4FvTY z;-^06$>qyavKOs36@iC7Hr8Wn6>6*rH|O_^bLAR5!arFD9R={zZ0Fi#dgvlpSX+T zUa=FNiB~wXLASe7I01qA^knmf?`_* zOGlz=XT63?s{)&Idd46x6&$(Ab@My};^Y3ckF?y+-qvrz^CQQI{3HOwNGUPL91nXk zTvxP}wu+f4Ch%pN1RcggTQKZ~F zs74ss`*&JuYb+(?i$hlx{Eg>KWG6F-#r5{un4~1-EtOAX`aTi|ZnU2|m!kW7eT75j zO`(A~7FD6*`lQr0j;Bx#qq|-y=!>b~rC-p~y!U)^V~`XIr%fgQ-_g>cb+jRJCDHur z(+`%WiWvmgEQ!K*Vhu;1k%~1|iX1G2@+?G`-=)lOw~6hebs-IG(pRs zOb{x3)`8YbZFA6cO5!DJL4-i?EM}RI)IW1C=&q922RESUr(yV)h9n{<{U5e!pB)e! z%*7&CrdxA?Jg7fydY$6Ov`SZmiB%rWI;_&(I>?X=d0afq1A-4D2j?hiQBjcQZ+%MX*%c73h>8}umx>Yk zu%9A@CVcq*DjVu#CwPYRDx2nM8(rYbipb?~!Xv8eZmGZ_P&jHD8S!cH5&Y7X#-e-g^BJ47w zJ=YWa$dfPc|NI`CWwK#epKw_#qw@4m)YeGnj2wR@*m1pDeI?EE??9?yI*z>wWP90; z+qsoIH?Om_4DTqV?2_qkA=Ps-qwahZR14~k2=m2jAu{n#>U;2yYgd`Kq^4}6X}NKYt$M$s_fw8pV9QRPl8=H4k#gS1^M^#1Fr+!c}) za~LH(u*dYD?@|@`52N!Ts9hphYz04~oJ6?<`0DlobtEGk)b-Q)0>q)?x17*u9ru*& zYTu7!Qr?gImCE83qE|s?LG!M60&wSxU#l2l*<9} z&{ro~y}D^!A)u%{9m45WkeHB5hpdTccw6XYwCuDHy)m;)&Up`HcbI0M8YSKz-Y)(B zTli^XzGAR6X1yBm{Nx)UkzfbO?hlZ${iLwJhBuu&#-?gcNP(xT#8Z<$daYs_*~N5~ zhOr-VX%k}P!}}Vxz8AUUFH;qX&Q$r%p#X*iRYx8429g>nUoWodB?xZW8p7y*T3JdgT+tzFIjJ| z$X{d&TB>l6wj5fxEB0$o7r75{NuXjK6V+{afG#yk{~3Y&PC&dSsO$+GdB&AAZvFa1 zOZK;IdxUWe=GqjJ5Pd1J^@BnFADubOZs>8dU#I&^rp+AlEsOTcoMSj8M{AiGg=gK< ze~X`_zI1^l+yRtY_-}(8n?bw8w${K z2}LeY9MEb%k}ym^+?aNudB+yp;yb80EB(Q5)pS352CzlkdfF8FTqm=$8tHavHIl4l zr>1E6u6cr&eF~IvS_T#>g>1694{4KDQ_>p@u$AVykK1udpf0TngCXH z5zQ&a+HwldYT^w$?BQ@e4IBsgOQ`y+1dLPf%$r9PR|0DDS<;Wh;@ml2YMS!$J#gkr z2I8`ly?+YO>2-{fM+YoYbrn@32CkVywO~r$DxLswt&x0x907iFJj0q5;NdTp^x=HG xOgkb~Yyd%RnTwfZ2r)bvM0@({f35M3^J$0L{S2#8=6??+Kub+ewOR!p_CK+I_KyGn literal 0 HcmV?d00001 diff --git a/BusinessMgrMobile/BusinessMgrMobile.iOS/Assets.xcassets/AppIcon.appiconset/Icon167.png b/BusinessMgrMobile/BusinessMgrMobile.iOS/Assets.xcassets/AppIcon.appiconset/Icon167.png new file mode 100644 index 0000000000000000000000000000000000000000..8524768f8d764da7e9c452a444208708f2d18ff1 GIT binary patch literal 4692 zcmdT|XIB&4(xpTN1*K>xQbX^8^b({KIw~rHNC|`@2%(dJ5D-F#1ZfEYiGV0lq(}=W zgc7Psl_H9vHvuJ7z1-)%p)6vnfLQD;Bp4zg1 zAEvXXcM#BG{nP+pdX{>0bT#Q0j$O{s(Q#aW80y^)qu+Solk&js%GX`#>--*?1>hBn zylj2Bl~|w=hswPyL69*gD{tKnqopZQY+Ok0Wi&``_+IL55R?xKc>smnzEfS9yo`Q{=^|^0;fo;{d{hqBCglz?TcMBUE zv9qCXytz?uTg*u4#tlljAzN}Z=2nHzZAGy%_zhVGGpm|P+pa8pAAJpzq()b>@s(R} z>2qXI5%uyKubl;@obSI8@VZc*jSs8>75IYaJwEbpU(ry69>yD|l$U2d20L+%sS>{i zsSICRml49T7GzA*+lM?CZ_~6^^)!No`QYzJ%-}6)O^+lfdl+G z1O?m!ckdDA}b>}*SY^H-eW-!oJ#MwHFg>6&At;9qxdriX`yY1d+lkmMg! zbjZjbS%^n()6yjKE)&;ur^F2bxwkn6FFoM^gqLnWZxS>f|4wJlH=b2o4-Lxfd^<0e zz^_NU*zzAI3jcRGyyy5GjU?&q(WPND9kUGKLz@7}2snY4M}FIf$QH*ghL-*jzPb2$ zfZPGTkTrFubtmHyXOA5Bry1XzDL+p)hmFSY)mk4*gqwlmmF>S zS+6Vi7>oBhNb6~6tX}0;A^WbCa9MbjjVhSa{Lce7miezenM|Mu)0JhdR@?mUvSbZU zq$p{l5F@Ky=t|-zHlfycS;Id~J{+F*3z7_-4P;x;#PucfvxDC!H?r#%l4aoVTO0RK zICSXmLZz1U?=@vc;C3jXDNGe41M&r-BJK&U)ieK&C}}?qHsi?pi^e_1VMxMD55KBE zB4|ats({#-#(#7n`cGza(VjkBI%y5xz`P~Gw7t*%UhwsuXZT$l^}I4|ezRXla$6*= z4b4T>R@8RgoS|5fnHBgyxLA{}I}-vb&NwMmjX5^?-|^eI9q*$!4%Mj`79UNBh{Ebb3Wc!z1tI(1vUyP1+*7^(4&1yM?CgM^mSAh?2hHosE$M}P*C_29}omMN5 z12_~tF)$?J`Pfb7S7Ol;OIJ@M1|NS#swII$?TS%{PGGR-pI^#;tU6fVx1KN#M&@MvKk4-Jp&tj7w$N( zUkNq6ocd|jckZa+JEtTLx!aNEOs^Bx;U<&Y0+esu1>>q8Gzf+)WjZzB%o>4Pa%hEs zY-v}@!TU|d#Z;_FA~>%`Bj(etxw`!TE z-H%3zyd5F`pvUxzP1g=4fBqrm7E#4@pCy5w-?u&S+@c*t46db7I>wgduD$k9F`h-- z8|En#lIX8#wVV`~w(NA8w`dhhGKKqnaE>hM!=Yn0FMfh@Gkd%P`u{M)#cORv1DCHaJUhdI>IC>z+d12<41E>}{%v^kX2{^jY$+)k{d3|iIYJS_{^L+_5#=E11KJ{FDFv1W&0AY z?_TrXK{$m%K3YAMh&%{l+HhC8HZN~!n2Dvl4B5M2+HnTe=D(hG;PCF`n3nVfhI`E= zqU6et<>1JAvWswf$Gis9`hIWZPDAm;X=QS4#pVIEzad@vP>m}p?#Aek% z_oE<(AwZ)LoKljNMO=Ww$VAFkGh#5xWG|&k*1@^banyC+i*vm5P#-}Id8B5y%X|DY z#f|69{Z+KklHPM`$qr8?G)4Uq`pXLeTiA5Z9qy>9xZl-aW2pf0fK=2sz#R(!nxEn= zg|4{|6qU()T5{}Zm{D7MAe%YE0vxST9%ah%YxPXD>yg-N_i1pe=(ffkvz-zQtrLT7 zr&*;O*K(zPbX9?R!@nT$ag3)GY@2TiVN?dlwf9SsC)|KuYe0t8@gphVIGL2MR&-S0LZOfu zz1pW@U*WUq8i7;ht%)tl>?T8(MC|%=G^d7UMC|3L*T#=o zZgwNH`W=8xf=m5JawZUNo$!K%M;#%PPK^?ycT_1pq8>u0la@2o3zUWjc#brSm7Yns z@>;{5shEk+&a{tPfC{A04V<^#jWA@t+n0;TeE#O6TdSxfQKJ8JBm>I*UVU@`baL&PzJInq zmEHH~@Xn9?d+^Wu)}cd+cV*w-;BVhCJ5THdQ9VPAGVf;i?r%LVh@#nk(2Obi-_In; z#Cp=)F|i8DZfV6p`w{%$?4R>|K%=HOwp5eMRQ3CxsHQxDYVZqJaC=&40{Z`OX1{?k zBq8x_(aO(8+8Q|xLo63l>>j<1miKe_As)PSJEw&e1n_LZtz(lyWH*1DR6kIVS^U@EfkZD6pvdN%6MsTLSwv6i5>hgZ=tqX=5=EW7u>)5%{#%5ASh88%@$m94oJE(Rn_ z5@A~q6cEJ!{=%5$(Z~fj#|s7dg2(b+){7cJ%N0WI1NUk2ctkAp(gI0VSU@NCkdH9O zLJ}`)4w!LmPZ0$DqbJm;qDAkVT7x=VmI=j*x64gC?FGFat8!`H?AG2}%!CHki9{$Z zY5iNo6h|!>4}VKwYBdd-U&4kN4UKKcg<(DmXjI6eP@*~#@fCR~2b0@FfMO3*^l8;e zCbDH#c`J>$GNFEMGsFFF38pjXLhJe2WczfNoMDN-(X&P7J+ zwIW5tefQGvw<8!YIzO01{U8I{4Vhae^>xi3dGt-6_q{Hw<}UUW$^1X+R8*qY`#8>8 zUAh{$OyrbULuz`bomFpon_e&@{q<*w@^wBeJxc@~-2?j*?BMSXDjnot?}G(I;+1J049jExcd zo~6IaL@XT@b$mMcO&SYc`8Tot&%9jy5#kg`KMLw>XR(EeyPi}Y zi!B09N~kd3RcxTj;OyZ_8e@xNO`JG?=p^eRV@JZ4!BtZWE0ky9DeY;}?BN`E*4~!3 z=RQN^Hfznx9GdF;o!GzR;ERcn7SD&-T`kuQOVoepQDJjQGyp5;`JFIlS?wrWv&gYF z2_ey|T?4J`Rjyy^UUfRYV^Ba1Hds2^UcQ=>5> zshQcP%=BU~v-du=et;~zUrL>!+37mr7K0NmSfq#=>qAimUWuWmiSy zGC3H`hO(k3JZ4V=XSux+v)F9lrGQq|HRBtUm2Ok>7je;;>tf&P?bS|~6l%uzL1L%O qQuI}W&FnVtX2s7O|6Nb``GoL3$B3jnW^%eFqJtP&8CL2$qy7ci8tmx+ literal 0 HcmV?d00001 diff --git a/BusinessMgrMobile/BusinessMgrMobile.iOS/Assets.xcassets/AppIcon.appiconset/Icon180.png b/BusinessMgrMobile/BusinessMgrMobile.iOS/Assets.xcassets/AppIcon.appiconset/Icon180.png new file mode 100644 index 0000000000000000000000000000000000000000..60a64703c0f11d08705cd607f7751338707f5919 GIT binary patch literal 5192 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 nB>N_)Q7iwV%v7MwAoJ}E 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 T3-0p800000NkvXXu0mjfSlal| literal 0 HcmV?d00001 diff --git a/BusinessMgrMobile/BusinessMgrMobile.iOS/Assets.xcassets/AppIcon.appiconset/Icon58.png b/BusinessMgrMobile/BusinessMgrMobile.iOS/Assets.xcassets/AppIcon.appiconset/Icon58.png new file mode 100644 index 0000000000000000000000000000000000000000..1ad04f004b638bf781012290d78e4138f97bbe5e GIT binary patch literal 1761 zcmV<71|Io|P)4P%ubY|S^%$zf~ zmwTOa@12BA$oV-Y9!V&U%c=j==#_}M2ylE}1m>yyDoGsZ#Yy zNX}RO*f(MzmKS&u`qiajIyW{Y_LC%m2NqT@Ic|QpvYqwNgBK7n5X%c(3k^?2>EOA` zqGaXjE7H9BiJ55fh0iJRW}@=&(@R^E1hLB>kE%PS6eP@VZVdtn(fh;5DPKg!j;fJZ%)wH{Wn#~V&#n(o1URS zsyS`0Tu2m;-H}z9O^h`!UZAFr@?0a7Z;pYOi0uZhgzh=rOEDi`FIkKtVu*gEcSM!h zmb#_XR$akjlg$JI75MXgWkG7IUnYJ+X=1J!qJ%jXVj{L1I2QU%?=?DgV^U?)92DZm zV?>``xT1#kZdgUt!2n?|0>*6ae4tikA9FAlJ}kjmMQm_z3LB5sZYHBKdbex9_Hv@K z%Y?q@9-)b7vJ6X$3h0B4tH__=#*`9^efY@IQfghn*=E2Nb8sR8lrQlu`Ca_Rmm6>Z z7bkEe^w8M>x;hoNUvWu_GZJPVpI;bMTsBpf(@U$Ch(-gk0T#WpsaB1{7ISQ~Y48mW z;Nk?@LjM_?q{BV-D=veoOmJoncVDC1GwGGz(O5@o7ZkGCIJMPO(7K9b6M_wF?Xqd< zo4J6KF0_U2<1=T3x0qc6G6#g+^=N{QTpChC!GZuCY*|eU{Rw)LMN7a2wwbaCdn_dE zzy+Lip(XU4-+SoTFyEcnH3?HRV^%-;Ylx;|>8v&^Dy459ZJ_1zio`68!6s8SO(6sq zaN75WUKiF9+8MruR3=w5)hzA^Z1clVBuXc)+8@e);xX7bfygR&FsIIt-gQ+==(c;S z#J*CO1qZBF&M&6TRmskZXaMOU6&?jn_(BqY5 z>Y|^?uOh;yp6w0QR1`>tiEz_-{Zu!N#(nhRndJV$7;LOgPyZQ*J2yCin+~*u!qKj# zItsG2IDi{ZH+E6j=D|ht=qWxKNxaA6E>3Wna>=z1gy?*#>|g_1^BGspGro&OWRc(k zPP)(*y0WZ7Z-kICr3#g7($P*LCjE>7S`Xh~s!b~bPTo0XSkRm2T(M`QZbv-`Imx*Ulqk*aI* zaqa*=>61?nFb8w3wuiA&zyVyGz>!cm-pY3xEsMEiY)Th4FVrtqWp%V~gxW82)>4^N z*H{>GR?m$^s6BN^M=4^iEjT7(gM(8z7K#9Sn(M_`)oSH2zHDCla&cmK)bb|4nAMIO ze4S3gI9L8AD+T9c#C8K8JF)I68NBWK`5pE`q^OR#h~-u!e7P2i$UDq7^*uZr< zbp8sR<$nYxb8EKH|BltapZ^j3+PZt_u^PR*lT6;TCNxu^yFH$j(!JXvbmHfQ>a0>O z+2k{tOWD%ln$M`tD&>+*KBKvmEgi1;jOwgXF4_DG_&r&PcxYTT00000NkvXXu0mjf DptxI> literal 0 HcmV?d00001 diff --git a/BusinessMgrMobile/BusinessMgrMobile.iOS/Assets.xcassets/AppIcon.appiconset/Icon60.png b/BusinessMgrMobile/BusinessMgrMobile.iOS/Assets.xcassets/AppIcon.appiconset/Icon60.png new file mode 100644 index 0000000000000000000000000000000000000000..2dd52620a8f15577e56ec7fe8e671988dd17ab0f GIT binary patch literal 2537 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 literal 0 HcmV?d00001 diff --git a/BusinessMgrMobile/BusinessMgrMobile.iOS/Assets.xcassets/AppIcon.appiconset/Icon76.png b/BusinessMgrMobile/BusinessMgrMobile.iOS/Assets.xcassets/AppIcon.appiconset/Icon76.png new file mode 100644 index 0000000000000000000000000000000000000000..b058cae2f440e5a5875e45c036c99f1fb6356046 GIT binary patch literal 2332 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 Kc&(xHv;P1B$EH01 literal 0 HcmV?d00001 diff --git a/BusinessMgrMobile/BusinessMgrMobile.iOS/Assets.xcassets/AppIcon.appiconset/Icon87.png b/BusinessMgrMobile/BusinessMgrMobile.iOS/Assets.xcassets/AppIcon.appiconset/Icon87.png new file mode 100644 index 0000000000000000000000000000000000000000..4954a4bd33f613d45f74dc0b12beb516e3b38661 GIT binary patch literal 2758 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 z + + + Debug + iPhoneSimulator + 8.0.30703 + 2.0 + {2B40FACD-C521-4AF6-9E5D-0FAFAA04B096} + {FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + {6143fdea-f3c2-4a09-aafa-6e230626515e} + Exe + BusinessMgrMobile.iOS + Resources + BusinessMgrMobile.iOS + NSUrlSessionHandler + + + + + true + full + false + bin\iPhoneSimulator\Debug + DEBUG + prompt + 4 + false + x86_64 + None + true + + + none + true + bin\iPhoneSimulator\Release + prompt + 4 + None + x86_64 + false + + + true + full + false + bin\iPhone\Debug + DEBUG + prompt + 4 + false + ARM64 + iPhone Developer + true + Entitlements.plist + + + none + true + bin\iPhone\Release + prompt + 4 + ARM64 + false + iPhone Developer + Entitlements.plist + + + none + True + bin\iPhone\Ad-Hoc + prompt + 4 + False + ARM64 + True + Automatic:AdHoc + iPhone Distribution + Entitlements.plist + + + none + True + bin\iPhone\AppStore + prompt + 4 + False + ARM64 + Automatic:AppStore + iPhone Distribution + Entitlements.plist + + + + + + + + + + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + + + + + + + + + + + + + {f9a541c6-bbea-4594-9b2e-effa982d9e2e} + SaBusMgrCore + + + {9fb2542a-6bf7-47b9-8f45-d551f6a318c8} + SacsCoreBase + + + {00CD1237-514F-4B70-BB14-65FC05E38222} + SacsCoreMob + + + {0de3a997-9167-48e7-bc74-66576324b7c5} + SaBusMgrMobCore + + + + + \ No newline at end of file diff --git a/BusinessMgrMobile/BusinessMgrMobile.iOS/Entitlements.plist b/BusinessMgrMobile/BusinessMgrMobile.iOS/Entitlements.plist new file mode 100644 index 0000000..e9a3005 --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile.iOS/Entitlements.plist @@ -0,0 +1,7 @@ + + + + + + + diff --git a/BusinessMgrMobile/BusinessMgrMobile.iOS/Info.plist b/BusinessMgrMobile/BusinessMgrMobile.iOS/Info.plist new file mode 100644 index 0000000..9fcb00f --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile.iOS/Info.plist @@ -0,0 +1,38 @@ + + + + + UIDeviceFamily + + 1 + 2 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + MinimumOSVersion + 8.0 + CFBundleDisplayName + BusinessMgrMobile + CFBundleIdentifier + com.companyname.BusinessMgrMobile + CFBundleVersion + 1.0 + UILaunchStoryboardName + LaunchScreen + CFBundleName + BusinessMgrMobile + XSAppIconAssets + Assets.xcassets/AppIcon.appiconset + + diff --git a/BusinessMgrMobile/BusinessMgrMobile.iOS/Main.cs b/BusinessMgrMobile/BusinessMgrMobile.iOS/Main.cs new file mode 100644 index 0000000..c3ce51a --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile.iOS/Main.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +using Foundation; +using UIKit; + +namespace BusinessMgrMobile.iOS +{ + public class Application + { + // This is the main entry point of the application. + static void Main(string[] args) + { + // if you want to use a different Application Delegate class from "AppDelegate" + // you can specify it here. + UIApplication.Main(args, null, "AppDelegate"); + } + } +} diff --git a/BusinessMgrMobile/BusinessMgrMobile.iOS/Properties/AssemblyInfo.cs b/BusinessMgrMobile/BusinessMgrMobile.iOS/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..811b102 --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile.iOS/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("BusinessMgrMobile.iOS")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("BusinessMgrMobile.iOS")] +[assembly: AssemblyCopyright("Copyright © 2014")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("72bdc44f-c588-44f3-b6df-9aace7daafdd")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/BusinessMgrMobile/BusinessMgrMobile.iOS/Resources/Default-568h@2x.png b/BusinessMgrMobile/BusinessMgrMobile.iOS/Resources/Default-568h@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..26c6461e50acdf5342b6d3de82513ad48e562c4c GIT binary patch literal 8884 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 literal 0 HcmV?d00001 diff --git a/BusinessMgrMobile/BusinessMgrMobile.iOS/Resources/Default@2x.png b/BusinessMgrMobile/BusinessMgrMobile.iOS/Resources/Default@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..dbd6bd3e8646fe4dfa515cf345cbcb30271ae103 GIT binary patch literal 8368 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 GkpBQzOK;x* literal 0 HcmV?d00001 diff --git a/BusinessMgrMobile/BusinessMgrMobile.iOS/Resources/LaunchScreen.storyboard b/BusinessMgrMobile/BusinessMgrMobile.iOS/Resources/LaunchScreen.storyboard new file mode 100644 index 0000000..a639c2f --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile.iOS/Resources/LaunchScreen.storyboard @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/BusinessMgrMobile/BusinessMgrMobile/BusinessMgrMobile.projitems b/BusinessMgrMobile/BusinessMgrMobile/BusinessMgrMobile.projitems new file mode 100644 index 0000000..8e1cfb2 --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile/BusinessMgrMobile.projitems @@ -0,0 +1,47 @@ + + + + $(MSBuildAllProjects);$(MSBuildThisFileFullPath) + true + {27BF376E-0A5E-4C9A-A8E3-23944AB08F1D} + + + Sarand.BusinessMgr + + + + + + + App.xaml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BusinessMgrMobile/BusinessMgrMobile/BusinessMgrMobile.shproj b/BusinessMgrMobile/BusinessMgrMobile/BusinessMgrMobile.shproj new file mode 100644 index 0000000..7592804 --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile/BusinessMgrMobile.shproj @@ -0,0 +1,11 @@ + + + + {27BF376E-0A5E-4C9A-A8E3-23944AB08F1D} + + + + + + + \ No newline at end of file diff --git a/BusinessMgrMobile/BusinessMgrMobile/Mobile/App/App.xaml b/BusinessMgrMobile/BusinessMgrMobile/Mobile/App/App.xaml new file mode 100644 index 0000000..31e1821 --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile/Mobile/App/App.xaml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/BusinessMgrMobile/BusinessMgrMobile/Mobile/App/App.xaml.cs b/BusinessMgrMobile/BusinessMgrMobile/Mobile/App/App.xaml.cs new file mode 100644 index 0000000..b19c1cc --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile/Mobile/App/App.xaml.cs @@ -0,0 +1,199 @@ +using Sarand.Core.App; +using Sarand.Core.Base; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.WebService; +using Sarand.BusinessMgr.Mobile.Core.App; +using Sarand.BusinessMgr.Mobile.Core.CodeTypes; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Xamarin.Forms; +using Xamarin.Forms.Xaml; +using static Sarand.BusinessMgr.Mobile.Core.App.SbmSessionProfile_Mobile; + +[assembly: XamlCompilation(XamlCompilationOptions.Compile)] +namespace Sarand.BusinessMgr.Mobile.App +{ + //======================================================================= + public partial class App : SbmMobileApplication + { + //------------------------------------------------------------------- + // Data members. + private static App app; + private SbmSessionProfile_Mobile_App sessionProfile; + private SbmCodeTypeConsole_Mobile codeTypeConsole; + private readonly PropertySet properties; + + //------------------------------------------------------------------- + // Construction. + public App (SbmMobile.Platform mobilePlatform) + { + // Platform. + MobilePlatform = mobilePlatform; + + InitializeComponent(); + + // Globals. + app = this; + SbmGlobals_Mobile.Application = this; + SbmGlobals.Application = new SbmApplication_Mobile(properties, SessionContext); + List startupErrors = new List(); + try + { + // Session profile. + sessionProfile = new SbmSessionProfile_Mobile_App(null); + sessionProfile.PropertyModified += SessionProfile_PropertyModified; + SbmGlobals_Mobile.SessionProfile = sessionProfile; + RestorePersistentSessionProperties(); + // Code Type Console. + codeTypeConsole = new SbmCodeTypeConsole_Mobile(); + codeTypeConsole.RefreshCodeTypes(); + } + catch (Exception exc) + { + String msg = exc.GetType().Name + ": " + exc.Message; + Logger.Error(msg + ExceptionUtil.GetStackEntries(exc, 8).Concat("", "\n\t")); + startupErrors.Add(msg); + } + + try + { + // Configure main page. + SbmMainPage = new SbmMainPage(); + MainPage = new NavigationPage(SbmMainPage); + if (startupErrors.Count > 0) + MainPage.DisplayAlert("Sarand BusinessMgr Mobile", "Startup errors:\n" + startupErrors.Concat("", "\n"), "OK"); + } + catch (Exception exc) + { + String msg = exc.GetType().Name + ": " + exc.Message; + Logger.Error(msg + ExceptionUtil.GetStackEntries(exc, 8).Concat("", "\n\t")); + } + } + + //------------------------------------------------------------------- + // Properties. + public static App GetInstance () { return app; } + public SbmMainPage SbmMainPage { get; private set; } + public SbmSessionContext_Mobile SessionContext { get; private set; } + + //------------------------------------------------------------------- + // W e b S e r v i c e + //------------------------------------------------------------------- + public override async Task IsWebServiceAlive (SbmInstanceDefinition instanceDefinition) + { + SbmWebServiceClient webServiceClient = new SbmWebServiceClient(); + return await webServiceClient.RequestIsAlive(instanceDefinition); + } + + //------------------------------------------------------------------- + // I n s t a n c e D e f i n i t i o n s + //------------------------------------------------------------------- + public class SbmInstanceDefinition_App : SbmInstanceDefinition + { + public SbmInstanceDefinition_App (String caption, String url) : base(caption, url) { } + } + public override void SetInstance (SbmInstanceDefinition instanceDefinition) + { + sessionProfile.SetInstanceDefinition(instanceDefinition); + + // Store Instance Definition properties. + Properties[PropertyName_Context_Instance_Url] = sessionProfile.InstanceDefinition.URL; + SavePropertiesAsync(); + + // Refresh instance dependent data. + if (codeTypeConsole != null) codeTypeConsole.RefreshCodeTypes(); + } + + //------------------------------------------------------------------- + // S e s s i o n P r o f i l e E v e n t s + //------------------------------------------------------------------- + private void SessionProfile_PropertyModified (object sender, PropertyModifiedEventArgs e) + { + // Save significant session properties to persistant storage. + SbmSessionProfile_Mobile sessionProfile = SbmGlobals_Mobile.SessionProfile; + if (sessionProfile == null) return; + switch (e.Property) + { + case ModifiedProperty.EmailAddress: + Properties[PropertyName_Context_DisplayName] = sessionProfile.DisplayName; + SavePropertiesAsync(); + break; + } + } + + //------------------------------------------------------------------- + // C o n s o l e s + //------------------------------------------------------------------- + public override SbmCodeTypeConsole_Mobile CodeTypeConsole { get { return codeTypeConsole; } } + + //------------------------------------------------------------------- + // P a g e N a v i g a t i o n + //------------------------------------------------------------------- + private bool currentPageModal = false; + public bool IsModalPage () + { + return currentPageModal; + } + public void SetCurrentPageModal (bool currentPageModal) + { + this.currentPageModal = currentPageModal; + } + + //------------------------------------------------------------------- + // A p p l i c a t i o n E v e n t s + //------------------------------------------------------------------- + protected override void OnStart () + { + // Handle when your app starts + } + + protected override void OnSleep () + { + // Handle when your app sleeps + } + + protected override void OnResume () + { + // Handle when your app resumes + } + + //------------------------------------------------------------------- + // U n h a n d l e d E x c e p t i o n s + //------------------------------------------------------------------- + public void OnUnhandledException (object sender, object exceptionObject, bool isTerminating) + { + String exceptionMessage = "[No message]"; + Exception exc = exceptionObject as Exception; + while (exc != null && exc.InnerException != null) + exc = exc.InnerException; + if (exc != null) + exceptionMessage = exc.Message; + if (isTerminating) + exceptionMessage += ". Terminating."; + Logger.Error("UnhandledException " + exc.GetType().Name + ": " + exceptionMessage + ExceptionUtil.GetStackEntries(exc, 8).Concat("", "\n\t")); + } + public void UnobservedTaskException (object sender, UnobservedTaskExceptionEventArgs e) + { + Exception exc = e.Exception; + while (exc.InnerException != null) + exc = exc.InnerException; + String exceptionMessage = exc.Message; + if (e.Observed) + exceptionMessage += ". Observed."; + Logger.Error("UnobservedTaskException " + exc.GetType().Name + ": " + exceptionMessage + ExceptionUtil.GetStackEntries(exc, 8).Concat("", "\n\t")); + } + public void UnhandledExceptionRaiser (object sender, Exception exc, bool handled) + { + while (exc.InnerException != null) + exc = exc.InnerException; + String exceptionMessage = exc.Message; + if (handled) + exceptionMessage += ". Handled."; + Logger.Error("UnhandledException " + exc.GetType().Name + ": " + exceptionMessage + ExceptionUtil.GetStackEntries(exc, 8).Concat("", "\n\t")); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/BusinessMgrMobile/BusinessMgrMobile/Mobile/App/Commands/SbmCommand_Accounts_Customer.cs b/BusinessMgrMobile/BusinessMgrMobile/Mobile/App/Commands/SbmCommand_Accounts_Customer.cs new file mode 100644 index 0000000..277d404 --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile/Mobile/App/Commands/SbmCommand_Accounts_Customer.cs @@ -0,0 +1,38 @@ +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Mobile.Core.App; +using Sarand.BusinessMgr.Mobile.Forms.Pages.Templates; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.App.Commands +{ + //======================================================================= + public class SbmCommand_Accounts_Customer : SbmCommand_Mobile + { + //------------------------------------------------------------------- + // Construction. + public SbmCommand_Accounts_Customer () : base(null) + { + } + + //------------------------------------------------------------------- + public override bool CanExecute (object commandParam) + { + //if (!SecurityProfile.Accounts.CanView) return false; + if (!SbmAppConsole.IsViewApplicable(UserContext, Sbm.View.Contacts_Associations_Customer)) return false; + return true; + } + + //------------------------------------------------------------------- + ///

Execute command. + public override void Execute (object commandParam) + { + if (!CanExecute(commandParam)) return; + App.GetInstance().SbmMainPage.SwitchView(SbmMobile.MainView.Customer, Page_Template_Main.PageBodyMode.SelfScrolling); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/BusinessMgrMobile/BusinessMgrMobile/Mobile/App/Commands/SbmCommand_Accounts_Supplier.cs b/BusinessMgrMobile/BusinessMgrMobile/Mobile/App/Commands/SbmCommand_Accounts_Supplier.cs new file mode 100644 index 0000000..cb3ceb7 --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile/Mobile/App/Commands/SbmCommand_Accounts_Supplier.cs @@ -0,0 +1,38 @@ +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Mobile.Core.App; +using Sarand.BusinessMgr.Mobile.Forms.Pages.Templates; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.App.Commands +{ + //======================================================================= + public class SbmCommand_Accounts_Supplier : SbmCommand_Mobile + { + //------------------------------------------------------------------- + // Construction. + public SbmCommand_Accounts_Supplier () : base(null) + { + } + + //------------------------------------------------------------------- + public override bool CanExecute (object commandParam) + { + //if (!SecurityProfile.Accounts.CanView) return false; + if (!SbmAppConsole.IsViewApplicable(UserContext, Sbm.View.Contacts_Associations_Supplier)) return false; + return true; + } + + //------------------------------------------------------------------- + /// Execute command. + public override void Execute (object commandParam) + { + if (!CanExecute(commandParam)) return; + App.GetInstance().SbmMainPage.SwitchView(SbmMobile.MainView.Supplier, Page_Template_Main.PageBodyMode.SelfScrolling); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/BusinessMgrMobile/BusinessMgrMobile/Mobile/App/Commands/SbmCommand_Home.cs b/BusinessMgrMobile/BusinessMgrMobile/Mobile/App/Commands/SbmCommand_Home.cs new file mode 100644 index 0000000..5562e65 --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile/Mobile/App/Commands/SbmCommand_Home.cs @@ -0,0 +1,36 @@ +using Sarand.BusinessMgr.Mobile.Core.App; +using Sarand.BusinessMgr.Mobile.Forms.Pages.Templates; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.App.Commands +{ + //======================================================================= + public class SbmCommand_Home : SbmCommand_Mobile + { + //------------------------------------------------------------------- + // Construction. + public SbmCommand_Home () : base(null) + { + } + + //------------------------------------------------------------------- + public override bool CanExecute (object commandParam) + { + if (!UserContext.ValidUser) return false; + return true; + } + + //------------------------------------------------------------------- + /// Execute command. + public override void Execute (object commandParam) + { + if (!CanExecute(commandParam)) return; + App.GetInstance().SbmMainPage.SwitchView(SbmMobile.MainView.Home, Page_Template_Main.PageBodyMode.Scrollable); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/BusinessMgrMobile/BusinessMgrMobile/Mobile/App/Commands/SbmCommand_Logout.cs b/BusinessMgrMobile/BusinessMgrMobile/Mobile/App/Commands/SbmCommand_Logout.cs new file mode 100644 index 0000000..2cfd707 --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile/Mobile/App/Commands/SbmCommand_Logout.cs @@ -0,0 +1,37 @@ +using Sarand.BusinessMgr.Mobile.Core.App; +using Sarand.BusinessMgr.Mobile.Forms.Pages.Templates; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.App.Commands +{ + //======================================================================= + public class SbmCommand_Logout : SbmCommand_Mobile + { + //------------------------------------------------------------------- + // Construction. + public SbmCommand_Logout () : base(null) + { + } + + //------------------------------------------------------------------- + public override bool CanExecute (object commandParam) + { + if (!UserContext.ValidUser) return false; + return true; + } + + //------------------------------------------------------------------- + /// Execute command. + public override void Execute (object commandParam) + { + if (!CanExecute(commandParam)) return; + SbmGlobals_Mobile.SessionProfile.LogoutUser(); + App.GetInstance().SbmMainPage.SwitchView(SbmMobile.MainView.Login, Page_Template_Main.PageBodyMode.Scrollable); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/BusinessMgrMobile/BusinessMgrMobile/Mobile/App/SbmApplication_Mobile.cs b/BusinessMgrMobile/BusinessMgrMobile/Mobile/App/SbmApplication_Mobile.cs new file mode 100644 index 0000000..7a66166 --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile/Mobile/App/SbmApplication_Mobile.cs @@ -0,0 +1,161 @@ +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Mgr; +using Sarand.BusinessMgr.Mobile.Core.App; +using Sarand.Core.Base; +using Sarand.Core.CodeTypes; +using Sarand.Core.Dbas.Base; +using Sarand.Core.Diary; +using Sarand.Core.Interfaces; +using Sarand.Core.IO; +using Sarand.Core.ItemData; +using Sarand.Core.ItemDocs; +using Sarand.Core.ItemOptions; +using Sarand.Core.ReferenceData; +using Sarand.Core.Security; +using Sarand.Core.UpdateLog; +using System; +using System.Collections.Generic; +using System.Reflection; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.App +{ + //======================================================================= + class SbmApplication_Mobile : SbmApplication + { + //------------------------------------------------------------------- + // Data members. + private readonly SbmSessionContext_Mobile sessionContext; + + //------------------------------------------------------------------- + // Construction. + public SbmApplication_Mobile (PropertySet properties, SbmSessionContext_Mobile sessionContext) : + base(properties) + { + this.sessionContext = sessionContext; + } + + + protected override void Dispose (bool disposing) + { + if (disposing) + { + } + base.Dispose(disposing); + } + + //------------------------------------------------------------------- + // D a t a b a s e + //------------------------------------------------------------------- + public override ISacsDatabase GetDatabase (SbmSessionContext sessionContext) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Utilities. + public override bool TableExists (SbmSessionContext sessionContext, SbmDbDfn.TableIdx tableIdx) + { + throw new NotImplementedException(); + } + + public override bool ColumnExists (SbmSessionContext sessionContext, SbmDbDfn.ColumnIdx columnIdx) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // C o n f i g u r a t i o n C o n s o l e + //------------------------------------------------------------------- + private SbmConfigConsole configConsole = null; + public override SbmConfigConsole GetConfigConsole (SbmSessionContext sessionContext) + { + String fn = GetType().Name + ".GetConfigConsole"; + // Initialise Configuration console. + configConsole = SbmConfigConsole.CreateConsole(sessionContext); + return configConsole; + } + + //------------------------------------------------------------------- + // Load config library. + + //------------------------------------------------------------------- + // M a n a g e r s + //------------------------------------------------------------------- + public override SbmAccountMgr CreateAccountMgr (SbmUserContext userContext) + { + throw new NotImplementedException(); + } + + public override SbmTransactionMgr CreateTransactionMgr (SbmUserContext userContext) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // D i a r y C o n s o l e + //------------------------------------------------------------------- + public override SaDiaryConsole GetDiaryConsole (SbmUserContext userContext) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Security console. + public override SaSecurityConsole GetSecurityConsole (SbmUserContext userContext) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Code Type console. + public override SaCodeTypeConsole GetCodeTypeConsole (SbmUserContext userContext) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Reference Data console. + public override SaReferenceDataConsole GetReferenceDataConsole (SbmUserContext userContext) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Item Doc console. + public override SaItemDocConsole GetItemDocConsole (SbmUserContext userContext) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Item Data console. + public override SaItemDataConsole GetItemDataConsole (SbmUserContext userContext) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Item Option console. + public override SaItemOptionConsole GetItemOptionConsole (SbmUserContext userContext) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Interface console. + public override SaInterfaceConsole GetInterfaceConsole (SbmUserContext userContext) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update Log console. + public override SaUpdateLogConsole GetUpdateLogConsole (SbmUserContext userContext) + { + throw new NotImplementedException(); + } + + } + //======================================================================= +} diff --git a/BusinessMgrMobile/BusinessMgrMobile/Mobile/App/SbmMainPage.cs b/BusinessMgrMobile/BusinessMgrMobile/Mobile/App/SbmMainPage.cs new file mode 100644 index 0000000..5ea41bf --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile/Mobile/App/SbmMainPage.cs @@ -0,0 +1,176 @@ +using Sarand.Core.Base; +using Sarand.BusinessMgr.Mobile.Core.App; +using Sarand.BusinessMgr.Mobile.Core.Forms.Panels; +using Sarand.BusinessMgr.Mobile.Forms.Pages.Templates; +using Sarand.BusinessMgr.Mobile.Forms.Views; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Xamarin.Forms; +using Sarand.BusinessMgr.Mobile.Core.Forms.Base; +using Sarand.BusinessMgr.Mobile.Forms.Panels.Main; +using Sarand.BusinessMgr.Mobile.Forms.Panels.Main.Accounts; + +namespace Sarand.BusinessMgr.Mobile.App +{ + //======================================================================= + public class SbmMainPage : Page_Template_Main + { + //------------------------------------------------------------------- + // Definitions. + + //------------------------------------------------------------------- + // Data members. + private SbmSessionProfile_Mobile sessionProfile = SbmGlobals_Mobile.SessionProfile; + private SbmMenu menu = new SbmMenu(); + + //------------------------------------------------------------------- + // Construction. + public SbmMainPage () : base() + { + Title = "Sarand BusinessMgr"; + NavigationPage.SetHasNavigationBar(this, false); + InitialiseComponents(); + } + + //------------------------------------------------------------------- + // Properties. + protected override SbmMenuView MenuView { get { return menu; } } + public SbmMobile.MainView MainView { get; private set; } = SbmMobile.MainView.Unknown; + private SbmMainPanel MainPanel { get; set; } + + //------------------------------------------------------------------- + // I n i t i a l i s e + //------------------------------------------------------------------- + private void InitialiseComponents () + { + // Menu. + menu.MainPage = this; + + // Initial view. + SwitchView(SbmMobile.MainView.Login, PageBodyMode.Scrollable); + } + + //------------------------------------------------------------------- + // S w i t c h V i e w + //------------------------------------------------------------------- + public void SwitchView (SbmMobile.MainView view, PageBodyMode bodyMode) + { + String fn = GetType().Name + ".SwitchView"; + // Check for valid session. + if (view != SbmMobile.MainView.Login && !sessionProfile.UserContext.ValidUser) + view = SbmMobile.MainView.Login; + // Configure requested view. + SbmMainPanel mainPanel = null; + try + { + switch (view) + { + //------------------------------------------------------- + // Application. + case SbmMobile.MainView.Login: + { + SbmMainPanel_Login.Config panelConfig = new SbmMainPanel_Login.Config(); + SbmMainPanel_Login loginPanel = new SbmMainPanel_Login(panelConfig); + loginPanel.UserLogin += LoginPanel_UserLogin; + mainPanel = loginPanel; + break; + } + case SbmMobile.MainView.Home: + { + SbmMainPanel_Home.Config panelConfig = new SbmMainPanel_Home.Config(); + SbmMainPanel_Home loginPanel = new SbmMainPanel_Home(panelConfig); + mainPanel = loginPanel; + break; + } + //------------------------------------------------------- + // Accounts. + case SbmMobile.MainView.Customer: + { + SbmMainPanel_Association_Customer.Config panelConfig = new SbmMainPanel_Association_Customer.Config(); + SbmMainPanel_Association_Customer loginPanel = new SbmMainPanel_Association_Customer(panelConfig); + mainPanel = loginPanel; + break; + } + case SbmMobile.MainView.Supplier: + { + SbmMainPanel_Association_Supplier.Config panelConfig = new SbmMainPanel_Association_Supplier.Config(); + SbmMainPanel_Association_Supplier loginPanel = new SbmMainPanel_Association_Supplier(panelConfig); + mainPanel = loginPanel; + break; + } + //------------------------------------------------------- + } + } + catch (Exception exc) { Logger.Warn(fn + " " + exc.GetLogMessage(6)); } + if (mainPanel != null) + { + // Clear previous view. + if (MainPanel != null) + { + MainPanel = null; + } + // Display new view. + MainView = view; + MainPanel = mainPanel; + SwitchPageBody(MainPanel, bodyMode); + } + } + + //------------------------------------------------------------------- + // U s e r L o g i n + //------------------------------------------------------------------- + private void LoginPanel_UserLogin (object sender, SbmMainPanel_Login.UserLoginEventArgs e) + { + // Store defaults for next session. + SbmGlobals_Mobile.Application.DefaultDisplayName = e.DisplayName; + SbmGlobals_Mobile.Application.StorePersistentSessionProperties(); + // Switch to 'Home' view. + SwitchView(SbmMobile.MainView.Home, PageBodyMode.Scrollable); + } + + //------------------------------------------------------------------- + // W e b S e r v i c e + //------------------------------------------------------------------- + public async Task IsWebServiceActive () + { + // Test connection to Web Service. + if (!await App.GetInstance().IsWebServiceAlive(SbmGlobals_Mobile.SessionProfile.InstanceDefinition)) + { + await DisplayAlert("Unable to communicate with server at the moment."); + return false; + } + + // Verify Code Console population. + if (!SbmGlobals_Mobile.Application.CodeTypeConsole.Populated) + { + await DisplayAlert("Code types are not populated.\n\nCheck and resave configuration to refresh."); + return false; + } + + return true; + } + + //------------------------------------------------------------------- + // P a g e E v e n t s + //------------------------------------------------------------------- + protected override void OnParentSet () + { + base.OnParentSet(); + } + //------------------------------------------------------------------- + protected override void OnAppearing () + { + base.OnAppearing(); + } + protected override void OnDisappearing () + { + base.OnDisappearing(); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} \ No newline at end of file diff --git a/BusinessMgrMobile/BusinessMgrMobile/Mobile/App/SbmMenu.cs b/BusinessMgrMobile/BusinessMgrMobile/Mobile/App/SbmMenu.cs new file mode 100644 index 0000000..66e91ac --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile/Mobile/App/SbmMenu.cs @@ -0,0 +1,102 @@ +using Sarand.Core.Base; +using Sarand.BusinessMgr.Mobile.App.Commands; +using Sarand.BusinessMgr.Mobile.Core.App; +using Sarand.BusinessMgr.Mobile.Forms.Views; +using System; +using System.Collections.Generic; +using System.Text; +using Xamarin.Essentials; +using Xamarin.Forms; +using Sarand.BusinessMgr.Mobile.Forms.Pages.Config; + +namespace Sarand.BusinessMgr.Mobile.App +{ + //======================================================================= + public class SbmMenu : SbmMenuView + { + //------------------------------------------------------------------- + // Definitions. + + //------------------------------------------------------------------- + // Data members. + private readonly List menuOptions = new List(); + + //------------------------------------------------------------------- + // Construction. + public SbmMenu () + { + } + + //------------------------------------------------------------------- + // Properties. + public SbmMainPage MainPage { get; set; } + public INavigation MainViewNavigation { get { return MainPage.Navigation; } } + + //------------------------------------------------------------------- + // M e n u O p t i o n s + //------------------------------------------------------------------- + public override List MenuOptions + { + get + { + ClearMenuOptions(); + if (menuOptions.Count < 1) + { + // Home. + SacsCommand homeCommand = new SbmCommand_Home(); + if (homeCommand.CanExecute(null)) + menuOptions.Add(new OptionData() { Caption = "Home", Command = homeCommand }); + // Accounts. + List commodityCommands = new List(); + commodityCommands.Add(new OptionData() { Caption = "Customer", Command = new SbmCommand_Accounts_Customer() }); + commodityCommands.Add(new OptionData() { Caption = "Supplier", Command = new SbmCommand_Accounts_Supplier() }); + if (commodityCommands.Exists(item => item.Command.CanExecute(null))) + { + menuOptions.Add(new OptionData() { Caption = "Accounts", Heading = true }); + menuOptions.AddRange(commodityCommands); + } + // Config. + menuOptions.Add(new OptionData() { Caption = "Config", Heading = true }); + //menuOptions.Add(new OptionData() { Caption = "Options", Command = new SbmCommand_Mobile(OnConfig_OptionsClicked) }); + menuOptions.Add(new OptionData() { Caption = "System", Command = new SbmCommand_Mobile(OnConfig_SystemClicked) }); + menuOptions.Add(new OptionData() { Caption = "Update", Command = new SbmCommand_Mobile(OnConfig_UpdateClicked) }); + // Logout. + SacsCommand logoutCommand = new SbmCommand_Logout(); + if (logoutCommand.CanExecute(null)) + menuOptions.Add(new OptionData() { Caption = "Logout", Command = logoutCommand }); + } + return menuOptions; + } + } + public void ClearMenuOptions () + { + menuOptions.Clear(); + } + + //------------------------------------------------------------------- + // C o n f i g + //------------------------------------------------------------------- + private async void OnConfig_OptionsClicked (object commandParam) + { + InvokeMenuOptionClicked(); + SbmPage_Config_Options.Config pageConfig = new SbmPage_Config_Options.Config(); + await MainViewNavigation.PushModalAsync(new SbmPage_Config_Options(pageConfig), false); + } + //------------------------------------------------------------------- + private async void OnConfig_SystemClicked (object commandParam) + { + InvokeMenuOptionClicked(); + SbmPage_Config_System.Config pageConfig = new SbmPage_Config_System.Config(); + await MainViewNavigation.PushModalAsync(new SbmPage_Config_System(pageConfig), false); + } + //------------------------------------------------------------------- + private async void OnConfig_UpdateClicked (object commandParam) + { + InvokeMenuOptionClicked(); + await Browser.OpenAsync("http://www.sarand.com/Android/BusinessMgrMobile.apk", BrowserLaunchMode.SystemPreferred); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/BusinessMgrMobile/BusinessMgrMobile/Mobile/App/SbmSessionProfile_Mobile_App.cs b/BusinessMgrMobile/BusinessMgrMobile/Mobile/App/SbmSessionProfile_Mobile_App.cs new file mode 100644 index 0000000..0debc37 --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile/Mobile/App/SbmSessionProfile_Mobile_App.cs @@ -0,0 +1,30 @@ +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Mobile.Core.App; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.App +{ + //======================================================================= + public class SbmSessionProfile_Mobile_App : SbmSessionProfile_Mobile + { + //------------------------------------------------------------------- + // Construction. + public SbmSessionProfile_Mobile_App (SbmSessionContext sessionContext) : + base(sessionContext) + { + } + + //------------------------------------------------------------------- + // S i t e + //------------------------------------------------------------------- + public void SetInstanceDefinition (SbmInstanceDefinition instanceDefinition) + { + InstanceDefinition = instanceDefinition; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Components/Accounts/SbmComponents_Association.cs b/BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Components/Accounts/SbmComponents_Association.cs new file mode 100644 index 0000000..14ef541 --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Components/Accounts/SbmComponents_Association.cs @@ -0,0 +1,97 @@ +using Sarand.Core.Base; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.BusinessMgr.Mobile.Core.App; +using Sarand.BusinessMgr.Mobile.Core.Forms.Base; +using System; +using System.Collections.Generic; +using System.Text; +using Xamarin.Forms; + +namespace Sarand.BusinessMgr.Mobile.Forms.Components.Accounts +{ + //======================================================================= + public class SbmComponents_Association : SbmComponents + { + //------------------------------------------------------------------- + // Data members. + private SbmSessionProfile_Mobile sessionProfile = SbmGlobals_Mobile.SessionProfile; + private readonly List associationTypes = new List(); + + //------------------------------------------------------------------- + // Construction. + public SbmComponents_Association () + { + //associationTypes.AddRange(SbmSystem.GetCodesOfType(Sbm.SystemCode.AssociationType)); + InitialiseComponents(); + } + + //------------------------------------------------------------------- + // Properties. + public String MessageTitle { get; set; } = "Accounts Association"; + + //------------------------------------------------------------------- + // Utilities. + + //------------------------------------------------------------------- + // I n i t i a l i s e + //------------------------------------------------------------------- + private void InitialiseComponents () + { + Changed = false; + } + + //------------------------------------------------------------------- + // P o p u l a t i o n + //------------------------------------------------------------------- + public void PopulateToControls (SbmContainer.Data data) + { + Changed = false; + } + public void PopulateToControls (SbmAssociation.Data data) + { + Changed = false; + } + //------------------------------------------------------------------- + public bool IsDataValid (SbmAssociation.Data data) + { + return true; + } + //------------------------------------------------------------------- + public void PopulateFromControls (SbmAssociation.Data data) + { + } + + //------------------------------------------------------------------- + // C o n t r o l A c t i v i t y + //------------------------------------------------------------------- + protected override void SetControlActivity () + { + SetControlsReadOnly(); + } + protected override void SetControlsReadOnly () + { + } + + //------------------------------------------------------------------- + // C o n t r o l E v e n t s + //------------------------------------------------------------------- + // Account Code. + private void EntryAccountCode_TextChanged (object sender, TextChangedEventArgs e) + { + Changed = true; + } + private void EntryAccountCode_Completed (object sender, EventArgs e) + { + } + //------------------------------------------------------------------- + // Account Size. + private void PickerAccountSize_SelectedIndexChanged (object sender, EventArgs e) + { + Changed = true; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Components/SbmComponents_Config.cs b/BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Components/SbmComponents_Config.cs new file mode 100644 index 0000000..6c3428f --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Components/SbmComponents_Config.cs @@ -0,0 +1,84 @@ +using Sarand.Core.Base; +using Sarand.BusinessMgr.Mobile.Core.App; +using Sarand.BusinessMgr.Mobile.Core.Forms.Base; +using System; +using System.Collections.Generic; +using System.Text; +using Xamarin.Forms; + +namespace Sarand.BusinessMgr.Mobile.Forms.Components +{ + //======================================================================= + public class SbmComponents_Config : SbmComponents + { + //------------------------------------------------------------------- + // Data members. + private SbmSessionProfile_Mobile sessionProfile = SbmGlobals_Mobile.SessionProfile; + + //------------------------------------------------------------------- + // Construction. + public SbmComponents_Config () + { + InitialiseComponents(); + } + + //------------------------------------------------------------------- + // Properties. + // User. + public SbmLabel LabelName { get; } = new SbmLabel() { Text = "Display Name" }; + public SbmEntryView EntryName { get; } = new SbmEntryView() { ReadOnly = true }; + + //------------------------------------------------------------------- + // Utilities. + + //------------------------------------------------------------------- + // Utilities. + public void RefreshProperties () + { + // User and Email. + EntryName.Text = sessionProfile.DisplayName; + Changed = false; + } + + //------------------------------------------------------------------- + // I n i t i a l i s e + //------------------------------------------------------------------- + private void InitialiseComponents () + { + // User. + EntryName.Text = sessionProfile.DisplayName; + EntryName.TextChanged += EntryName_TextChanged; + EntryName.Completed += EntryName_Completed; + + RefreshProperties(); + + Changed = false; + } + + //------------------------------------------------------------------- + // C o n t r o l A c t i v i t y + //------------------------------------------------------------------- + protected override void SetControlActivity () + { + SetControlsReadOnly(); + } + protected override void SetControlsReadOnly () + { + EntryName.ReadOnly = ReadOnly; + } + + //------------------------------------------------------------------- + // C o n t r o l E v e n t s + //------------------------------------------------------------------- + private void EntryName_TextChanged (object sender, TextChangedEventArgs e) + { + Changed = true; + } + private void EntryName_Completed (object sender, EventArgs e) + { + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Components/SbmComponents_Login.cs b/BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Components/SbmComponents_Login.cs new file mode 100644 index 0000000..6ff2866 --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Components/SbmComponents_Login.cs @@ -0,0 +1,93 @@ +using Sarand.Core.Base; +using Sarand.BusinessMgr.Mobile.Core.App; +using Sarand.BusinessMgr.Mobile.Core.Forms.Base; +using System; +using System.Collections.Generic; +using System.Text; +using Xamarin.Forms; + +namespace Sarand.BusinessMgr.Mobile.Forms.Components +{ + //======================================================================= + public class SbmComponents_Login : SbmComponents + { + //------------------------------------------------------------------- + // Data members. + private SbmSessionProfile_Mobile sessionProfile = SbmGlobals_Mobile.SessionProfile; + + //------------------------------------------------------------------- + // Construction. + public SbmComponents_Login () + { + InitialiseComponents(); + } + + //------------------------------------------------------------------- + // Properties. + // Email. + public SbmLabel LabelEmail { get; } = new SbmLabel() { Text = "Email" }; + public SbmEntryView EntryEmail { get; } = new SbmEntryView() { Keyboard = Keyboard.Email }; + // Password. + public SbmLabel LabelPassword { get; } = new SbmLabel() { Text = "Password" }; + public SbmEntryView EntryPassword { get; } = new SbmEntryView() { IsPassword = true }; + + //------------------------------------------------------------------- + // Utilities. + + //------------------------------------------------------------------- + // Utilities. + + //------------------------------------------------------------------- + // I n i t i a l i s e + //------------------------------------------------------------------- + private void InitialiseComponents () + { + // Display Name. + if (SbmGlobals_Mobile.Application.DefaultDisplayName != null) + EntryEmail.Text = SbmGlobals_Mobile.Application.DefaultDisplayName; + EntryEmail.TextChanged += EntryEmail_TextChanged; + EntryEmail.Completed += EntryEmail_Completed; + + // Password. + EntryPassword.TextChanged += EntryPassword_TextChanged; + EntryPassword.Completed += EntryPassword_Completed; + + Changed = false; + } + + //------------------------------------------------------------------- + // C o n t r o l A c t i v i t y + //------------------------------------------------------------------- + protected override void SetControlActivity () + { + SetControlsReadOnly(); + } + protected override void SetControlsReadOnly () + { + EntryEmail.ReadOnly = ReadOnly; + EntryPassword.ReadOnly = ReadOnly; + } + + //------------------------------------------------------------------- + // C o n t r o l E v e n t s + //------------------------------------------------------------------- + private void EntryEmail_TextChanged (object sender, TextChangedEventArgs e) + { + Changed = true; + } + private void EntryEmail_Completed (object sender, EventArgs e) + { + } + //------------------------------------------------------------------- + private void EntryPassword_TextChanged (object sender, TextChangedEventArgs e) + { + Changed = true; + } + private void EntryPassword_Completed (object sender, EventArgs e) + { + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Pages/Config/SbmPage_Config_Options.cs b/BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Pages/Config/SbmPage_Config_Options.cs new file mode 100644 index 0000000..64086c5 --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Pages/Config/SbmPage_Config_Options.cs @@ -0,0 +1,78 @@ +using Sarand.Core.Base; +using Sarand.BusinessMgr.Mobile.Core.App; +using Sarand.BusinessMgr.Mobile.Core.Forms.Pages; +using System; +using Xamarin.Forms; +using Sarand.BusinessMgr.Mobile.Forms.Components; +using Sarand.BusinessMgr.Mobile.Core.Forms.Views; + +namespace Sarand.BusinessMgr.Mobile.Forms.Pages.Config +{ + //======================================================================= + public class SbmPage_Config_Options : SbmFormPage + { + //------------------------------------------------------------------- + // Definitions. + public new class Config : SbmFormPage.Config + { + } + + //------------------------------------------------------------------- + // Data members. + private Config config = new Config(); + private SbmSessionProfile_Mobile sessionProfile = SbmGlobals_Mobile.SessionProfile; + private SbmGrid optionsGrid = new SbmGrid(); + // Config components. + private SbmComponents_Config configComponents = new SbmComponents_Config(); + + //------------------------------------------------------------------- + // Construction. + public SbmPage_Config_Options (Config config) : base(config) + { + this.config = config; + Title = "Options"; + InitialiseComponents(); + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // I n i t i a l i s e + //------------------------------------------------------------------- + private void InitialiseComponents () + { + // Options grid. + FormBodyView.Content = optionsGrid; + optionsGrid.BackgroundColor = SbmMobile.PageBackgroundColor; + optionsGrid.Padding = new Thickness(4.0); + optionsGrid.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Auto }); + optionsGrid.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Star }); + optionsGrid.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Auto }); + int gridRowIdx = -1; + + // User. + gridRowIdx++; + optionsGrid.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto }); + optionsGrid.Children.Add(configComponents.LabelName, 0, gridRowIdx); + optionsGrid.Children.Add(configComponents.EntryName, 1, gridRowIdx); + Grid.SetColumnSpan(configComponents.EntryName, 2); + } + + //------------------------------------------------------------------- + // N a v i g a t i o n E v e n t s + //------------------------------------------------------------------- + protected override bool SaveFormData () + { + return true; + } + protected override bool QueryCancelForm () + { + if (!base.QueryCancelForm()) return false; + return true; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Pages/Config/SbmPage_Config_System.cs b/BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Pages/Config/SbmPage_Config_System.cs new file mode 100644 index 0000000..a29c4e8 --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Pages/Config/SbmPage_Config_System.cs @@ -0,0 +1,121 @@ +using Sarand.Core.App; +using Sarand.Core.Base; +using Sarand.BusinessMgr.Mobile.Core.App; +using Sarand.BusinessMgr.Mobile.Core.Forms.Pages; +using Sarand.BusinessMgr.Mobile.Core.Forms.Views; +using System.Collections.Generic; +using System.Linq; +using Xamarin.Essentials; +using Xamarin.Forms; +using Sarand.BusinessMgr.Mobile.Core.Forms.Base; + +namespace Sarand.BusinessMgr.Mobile.Forms.Pages.Config +{ + //======================================================================= + public class SbmPage_Config_System : SbmFormPage + { + //------------------------------------------------------------------- + // Definitions. + public new class Config : SbmFormPage.Config + { + public Config () + { + NavigationMode = NavigationMode.Close; + } + } + + //------------------------------------------------------------------- + // Data members. + private Config config = new Config(); + private SbmSessionProfile_Mobile sessionProfile = SbmGlobals_Mobile.SessionProfile; + private SbmGrid settingsGrid = new SbmGrid(); + + //------------------------------------------------------------------- + // Construction. + public SbmPage_Config_System (Config config) : base(config) + { + this.config = config; + Title = "System"; + InitialiseComponents(); + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // I n i t i a l i s e + //------------------------------------------------------------------- + private void InitialiseComponents () + { + // Settings grid. + FormBodyView.Content = settingsGrid; + settingsGrid.BackgroundColor = SbmMobile.PageBackgroundColor; + settingsGrid.Padding = new Thickness(4.0); + settingsGrid.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Star }); + settingsGrid.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Auto }); + + // Settings. + List settings = new List(); + + // Application info. + settings.Add("App name", AppInfo.Name); + settings.Add("Package name", AppInfo.PackageName); + settings.Add("Build", AppInfo.BuildString + " [" + AppInfo.VersionString + "]"); + + // Main display info. + DisplayInfo mainDisplayInfo = DeviceDisplay.MainDisplayInfo; + settings.Add("Display", mainDisplayInfo.Width.ToString() + " x " + mainDisplayInfo.Height.ToString()); + settings.Add("Density", mainDisplayInfo.Density.ToString()); + settings.Add("Orientation", mainDisplayInfo.Orientation.ToString()); + if (mainDisplayInfo.Rotation != DisplayRotation.Rotation0) + settings.Add("Rotation", mainDisplayInfo.Rotation.ToString()); + + // Application styling. + settings.Add("Font size ratio", SbmMobile.FontSizeRatio.ToString()); + + // Device info. + settings.Add("Model", DeviceInfo.Model); + if (!StringUtil.IsEmpty(DeviceInfo.Manufacturer) && !DeviceInfo.Manufacturer.EqualsCI("unknown")) + settings.Add("Manufacturer", DeviceInfo.Manufacturer); + string computerName = SacsSystem.ComputerName; + settings.Add("Device name", DeviceInfo.Name + (!StringUtil.IsEmpty(computerName) && computerName.EqualsCI(DeviceInfo.Name) ? " [" + computerName + "]" : "")); + settings.Add("Device version", DeviceInfo.VersionString); + settings.Add("Platform", DeviceInfo.Platform.ToString() + " - " + DeviceInfo.Idiom.ToString() + (DeviceInfo.DeviceType > 0 ? " [" + DeviceInfo.DeviceType.ToString() + "]" : "")); + + // Version tracking. + if (VersionTracking.IsFirstLaunchEver) + settings.Add("First launch", VersionTracking.IsFirstLaunchEver.ToString()); + if (VersionTracking.IsFirstLaunchForCurrentVersion) + settings.Add("First launch current", VersionTracking.IsFirstLaunchForCurrentVersion.ToString()); + if (VersionTracking.IsFirstLaunchForCurrentBuild) + settings.Add("First launch build", VersionTracking.IsFirstLaunchForCurrentBuild.ToString()); + if (!StringUtil.IsEmpty(VersionTracking.CurrentBuild)) + settings.Add("Current build", VersionTracking.CurrentBuild + (!StringUtil.IsEmpty(VersionTracking.CurrentVersion) ? " [" + VersionTracking.CurrentVersion + "]" : "")); + if (!StringUtil.IsEmpty(VersionTracking.PreviousBuild)) + settings.Add("Previous build", VersionTracking.PreviousBuild + (!StringUtil.IsEmpty(VersionTracking.PreviousVersion) ? " [" + VersionTracking.PreviousVersion + "]" : "")); + if (!StringUtil.IsEmpty(VersionTracking.FirstInstalledBuild)) + settings.Add("First build", VersionTracking.FirstInstalledBuild + (!StringUtil.IsEmpty(VersionTracking.FirstInstalledVersion) ? " [" + VersionTracking.FirstInstalledVersion + "]" : "")); + if (VersionTracking.VersionHistory.Count() > 0) + settings.Add("Version history", VersionTracking.VersionHistory.Concat(", ")); + if (VersionTracking.BuildHistory.Count() > 0) + settings.Add("Build history", VersionTracking.BuildHistory.Concat(", ")); + + // Populate settings. + int gridRowIdx = -1; + foreach (StringPair setting in settings) + { + gridRowIdx++; + settingsGrid.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto }); + settingsGrid.Children.Add(new SbmLabel() { Text = setting.Item1, HorizontalOptions = LayoutOptions.Start }, 0, gridRowIdx); + settingsGrid.Children.Add(new SbmLabel() { Text = setting.Item2, HorizontalOptions = LayoutOptions.StartAndExpand }, 1, gridRowIdx); + } + } + + //------------------------------------------------------------------- + // P a g e E v e n t s + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Pages/Forms/Accounts/SbmFormPage_Accounts_Associations.cs b/BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Pages/Forms/Accounts/SbmFormPage_Accounts_Associations.cs new file mode 100644 index 0000000..53d9cf3 --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Pages/Forms/Accounts/SbmFormPage_Accounts_Associations.cs @@ -0,0 +1,183 @@ +using Sarand.Core.App; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Tasks; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.BusinessMgr.Mobile.Core.App; +using Sarand.BusinessMgr.Mobile.Core.Forms.Pages; +using Sarand.BusinessMgr.Mobile.Core.Forms.Views; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Xml.Linq; +using Xamarin.Forms; +using Sarand.BusinessMgr.Mobile.Forms.Components.Accounts; +using Sarand.BusinessMgr.Mobile.Core.Forms.Base; + +namespace Sarand.BusinessMgr.Mobile.Forms.Pages.Forms.Accounts +{ + //======================================================================= + public class SbmFormPage_Accounts_Associations : SbmFormPage + { + //------------------------------------------------------------------- + // Definitions. + public new class Config : SbmFormPage.Config + { + public SysId AssociationIdToUpdate { get; set; } + } + private class AssociationData + { + public Sbm.AssociationType AssociationType { get; set; } + public SysId AccountItemId { get; set; } + } + + //------------------------------------------------------------------- + // Data members. + private readonly Config config; + private readonly AssociationData associationData = new AssociationData(); + private SbmGrid gridProperties = new SbmGrid(); + private SbmComponents_Association associationComponents = new SbmComponents_Association(); + // Data to view/update. + public SbmAssociation associationToUpdate { get; set; } + public SbmContainer association_Container { get; set; } + + //------------------------------------------------------------------- + // Construction. + public SbmFormPage_Accounts_Associations (Config config) : base(config) + { + this.config = config; + Title = "Account Association"; + AddMode = !SysId.IsValid(config.AssociationIdToUpdate); + if (config.ReadOnly) + { + associationComponents.ReadOnly = true; + } + PrepareFormData(); + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // P r e p a r a t i o n + //------------------------------------------------------------------- + private SacsTaskData taskDataPrepareData = new SacsTaskData(null); + private void PrepareFormData () + { + String fn = GetType().Name + ".PrepareFormData"; + if (!SysId.IsValid(config.AssociationIdToUpdate)) return; + + // Form is initialised on separate thread while data is retrieved from the service. + // 'Please wait' message is displayed during preparation. + // Any issue during preparation results in an alert message and the form is closed. + FormBodyView.Content = new SbmLabel() { Text = DataPreparationMessage }; + Task.Run(async () => + { + try + { + await PopulateAssociationData(taskDataPrepareData); + } + catch (Exception exc) + { + if (SacsSystem.DebugMode) Logger.Warn(fn + " " + ExceptionUtil.GetLogMessage(exc)); + CloseFormWithAlert(nameof(exc) + " on form initialisation.\n\n" + exc.Message); + } + }, taskDataPrepareData.CancellationToken) + .ContinueWith(task => + { + taskDataPrepareData.Dispose(); + }); + } + //------------------------------------------------------------------- + private async Task PopulateAssociationData (SacsTaskData taskDataPrepareData_Local) + { + String fn = GetType().Name + ".PopulateAssociationData"; + + // Retrieve Account Association and associated details. + try + { + // Retrieve Account Association. + SbmAssociation.Params prmAssociation = new SbmAssociation.Params(); + prmAssociation.IncludedIds.Add(config.AssociationIdToUpdate); + prmAssociation.StatusCat = SbmAssociation.StatusCat.Any; + //associationToUpdate = await AccountMgr.GetAssociation_Mobile(prmAssociation, taskDataPrepareData_Local); + } + catch (Exception exc) { Logger.Debug(fn + " " + exc.GetLogMessage(6)); } + if (associationToUpdate == null) + { + CloseFormWithAlert("Failed to retrieve Account movement data."); + return; + } + else + { + CloseFormWithAlert("Unrecognised asset type: " + associationToUpdate.AssociationType.ToString() + "."); + return; + } + if (taskDataPrepareData_Local.IsCancellationRequested) return; + + Device.BeginInvokeOnMainThread(() => + { + // Initialise form. + InitialiseComponents(); + }); + } + + //------------------------------------------------------------------- + // I n i t i a l i s e + //------------------------------------------------------------------- + private void InitialiseComponents () + { + // Account Repair form. + FormBodyView.Content = gridProperties; + gridProperties.RowSpacing = SbmMobile.FormGridRowSpacing; + gridProperties.ColumnSpacing = SbmMobile.FormGridColumnSpacing; + gridProperties.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto }); + gridProperties.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Star }); + gridProperties.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto }); + + //--------------------------------------------------------------- + // Populate properties to components. + associationComponents.PopulateToControls(association_Container?.GetData() ?? new SbmContainer.Data()); + associationComponents.PopulateToControls(associationToUpdate?.GetData() ?? new SbmAssociation.Data()); + + // Complete page configuration. + SetControlActivity(); + Changed = false; + } + + //------------------------------------------------------------------- + // C o n t r o l A c t i v i t y + //------------------------------------------------------------------- + protected override void SetControlActivity () + { + base.SetControlActivity(); + } + protected override void SetControlsReadOnly () + { + } + + //------------------------------------------------------------------- + // N a v i g a t i o n E v e n t s + //------------------------------------------------------------------- + protected override bool SaveFormData () + { + return true; + } + //------------------------------------------------------------------- + protected override bool QueryCancelForm () + { + if (!base.QueryCancelForm()) return false; + return true; + } + + //------------------------------------------------------------------- + // P r o p e r t y E v e n t s + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + } + //======================================================================= +} \ No newline at end of file diff --git a/BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Pages/Templates/Page_Template_Main.cs b/BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Pages/Templates/Page_Template_Main.cs new file mode 100644 index 0000000..637fb53 --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Pages/Templates/Page_Template_Main.cs @@ -0,0 +1,239 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text; +using Xamarin.Forms; +using Sarand.BusinessMgr.Mobile.Core.App; +using Sarand.Core.Mobile.Utils; +using Sarand.BusinessMgr.Mobile.Core.Forms.Pages; +using Sarand.BusinessMgr.Mobile.Core.Forms.Views; +using Sarand.BusinessMgr.Mobile.Core.Forms.Layouts; +using Sarand.BusinessMgr.Mobile.Core.Forms.Base; +using Sarand.BusinessMgr.Mobile.Forms.Views; +using Sarand.Core.Base; +using Sarand.Core.App; + +namespace Sarand.BusinessMgr.Mobile.Forms.Pages.Templates +{ + //======================================================================= + public abstract class Page_Template_Main : SbmContentPage + { + //------------------------------------------------------------------- + // Definitions. + + //------------------------------------------------------------------- + // Data members. + private SbmGrid baseGrid = new SbmGrid(); + // Application bar. + private SbmGrid applicationBar = new SbmGrid(); + private Label labelApplicationCaption = new Label(); + private ImageButton buttonMenu = new ImageButton(); + private SbmContentView applicationBarBorderBottom = new SbmContentView(); + // Page body. + private SbmAbsoluteLayout absoluteLayout = new SbmAbsoluteLayout(); + private SbmScrollView pageBodyScroll = new SbmScrollView(); + private SbmContentView pageBodyStatic = new SbmContentView(); + + //------------------------------------------------------------------- + // Construction. + public Page_Template_Main () + { + this.SizeChanged += OnSizeChanged; + + // Base layout - Grid. + baseGrid.BackgroundColor = SbmMobile.PageBaseColor; + baseGrid.Padding = new Thickness(0); + baseGrid.RowSpacing = 0; + baseGrid.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto }); + baseGrid.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Star }); + Content = baseGrid; + int baseGridRowIdx = -1; + + // Application bar. + applicationBar.Margin = new Thickness(0); + applicationBar.Padding = new Thickness(0, 4, 0, 0); + applicationBar.HorizontalOptions = LayoutOptions.FillAndExpand; + applicationBar.VerticalOptions = LayoutOptions.CenterAndExpand; + applicationBar.RowSpacing = 0; + applicationBar.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto }); + applicationBar.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto }); + applicationBar.ColumnSpacing = 0; + applicationBar.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Star }); + applicationBar.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Auto }); + applicationBar.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Star }); + applicationBar.BackgroundColor = SbmMobile.ApplicationBarBackgroundColor; + baseGrid.Children.Add(applicationBar, 0, ++baseGridRowIdx); + // Caption. + //labelApplicationCaption.HorizontalOptions = LayoutOptions.CenterAndExpand; + labelApplicationCaption.Margin = new Thickness(0, 0, 0, 8); + labelApplicationCaption.Text = Title; + labelApplicationCaption.TextColor = SbmMobile.ApplicationBarTextColor; + labelApplicationCaption.FontSize *= SbmMobile.FontSizeRatio * SbmMobile.ApplicationBarTextSizeRatio; + labelApplicationCaption.BackgroundColor = Color.Transparent; + applicationBar.Children.Add(labelApplicationCaption, 1, 0); + // Menu button. + buttonMenu.HorizontalOptions = LayoutOptions.End; + buttonMenu.VerticalOptions = LayoutOptions.Center; + buttonMenu.Source = SacsImageUtils.GetImageFromByteArray(SacsResourceConsole.GetImageResource(SacsResourceConsole.ImageResource.Icon_Burger_Black_64_png)); + buttonMenu.BackgroundColor = Color.Transparent; + buttonMenu.Padding = new Thickness(12, 0); + buttonMenu.Clicked += ButtonMenu_Clicked; + applicationBar.Children.Add(buttonMenu, 2, 0); + // Application bar - bottom border. + applicationBarBorderBottom.BackgroundColor = SbmMobile.MenuBorderColor; + applicationBarBorderBottom.Padding = new Thickness(0, SbmMobile.ApplicationBarBorderBottom, 0, 0); + applicationBar.Children.Add(applicationBarBorderBottom, 0, 1); + Grid.SetColumnSpan(applicationBarBorderBottom, 3); + + // Menu. + MenuView.MenuOptionClicked += MenuView_MenuOptionClicked; + + // AbsoluteLayout - Required for positioning popup menu etc. + absoluteLayout.BackgroundColor = SbmMobile.PageBackgroundColor; + absoluteLayout.Padding = new Thickness(0); + baseGrid.Children.Add(absoluteLayout, 0, ++baseGridRowIdx); + + // Scrolling Page Body. + pageBodyScroll.HorizontalOptions = LayoutOptions.FillAndExpand; + pageBodyScroll.VerticalOptions = LayoutOptions.FillAndExpand; + pageBodyScroll.BackgroundColor = Color.Transparent; + pageBodyScroll.Padding = new Thickness(0); + + // Static Page Body. + pageBodyStatic.HorizontalOptions = LayoutOptions.FillAndExpand; + pageBodyStatic.VerticalOptions = LayoutOptions.FillAndExpand; + pageBodyStatic.BackgroundColor = Color.Transparent; + pageBodyStatic.Padding = new Thickness(0); + + // Hide menu when tapping on main page. + var bodyTapGestureRecognizer = new TapGestureRecognizer(); + bodyTapGestureRecognizer.Tapped += (s, e) => { HideMenu(); }; + //pageBody.GestureRecognizers.Add(bodyTapGestureRecognizer); + //pageBodyScroll.GestureRecognizers.Add(bodyTapGestureRecognizer); + baseGrid.GestureRecognizers.Add(bodyTapGestureRecognizer); + + // Events. + } + + //------------------------------------------------------------------- + // Properties. + public PageBodyMode BodyMode { get; private set; } + + //------------------------------------------------------------------- + // S w i t c h P a g e B o d y + //------------------------------------------------------------------- + public enum PageBodyMode + { + Scrollable, + SelfScrolling + } + protected void SwitchPageBody (View mainBodyView, PageBodyMode mode) + { + // Clear previous body. + pageBodyScroll.Content = null; + pageBodyStatic.Content = null; + absoluteLayout.Children.Clear(); + // Add new page body. + BodyMode = mode; + if (mode == PageBodyMode.SelfScrolling) + { + // Replace the static panel and add the body panel to that. + absoluteLayout.Children.Add(pageBodyStatic, new Rectangle(0.0, 0.0, 1.0, 1.0), AbsoluteLayoutFlags.SizeProportional); + pageBodyStatic.Content = mainBodyView; + } + else + { + // Replace the scrolling panel and add the body panel to that. + absoluteLayout.Children.Add(pageBodyScroll, new Rectangle(0.0, 0.0, 1.0, 1.0), AbsoluteLayoutFlags.SizeProportional); + pageBodyScroll.Content = mainBodyView; + } + } + + //------------------------------------------------------------------- + // M e n u + //------------------------------------------------------------------- + protected abstract SbmMenuView MenuView { get; } + private bool menuShown = false; + private void ButtonMenu_Clicked (object sender, EventArgs e) + { + if (menuShown) + { + HideMenu(); + return; + } + ShowMenu(); + } + public void HideMenu () + { + absoluteLayout.Children.Remove(MenuView); + menuShown = false; + } + private void ShowMenu () + { + double menuWidth = Math.Min(180, Math.Min(Width, Height) * 0.66); + double menuHeight = Math.Min(320, Math.Min(Width, Height) * 0.66); + if (MenuView.MenuHeight > menuHeight && MenuView.MenuHeight < Height) + menuHeight = MenuView.MenuHeight; + Rectangle menuPosition = new Rectangle(absoluteLayout.Width - menuWidth, 0, menuWidth, menuHeight); + absoluteLayout.Children.Add(MenuView, menuPosition, AbsoluteLayoutFlags.None); + menuShown = true; + } + private void MenuView_MenuOptionClicked (object sender, SbmMenuView.MenuOptionClickedEventArgs e) + { + HideMenu(); + } + + //------------------------------------------------------------------- + // P o s i t i o n C o m p o n e n t s + //------------------------------------------------------------------- + private void PositionComponents () + { + // Page size has changed. + // Adjust main body padding. + double widthPadding = Math.Max(SbmMobile.PageBodyPaddingHorizontalMin, (Width - 460) / 3); + double heightPadding = Math.Max(SbmMobile.PageBodyPaddingVerticalMin, (Height - 800) / 40); + pageBodyScroll.Padding = new Thickness(widthPadding, heightPadding); + pageBodyStatic.Padding = new Thickness(widthPadding, heightPadding); + } + + //------------------------------------------------------------------- + // P a g e E v e n t s + //------------------------------------------------------------------- + protected override void OnParentSet () + { + base.OnParentSet(); + } + //------------------------------------------------------------------- + protected override void OnPropertyChanged ([CallerMemberName] string propertyName = null) + { + base.OnPropertyChanged(propertyName); + if (propertyName.EqualsCI("Title")) + labelApplicationCaption.Text = Title; + } + //------------------------------------------------------------------- + protected override void OnAppearing () + { + base.OnAppearing(); + } + protected override void OnDisappearing () + { + base.OnDisappearing(); + } + //------------------------------------------------------------------- + protected override void OnSizeAllocated (double width, double height) + { + base.OnSizeAllocated(width, height); + } + private void OnSizeChanged (object sender, EventArgs e) + { + // Page size has changed. + HideMenu(); + PositionComponents(); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} \ No newline at end of file diff --git a/BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Panels/Main/Accounts/SbmMainPanel_Association.cs b/BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Panels/Main/Accounts/SbmMainPanel_Association.cs new file mode 100644 index 0000000..d016e6e --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Panels/Main/Accounts/SbmMainPanel_Association.cs @@ -0,0 +1,340 @@ +using Sarand.Core.App; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Mobile.Forms.Controls; +using Sarand.Core.Mobile.Forms.Panels; +using Sarand.Core.Tasks; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.BusinessMgr.Core.WebService; +using Sarand.BusinessMgr.Mobile.Core.App; +using Sarand.BusinessMgr.Mobile.Core.Forms.Pages; +using Sarand.BusinessMgr.Mobile.Core.Mgr; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Xamarin.Forms; +using Sarand.BusinessMgr.Mobile.Forms.Pages.Forms.Accounts; + +namespace Sarand.BusinessMgr.Mobile.Forms.Panels.Main.Accounts +{ + //======================================================================= + public class SbmMainPanel_Association : SbmMainPanel_ItemList + { + //------------------------------------------------------------------- + // Definitions. + public enum FilterProperty + { + Code, + Name, + } + public enum PanelMode + { + InProgress, + Customer, + Supplier, + } + public new class Config : SbmMainPanel_ItemList.Config + { + public PanelMode Mode { get; set; } = PanelMode.InProgress; + } + + //------------------------------------------------------------------- + // Data members. + private Config config; + private class Columns + { + public ColumnDfn Id { get; set; } + public ColumnDfn Code { get; set; } + public ColumnDfn Name { get; set; } + public ColumnDfn PhoneMain { get; set; } + public ColumnDfn Status { get; set; } + } + private Columns cols = new Columns(); + private String associationDoubleClickedPrefix = "AssociationDblClick#"; + + //------------------------------------------------------------------- + // Construction. + public SbmMainPanel_Association (Config config) : + base(config) + { + this.config = config; + // Columns. + cols.Id = AccountMgr.GetAssociationColumnDfn(SbmAssociation.Column.Id); + cols.Code = AccountMgr.GetAssociationColumnDfn(SbmAssociation.Column.Code); + cols.Name = AccountMgr.GetAssociationColumnDfn(SbmAssociation.Column.Target_Name); + cols.PhoneMain = AccountMgr.GetAssociationColumnDfn(SbmAssociation.Column.PhoneMain); + cols.Status = AccountMgr.GetAssociationColumnDfn(SbmAssociation.Column.Status); + // Initialise components. + InitialiseComponents(); + } + + //------------------------------------------------------------------- + // Properties. + protected override String HeaderCaption { get { return "Accounts - Association"; } } + public virtual Sbm.AssociationType AssociationType { get; } = Sbm.AssociationType.Unknown; + + //------------------------------------------------------------------- + // I n i t i l i a s e C o m p o n e n t s + //------------------------------------------------------------------- + /// Control initialisation on construction. + protected override void InitialiseComponents () + { + base.InitialiseComponents(); + + ConfigureComponents(); + } + + //------------------------------------------------------------------- + // C o n f i g u r e C o m p o n e n t s + //------------------------------------------------------------------- + /// Control configuration that can be changed dynamically. + protected override void ConfigureComponents () + { + base.ConfigureComponents(); + + // Initial population. + RefreshItemList(); + } + + //------------------------------------------------------------------- + // P a n e l A c t i o n s + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + // C o n t r o l A c t i v i t y + //------------------------------------------------------------------- + protected override void SetControlActivity () + { + } + protected override void SetControlsReadOnly () + { + } + + //------------------------------------------------------------------- + // I t e m L i s t + //------------------------------------------------------------------- + protected override List GetFilterPropertyTypes () + { + List filterPropertyTypes = new List(); + filterPropertyTypes.Add(new SacsFilterPropertyType((int)FilterProperty.Code, "Code") { Mode = SacsFilterPropertyType.FilterMode.Text }); + filterPropertyTypes.Add(new SacsFilterPropertyType((int)FilterProperty.Name, "Name") { Mode = SacsFilterPropertyType.FilterMode.Text }); + return filterPropertyTypes; + } + public SbmAssociation.Params GetAssociationParams (uint pageNo, ushort pageLength) + { + SbmAssociation.Params prmAssociation = new SbmAssociation.Params(); + // Filter. + prmAssociation.AssociationType = AssociationType; + prmAssociation.CodePartial = HeaderPanel.PanelFilter.GetFilterPropertyValue((int)FilterProperty.Code); + prmAssociation.NameTargetPartial = HeaderPanel.PanelFilter.GetFilterPropertyValue((int)FilterProperty.Name); + prmAssociation.StatusCat = SbmAssociation.StatusCat.NotDeleted; + // Mode. + if (config.Mode == PanelMode.InProgress) + prmAssociation.StatusCat = SbmAssociation.StatusCat.OnHold; + // Paging. + prmAssociation.ResultsPaging.PageNo = pageNo; + prmAssociation.ResultsPaging.PageLength = pageLength; + // Sort. + prmAssociation.SortColumns.Add(AccountMgr.GetAssociationColumnDfn(SbmAssociation.Column.Id)); + return prmAssociation; + } + private SacsTaskData taskDataRefreshList = null; + protected override void RefreshItemList (uint pageNo = 1) + { + String fn = GetType().Name + ".RefreshItemList"; + + // Kill previous request. + if (taskDataRefreshList != null) + { + taskDataRefreshList.TriggerCancellation(); + taskDataRefreshList = null; + } + + // Clear existing list. + DisplayItemList(null, "Refreshing list. Please wait..."); + + // Refresh the list. + RefreshItemList(GetAssociationParams(pageNo, ItemsPerPage), taskDataRefreshList = new SacsTaskData(null)); + } + private void RefreshItemList (SbmAssociation.Params associationParams, SacsTaskData taskDataRefreshList_Local) + { + String fn = GetType().Name + ".RefreshItemList"; + + // Query data after delay. + Device.StartTimer(TimeSpan.FromMilliseconds(250), () => + { + if (SacsSystem.DebugMode) Logger.Debug(fn + " Timer fired."); + Task.Run(async () => + { + try + { + // Configure request. + SbmWebServiceRequest.Config configRequest = new SbmWebServiceRequest.Config(); + configRequest.DataType = SbmWebServiceRequest.DataType.Association; + configRequest.RequestType = SbmWebServiceRequest.RequestType.QueryList; + configRequest.Context.InstanceDefinition = SbmGlobals_Mobile.SessionProfile.InstanceDefinition; + configRequest.Context.Debug = SacsSystem.DebugMode; + // Filter. + Dictionary filter = AccountMgr.GetAssociationQueryFilter_Mobile(associationParams); + + // Columns. + List queryColumns = new List() + { + cols.Id.DataName, + cols.Code.DataName, + cols.Name.DataName, + cols.PhoneMain.DataName, + cols.Status.DataName, + }; + // Request User profile. + if (SacsSystem.DebugMode) Logger.Debug(fn + " Querying data - START"); + configRequest.RequestType = SbmWebServiceRequest.RequestType.QueryList; + SbmWebServiceClient.QueryListResponseData responseData = + await new SbmWebServiceClient().RequestQueryList(configRequest, filter, queryColumns, AccountMgr.GetSortColumns_Mobile(associationParams), taskDataRefreshList_Local); + if (SacsSystem.DebugMode) Logger.Debug(fn + " Querying data - END Items: " + (responseData?.Items.Count.ToString() ?? "None") + (taskDataRefreshList_Local.IsCancellationRequested ? " [Cancelled]" : "")); + + // Display item list. + Device.BeginInvokeOnMainThread(() => + { + DisplayItemList(responseData); + }); + } + catch (Exception exc) { if (SacsSystem.DebugMode) Logger.Warn(fn + " " + exc.GetLogMessage()); } + }, taskDataRefreshList_Local.CancellationToken) + .ContinueWith(task => + { + taskDataRefreshList_Local.Dispose(); + if (taskDataRefreshList == taskDataRefreshList_Local) + taskDataRefreshList = null; + }); + if (SacsSystem.DebugMode) Logger.Debug(fn + " Timer method complete."); + // Kill timer with false response. + return false; + }); + } + + //------------------------------------------------------------------- + protected override void DisplayItemList (SbmWebServiceClient.QueryListResponseData responseData, SacsMessage message = null) + { + // Refresh paging properties. + if (responseData != null) + HeaderPanel.SetPaging(responseData.PageNo, responseData.PageLength, responseData.Total > 0 ? responseData.Total : responseData.Count); + else HeaderPanel.SetPaging(0, 0, 0); + // Construct item list HTML. + string html = "" + GetAssociationListStyles().Concat("\n") + GetAssociationListScripts().Concat("\n") + ""; + if (message != null) + { + String messageClass = "inf"; + switch (message.MessageLevel) + { + case SaMessageLevel.Fatal: + case SaMessageLevel.Exception: + case SaMessageLevel.Error: + messageClass = "err"; + break; + case SaMessageLevel.Warning: + messageClass = "wrn"; + break; + } + html += "
" + message.Message + "
"; + } + if (responseData == null) + { } + else if (responseData.Items.Count > 0) + { + //html += "
Associations found: " + responseData.Items.Count + "
"; + int itemCount = 0; + foreach (var item in responseData.Items) + { + itemCount++; + html += "
"; + html += ""; + html += " "; + html += " "; + html += " "; + html += " "; + html += " "; + html += " "; + html += " "; + SaStatus associationStatus = SacsSystem.GetStatusForCode(item.GetValue(cols.Status.DataName)); + html += " "; + html += " "; + if (SacsSystem.DebugMode) + { + html += " "; + html += " "; + html += " "; + html += " "; + } + html += "
Code" + item.GetValue(cols.Code.DataName) + "Name" + item.GetValue(cols.Name.DataName) + "
Phone No" + item.GetValue(cols.PhoneMain.DataName) + "Status" + SacsSystem.GetStatusDesc(associationStatus) + "
Item" + itemCount + "Id" + SysId.ToString(item.GetIdValue(cols.Id.DataName)) + "
"; + html += "
"; + } + } + else html += "
No associations found
"; + html += ""; + ItemListWebView.Html = html; + //Logger.Debug("HTML: " + html); + } + private List GetAssociationListStyles () + { + List styles = new List(GetItemListBaseStyles()); + styles.AddRange(new String[] + { + }); + return styles; + } + private List GetAssociationListScripts () + { + List scripts = new List(GetItemListBaseScripts()); + scripts.AddRange(new String[] + { + "" + }); + return scripts; + } + + //------------------------------------------------------------------- + // P a n e l E v e n t s + //------------------------------------------------------------------- + /// 'App' navigation events on Item List web view control. + protected override void ItemListWebView_AppNavigating (object sender, SaxWebView.AppNavigatingEventArgs eventArgs) + { + String fn = GetType().Name + ".ItemListWebView_AppNavigating"; + if (SacsSystem.DebugMode) Logger.Debug(fn + " AppAction: " + eventArgs.AppAction); + if (eventArgs.AppAction.StartsWithCI(associationDoubleClickedPrefix)) + { + SysId associationId = new SysId(StringUtil.ToInt(eventArgs.AppAction.Right(eventArgs.AppAction.Length - associationDoubleClickedPrefix.Length))); + if (!SysId.IsValid(associationId)) + { + DisplayAlert(HeaderCaption, "Invalid account association selected.", "OK"); + return; + } + + // Configure Account Association page. + // Data will be retrieved and validated by the page. + SbmFormPage_Accounts_Associations.Config pageConfig = new SbmFormPage_Accounts_Associations.Config(); + pageConfig.AssociationIdToUpdate = associationId; + pageConfig.ReadOnly = true; + if (pageConfig.ReadOnly) pageConfig.NavigationMode = SbmFormPage.NavigationMode.Close; + SbmFormPage_Accounts_Associations accountForm = new SbmFormPage_Accounts_Associations(pageConfig); + //accountRepairForm.Disappearing += (sender2, e2) => { }; + SbmGlobals_Mobile.Application.MainPage.Navigation.PushModalAsync(accountForm, false); + } + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Panels/Main/Accounts/SbmMainPanel_Association_Customer.cs b/BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Panels/Main/Accounts/SbmMainPanel_Association_Customer.cs new file mode 100644 index 0000000..de71db4 --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Panels/Main/Accounts/SbmMainPanel_Association_Customer.cs @@ -0,0 +1,48 @@ +using Sarand.Core.App; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Mobile.Forms.Controls; +using Sarand.Core.Mobile.Forms.Panels; +using Sarand.Core.Tasks; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.BusinessMgr.Core.WebService; +using Sarand.BusinessMgr.Mobile.Core.App; +using Sarand.BusinessMgr.Mobile.Core.Forms.Pages; +using Sarand.BusinessMgr.Mobile.Core.Mgr; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Xamarin.Forms; +using Sarand.BusinessMgr.Mobile.Forms.Pages.Forms.Accounts; + +namespace Sarand.BusinessMgr.Mobile.Forms.Panels.Main.Accounts +{ + //======================================================================= + public class SbmMainPanel_Association_Customer : SbmMainPanel_Association + { + //------------------------------------------------------------------- + // Definitions. + public new class Config : SbmMainPanel_Association.Config + { + public PanelMode Mode { get; set; } = PanelMode.Customer; + } + + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmMainPanel_Association_Customer (Config config) : base(config) + { + } + + //------------------------------------------------------------------- + // Properties. + protected override String HeaderCaption { get { return "Accounts - Customer"; } } + public override Sbm.AssociationType AssociationType { get; } = Sbm.AssociationType.Customer; + + //------------------------------------------------------------------- + } + //======================================================================= +} \ No newline at end of file diff --git a/BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Panels/Main/Accounts/SbmMainPanel_Association_Supplier.cs b/BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Panels/Main/Accounts/SbmMainPanel_Association_Supplier.cs new file mode 100644 index 0000000..96f577b --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Panels/Main/Accounts/SbmMainPanel_Association_Supplier.cs @@ -0,0 +1,47 @@ +using Sarand.Core.App; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Mobile.Forms.Controls; +using Sarand.Core.Mobile.Forms.Panels; +using Sarand.Core.Tasks; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.BusinessMgr.Core.WebService; +using Sarand.BusinessMgr.Mobile.Core.App; +using Sarand.BusinessMgr.Mobile.Core.Forms.Pages; +using Sarand.BusinessMgr.Mobile.Core.Mgr; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Xamarin.Forms; +using Sarand.BusinessMgr.Mobile.Forms.Pages.Forms.Accounts; + +namespace Sarand.BusinessMgr.Mobile.Forms.Panels.Main.Accounts +{ + //======================================================================= + public class SbmMainPanel_Association_Supplier : SbmMainPanel_Association + { + //------------------------------------------------------------------- + // Definitions. + public new class Config : SbmMainPanel_Association.Config + { + public PanelMode Mode { get; set; } = PanelMode.Supplier; + } + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmMainPanel_Association_Supplier (Config config) : base(config) + { + } + + //------------------------------------------------------------------- + // Properties. + protected override String HeaderCaption { get { return "Accounts - Supplier"; } } + public override Sbm.AssociationType AssociationType { get; } = Sbm.AssociationType.Supplier; + + //------------------------------------------------------------------- + } + //======================================================================= +} \ No newline at end of file diff --git a/BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Panels/Main/SbmMainPanel_Home.cs b/BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Panels/Main/SbmMainPanel_Home.cs new file mode 100644 index 0000000..3c49937 --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Panels/Main/SbmMainPanel_Home.cs @@ -0,0 +1,159 @@ +using Sarand.Core.Mobile.Forms.Controls; +using Sarand.Core.Mobile.Utils; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Mobile.Core.App; +using Sarand.BusinessMgr.Mobile.Core.Forms.Panels; +using Sarand.BusinessMgr.Mobile.Core.Forms.Views; +using Sarand.BusinessMgr.Mobile.Forms.Components; +using System; +using System.Collections.Generic; +using System.Runtime.CompilerServices; +using System.Text; +using Xamarin.Forms; +using Sarand.BusinessMgr.Mobile.Core.Forms.Base; + +namespace Sarand.BusinessMgr.Mobile.Forms.Panels.Main +{ + //======================================================================= + public class SbmMainPanel_Home : SbmMainPanel + { + //------------------------------------------------------------------- + // Definitions. + public new class Config : SbmMainPanel.Config + { + } + + //------------------------------------------------------------------- + // Data members + private Config config; + private Image imageLogo = new Image(); + private readonly List favouriteActionButtons = new List(); + // Configuration grid. + private SbmGrid gridHome = new SbmGrid(); + private SbmComponents_Config configComponents; + + //------------------------------------------------------------------- + // Construction. + public SbmMainPanel_Home (Config config) : + base(config) + { + this.config = config; + configComponents = new SbmComponents_Config() { ReadOnly = true }; + InitialiseComponents(); + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // I n i t i l i a s e C o m p o n e n t s + //------------------------------------------------------------------- + /// Control initialisation on construction. + protected void InitialiseComponents () + { + // Configuration grid. + Content = gridHome; + gridHome.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Auto }); + gridHome.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Star }); + + // Logo. + //gridHome.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto }); + //imageLogo.Source = SacsImageUtils.GetImageFromByteArray(SbmResourceConsole.GetImageResource(SbmResourceConsole.ImageResource.Logo_Solent_Stevedores_78_png)); + //imageLogo.Margin = new Thickness(0, 4, 0, 4); + //gridHome.Children.Add(imageLogo, 0, gridRowIdx); + //Grid.SetColumnSpan(imageLogo, 2); + // User. + int gridRowIdx = gridHome.RowDefinitions.Count; + gridRowIdx = gridHome.RowDefinitions.Count; + gridHome.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto }); + gridHome.Children.Add(configComponents.LabelName, 0, gridRowIdx); + gridHome.Children.Add(configComponents.EntryName, 1, gridRowIdx); + Grid.SetColumnSpan(configComponents.EntryName, 2); + // Email. + //gridRowIdx = gridHome.RowDefinitions.Count; + //gridHome.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto }); + //gridHome.Children.Add(configComponents.LabelEmail, 0, gridRowIdx); + //gridHome.Children.Add(configComponents.EntryEmail, 1, gridRowIdx); + //Grid.SetColumnSpan(configComponents.EntryEmail, 2); + + // ToDo 'Favourite' buttons. + favouriteActionButtons.Clear(); + /* + foreach (SbmAppConsole.FavouriteAction favouriteAction in SbmGlobals_Mobile.SessionProfile.FavouriteActions) + { + SaxButton favouriteActionButton = new SaxButton() + { + Text = favouriteAction., + HorizontalOptions = LayoutOptions.Center, + VerticalOptions = LayoutOptions.Center + }; + favouriteActionButton.Clicked += delegate () { }; + } + */ + foreach (SaxButton favouriteActionButton in favouriteActionButtons) + { + gridRowIdx = gridHome.RowDefinitions.Count; + gridHome.Children.Add(favouriteActionButton, 0, gridRowIdx); + Grid.SetColumnSpan(favouriteActionButton, 2); + } + + // Subscribe to session profile proerty change event. + SbmGlobals_Mobile.SessionProfile.PropertyModified += SessionProfile_PropertyModified; + } + + //------------------------------------------------------------------- + // S e s s i o n P r o f i l e E v e n t s + //------------------------------------------------------------------- + private void SessionProfile_PropertyModified (object sender, EventArgs e) + { + configComponents.RefreshProperties(); + } + + //------------------------------------------------------------------- + // C o n f i g u r e C o m p o n e n t s + //------------------------------------------------------------------- + /// Control configuration that can be changed dynamically. + protected override void ConfigureComponents () + { + } + + //------------------------------------------------------------------- + // P a n e l A c t i o n s + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + // C o n t r o l A c t i v i t y + //------------------------------------------------------------------- + protected override void SetControlActivity () + { + } + protected override void SetControlsReadOnly () + { + } + + //------------------------------------------------------------------- + // P a n e l E v e n t s + //------------------------------------------------------------------- + protected override void OnParentSet () + { + base.OnParentSet(); + } + //------------------------------------------------------------------- + protected override void OnPropertyChanging ([CallerMemberName] string propertyName = null) + { + base.OnPropertyChanging(propertyName); + } + protected override void OnPropertyChanged ([CallerMemberName] string propertyName = null) + { + base.OnPropertyChanged(propertyName); + } + //------------------------------------------------------------------- + protected override void OnSizeAllocated (double width, double height) + { + base.OnSizeAllocated(width, height); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Panels/Main/SbmMainPanel_ItemList.cs b/BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Panels/Main/SbmMainPanel_ItemList.cs new file mode 100644 index 0000000..54deae4 --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Panels/Main/SbmMainPanel_ItemList.cs @@ -0,0 +1,183 @@ +using Sarand.Core.Base; +using Sarand.Core.Mobile.Forms.Controls; +using Sarand.Core.Mobile.Forms.Panels; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.WebService; +using Sarand.BusinessMgr.Mobile.Core.App; +using Sarand.BusinessMgr.Mobile.Core.Forms.Panels; +using Sarand.BusinessMgr.Mobile.Core.Forms.Views; +using System; +using System.Collections.Generic; +using System.Runtime.CompilerServices; +using System.Text; +using Xamarin.Forms; + +namespace Sarand.BusinessMgr.Mobile.Forms.Panels.Main +{ + //======================================================================= + public abstract class SbmMainPanel_ItemList : SbmMainPanel + { + //------------------------------------------------------------------- + // Definitions. + public new class Config : SbmMainPanel.Config + { + } + + //------------------------------------------------------------------- + // Data members + private Config config; + private SbmGrid viewGrid = new SbmGrid(); + + //------------------------------------------------------------------- + // Construction. + protected SbmMainPanel_ItemList (Config config) : + base(config) + { + this.config = config; + } + + //------------------------------------------------------------------- + // Properties. + protected abstract String HeaderCaption { get; } + public ushort ItemsPerPage { get; protected set; } = 8; + protected SbmPanel_ItemListHeader HeaderPanel { get; private set; } + protected SbmWebView ItemListWebView { get; private set; } = new SbmWebView(); + + //------------------------------------------------------------------- + // I n i t i l i a s e C o m p o n e n t s + //------------------------------------------------------------------- + /// Control initialisation on construction. + protected virtual void InitialiseComponents () + { + // Configuration grid. + viewGrid.BackgroundColor = Color.Transparent; + viewGrid.VerticalOptions = LayoutOptions.FillAndExpand; + HeightRequest = 1; + Content = viewGrid; + viewGrid.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto }); + viewGrid.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }); + int gridRowIdx = -1; + + // Header panel. + SbmPanel_ItemListHeader.Config headerPanelConfig = new SbmPanel_ItemListHeader.Config(); + headerPanelConfig.Caption = HeaderCaption; + headerPanelConfig.FilterPropertyTypes.AddRange(GetFilterPropertyTypes()); + HeaderPanel = new SbmPanel_ItemListHeader(headerPanelConfig); + gridRowIdx++; + viewGrid.Children.Add(HeaderPanel, 0, gridRowIdx); + // Paging events. + HeaderPanel.PagingAction += PanelHeader_PagingAction; + // Filter events. + HeaderPanel.PanelFilter.FilterChanged += PanelFilter_FilterChanged; + + // Item list view. + ItemListWebView = new SbmWebView() + { + HorizontalOptions = LayoutOptions.FillAndExpand, + VerticalOptions = LayoutOptions.FillAndExpand + }; + ItemListWebView.AppNavigating += ItemListWebView_AppNavigating; + gridRowIdx++; + viewGrid.Children.Add(ItemListWebView, 0, gridRowIdx); + DisplayItemList(null); + } + + //------------------------------------------------------------------- + // C o n f i g u r e C o m p o n e n t s + //------------------------------------------------------------------- + /// Control configuration that can be changed dynamically. + protected override void ConfigureComponents () + { + } + + //------------------------------------------------------------------- + // I t e m L i s t + //------------------------------------------------------------------- + protected abstract List GetFilterPropertyTypes (); + protected abstract void RefreshItemList (uint pageNo = 1); + protected abstract void DisplayItemList (SbmWebServiceClient.QueryListResponseData responseData, SacsMessage message = null); + + //------------------------------------------------------------------- + public static List GetItemListBaseStyles () + { + return new List() + { + "", + "", + "", + "" + }; + } + public static List GetItemListBaseScripts () + { + return new List() + { + "", + "", + "", + "", + }; + } + + //------------------------------------------------------------------- + // P a n e l A c t i o n s + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + // C o n t r o l A c t i v i t y + //------------------------------------------------------------------- + protected override void SetControlActivity () + { + } + protected override void SetControlsReadOnly () + { + } + + //------------------------------------------------------------------- + // P a n e l E v e n t s + //------------------------------------------------------------------- + protected void PanelHeader_PagingAction (object sender, SaxPanel_ItemListHeader.PagingActionEventArgs e) + { + uint pageNo = HeaderPanel.PageNo; + ushort pageLength = HeaderPanel.PageLength; + int totalItems = HeaderPanel.TotalItems; + uint lastPage = (totalItems > 0 && pageLength > 0) ? (uint)Math.Ceiling((double)totalItems / pageLength) : 1; + switch (e.PagingActionType) + { + case SaxPanel_ItemListHeader.PagingActionType.First: + pageNo = 1; + break; + case SaxPanel_ItemListHeader.PagingActionType.Prev: + if (pageNo > 1) pageNo--; + break; + case SaxPanel_ItemListHeader.PagingActionType.Next: + if (pageNo < lastPage) pageNo++; + break; + case SaxPanel_ItemListHeader.PagingActionType.Last: + pageNo = lastPage; + break; + } + RefreshItemList(pageNo); + } + //------------------------------------------------------------------- + /// + /// Filter properties in header panel has changed. + /// + protected void PanelFilter_FilterChanged (object sender, SaxPanel_ItemFilter.FilterChangedEventArgs e) + { + RefreshItemList(); + } + //------------------------------------------------------------------- + /// 'App' navigation events on Item List web view control. + protected abstract void ItemListWebView_AppNavigating (object sender, SaxWebView.AppNavigatingEventArgs eventArgs); + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Panels/Main/SbmMainPanel_Login.cs b/BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Panels/Main/SbmMainPanel_Login.cs new file mode 100644 index 0000000..346170c --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Panels/Main/SbmMainPanel_Login.cs @@ -0,0 +1,260 @@ +using Sarand.Core.App; +using Sarand.Core.Base; +using Sarand.Core.Mobile.Forms.Controls; +using Sarand.Core.Mobile.Utils; +using Sarand.Core.Tasks; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.WebService; +using Sarand.BusinessMgr.Mobile.Core.App; +using System; +using System.Collections.Generic; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading.Tasks; +using Xamarin.Forms; +using Sarand.BusinessMgr.Mobile.Core.Forms.Panels; +using Sarand.BusinessMgr.Mobile.Forms.Components; +using Sarand.BusinessMgr.Mobile.Core.Forms.Views; + +namespace Sarand.BusinessMgr.Mobile.Forms.Panels.Main +{ + //======================================================================= + public class SbmMainPanel_Login : SbmMainPanel + { + //------------------------------------------------------------------- + // Definitions. + public new class Config : SbmMainPanel.Config + { + } + + //------------------------------------------------------------------- + // Data members + private Config config; + private Image imageLogo = new Image(); + private SbmComponents_Login loginComponents = new SbmComponents_Login(); + private SbmGrid componentGrid = new SbmGrid(); + private SaxButton buttonLogin = new SaxButton() { Text = "Login" }; + + //------------------------------------------------------------------- + // Construction. + public SbmMainPanel_Login (Config config) : + base(config) + { + this.config = config; + InitialiseComponents(); + } + + //------------------------------------------------------------------- + // Properties. + public String Title { get; } = "Login"; + public SbmInstanceDefinition InstanceDefinition { get { return new App.App.SbmInstanceDefinition_App("Base", "http://169.254.80.80:34574/SaBusMgr"); } } + public String EmailAddress { get { return loginComponents.EntryEmail.Text; } } + private String Password { get { return loginComponents.EntryPassword.Text; } } + + //------------------------------------------------------------------- + // I n i t i l i a s e C o m p o n e n t s + //------------------------------------------------------------------- + /// Control initialisation on construction. + protected void InitialiseComponents () + { + // Options grid. + Content = componentGrid; + componentGrid.BackgroundColor = SbmMobile.PageBackgroundColor; + componentGrid.Padding = new Thickness(4.0); + componentGrid.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Auto }); + componentGrid.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Star }); + componentGrid.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Auto }); + + // Logo. + //componentGrid.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto }); + ////imageLogo.Source = SacsImageUtils.GetImageFromByteArray(SbmResourceConsole.GetImageResource(SbmResourceConsole.ImageResource.Logo_Solent_Stevedores_78_png)); + //imageLogo.Margin = new Thickness(0, 4, 0, 4); + //componentGrid.Children.Add(imageLogo, 0, gridRowIdx); + //Grid.SetColumnSpan(imageLogo, 2); + + // Email. + int gridRowIdx = componentGrid.RowDefinitions.Count; + gridRowIdx = componentGrid.RowDefinitions.Count; + componentGrid.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto }); + componentGrid.Children.Add(loginComponents.LabelEmail, 0, gridRowIdx); + componentGrid.Children.Add(loginComponents.EntryEmail, 1, gridRowIdx); + Grid.SetColumnSpan(loginComponents.EntryEmail, 2); + if (SacsSystem.DebugMode && StringUtil.IsEmpty(loginComponents.EntryEmail.Text)) loginComponents.EntryEmail.Text = "andy@sarand.com"; + + // Password. + gridRowIdx = componentGrid.RowDefinitions.Count; + componentGrid.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto }); + componentGrid.Children.Add(loginComponents.LabelPassword, 0, gridRowIdx); + componentGrid.Children.Add(loginComponents.EntryPassword, 1, gridRowIdx); + Grid.SetColumnSpan(loginComponents.EntryPassword, 2); + + // Login action button. + gridRowIdx = componentGrid.RowDefinitions.Count; + componentGrid.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto }); + buttonLogin.VerticalOptions = LayoutOptions.Start; + buttonLogin.Padding = new Thickness(4, 4); + buttonLogin.Clicked += ButtonLogin_Clicked; + componentGrid.Children.Add(buttonLogin, 2, gridRowIdx); + + componentGrid.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Star }); + } + + //------------------------------------------------------------------- + // C o n f i g u r e C o m p o n e n t s + //------------------------------------------------------------------- + /// Control configuration that can be changed dynamically. + protected override void ConfigureComponents () + { + } + + //------------------------------------------------------------------- + // P a n e l A c t i o n s + //------------------------------------------------------------------- + private bool requestingUserProfile = false; + private SacsTaskData userProfileRequestTaskData; + private void ButtonLogin_Clicked (object sender, EventArgs e) + { + String fn = GetType().Name + ".ButtonLogin_Clicked"; + // Validate login properties. + SbmInstanceDefinition instanceDefinition = InstanceDefinition; + if (instanceDefinition == null) + { + DisplayAlert(Title, "Instance not specified.", "OK"); + return; + } + String emailAddress = EmailAddress; + if (StringUtil.IsEmpty(emailAddress)) + { + DisplayAlert(Title, "Please enter your email address.", "OK"); + return; + } + String password = Password; + // Request User Profile. + SacsTaskData taskData = (userProfileRequestTaskData = new SacsTaskData(null)); + requestingUserProfile = true; + SetControlActivity(); + Task.Run(async () => + { + try + { + SbmWebServiceClient.ItemDataResponseData responseData = + await RequestUserProfile(instanceDefinition, emailAddress, password, taskData); + // Interpret response. + Device.BeginInvokeOnMainThread(() => + { + ValidateUserProfile(responseData); + }); + } + catch (Exception exc) { if (SacsSystem.DebugMode) Logger.Warn(fn + " " + exc.GetLogMessage()); } + finally + { + requestingUserProfile = false; + Device.BeginInvokeOnMainThread(() => + { + SetControlActivity(); + }); + } + }, taskData.CancellationToken) + .ContinueWith((task) => + { + // Clear task data. + taskData.Dispose(); + if (userProfileRequestTaskData == taskData) userProfileRequestTaskData = null; + }); + } + private SbmWebServiceClient webServiceClient = new SbmWebServiceClient(); + private async Task RequestUserProfile (SbmInstanceDefinition instanceDefinition, String emailAddress, String password, SacsTaskData taskData) + { + // Configure Web Service request data. + SbmWebServiceRequest.Config configRequest = new SbmWebServiceRequest.Config(); + configRequest.DataType = SbmWebServiceRequest.DataType.UserProfile; + configRequest.RequestType = SbmWebServiceRequest.RequestType.Item; + configRequest.Context.InstanceDefinition = instanceDefinition; + configRequest.Context.Debug = SacsSystem.DebugMode; + // User filter. + Dictionary filter = new Dictionary(); + filter.Add("EmailAddress", emailAddress); + filter.Add("IncludeSecurityProfile", "true"); + // Request User profile. + return await webServiceClient.RequestItemData(configRequest, filter, taskData); + } + + //------------------------------------------------------------------- + private void ValidateUserProfile (SbmWebServiceClient.ItemDataResponseData responseData) + { + // Validate user. + if (responseData.Item == null) + { + String msg = "Unable to login to server"; + if (responseData.ResponseElement == null) + msg = "Unable to login - failed to communicate with server"; + DisplayAlert(Title, msg, "Close"); + return; + } + //Logger.Debug(SacsXmlUtil.FormatXml(responseData.ResponseDoc)); + + // Load user details to Sesion Profile. + if (!SbmGlobals_Mobile.SessionProfile.LoginUser(InstanceDefinition ,responseData.Item)) + { + DisplayAlert(Title, "Failed to load user profile.", "Close"); + return; + } + + OnSuccessfulLogin(); + } + + //------------------------------------------------------------------- + private void OnSuccessfulLogin () + { + // Inform listeners that login is done. + UserLoginEventArgs userLoginEventArgs = new UserLoginEventArgs() + { + DisplayName = this.EmailAddress + }; + if (UserLogin != null) UserLogin.Invoke(this, userLoginEventArgs); + } + // User Login event. + public class UserLoginEventArgs : EventArgs + { + public String DisplayName { get; set; } + public String Password { get; set; } + } + public event EventHandler UserLogin; + + //------------------------------------------------------------------- + // C o n t r o l A c t i v i t y + //------------------------------------------------------------------- + protected override void SetControlActivity () + { + buttonLogin.IsEnabled = !requestingUserProfile; + } + protected override void SetControlsReadOnly () + { + } + + //------------------------------------------------------------------- + // P a n e l E v e n t s + //------------------------------------------------------------------- + protected override void OnParentSet () + { + base.OnParentSet(); + } + //------------------------------------------------------------------- + protected override void OnPropertyChanging ([CallerMemberName] string propertyName = null) + { + base.OnPropertyChanging(propertyName); + } + protected override void OnPropertyChanged ([CallerMemberName] string propertyName = null) + { + base.OnPropertyChanged(propertyName); + } + //------------------------------------------------------------------- + protected override void OnSizeAllocated (double width, double height) + { + base.OnSizeAllocated(width, height); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Views/SbmMenuView.cs b/BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Views/SbmMenuView.cs new file mode 100644 index 0000000..ee31458 --- /dev/null +++ b/BusinessMgrMobile/BusinessMgrMobile/Mobile/Forms/Views/SbmMenuView.cs @@ -0,0 +1,137 @@ +using Sarand.Core.Mobile.Forms.Views; +using Sarand.BusinessMgr.Mobile.Core.App; +using Sarand.BusinessMgr.Mobile.Core.Forms.Views; +using System; +using System.Collections.Generic; +using System.Text; +using System.Windows.Input; +using Xamarin.Forms; +using Sarand.BusinessMgr.Mobile.Core.Forms.Base; + +namespace Sarand.BusinessMgr.Mobile.Forms.Views +{ + //======================================================================= + public class SbmMenuView : SbmContentView + { + //------------------------------------------------------------------- + // Configuration. + public class OptionData + { + public String Caption { get; set; } + public bool Heading { get; set; } + public ICommand Command { get; set; } + public ImageSource ImageSource { get; set; } + } + + //------------------------------------------------------------------- + // Data members. + private SbmScrollView scrollView = new SbmScrollView(); + private SbmGrid menuGrid = new SbmGrid(); + + //------------------------------------------------------------------- + // Construction. + protected SbmMenuView () : base() + { + // Main view is scrollable to allow for mre options than space allows. + Content = scrollView; + BackgroundColor = SbmMobile.ApplicationBarBorderColor; + Padding = new Thickness(SbmMobile.MenuBorder, 0, 0, SbmMobile.MenuBorder); + + // Menu grid. + menuGrid.BackgroundColor = SbmMobile.MenuBackgroundColor; + menuGrid.Padding = new Thickness(4, 8); + menuGrid.RowSpacing = 2.0; + menuGrid.ColumnSpacing = 2.0; + menuGrid.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(32) }); + menuGrid.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Star }); + scrollView.Content = menuGrid; + } + + //------------------------------------------------------------------- + // Properties. + public virtual List MenuOptions { get; } + public double MenuHeight => menuGrid.Height + menuGrid.Padding.Top + menuGrid.Padding.Bottom + SbmMobile.MenuBorder; + + //------------------------------------------------------------------- + public void RefreshMenuOptions () + { + // Populate menu options. + menuGrid.Children.Clear(); + int gridRowIdx = -1; + foreach (OptionData option in MenuOptions) + { + gridRowIdx++; + menuGrid.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto }); + // Exclude options that cannot be executed. + if (!option.Heading && !(option.Command?.CanExecute(null) ?? false)) continue; + // Menu header background colour. + if (option.Heading) + { + SaxBoxView headerBackgroundView = new SaxBoxView() { BackgroundColor = SbmMobile.MenuHeaderBackgroundColor }; + menuGrid.Children.Add(headerBackgroundView, 0, gridRowIdx); + Grid.SetColumnSpan(headerBackgroundView, 2); + } + // Menu option image. + Image optionImage = null; + if (option.ImageSource != null) + { + optionImage = new Image() { Source = option.ImageSource, HeightRequest = 24, WidthRequest = 24 }; + menuGrid.Children.Add(optionImage, 0, gridRowIdx); + } + SbmLabel optionLabel = new SbmLabel() + { + Text = option.Caption, + HeightRequest = 24, + BackgroundColor = Color.Transparent + }; + if (option.Heading) + optionLabel.FontAttributes = FontAttributes.Bold; + menuGrid.Children.Add(optionLabel, 1, gridRowIdx); + if (option.Command != null) + { + var tapGestureRecognizer = new TapGestureRecognizer(); + tapGestureRecognizer.Tapped += MeunOption_Tapped; + tapGestureRecognizer.Tapped += (s, e) => { option.Command.Execute(null); InvokeMenuOptionClicked(); }; + optionLabel.GestureRecognizers.Add(tapGestureRecognizer); + if (optionImage != null) + optionImage.GestureRecognizers.Add(tapGestureRecognizer); + } + } + } + + private void MeunOption_Tapped (object sender, EventArgs e) + { + // Want to highlight option that has been tapped to reassure the user that it is being actioned. + // May need to add MenuOptionPanel across grid row to be able to idntify relevant label + // rather than relying on the label itself being tapped. + Element element = (sender as Element); + Label label = (sender as Label); + if (sender is Element) + { + var parent = element.Parent; // Grid. + if (label != null) + label.TextColor = Color.Red; + } + } + + //------------------------------------------------------------------- + // M e n u E v e n t s + //------------------------------------------------------------------- + protected override void OnParentSet () + { + base.OnParentSet(); + RefreshMenuOptions(); + } + public class MenuOptionClickedEventArgs : EventArgs + { + } + public event EventHandler MenuOptionClicked; + protected void InvokeMenuOptionClicked () + { + if (MenuOptionClicked != null) MenuOptionClicked.Invoke(this, new MenuOptionClickedEventArgs() { }); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/App/SbmCommand_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/App/SbmCommand_Mobile.cs new file mode 100644 index 0000000..0ac4417 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/App/SbmCommand_Mobile.cs @@ -0,0 +1,34 @@ +using Sarand.BusinessMgr.Core.App; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.App +{ + //======================================================================= + public class SbmCommand_Mobile : SbmCommand + { + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmCommand_Mobile (ExecuteFn executeFn, CanExecuteFn canExecuteFn = null) : + base(executeFn, canExecuteFn) + { + } + + //------------------------------------------------------------------- + // Properties. + public SbmMobileApplication Application { get { return SbmGlobals_Mobile.Application; } } + public SbmMobile.Platform MobilePlatform { get { return Application.MobilePlatform; } } + // Session. + protected SbmSessionProfile_Mobile SessionProfile { get { return SbmGlobals_Mobile.SessionProfile; } } + // User. + protected SbmUserContext_Mobile UserContext { get { return SessionProfile.UserContext_Mobile; } } + protected SbmSecurityProfile SecurityProfile { get { return UserContext.SecurityProfile; } } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/App/SbmConfigConsole_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/App/SbmConfigConsole_Mobile.cs new file mode 100644 index 0000000..6b52a63 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/App/SbmConfigConsole_Mobile.cs @@ -0,0 +1,19 @@ +using Sarand.BusinessMgr.Core.App; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.App +{ + //======================================================================= + public class SbmConfigConsole_Mobile : SbmConfigConsole + { + //------------------------------------------------------------------- + // Construction. + protected SbmConfigConsole_Mobile (Sbm.ConfigConsole configConsole, SbmVersion consoleVersion, SbmSessionContext_Mobile sessionContext) : + base (configConsole, consoleVersion, sessionContext) + { + } + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/App/SbmGlobals_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/App/SbmGlobals_Mobile.cs new file mode 100644 index 0000000..a0c4f36 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/App/SbmGlobals_Mobile.cs @@ -0,0 +1,22 @@ +using Sarand.BusinessMgr.Core.App; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.App +{ + //======================================================================= + public static class SbmGlobals_Mobile + { + //------------------------------------------------------------------- + // Application. + public static SbmMobileApplication Application { get; set; } + + //------------------------------------------------------------------- + // Session Profile. + public static SbmSessionProfile_Mobile SessionProfile { get; set; } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/App/SbmInstanceDefinition.cs b/SaBusMgrMobCore/Mobile/Core/App/SbmInstanceDefinition.cs new file mode 100644 index 0000000..c38548d --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/App/SbmInstanceDefinition.cs @@ -0,0 +1,35 @@ +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.WebService; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.App +{ + //======================================================================= + public class SbmInstanceDefinition : SbmWebServiceInstanceDefinition + { + //------------------------------------------------------------------- + // Definitions. + + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + protected SbmInstanceDefinition () : + base("", "") + { + } + protected SbmInstanceDefinition (String caption, String url) : + base(caption, url) + { + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/App/SbmMobile.cs b/SaBusMgrMobCore/Mobile/Core/App/SbmMobile.cs new file mode 100644 index 0000000..14a5605 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/App/SbmMobile.cs @@ -0,0 +1,125 @@ +using Sarand.Core.Mobile.App; +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Text; +using Xamarin.Forms; + +namespace Sarand.BusinessMgr.Mobile.Core.App +{ + //======================================================================= + // Colour references: + // http://www.html-color-names.com/skyblue.php + // http://www.html-color-names.com/lightsteelblue.php + //======================================================================= + public static class SbmMobile + { + //------------------------------------------------------------------- + // Definitions. + public enum Platform + { + Unknown = 0, + Android, + IOS, + Windows + } + public static String AppTitle { get; } = "Sarand BusinessMgr"; + // Utilities. + public static Random Random { get; } = new Random(); + + //------------------------------------------------------------------- + // Application. + public enum MainView + { + Unknown = 0, + // System. + Login, + Home, + // Accounts. + Customer, + Supplier, + } + + //------------------------------------------------------------------- + // Localisation. + public static CultureInfo CultureInfo { get; } = CultureInfo.CurrentCulture; + public static TextInfo TextInfo { get; } = CultureInfo.TextInfo; + + //------------------------------------------------------------------- + // Application styling. + public static double ApplicationBarHeight { get; } = 28; + public static Color ApplicationBarBackgroundColor { get; } = Color.FromHex("#558395"); + public static Color ApplicationBarTextColor { get; } = Color.FromHex("#f8f8f8"); + public static double ApplicationBarTextSizeRatio { get; } = 1.5; + public static Color ApplicationBarBorderColor { get; } = Color.DarkSlateBlue; + public static double ApplicationBarBorderBottom { get; } = 1.0; + // Menu. + public static Color MenuBorderColor { get; } = Color.DarkSlateBlue; + public static double MenuBorder { get; } = 1.0; + public static Color MenuBackgroundColor { get; } = Color.FromHex("#F0F0F0"); + public static Color MenuHeaderBackgroundColor { get; } = Color.FromHex("#E0E0E0"); + // Dynamic font sizing. + public static String HtmlFontSize + { + get + { + if (SaxApplication.MinDeviceDimension > 2000) return "14pt"; + if (SaxApplication.MinDeviceDimension > 1600) return "13pt"; + if (SaxApplication.MinDeviceDimension > 1200) return "12pt"; + if (SaxApplication.MinDeviceDimension > 1000) return "11pt"; + return "10pt"; + } + } + public static double FontSizeRatio + { + get + { + if (SaxApplication.MinDeviceDimension > 2000) return 1.75; + if (SaxApplication.MinDeviceDimension > 1600) return 1.50; + if (SaxApplication.MinDeviceDimension > 1200) return 1.25; + return 1.0; + } + } + // Pages. + public static Color PageCaptionBackgroundColor { get; } = Color.FromHex("#558395"); + public static double PageCaptionPaddingHorizontal { get; } = 4.0; + public static double PageCaptionPaddingVertical { get; } = 8.0; + public static Color PageCaptionTextColor { get; } = Color.FromHex("#f8f8f8"); + public static double PageCaptionTextSizeRatio { get; } = 1.25; + public static Color PageBaseColor { get; } = Color.FromHex("#c8e8f5"); + public static Color PageBackgroundColor { get; } = Color.FromHex("#e9f6fb"); + public static double PageBodyPaddingVerticalMin { get; } = 4.0; + public static double PageBodyPaddingHorizontalMin { get; } = 4.0; + public static double PageNavigationBorderTopWidth { get; } = 0.75; + public static double PageNavigationPaddingVertical { get; } = 4.0; + public static Color PageNavigationBorderColor { get; } = Color.FromHex("#808080"); + public static Color PageNavigationBackgroundColor { get; } = Color.FromHex("#e9f6fb"); + // Item List. + public static double ItemListHeaderBorderWidth { get; set; } = 2.0; + public static float ItemListHeaderBorderRadius = 6.0f; + public static Color ItemListHeaderBorderColor = ApplicationBarBackgroundColor; + public static Color ItemListHeaderBackgroundColor = Color.FromHex("#F0F0F0"); + // Forms. + public static Color FormBackgroundColor { get; } = Color.FromHex("#e9f6fb"); + public static double FormGridRowSpacing { get; } = 4.0; + public static double FormGridColumnSpacing { get; } = 4.0; + // Controls. + public static Color ControlBackgroundColor { get; } = Color.FromHex("#f8f8f8"); + public static Color ControlBorderColor { get; } = Color.FromHex("#f8f8f8"); + public static double ControlBorderWidth { get; } = 0.5; + public static Thickness LabelMargin { get; } = new Thickness(4.0, 8.0, 0, 0); + // Tab controls. + public static Color TabControlHeaderBackgroundColor { get; } = Color.Transparent; + public static Color TabControlCaptionBackgroundColor { get; } = Color.FromHex("#E0E0E0"); + public static Color TabControlBodyBackgroundColor { get; } = Color.FromHex("#F8F8F8"); + public static Thickness TabControlBodyPadding { get; } = new Thickness(4.0); + // Associated items panel. + public static Color AssociatedItemsCaptionBackgroundColor { get; } = Color.FromHex("#becee4"); + public static Color AssociatedItemsCaptionTextColor { get; } = Color.FromHex("#f8f8f8"); + public static double AssociatedItemsCaptionTextSizeRatio { get; } = 1.2; + public static Color AssociatedItemsBackgroundColor { get; } = Color.FromHex("#dbe4f0"); + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/App/SbmMobileApplication.cs b/SaBusMgrMobCore/Mobile/Core/App/SbmMobileApplication.cs new file mode 100644 index 0000000..ebc9333 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/App/SbmMobileApplication.cs @@ -0,0 +1,101 @@ +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Mobile.Core.CodeTypes; +using Sarand.Core.Base; +using Sarand.Core.Mobile.App; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Xamarin.Forms; + +namespace Sarand.BusinessMgr.Mobile.Core.App +{ + //======================================================================= + public abstract class SbmMobileApplication : SaxApplication + { + //------------------------------------------------------------------- + // Definitions. + + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + protected SbmMobileApplication () + { + } + + //------------------------------------------------------------------- + // Properties. + public SbmMobile.Platform MobilePlatform { get; protected set; } + public Page CurrentPage + { + get + { + return + MainPage.Navigation.ModalStack.LastOrDefault() + ?? MainPage.Navigation.NavigationStack.LastOrDefault() + ?? MainPage; + } + } + + //------------------------------------------------------------------- + // W e b S e r v i c e + //------------------------------------------------------------------- + public abstract Task IsWebServiceAlive (SbmInstanceDefinition instanceDefinition); + + //------------------------------------------------------------------- + // I n s t a n c e D e f i n i t i o n s + //------------------------------------------------------------------- + public SbmInstanceDefinition GetInstanceDefinition () + { + return SbmGlobals_Mobile.SessionProfile.InstanceDefinition; + } + public abstract void SetInstance (SbmInstanceDefinition instanceDefinition); + + //------------------------------------------------------------------- + // P e r s i s t e n t S e s s i o n P r o p e r t i e s + //------------------------------------------------------------------- + public String DefaultDisplayName { get; set; } + public SbmInstanceDefinition DefaultInstanceDefinition { get; set; } + protected static String PropertyName_Context_Instance_Url { get; } = "Context-Instance-Url"; + protected static String PropertyName_Context_DisplayName { get; } = "Context-Name"; + public void RestorePersistentSessionProperties () + { + SbmSessionProfile_Mobile sessionProfile = SbmGlobals_Mobile.SessionProfile; + if (sessionProfile == null) return; + // Retrieve all session properties first before populating to session. + Object sessionInstanceUrl = Properties.GetValue(PropertyName_Context_Instance_Url, sessionProfile.InstanceDefinition != null ? sessionProfile.InstanceDefinition.URL : ""); + Object sessionName = Properties.GetValue(PropertyName_Context_DisplayName, sessionProfile.DisplayName); + // Populate session properties. + // Instance definition. + //if (sessionInstanceUrl != null) + //{ + // string instanceUrl = sessionInstanceUrl.ToString(); + //foreach (SbmInstanceDefinition instanceDefinition in GetInstanceDefinitions()) + //{ + // if (!instanceDefinition.URL.Equals(instanceUrl)) continue; + // DefaultInstanceDefinition = instanceDefinition; + //} + //} + // User. + if (sessionName != null) DefaultDisplayName = sessionName.ToString(); + //if (sessionEmail != null) DefaultEmailAddress = sessionEmail.ToString(); + } + public void StorePersistentSessionProperties () + { + SbmSessionProfile_Mobile sessionProfile = SbmGlobals_Mobile.SessionProfile; + if (sessionProfile == null) return; + Properties[PropertyName_Context_DisplayName] = sessionProfile.DisplayName; + } + + //------------------------------------------------------------------- + // C o n s o l e s + //------------------------------------------------------------------- + public abstract SbmCodeTypeConsole_Mobile CodeTypeConsole { get; } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/App/SbmSecurityProfile_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/App/SbmSecurityProfile_Mobile.cs new file mode 100644 index 0000000..8cc8526 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/App/SbmSecurityProfile_Mobile.cs @@ -0,0 +1,119 @@ +using System; +using System.Collections.Generic; +using Sarand.Core.App; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Security; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.WebService; + +namespace Sarand.BusinessMgr.Mobile.Core.App +{ + //======================================================================= + public class SbmSecurityProfile_Mobile : SbmSecurityProfile + { + //------------------------------------------------------------------- + // Base security profile - for raw User and Computer Security Groups and Rights. + protected class SaSecurityProfile_Mobile : SaSecurityProfile + { + public class GroupData_Mobile : GroupData + { + public GroupData_Mobile (SbmWebServiceItemData securityGroup) + { + GroupId = securityGroup.GetIdValue("Id"); + GroupCode = securityGroup.GetValue("AffiliateId"); + GroupDesc = securityGroup.GetValue("Description"); + } + } + public class RightData_Mobile : RightData + { + public RightData_Mobile (SbmWebServiceItemData securityRight) + { + RightId = securityRight.GetIdValue("Id"); + RightCode = securityRight.GetValue("Code"); + RightDesc = securityRight.GetValue("Description"); + DataItemId = securityRight.GetIdValue("ItemIdContext"); + Granted = securityRight.GetBoolValue("Granted"); + } + } + public SaSecurityProfile_Mobile () + { + // Blank profile. + } + public SaSecurityProfile_Mobile (SbmWebServiceItemData securityItem) + { + // Security item properties. + Id = securityItem.GetIdValue("Id"); + SecurityItemType = EnumUtil.ParseEnum(securityItem.GetValue("ItemType"), SaSecurity.ItemType.Unknown); + Code = securityItem.GetValue("Code"); + EmailAddress = securityItem.GetValue("EmailAddress"); + Description = securityItem.GetValue("Description"); + Location = securityItem.GetValue("Location"); + LastLogin = securityItem.GetDateValue("LastLogin"); + + // Security Groups. + if (securityItem.ChildItems.ContainsKey("SecurityGroupList")) + { + foreach (SbmWebServiceItemData securityGroup in securityItem.ChildItems["SecurityGroupList"]) + { + GroupData_Mobile groupData = new GroupData_Mobile(securityGroup); + foreach (SbmWebServiceItemData securityRight in securityGroup.ChildItems["SecurityRightList"]) + groupData.rights.Add(new RightData_Mobile(securityRight)); + securityGroups.Add(groupData); + } + } + // Security Rights. + foreach (SbmWebServiceItemData securityRight in securityItem.ChildItems["SecurityRightList"]) + securityRights.Add(new RightData_Mobile(securityRight)); + } + } + + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmSecurityProfile_Mobile () : base(null, false) + { + } + + //------------------------------------------------------------------- + // Properties. + public bool ValidProfile { get { return SysId.IsValid(UserId); } } + + //------------------------------------------------------------------- + // Refresh profile. + public bool RefreshProfile (SbmWebServiceItemData securityItem) + { + String fn = GetType().Name + ".RefreshProfile"; + ClearErrorState(); + + // Session context. + SysId previousUserId = UserId; + + // Construct User Security Profile. + SaSecurityProfile userProfile = new SaSecurityProfile_Mobile(securityItem); + UserId = SysId.InvalidOnNull(userProfile.Id); + Logger.Debug(fn + " User: '" + UserDisplayName + "' [Id: " + UserId + "]" + (SysId.IsValid(previousUserId) ? ". Previous UserId: " + SysId.ToString(previousUserId) : "")); + RefreshProfile(userProfile, null); + return SysId.IsValid(UserId) && SysId.InvalidOnNull(UserId).Equals(SysId.InvalidOnNull(userProfile.Id)); + } + + //------------------------------------------------------------------- + // Clear profile. + public bool ClearProfile () + { + String fn = GetType().Name + ".ClearProfile"; + ClearErrorState(); + // Construct User Security Profile. + SaSecurityProfile userProfile = new SaSecurityProfile_Mobile(); + UserId = new SysId(); + RefreshProfile(userProfile, null); + if (SacsSystem.DebugMode) Logger.Debug(fn + " User logged out"); + return !ValidProfile; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/App/SbmSessionContext_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/App/SbmSessionContext_Mobile.cs new file mode 100644 index 0000000..871e069 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/App/SbmSessionContext_Mobile.cs @@ -0,0 +1,33 @@ +using Sarand.BusinessMgr.Core.App; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.App +{ + //======================================================================= + public class SbmSessionContext_Mobile : SbmSessionContext + { + //------------------------------------------------------------------- + // Definitions. + + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + protected SbmSessionContext_Mobile () : base(0) + { + //instanceDefinition = instanceDefinition ?? new SlmInstanceDefinition_Mobile(); + //Instance = (instanceDefinition != null ? instanceDefinition.Instance : Sbm.Instance.Unknown); + //InstanceDefinition = instanceDefinition; + } + + //------------------------------------------------------------------- + // Properties. + public SbmInstanceDefinition InstanceDefinition { get; protected set; } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/App/SbmSessionProfile_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/App/SbmSessionProfile_Mobile.cs new file mode 100644 index 0000000..61d58a5 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/App/SbmSessionProfile_Mobile.cs @@ -0,0 +1,107 @@ +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.WebService; +using Sarand.Core.Bus; +using System; + +namespace Sarand.BusinessMgr.Mobile.Core.App +{ + //======================================================================= + public class SbmSessionProfile_Mobile : SbmSessionProfile + { + //------------------------------------------------------------------- + // Definitions. + // TODO - required formal parameter sessioncontext. + private class SbmUserContext_Mobile_Internal : SbmUserContext_Mobile + { + public SbmUserContext_Mobile_Internal (SbmSessionContext sessionContext) : + base(sessionContext) + { + } + internal void SetInstanceDefinition (SbmInstanceDefinition InstanceDefinition) + { + sessionContext_Mobile.SetInstanceDefinition(InstanceDefinition); + } + // Refresh user. + internal void RefreshUser (SbmWebServiceItemData securityItem) + { + // Populate User details. + userData_Mobile.Refresh(securityItem); + // Populate Security Profile. + SecurityProfile_Mobile.RefreshProfile(securityItem); + } + internal void LogoutUser () + { + userData_Mobile.Clear(); + SecurityProfile_Mobile.ClearProfile(); + } + } + + //------------------------------------------------------------------- + // Data members. + private readonly SbmUserContext_Mobile_Internal userContext_Local; + + //------------------------------------------------------------------- + // Construction. + protected SbmSessionProfile_Mobile (SbmSessionContext sessionContext) : + base (sessionContext) + { + userContext_Local = new SbmUserContext_Mobile_Internal(sessionContext); + } + + //------------------------------------------------------------------- + // Properties. + // Session. + public SbmSessionContext_Mobile SessionContext_Mobile { get { return userContext_Local.SessionContext_Mobile; } } + public SbmInstanceDefinition InstanceDefinition + { + get { return SessionContext_Mobile.InstanceDefinition; } + protected set { userContext_Local.SetInstanceDefinition(value); } + } + // User. + public SbmUserContext_Mobile UserContext_Mobile { get { return userContext_Local; } } + public SysId SecItemId { get { return userContext_Local.User.SecItemId; } } + public SysId AffiliateId { get { return userContext_Local.User.AffiliateId; } } + public String DisplayName { get { return userContext_Local.User.DisplayName; } } + + //------------------------------------------------------------------- + // U s e r S e s s i o n + //------------------------------------------------------------------- + public bool LoginUser (SbmInstanceDefinition instanceDefinition ,SbmWebServiceItemData securityItem) + { + userContext_Local.RefreshUser(securityItem); + SbmGlobals_Mobile.Application.SetInstance(instanceDefinition); + return UserContext_Mobile.ValidUser; + } + public bool LogoutUser () + { + userContext_Local.LogoutUser(); + return !(UserContext.ValidUser); + } + + //------------------------------------------------------------------- + // S e s s i o n P r o f i l e E v e n t s + //------------------------------------------------------------------- + public enum ModifiedProperty + { + EmailAddress, + } + public class PropertyModifiedEventArgs : EventArgs + { + public ModifiedProperty Property { get; set; } + } + public delegate void ModifiedEventHandler (object sender, PropertyModifiedEventArgs e); + public event ModifiedEventHandler PropertyModified; + private void OnPropertyModified (ModifiedProperty property) + { + if (PropertyModified != null) PropertyModified.Invoke(this, new PropertyModifiedEventArgs() { Property = property }); + } + + public override bool SetSelectedOwner (SysId affiliateId) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/App/SbmUserContext_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/App/SbmUserContext_Mobile.cs new file mode 100644 index 0000000..300333b --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/App/SbmUserContext_Mobile.cs @@ -0,0 +1,62 @@ +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.WebService; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.App +{ + //======================================================================= + public class SbmUserContext_Mobile : SbmUserContext + { + //------------------------------------------------------------------- + // Definitions. + protected class UserData_Mobile : UserData + { + public void Refresh (SbmWebServiceItemData securityItem) + { + SecItemId = securityItem.GetIdValue("Id"); + AffiliateId = securityItem.GetIdValue("AffiliateId"); + DisplayName = securityItem.GetValue("Description"); + } + public void Clear () + { + SecItemId = new Sarand.Core.Bus.SysId(); + AffiliateId = new Sarand.Core.Bus.SysId(); + DisplayName = ""; + } + } + protected class SbmSessionContext_Mobile_Internal : SbmSessionContext_Mobile + { + public SbmSessionContext_Mobile_Internal () : base() { } + public void SetInstanceDefinition (SbmInstanceDefinition instanceDefinition) + { + InstanceDefinition = instanceDefinition; + //Instance = instanceDefinition?.Instance ?? Sbm.Instance.Unknown; + } + } + + //------------------------------------------------------------------- + // Data members. + protected readonly SbmSessionContext_Mobile_Internal sessionContext_Mobile; + protected readonly UserData_Mobile userData_Mobile; + + //------------------------------------------------------------------- + // Construction - use derived objects. + public SbmUserContext_Mobile (SbmSessionContext sessioncontext) : + base (sessioncontext) + { + SessionContext = (sessionContext_Mobile = new SbmSessionContext_Mobile_Internal()); + userData_Mobile = new UserData_Mobile(); + SecurityProfile = (SecurityProfile_Mobile = new SbmSecurityProfile_Mobile()); + } + + //------------------------------------------------------------------- + // Properties. + public SbmSessionContext_Mobile SessionContext_Mobile { get { return sessionContext_Mobile; } } + protected SbmSecurityProfile_Mobile SecurityProfile_Mobile { get; } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Bus/SbmAddress_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/Bus/SbmAddress_Mobile.cs new file mode 100644 index 0000000..3512fb0 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Bus/SbmAddress_Mobile.cs @@ -0,0 +1,43 @@ +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.Core.Bus; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.Bus +{ + //======================================================================= + public class SbmAddress_Mobile : SbmAddress + { + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmAddress_Mobile (SbmUserContext userContext, SysId id, Sbm.ItemType itemType, SysId itemId, Sbm.AddressType addressType, ushort flags) : + base (userContext, id, itemType, itemId, addressType) + { + Flags = flags; + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // A s s o c i a t e d D a t a + //------------------------------------------------------------------- + public override bool ClearDependentData () + { + throw new NotImplementedException(); + } + + public override bool HasInterfaceDataItems () + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Bus/SbmAffiliate_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/Bus/SbmAffiliate_Mobile.cs new file mode 100644 index 0000000..b2152d8 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Bus/SbmAffiliate_Mobile.cs @@ -0,0 +1,78 @@ +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.Core.Bus; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.Bus +{ + //======================================================================= + public class SbmAffiliate_Mobile : SbmAffiliate + { + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmAffiliate_Mobile (SbmUserContext userContext, SysId id, Sbm.AffiliateType affiliateType, ushort flags) : + base (userContext, id, affiliateType) + { + Flags = flags; + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // A s s o c i a t e d D a t a + //------------------------------------------------------------------- + public override bool ClearDependentData () + { + throw new NotImplementedException(); + } + + public override long GetChildAffiliates () + { + throw new NotImplementedException(); + } + + public override bool HasChildAffiliates () + { + throw new NotImplementedException(); + } + + public override bool HasDiaryLinks () + { + throw new NotImplementedException(); + } + + public override bool HasSystemUsers () + { + throw new NotImplementedException(); + } + + public override bool OwnerOfAssociations (Sbm.AssociationType associationType = Sbm.AssociationType.Any, bool currentOnly = true) + { + throw new NotImplementedException(); + } + + public override long OwnerOfAssociationsCount (Sbm.AssociationType associationType = Sbm.AssociationType.Any, bool currentOnly = true) + { + throw new NotImplementedException(); + } + + public override bool TargetOfAssociations (Sbm.AssociationType associationType = Sbm.AssociationType.Any, bool currentOnly = true) + { + throw new NotImplementedException(); + } + + public override long TargetOfAssociationsCount (Sbm.AssociationType associationType = Sbm.AssociationType.Any, bool currentOnly = true) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Bus/SbmAssetCategory_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/Bus/SbmAssetCategory_Mobile.cs new file mode 100644 index 0000000..3e934f8 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Bus/SbmAssetCategory_Mobile.cs @@ -0,0 +1,63 @@ +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.Core.Bus; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.Bus +{ + //======================================================================= + public class SbmAssetCategory_Mobile : SbmAssetCategory + { + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmAssetCategory_Mobile (SbmUserContext userContext, SysId id, ushort flags) : + base(userContext, id) + { + Flags = flags; + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // A s s o c i a t e d D a t a + //------------------------------------------------------------------- + public override bool ClearDependentData () + { + throw new NotImplementedException(); + } + + public override bool CommitProcesses () + { + throw new NotImplementedException(); + } + + public override List GetProcesses (bool bActiveOnly) + { + throw new NotImplementedException(); + } + + public override bool HasAssets () + { + throw new NotImplementedException(); + } + + public override bool HasProcesses () + { + throw new NotImplementedException(); + } + + public override bool SetProcesses (List itemProcessesNew) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Bus/SbmAssetProcess_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/Bus/SbmAssetProcess_Mobile.cs new file mode 100644 index 0000000..d73dcc0 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Bus/SbmAssetProcess_Mobile.cs @@ -0,0 +1,34 @@ +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.Core.Bus; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.Bus +{ + //======================================================================= + public class SbmAssetProcess_Mobile : SbmAssetProcess + { + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmAssetProcess_Mobile (SbmUserContext userContext, SysId id, SysId assetId, SysId processId, ushort flags) : + base(userContext, id, assetId, processId) + { + Flags = flags; + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // A s s o c i a t e d D a t a + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Bus/SbmAsset_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/Bus/SbmAsset_Mobile.cs new file mode 100644 index 0000000..e8237c0 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Bus/SbmAsset_Mobile.cs @@ -0,0 +1,98 @@ +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.Core.Bus; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.Bus +{ + //======================================================================= + public class SbmAsset_Mobile : SbmAsset + { + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmAsset_Mobile (SbmUserContext userContext, SysId id, SysId assetCatId, ushort flags) : + base (userContext, id, assetCatId) + { + Flags = flags; + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // A s s o c i a t e d D a t a + //------------------------------------------------------------------- + public override bool ClearDependentData () + { + throw new NotImplementedException(); + } + + public override bool CommitPrices () + { + throw new NotImplementedException(); + } + + public override bool CommitProcesses () + { + throw new NotImplementedException(); + } + + public override List GetPrices () + { + throw new NotImplementedException(); + } + + public override List GetProcesses (bool bActiveOnly) + { + throw new NotImplementedException(); + } + + public override bool HasAssociatedDetails () + { + throw new NotImplementedException(); + } + + public override bool HasInterfaceDataItems () + { + throw new NotImplementedException(); + } + + public override bool HasPrices () + { + throw new NotImplementedException(); + } + + public override bool HasProcesses () + { + throw new NotImplementedException(); + } + + public override bool HasRequirements () + { + throw new NotImplementedException(); + } + + public override bool PopulateDefaultProcesses () + { + throw new NotImplementedException(); + } + + public override bool SetPrices (List itemPricesNew) + { + throw new NotImplementedException(); + } + + public override bool SetProcesses (List itemProcessesNew) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Bus/SbmAssociation_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/Bus/SbmAssociation_Mobile.cs new file mode 100644 index 0000000..1718245 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Bus/SbmAssociation_Mobile.cs @@ -0,0 +1,58 @@ +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.Core.Bus; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.Bus +{ + //======================================================================= + public class SbmAssociation_Mobile : SbmAssociation + { + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmAssociation_Mobile (SbmUserContext userContext, SysId id, SysId affiliateIdOwner, Sbm.AssociationType associationType, SysId affiliateIdTarget, ushort flags) : + base(userContext, id, affiliateIdOwner, associationType, affiliateIdTarget) + { + Flags = flags; + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // A s s o c i a t e d D a t a + //------------------------------------------------------------------- + public override bool ClearDependentData () + { + throw new NotImplementedException(); + } + + public override bool HasConstituents () + { + throw new NotImplementedException(); + } + + public override bool HasRequirements () + { + throw new NotImplementedException(); + } + + public override bool HasTransactions () + { + throw new NotImplementedException(); + } + + public override bool IsDeliveryContractor () + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Bus/SbmCommodityCustomer_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/Bus/SbmCommodityCustomer_Mobile.cs new file mode 100644 index 0000000..5b3a4e4 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Bus/SbmCommodityCustomer_Mobile.cs @@ -0,0 +1,34 @@ +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.Core.Bus; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.Bus +{ + //======================================================================= + public class SbmCommodityCustomer_Mobile : SbmCommodityCustomer + { + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmCommodityCustomer_Mobile (SbmUserContext userContext, SysId commodityId, SysId assocIdCustomer, ushort flags) : + base(userContext, commodityId, assocIdCustomer) + { + Flags = flags; + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // A s s o c i a t e d D a t a + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Bus/SbmCommoditySupplier_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/Bus/SbmCommoditySupplier_Mobile.cs new file mode 100644 index 0000000..2b589b2 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Bus/SbmCommoditySupplier_Mobile.cs @@ -0,0 +1,34 @@ +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.Core.Bus; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.Bus +{ + //======================================================================= + public class SbmCommoditySupplier_Mobile : SbmCommoditySupplier + { + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmCommoditySupplier_Mobile (SbmUserContext userContext, SysId commodityId, SysId assocIdSupplier, ushort flags) : + base(userContext, commodityId, assocIdSupplier) + { + Flags = flags; + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // A s s o c i a t e d D a t a + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Bus/SbmCommodity_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/Bus/SbmCommodity_Mobile.cs new file mode 100644 index 0000000..ed29d55 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Bus/SbmCommodity_Mobile.cs @@ -0,0 +1,118 @@ +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.Core.Bus; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.Bus +{ + //======================================================================= + public class SbmCommodity_Mobile : SbmCommodity + { + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmCommodity_Mobile (SbmUserContext userContext, SysId id, SysId affiliateIdOwner, Sbm.CommodityType commodityType, String code, ushort flags) : + base (userContext, id, affiliateIdOwner, commodityType, code) + { + Flags = flags; + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // A s s o c i a t e d D a t a + //------------------------------------------------------------------- + public override bool ClearDependentData () + { + throw new NotImplementedException(); + } + + public override bool CommitCostEstimates () + { + throw new NotImplementedException(); + } + + public override bool CommitProcesses () + { + throw new NotImplementedException(); + } + + public override List GetCostEstimates () + { + throw new NotImplementedException(); + } + + public override List GetProcesses (bool bActiveOnly = false) + { + throw new NotImplementedException(); + } + + public override bool HasComponents () + { + throw new NotImplementedException(); + } + + public override bool HasContainers () + { + throw new NotImplementedException(); + } + + public override bool HasCustomerDetails () + { + throw new NotImplementedException(); + } + + public override bool HasMovements () + { + throw new NotImplementedException(); + } + + public override bool HasPortfolioItems () + { + throw new NotImplementedException(); + } + + public override bool HasProcesses () + { + throw new NotImplementedException(); + } + + public override bool HasRequirements () + { + throw new NotImplementedException(); + } + + public override bool HasStockLevels () + { + throw new NotImplementedException(); + } + + public override bool HasSupplierDetails () + { + throw new NotImplementedException(); + } + + public override bool IsSalesBudgetTemplate () + { + throw new NotImplementedException(); + } + + public override bool SetCostEstimates (List costEstimatesNew) + { + throw new NotImplementedException(); + } + + public override bool SetProcesses (List itemProcessesNew) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Bus/SbmConstituent_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/Bus/SbmConstituent_Mobile.cs new file mode 100644 index 0000000..5976b8d --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Bus/SbmConstituent_Mobile.cs @@ -0,0 +1,38 @@ +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.Core.Bus; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.Bus +{ + //======================================================================= + public class SbmConstituent_Mobile : SbmConstituent + { + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmConstituent_Mobile (SbmUserContext userContext, SysId id, SysId affIdOwner, SysId assocId, Sbm.ConstituentType constituentType, ushort flags) : + base(userContext, id, affIdOwner, assocId, constituentType) + { + Flags = flags; + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // A s s o c i a t e d D a t a + //------------------------------------------------------------------- + public override bool HasConstituents () + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Bus/SbmContainerItem_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/Bus/SbmContainerItem_Mobile.cs new file mode 100644 index 0000000..53a713e --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Bus/SbmContainerItem_Mobile.cs @@ -0,0 +1,34 @@ +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.Core.Bus; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.Bus +{ + //======================================================================= + public class SbmContainerItem_Mobile : SbmContainerItem + { + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmContainerItem_Mobile (SbmUserContext userContext, SysId containerId, Sbm.ItemType itemType, SysId itemId, ushort flags) : + base (userContext, containerId, itemType, itemId) + { + Flags = flags; + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // A s s o c i a t e d D a t a + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Bus/SbmContainer_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/Bus/SbmContainer_Mobile.cs new file mode 100644 index 0000000..18f7640 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Bus/SbmContainer_Mobile.cs @@ -0,0 +1,48 @@ +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.Core.Bus; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.Bus +{ + //======================================================================= + public class SbmContainer_Mobile : SbmContainer + { + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmContainer_Mobile (SbmUserContext userContext, SysId id, SysId affiliateIdOwner, Sbm.ContainerCategory containerCategory, Sbm.ContainerType containerType, ushort flags) : + base(userContext, id, affiliateIdOwner, containerCategory, containerType) + { + Flags = flags; + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // A s s o c i a t e d D a t a + //------------------------------------------------------------------- + public override bool HasActionedMovements () + { + throw new NotImplementedException(); + } + + public override bool HasItems () + { + throw new NotImplementedException(); + } + + public override bool HasMovements () + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Bus/SbmItemBatch_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/Bus/SbmItemBatch_Mobile.cs new file mode 100644 index 0000000..478f881 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Bus/SbmItemBatch_Mobile.cs @@ -0,0 +1,34 @@ +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.Core.Bus; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.Bus +{ + //======================================================================= + public class SbmItemBatch_Mobile : SbmItemBatch + { + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmItemBatch_Mobile (SbmUserContext userContext, SysId id, SysId affiliateIdOwner, Sbm.ItemBatchType itemBatchType, String refs, ushort flags) : + base(userContext, id, affiliateIdOwner, itemBatchType, refs) + { + Flags = flags; + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // A s s o c i a t e d D a t a + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Bus/SbmItemLink_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/Bus/SbmItemLink_Mobile.cs new file mode 100644 index 0000000..3cc8fdf --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Bus/SbmItemLink_Mobile.cs @@ -0,0 +1,34 @@ +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.Core.Bus; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.Bus +{ + //======================================================================= + public class SbmItemLink_Mobile : SbmItemLink + { + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmItemLink_Mobile (SbmUserContext userContext, SysId id, Sbm.ItemLinkType itemLinkType, Sbm.ItemType itemTypeFrom, SysId itemIdFrom, Sbm.ItemType itemTypeTo, SysId itemIdTo, ushort flags) : + base(userContext, id, itemLinkType, itemTypeFrom, itemIdFrom, itemTypeTo, itemIdTo) + { + Flags = flags; + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // A s s o c i a t e d D a t a + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Bus/SbmItemProcess_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/Bus/SbmItemProcess_Mobile.cs new file mode 100644 index 0000000..82272c0 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Bus/SbmItemProcess_Mobile.cs @@ -0,0 +1,34 @@ +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.Core.Bus; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.Bus +{ + //======================================================================= + public class SbmItemProcess_Mobile : SbmItemProcess + { + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmItemProcess_Mobile (SbmUserContext userContext, Sbm.ItemType itemType, SysId itemId, SysId processId, ushort flags) : + base(userContext, itemType, itemId, processId) + { + Flags = flags; + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // A s s o c i a t e d D a t a + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Bus/SbmLocation_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/Bus/SbmLocation_Mobile.cs new file mode 100644 index 0000000..0f1802b --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Bus/SbmLocation_Mobile.cs @@ -0,0 +1,42 @@ +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.Core.Bus; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.Bus +{ + //======================================================================= + public class SbmLocation_Mobile : SbmLocation + { + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmLocation_Mobile (SbmUserContext userContext, SysId id, SysId affiliateIdOwner, Sbm.LocationCategory locationCategory, ushort flags) : + base (userContext, id, affiliateIdOwner, locationCategory) + { + Flags = flags; + } + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // A s s o c i a t e d D a t a + //------------------------------------------------------------------- + public override bool HaveMovement () + { + throw new NotImplementedException(); + } + + public override bool HaveStockLevel () + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Bus/SbmMovement_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/Bus/SbmMovement_Mobile.cs new file mode 100644 index 0000000..0841d80 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Bus/SbmMovement_Mobile.cs @@ -0,0 +1,34 @@ +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.Core.Bus; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.Bus +{ + //======================================================================= + public class SbmMovement_Mobile : SbmMovement + { + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmMovement_Mobile (SbmUserContext userContext, SysId id, Sbm.ItemType itemType, SysId itemId, Sbm.MovementType movementType, ushort flags) : + base(userContext, id, itemType, itemId, movementType) + { + Flags = flags; + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // A s s o c i a t e d D a t a + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Bus/SbmPortfolioItem_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/Bus/SbmPortfolioItem_Mobile.cs new file mode 100644 index 0000000..c939d46 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Bus/SbmPortfolioItem_Mobile.cs @@ -0,0 +1,58 @@ +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.Core.Bus; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.Bus +{ + //======================================================================= + public class SbmPortfolioItem_Mobile : SbmPortfolioItem + { + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmPortfolioItem_Mobile (SbmUserContext userContext, SysId id, SysId affiliateIdOwner, Sbm.PortfolioItemType portfolioItemType, ushort flags) : + base(userContext, id, affiliateIdOwner, portfolioItemType) + { + Flags = flags; + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // A s s o c i a t e d D a t a + //------------------------------------------------------------------- + public override bool ClearChildItems () + { + throw new NotImplementedException(); + } + + public override bool ClearDependentData () + { + throw new NotImplementedException(); + } + + public override long GetChildItemCount (Sbm.PortfolioItemType portfolioItemType = Sbm.PortfolioItemType.Unknown) + { + throw new NotImplementedException(); + } + + public override bool HasChildItems () + { + throw new NotImplementedException(); + } + + public override bool IsReferencedByOtherItems () + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Bus/SbmPriceSet_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/Bus/SbmPriceSet_Mobile.cs new file mode 100644 index 0000000..b34ffe3 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Bus/SbmPriceSet_Mobile.cs @@ -0,0 +1,38 @@ +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.Core.Bus; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.Bus +{ + //======================================================================= + public class SbmPriceSet_Mobile : SbmPriceSet + { + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmPriceSet_Mobile (SbmUserContext userContext, SysId id, SysId affiliateIdOwner, String reference, Sbm.PriceType priceType, ushort flags) : + base(userContext, id, affiliateIdOwner, reference, priceType) + { + Flags = flags; + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // A s s o c i a t e d D a t a + //------------------------------------------------------------------- + public override bool HasPrices () + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Bus/SbmPrice_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/Bus/SbmPrice_Mobile.cs new file mode 100644 index 0000000..7d91852 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Bus/SbmPrice_Mobile.cs @@ -0,0 +1,34 @@ +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.Core.Bus; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.Bus +{ + //======================================================================= + public class SbmPrice_Mobile : SbmPrice + { + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmPrice_Mobile (SbmUserContext userContext, SysId priceSetId, SysId commodityId, Sbm.PriceType priceType, ushort flags) : + base(userContext, priceSetId, commodityId, priceType) + { + Flags = flags; + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // A s s o c i a t e d D a t a + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Bus/SbmProcess_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/Bus/SbmProcess_Mobile.cs new file mode 100644 index 0000000..0eb9b30 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Bus/SbmProcess_Mobile.cs @@ -0,0 +1,83 @@ +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.Core.Bus; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.Bus +{ + //======================================================================= + public class SbmProcess_Mobile : SbmProcess + { + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmProcess_Mobile (SbmUserContext userContext, SysId id, SysId affIdOwner, Sbm.ProcessCategory processCategory, ushort flags) : + base(userContext, id, affIdOwner, processCategory) + { + Flags = flags; + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // A s s o c i a t e d D a t a + //------------------------------------------------------------------- + public override bool ClearAssociatedData () + { + throw new NotImplementedException(); + } + + public override bool ClearCostCodes (SbmProcessCostCode processCostCode) + { + throw new NotImplementedException(); + } + + public override bool ClearCostCodes () + { + throw new NotImplementedException(); + } + + public override string GetCodeForCostCode (SbmProcessCostCode processCostCode) + { + throw new NotImplementedException(); + } + + public override List GetCostCodes (SbmProcessCostCode processCostCode) + { + throw new NotImplementedException(); + } + + public override bool HasCostCodes () + { + throw new NotImplementedException(); + } + + public override bool HasCostCodes (SbmProcessCostCode processCostCode) + { + throw new NotImplementedException(); + } + + public override bool HasItemData () + { + throw new NotImplementedException(); + } + + public override bool HasReferences () + { + throw new NotImplementedException(); + } + + public override bool StoreCostCodes (SbmProcessCostCode processCostCode, List costCodes) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Bus/SbmRequirement_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/Bus/SbmRequirement_Mobile.cs new file mode 100644 index 0000000..4969c1a --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Bus/SbmRequirement_Mobile.cs @@ -0,0 +1,117 @@ +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.Core.Bus; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.Bus +{ + //======================================================================= + public class SbmRequirement_Mobile : SbmRequirement + { + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmRequirement_Mobile (SbmUserContext userContext, SysId id, SysId affIdOwner, SysId assocId, SysId transId, Sbm.RequirementType requirementType, ushort flags) : + base(userContext, id, affIdOwner, assocId, transId, requirementType) + { + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // A s s o c i a t e d D a t a + //------------------------------------------------------------------- + public override bool ClearAssociatedRequirements () + { + throw new NotImplementedException(); + } + + public override bool ClearDependentData () + { + throw new NotImplementedException(); + } + + public override bool CommitAssociatedData () + { + throw new NotImplementedException(); + } + + public override bool CommitCostEstimates () + { + throw new NotImplementedException(); + } + + public override bool CommitProcesses () + { + throw new NotImplementedException(); + } + + public override List GetCostEstimates () + { + throw new NotImplementedException(); + } + + public override List GetProcesses () + { + throw new NotImplementedException(); + } + + public override decimal GetQuantityDispatched (SysId transIdExclude) + { + throw new NotImplementedException(); + } + + public override decimal GetQuantityInvoiced (SysId transIdExclude) + { + throw new NotImplementedException(); + } + + public override bool HasConstituents (Sbm.ConstituentType constituentType) + { + throw new NotImplementedException(); + } + + public override bool HasCostEstimates () + { + throw new NotImplementedException(); + } + + public override bool HasItemLinks () + { + throw new NotImplementedException(); + } + + public override bool HasProcess () + { + throw new NotImplementedException(); + } + + public override bool HasRequirements () + { + throw new NotImplementedException(); + } + + public override bool HasStockMovments () + { + throw new NotImplementedException(); + } + + public override bool SetCostEstimates (List costEstimatesNew) + { + throw new NotImplementedException(); + } + + public override bool SetProcesses (List itemProcessesNew) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Bus/SbmSysParam_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/Bus/SbmSysParam_Mobile.cs new file mode 100644 index 0000000..4d20edc --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Bus/SbmSysParam_Mobile.cs @@ -0,0 +1,34 @@ +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.Core.Bus; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.Bus +{ + //======================================================================= + public class SbmSysParam_Mobile : SbmSysParam + { + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmSysParam_Mobile (SbmUserContext userContext, SysId id, Sbm.SysParamCategory category, String name, ushort flags) : + base (userContext, id, category, name) + { + Flags = flags; + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // A s s o c i a t e d D a t a + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Bus/SbmSystemAccountUser_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/Bus/SbmSystemAccountUser_Mobile.cs new file mode 100644 index 0000000..4677004 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Bus/SbmSystemAccountUser_Mobile.cs @@ -0,0 +1,34 @@ +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.Core.Bus; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.Bus +{ + //======================================================================= + public class SbmSystemAccountUser_Mobile : SbmSystemAccountUser + { + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmSystemAccountUser_Mobile (SbmUserContext userContext, SysId accountId, SysId userId, ushort flags) : + base (userContext, accountId, userId) + { + Flags = flags; + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // A s s o c i a t e d D a t a + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Bus/SbmSystemAccount_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/Bus/SbmSystemAccount_Mobile.cs new file mode 100644 index 0000000..8fb90d3 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Bus/SbmSystemAccount_Mobile.cs @@ -0,0 +1,38 @@ +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.Core.Bus; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.Bus +{ + //======================================================================= + public class SbmSystemAccount_Mobile : SbmSystemAccount + { + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmSystemAccount_Mobile (SbmUserContext userContext, SysId id, SysId affIdOwner, Sbm.SystemAccountType systemAccountType, SysId interfaceId, SysId assocId, ushort flags) : + base (userContext, id, affIdOwner, systemAccountType, interfaceId, assocId) + { + Flags = flags; + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // A s s o c i a t e d D a t a + //------------------------------------------------------------------- + public override bool HasUsers () + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Bus/SbmSystemUser_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/Bus/SbmSystemUser_Mobile.cs new file mode 100644 index 0000000..dd247d3 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Bus/SbmSystemUser_Mobile.cs @@ -0,0 +1,34 @@ +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.Core.Bus; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.Bus +{ + //======================================================================= + public class SbmSystemUser_Mobile : SbmSystemUser + { + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmSystemUser_Mobile (SbmUserContext userContext, SysId id, SysId affIdOwner, SysId interfaceId, SysId affiliateId, ushort flags) : + base(userContext, id, affIdOwner, interfaceId, affiliateId) + { + Flags = flags; + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // A s s o c i a t e d D a t a + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Bus/SbmTransaction_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/Bus/SbmTransaction_Mobile.cs new file mode 100644 index 0000000..5f287c0 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Bus/SbmTransaction_Mobile.cs @@ -0,0 +1,129 @@ +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.Bus +{ + //======================================================================= + public class SbmTransaction_Mobile : SbmTransaction + { + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmTransaction_Mobile (SbmUserContext userContext, SysId id, SysId affIdOwner, SysId assocId, Sbm.TransactionType transactionType, ushort flags) : + base(userContext, id, affIdOwner, assocId, transactionType) + { + Flags = flags; + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // A s s o c i a t e d D a t a + //------------------------------------------------------------------- + public override bool ClearDependentData () + { + throw new NotImplementedException(); + } + + public override bool CommitAssociatedData () + { + throw new NotImplementedException(); + } + + public override bool CommitPayments () + { + throw new NotImplementedException(); + } + + public override bool DetailsAreReadOnly () + { + throw new NotImplementedException(); + } + + public override List GetPayments () + { + throw new NotImplementedException(); + } + + public override long GetRequirementCount (SbmRequirement.StatusCat requirementStatusCat = SbmRequirement.StatusCat.Any) + { + throw new NotImplementedException(); + } + + public override List GetRequirements (SbmRequirement.StatusCat requirementStatusCat = SbmRequirement.StatusCat.Any) + { + throw new NotImplementedException(); + } + + public override bool HasConstituents (SbmConstituent.StatusCat constituentStatusCat = SbmConstituent.StatusCat.NotDeleted) + { + throw new NotImplementedException(); + } + + public override bool HasContainerItems () + { + throw new NotImplementedException(); + } + + public override bool HasDiaryLinks () + { + throw new NotImplementedException(); + } + + public override bool HasPayments () + { + throw new NotImplementedException(); + } + + public override bool HasPendingStockMovements () + { + throw new NotImplementedException(); + } + + public override bool HasRequirements (SbmRequirement.StatusCat requirementStatusCat = SbmRequirement.StatusCat.NotDeleted) + { + throw new NotImplementedException(); + } + + public override bool HasStockMovements () + { + throw new NotImplementedException(); + } + + public override bool IsReadOnly () + { + throw new NotImplementedException(); + } + + public override bool IsReferencedByOtherTransactions () + { + throw new NotImplementedException(); + } + + public override bool ItemsRequireJobNumber () + { + throw new NotImplementedException(); + } + + public override bool SetPayments (List transactionPaymentsNew) + { + throw new NotImplementedException(); + } + + public override bool UpdateRequirements (List requirements) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Bus/SbmVehicleClass_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/Bus/SbmVehicleClass_Mobile.cs new file mode 100644 index 0000000..d1da2fd --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Bus/SbmVehicleClass_Mobile.cs @@ -0,0 +1,53 @@ +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.Core.Bus; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.Bus +{ + //======================================================================= + public class SbmVehicleClass_Mobile : SbmVehicleClass + { + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmVehicleClass_Mobile (SbmUserContext userContext, SysId id, ushort flags) : + base(userContext, id) + { + Flags = flags; + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // A s s o c i a t e d D a t a + //------------------------------------------------------------------- + public override bool ClearDependentData () + { + throw new NotImplementedException(); + } + + public override string ConstructCaption (string makeCode, string model, string derivative) + { + throw new NotImplementedException(); + } + + public override long GetVehicleCount () + { + throw new NotImplementedException(); + } + + public override bool HasVehicles () + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Bus/SbmVehicleEvent_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/Bus/SbmVehicleEvent_Mobile.cs new file mode 100644 index 0000000..0d1a961 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Bus/SbmVehicleEvent_Mobile.cs @@ -0,0 +1,34 @@ +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.Core.Bus; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.Bus +{ + //======================================================================= + public class SbmVehicleEvent_Mobile : SbmVehicleEvent + { + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmVehicleEvent_Mobile (SbmUserContext userContext, SysId vehicleId, Sbm.VehicleEventType vehicleEventType, ushort flags) : + base(userContext, vehicleId, vehicleEventType) + { + Flags = flags; + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // A s s o c i a t e d D a t a + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Bus/SbmVehicleFeature_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/Bus/SbmVehicleFeature_Mobile.cs new file mode 100644 index 0000000..7980c54 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Bus/SbmVehicleFeature_Mobile.cs @@ -0,0 +1,34 @@ +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.Core.Bus; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.Bus +{ + //======================================================================= + public class SbmVehicleFeature_Mobile : SbmVehicleFeature + { + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmVehicleFeature_Mobile (SbmUserContext userContext, SysId vehicleId, Sbm.VehicleFeatureSource vehicleFeatureSource, Sbm.VehicleFeatureType vehicleFeatureType, ushort flags) : + base(userContext, vehicleId, vehicleFeatureSource, vehicleFeatureType) + { + Flags = flags; + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // A s s o c i a t e d D a t a + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Bus/SbmVehicle_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/Bus/SbmVehicle_Mobile.cs new file mode 100644 index 0000000..dee11c0 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Bus/SbmVehicle_Mobile.cs @@ -0,0 +1,83 @@ +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.Core.Bus; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.Bus +{ + //======================================================================= + public class SbmVehicle_Mobile : SbmVehicle + { + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmVehicle_Mobile (SbmUserContext userContext, SysId id, ushort flags) : + base(userContext, id) + { + Flags = flags; + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // A s s o c i a t e d D a t a + //------------------------------------------------------------------- + public override bool ClearDependentData () + { + throw new NotImplementedException(); + } + + public override long GetFeatureCount () + { + throw new NotImplementedException(); + } + + public override bool HasAssets () + { + throw new NotImplementedException(); + } + + public override bool HasEvents () + { + throw new NotImplementedException(); + } + + public override bool HasFeatures () + { + throw new NotImplementedException(); + } + + public override bool HasInterfaceDataItems () + { + throw new NotImplementedException(); + } + + public override bool HasItemData () + { + throw new NotImplementedException(); + } + + public override bool HasProcesses () + { + throw new NotImplementedException(); + } + + public override bool HpiCheckCount () + { + throw new NotImplementedException(); + } + + public override bool SetOdometerReading (decimal odometer) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/CodeTypes/SbmCodeTypeConsole_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/CodeTypes/SbmCodeTypeConsole_Mobile.cs new file mode 100644 index 0000000..8b9db7b --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/CodeTypes/SbmCodeTypeConsole_Mobile.cs @@ -0,0 +1,527 @@ +using Sarand.BusinessMgr.Mobile.Core.App; +using Sarand.BusinessMgr.Core.WebService; +using Sarand.Core.App; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.CodeTypes; +using Sarand.Core.Data; +using Sarand.Core.Dbas.Base; +using Sarand.Core.Tasks; +using Sarand.Core.Xml; +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using System.Xml.Linq; + +namespace Sarand.BusinessMgr.Mobile.Core.CodeTypes +{ + //======================================================================= + public class SbmCodeTypeConsole_Mobile : SaCodeTypeConsole + { + //------------------------------------------------------------------- + // Data members. + private SbmWebServiceClient webServiceClient = new SbmWebServiceClient(); + private List codeTypes = new List(); + private Dictionary> codeTypeCodes = new Dictionary>(); + + //------------------------------------------------------------------- + // Construction. + public SbmCodeTypeConsole_Mobile () + { + } + + //------------------------------------------------------------------- + // Properties. + public SbmSessionProfile_Mobile SessionProfile { get { return SbmGlobals_Mobile.SessionProfile; } } + public String DisplayName { get { return SessionProfile.DisplayName; } } + public override bool DatabaseIsValid { get { return true; } } + public override bool CanUpdateDatabase { get { return true; } } + public bool Populating { get; private set; } = false; + public bool Populated { get; private set; } = false; + + //------------------------------------------------------------------- + // R e f r e s h C o d e T y p e s + //------------------------------------------------------------------- + public class RefreshTaskData : SacsTaskData + { + // Construction. + public RefreshTaskData (CancellationToken? cancellationToken = null) : base(cancellationToken) { } + /// Code types received from Service. + public List CodeTypes { get; } = new List(); + public bool CodeTypesRequestComplete { get; set; } + /// Codes received from Service. + public List Codes { get; } = new List(); + public bool CodesRequestComplete { get; set; } + // Completion method. + public delegate void OnCompletionFn (RefreshTaskData refreshTaskData); + /// Method to call on completion. + public OnCompletionFn OnCompletion { get; set; } + } + private RefreshTaskData refreshTaskData = null; + public void RefreshCodeTypes () + { + String fn = GetType().Name + ".RefreshCodeTypes"; + Populated = false; + Populating = true; + + // Cancel previous refresh. + if (refreshTaskData != null) + { + refreshTaskData.TriggerCancellation(); + refreshTaskData = null; + } + + // Initialise fresh request. + refreshTaskData = new RefreshTaskData() + { + OnCompletion = ApplyRefreshedCodeTypeData + }; + + // Request Code Types and Codes from Service. + Task refreshCodeTypesTask = Task.Run(async () => + { + await RequestRefreshData(refreshTaskData); + }, refreshTaskData.CancellationToken); + } + private void ApplyRefreshedCodeTypeData (RefreshTaskData refreshTaskData) + { + String fn = GetType().Name + ".ApplyRefreshedCodeTypeData"; + // Ignore if cancelled. + if (refreshTaskData.IsCancellationRequested) + { + Logger.Debug(fn + " Refresh cancelled"); + return; + } + // Check that requests are completed. + if (!refreshTaskData.CodeTypesRequestComplete) + { + Logger.Debug(fn + " Code types request not completed"); + return; + } + if (!refreshTaskData.CodesRequestComplete) + { + Logger.Debug(fn + " Codes request not completed"); + return; + } + Logger.Info(fn + " Refreshing code types"); + // Compile codes by code type. + Dictionary> codeTypeCodes = new Dictionary>(); + foreach (SaCode saCode in refreshTaskData.Codes) + { + if (!codeTypeCodes.ContainsKey(saCode.CodeTypeId)) + codeTypeCodes[saCode.CodeTypeId] = new List(); + codeTypeCodes[saCode.CodeTypeId].Add(saCode); + } + // Refresh class data members - as instantaneously as possible. + codeTypes = refreshTaskData.CodeTypes; + this.codeTypeCodes = codeTypeCodes; + if (refreshTaskData.Debug) Logger.Debug(fn + " Code types: " + codeTypes.Count + ". Codes: " + codeTypeCodes.Count); + Populating = false; + Populated = true; + // Dispose the class refresh data. + if (this.refreshTaskData == refreshTaskData) + { + this.refreshTaskData.Dispose(); + this.refreshTaskData = null; + } + } + + //------------------------------------------------------------------- + private SbmWebServiceRequest.Config GetRequestConfig (SbmWebServiceRequest.DataType dataType, SbmWebServiceRequest.RequestType requestType, bool debug) + { + SbmWebServiceRequest.Config configRequest = new SbmWebServiceRequest.Config(); + configRequest.DataType = dataType; + configRequest.RequestType = requestType; + configRequest.Context.User = DisplayName; + configRequest.Context.Debug = debug; + configRequest.SoapEnvelope = (SbmMobile.Random.Next(2) == 1); + configRequest.SoapPrefix = new List() { "", "SOAP", "soap", "S", "s" }[SbmMobile.Random.Next(5)]; + return configRequest; + } + + //------------------------------------------------------------------- + private async Task RequestRefreshData (RefreshTaskData refreshTaskData) + { + String fn = GetType().Name + ".RequestRefreshData"; + try + { + // Slight delay before refresh (in case of immediate cancellation). + await Task.Delay(250); + List tasks = new List(); + // Request code types and codes data simultaneously. + refreshTaskData.ThrowIfCancellationRequested(); + tasks.Add(RequestCodeTypes(refreshTaskData)); + refreshTaskData.ThrowIfCancellationRequested(); + tasks.Add(RequestCodes(refreshTaskData)); + // Wait for all tasks to complete. + Task.WaitAll(tasks.ToArray()); + } + catch (Exception exc) { Logger.Warn(fn + " " + exc.GetLogMessage()); } + if (this.refreshTaskData == refreshTaskData) this.refreshTaskData = null; + } + + //------------------------------------------------------------------- + private async Task RequestCodeTypes (RefreshTaskData taskData) + { + String fn = GetType().Name + ".RequestCodeTypes"; + taskData.ThrowIfCancellationRequested(); + + // Configure Web Service request data. + SbmWebServiceRequest.Config configRequest = GetRequestConfig(SbmWebServiceRequest.DataType.CodeType, SbmWebServiceRequest.RequestType.QueryList, taskData.Debug); + + // Code type filter. + Dictionary filter = new Dictionary(); + filter.Add("StatusCat", SaCodeType.StatusCat.Any.ToString()); + + // Code Type columns. + List codeTypeColumns = new List() + { + SaCodeType.Column.Id, + SaCodeType.Column.Code, + SaCodeType.Column.Description, + SaCodeType.Column.MaxCodeLen, + SaCodeType.Column.CodeFormat, + SaCodeType.Column.NextCode, + SaCodeType.Column.Notes, + SaCodeType.Column.Flags, + SaCodeType.Column.Status + }; + List columns = new List(); + foreach (SaCodeType.Column column in codeTypeColumns) + columns.Add(column.ToString()); + List sortColumns = new List(); + + // Request item list. + SbmWebServiceClient.QueryListResponseData responseData = + await webServiceClient.RequestQueryList(configRequest, filter, columns, sortColumns, taskData); + taskData.ThrowIfCancellationRequested(); + + foreach (SbmWebServiceItemData itemData in responseData.Items) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId id = itemData.GetIdValue(SaCodeType.Column.Id); + String code = itemData.GetValue(SaCodeType.Column.Code); + ushort flags = (ushort)itemData.GetIntValue(SaCodeType.Column.Flags); + // Create item. + SbmCodeType_Mobile saCodeType = new SbmCodeType_Mobile(id, code, flags); + // Populate item properties. + foreach (SaCodeType.Column column in codeTypeColumns) + { + String value = itemData.GetValue(column); + switch (column) + { + case SaCodeType.Column.Description: saCodeType.Description = value; break; + case SaCodeType.Column.MaxCodeLen: saCodeType.MaxCodeLen = (byte)StringUtil.ToInt(value); break; + case SaCodeType.Column.CodeFormat: saCodeType.CodeFormat = value; break; + case SaCodeType.Column.NextCode: saCodeType.NextCode = value; break; + case SaCodeType.Column.Notes: saCodeType.Notes = value; break; + case SaCodeType.Column.Status: saCodeType.Status = SacsSystem.GetStatusForCode(value); break; + } + } + taskData.CodeTypes.Add(saCodeType); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " Code types: " + taskData.CodeTypes.Count); + + // If not cancelled, invoke completion method. + if (taskData.OnCompletion != null && !taskData.IsCancellationRequested) + { + taskData.CodeTypesRequestComplete = true; + taskData.OnCompletion(taskData); + } + } + //------------------------------------------------------------------- + private async Task RequestCodes (RefreshTaskData taskData) + { + String fn = GetType().Name + ".RequestCodes"; + taskData.ThrowIfCancellationRequested(); + + // Configure Web Service request data. + SbmWebServiceRequest.Config configRequest = GetRequestConfig(SbmWebServiceRequest.DataType.Code, SbmWebServiceRequest.RequestType.QueryList, refreshTaskData.Debug); + + // Code filter. + Dictionary filter = new Dictionary(); + filter.Add("StatusCat", SaCode.StatusCat.Any.ToString()); + + // Code columns. + List codeColumns = new List() + { + SaCode.Column.Id, + SaCode.Column.CodeTypeId, + SaCode.Column.Code, + SaCode.Column.Description, + SaCode.Column.Sequence, + SaCode.Column.DataValue, + SaCode.Column.Notes, + SaCode.Column.Flags, + SaCode.Column.Status + }; + List columns = new List(); + foreach (SaCode.Column column in codeColumns) + columns.Add(column.ToString()); + List sortColumns = new List(); + + // Request item list. + SbmWebServiceClient.QueryListResponseData responseData = + await webServiceClient.RequestQueryList(configRequest, filter, columns, sortColumns, taskData); + taskData.ThrowIfCancellationRequested(); + + foreach (SbmWebServiceItemData itemData in responseData.Items) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId id = itemData.GetIdValue(SaCode.Column.Id); + SysId codeTypeId = itemData.GetIdValue(SaCode.Column.CodeTypeId); + String code = itemData.GetValue(SaCode.Column.Code); + ushort flags = (ushort)itemData.GetIntValue(SaCode.Column.Flags); + // Create item. + SbmCode_Mobile saCode = new SbmCode_Mobile(id, codeTypeId, code, flags); + // Populate item properties. + foreach (SaCode.Column column in codeColumns) + { + String value = itemData.GetValue(column); + switch (column) + { + case SaCode.Column.Description: saCode.Description = value; break; + case SaCode.Column.DataValue: saCode.DataValue = value; break; + case SaCode.Column.Sequence: saCode.Sequence = (ushort)StringUtil.ToInt(value); break; + case SaCode.Column.Notes: saCode.Notes = value; break; + case SaCode.Column.Status: saCode.Status = SacsSystem.GetStatusForCode(value); break; + } + } + taskData.Codes.Add(saCode); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " Codes: " + taskData.Codes.Count); + + // If not cancelled, invoke completion method. + if (taskData.OnCompletion != null && !taskData.IsCancellationRequested) + { + taskData.CodesRequestComplete = true; + taskData.OnCompletion(taskData); + } + } + + //------------------------------------------------------------------- + // C o d e T y p e D e f i n i t i o n s + //------------------------------------------------------------------- + public override SaCodeTypeDfn GetCodeTypeDefinition (SysId codeTypeId) + { + throw new NotImplementedException(); + } + + //******************************************************************* + // C o d e T y p e s + //******************************************************************* + public override bool CodeTypeExists (string codeTypeCode) + { + return codeTypes.Exists(item => item.Code.EqualsCI(codeTypeCode)); + } + public bool CodeTypeMatches (SaCodeType codeType, SaCodeType.Params prmCodeType) + { + if (prmCodeType.IncludedIds.Count > 0 && !prmCodeType.IncludedIds.Contains(codeType.Id)) return false; + if (prmCodeType.ExcludedIds.Count > 0 && prmCodeType.ExcludedIds.Contains(codeType.Id)) return false; + if (!StringUtil.IsEmpty(prmCodeType.Code) && !codeType.Code.EqualsCI(prmCodeType.Code)) return false; + if (!StringUtil.IsEmpty(prmCodeType.CodePartial) && !codeType.Code.ContainsCI(prmCodeType.CodePartial)) return false; + if (!StringUtil.IsEmpty(prmCodeType.Desc) && !codeType.Description.EqualsCI(prmCodeType.Desc)) return false; + if (!StringUtil.IsEmpty(prmCodeType.DescPartial) && !codeType.Description.ContainsCI(prmCodeType.DescPartial)) return false; + if (prmCodeType.StatusCat == SaCodeType.StatusCat.ActiveOnly && codeType.Status != SaCodeType.CurrentStatus) return false; + return true; + } + public override int GetCodeTypeCount (SaCodeType.Params prmCodeType) + { + return GetCodeTypeList(prmCodeType).Count; + } + public SysId GetCodeTypeId (SaCodeType.Params prmCodeType) + { + SaCodeType codeType = GetCodeType(prmCodeType); + return codeType?.Id ?? new SysId(); + } + public SysId GetCodeTypeId (String codeTypeCode) + { + SaCodeType codeType = codeTypes.Find(item => item.Code.EqualsCI(codeTypeCode)); + return codeType?.Id ?? new SysId(); + } + public override SaCodeType GetCodeType (SaCodeType.Params prmCodeType) + { + List codeTypesMatched = GetCodeTypeList(prmCodeType); + return codeTypesMatched.Count == 1 ? codeTypesMatched[0] : null; + } + public override List GetCodeTypeList (SaCodeType.Params prmCodeType) + { + return codeTypes.FindAll(item => CodeTypeMatches(item, prmCodeType)); + } + + //------------------------------------------------------------------- + // Code type list. + public override ColumnDfn GetCodeTypeColumnDfn (SaCodeType.Column columnId, string caption = "", int width = 0) + { + throw new NotImplementedException(); + } + public override DbResultSet ExecuteCodeTypeQuery (List columns, SaCodeType.Params prm) + { + throw new NotImplementedException(); + } + public override DataValue GetCodeTypeDataValue (ColumnDfn column, NamedValue.Map values) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Population. + public override bool PopulateCodeType (String codeTypeCode, DbUpdateInfo dbUpdateInfo) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Maintain code types. + public override bool MaintainCodeTypes (bool userCanManageCodeTypes, DbUpdateInfo dbUpdateInfo) + { + throw new NotImplementedException(); + } + public override bool MaintainCodeType (String codeTypeCode, DbUpdateInfo dbUpdateInfo) + { + throw new NotImplementedException(); + } + + //******************************************************************* + // C o d e s + //******************************************************************* + // Check whether code exists. + public override bool CodeExistsForCodeType (string codeTypeCode, string code, bool activeOnly = true) + { + SaCode.Params prmCode = new SaCode.Params(); + prmCode.CodeTypeCodes.Add(codeTypeCode); + prmCode.Code = code; + prmCode.StatusCat = (activeOnly ? SaCode.StatusCat.ActiveOnly : SaCode.StatusCat.Any); + return GetCodeCount(prmCode) == 1; + } + + //------------------------------------------------------------------- + // Codes for code type. + public override bool CodeTypeHasCodes (string codeTypeCode, bool activeOnly = true) + { + return GetCodeCountForCodeType(codeTypeCode, activeOnly) > 0; + } + public override int GetCodeCountForCodeType (string codeTypeCode, bool activeOnly = true) + { + return GetCodeListForCodeType(codeTypeCode, activeOnly).Count; + } + public override SaCode GetCodeForCodeType (string codeTypeCode, string code, bool activeOnly = true) + { + return GetCodeListForCodeType(codeTypeCode, activeOnly).Find(item => item.Code.EqualsCI(code)); + } + public override List GetCodeDescsForCodeType (string codeTypeCode, bool activeOnly = true) + { + List codes = new List(); + foreach (SaCode saCode in GetCodeListForCodeType(codeTypeCode, activeOnly)) + codes.Add(saCode.Code, saCode.Description); + return new List(); + } + public override List GetCodeListForCodeType (string codeTypeCode, bool activeOnly = true) + { + return codeTypeCodes.GetValue(GetCodeTypeId(codeTypeCode), new List()).FindAll(item => !activeOnly || item.Status == SaCode.ActiveStatus); + } + + //------------------------------------------------------------------- + // Code list. + public override ColumnDfn GetCodeColumnDfn (SaCode.Column columnId, string caption = "", int width = 0) + { + throw new NotImplementedException(); + } + public override DbResultSet ExecuteCodeQuery (List columns, SaCode.Params prm) + { + throw new NotImplementedException(); + } + public override DataValue GetCodeDataValue (ColumnDfn column, NamedValue.Map values) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Codes by filter. + public override int GetCodeCount (SaCode.Params prmCode) + { + return GetCodeList(prmCode).Count; + } + public override SaCode GetCode (SaCode.Params prmCode) + { + List codes = GetCodeList(prmCode); + return (codes.Count == 1 ? codes[0] : null); + } + public override List GetCodeList (SaCode.Params prmCode) + { + List saCodes = new List(); + // Filter Code Types. + foreach (SaCodeType codeType in codeTypes) + { + if (prmCode.CodeTypeIds.HasValidIds() && !prmCode.CodeTypeIds.Contains(codeType.Id)) continue; + if (prmCode.CodeTypeCodes.Count > 1 && !prmCode.CodeTypeCodes.ContainsCI(codeType.Code)) continue; + + // Code Type is valid - filter code for code types. + foreach (SaCode saCode in GetCodeListForCodeType(codeType.Code, prmCode.StatusCat == SaCode.StatusCat.ActiveOnly)) + { + if (prmCode.IncludedIds.Count > 0 && !prmCode.IncludedIds.Contains(saCode.Id)) continue; + if (prmCode.ExcludedIds.Count > 0 && prmCode.ExcludedIds.Contains(saCode.Id)) continue; + if (!StringUtil.IsEmpty(prmCode.Code) && !saCode.Code.EqualsCI(prmCode.Code)) continue; + if (!StringUtil.IsEmpty(prmCode.CodePartial) && !saCode.Code.ContainsCI(prmCode.CodePartial)) continue; + if (!StringUtil.IsEmpty(prmCode.Desc) && !saCode.Description.EqualsCI(prmCode.Desc)) continue; + if (!StringUtil.IsEmpty(prmCode.DescPartial) && !saCode.Description.ContainsCI(prmCode.DescPartial)) continue; + if (prmCode.StatusCat == SaCode.StatusCat.ActiveOnly && saCode.Status != SaCode.ActiveStatus) continue; + if (prmCode.StatusCat == SaCode.StatusCat.InactiveOnly && saCode.Status == SaCode.ActiveStatus) continue; + saCodes.Add(saCode); + } + } + return saCodes; + } + + //------------------------------------------------------------------- + // Filtered codes. + public override Dictionary> GetCodesByCodeType (SaCode.Params prmCode) + { + throw new NotImplementedException(); + } + public override Task>> GetCodesByCodeTypeAsync (SaCode.Params prmCode) + { + throw new NotImplementedException(); + } + public override Dictionary> GetCodeDescsByCodeType (SaCode.Params prmCode) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Create codes. + public override bool CreateCodeOfType (SysId codeTypeId, string code, string desc, DbUpdateInfo dbUpdateInfo) + { + throw new NotImplementedException(); + } + public override bool CreateCodeOfType (string codeTypeCode, string code, string desc, DbUpdateInfo dbUpdateInfo) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Population. + public override bool PopulateCode (string codeTypeCode, string code, string desc, bool active, DbUpdateInfo dbUpdateInfo) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Select codes. + public override List SelectCodes (string codeTypeCode, List codesSelected) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/CodeTypes/SbmCodeType_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/CodeTypes/SbmCodeType_Mobile.cs new file mode 100644 index 0000000..ecc6fa7 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/CodeTypes/SbmCodeType_Mobile.cs @@ -0,0 +1,23 @@ +using Sarand.Core.Bus; +using Sarand.Core.CodeTypes; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.CodeTypes +{ + //======================================================================= + public class SbmCodeType_Mobile : SaCodeType + { + //------------------------------------------------------------------- + // Construction. + public SbmCodeType_Mobile (SysId id, String code, ushort flags) : + base(id, code) + { + Flags = flags; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/CodeTypes/SbmCode_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/CodeTypes/SbmCode_Mobile.cs new file mode 100644 index 0000000..c2964ad --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/CodeTypes/SbmCode_Mobile.cs @@ -0,0 +1,23 @@ +using Sarand.Core.Bus; +using Sarand.Core.CodeTypes; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.CodeTypes +{ + //======================================================================= + public class SbmCode_Mobile : SaCode + { + //------------------------------------------------------------------- + // Construction. + public SbmCode_Mobile (SysId id, SysId codeTypeId, String code, ushort flags) : + base(id, codeTypeId, code) + { + Flags = flags; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} \ No newline at end of file diff --git a/SaBusMgrMobCore/Mobile/Core/Forms/Base/SbmComponents.cs b/SaBusMgrMobCore/Mobile/Core/Forms/Base/SbmComponents.cs new file mode 100644 index 0000000..c56fd7f --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Forms/Base/SbmComponents.cs @@ -0,0 +1,50 @@ +using Sarand.Core.Mobile.Forms.Base; +using System; +using System.Collections.Generic; +using System.Text; +using Xamarin.Forms; + +namespace Sarand.BusinessMgr.Mobile.Core.Forms.Base +{ + //======================================================================= + public class SbmComponents : SaxComponents + { + //------------------------------------------------------------------- + // Definitions. + + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmComponents () + { + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // C o n f i g u r e C o m p o n e n t s + //------------------------------------------------------------------- + protected override void ConfigureComponents () + { + base.ConfigureComponents(); + } + + //------------------------------------------------------------------- + // C o n t r o l A c t i v i t y + //------------------------------------------------------------------- + protected override void SetControlActivity () + { + base.SetControlActivity(); + } + protected override void SetControlsReadOnly () + { + base.SetControlsReadOnly(); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Forms/ControlViews/SbmControlView.cs b/SaBusMgrMobCore/Mobile/Core/Forms/ControlViews/SbmControlView.cs new file mode 100644 index 0000000..909a6d4 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Forms/ControlViews/SbmControlView.cs @@ -0,0 +1,163 @@ +using Sarand.BusinessMgr.Mobile.Core.App; +using Sarand.BusinessMgr.Mobile.Core.Forms.Views; +using Sarand.Core.Base; +using System; +using System.Collections.Generic; +using System.Runtime.CompilerServices; +using System.Text; +using Xamarin.Forms; + +namespace Sarand.BusinessMgr.Mobile.Core.Forms.Base +{ + //======================================================================= + public class SbmControlView : SbmContentView + { + //------------------------------------------------------------------- + // Definitions. + + //------------------------------------------------------------------- + // Data members. + // Components. + private SbmContentView outerView = new SbmContentView(); + private SbmContentView embeddedView = new SbmContentView(); + private readonly SbmLabel label = new SbmLabel(); + // Styling. + private Thickness borderThickness = new Thickness(); + private Color borderColor = Color.Transparent; + private bool readOnly = false; + + //------------------------------------------------------------------- + // Construction. + protected SbmControlView () + { + // Embedded view used to allow outer view to act as border. + Content = outerView; + outerView.Content = embeddedView; + + // Default styling. + BackgroundColor = SbmMobile.ControlBackgroundColor; + borderColor = SbmMobile.ControlBorderColor; + BorderWidth = SbmMobile.ControlBorderWidth; + + // Read-only label configuration. + label.BackgroundColor = Color.Transparent; + label.Margin = new Thickness(SbmMobile.LabelMargin.Left, SbmMobile.LabelMargin.Top); + + SetControlActivity(); + } + + //------------------------------------------------------------------- + // Properties. + // Styling. + public Thickness BorderThickness + { + get { return borderThickness; } + set { borderThickness = value; ConfigureComponents(); } + } + public double BorderWidth + { + set { BorderThickness = new Thickness(value); } + } + public Color BorderColor { get; set; } + public bool ReadOnly + { + get { return readOnly; } + set { if (readOnly == value) return; readOnly = value; SetControlActivity(); } + } + public String ReadOnlyText + { + set { if (label.Text.Equals(value)) return; label.Text = value; } + } + + //------------------------------------------------------------------- + // C o n f i g u r e C o m p o n e n t s + //------------------------------------------------------------------- + /// Control configuration that can b changed dynamically. + protected override void ConfigureComponents () + { + // Outer view acts as border. + outerView.BackgroundColor = borderColor; + outerView.Padding = borderThickness; + + // Embedded view acts as background. + embeddedView.BackgroundColor = BackgroundColor; + } + + //------------------------------------------------------------------- + // C o n t r o l A c t i v i t y + //------------------------------------------------------------------- + protected override void SetControlActivity () + { + base.SetControlActivity(); + SetControlsReadOnly(); + } + protected override void SetControlsReadOnly () + { + if (readOnly) Content = label; + } + + //------------------------------------------------------------------- + // C o n t r o l E v e n t s + //------------------------------------------------------------------- + public new event EventHandler Focused; + protected void Control_Focused (object sender, FocusEventArgs e) + { + if (Focused != null) Focused.Invoke(sender, e); + } + //------------------------------------------------------------------- + public new event EventHandler Unfocused; + protected void Control_Unfocused (object sender, FocusEventArgs e) + { + if (Unfocused != null) Unfocused.Invoke(sender, e); + } + + //------------------------------------------------------------------- + // V i e w E v e n t s + //------------------------------------------------------------------- + protected override void OnParentSet () + { + base.OnParentSet(); + } + //------------------------------------------------------------------- + protected override void OnPropertyChanging ([CallerMemberName] string propertyName = null) + { + base.OnPropertyChanging(propertyName); + } + protected override void OnPropertyChanged ([CallerMemberName] string propertyName = null) + { + base.OnPropertyChanged(propertyName); + //Logger.Debug(GetType().Name + ".OnPropertyChanged Name=" + propertyName); + + if (propertyName.EqualsCI("Padding")) + { + if (!embeddedView.Padding.Equals(Padding)) + { + // Apply the padding to the embedded view and clear this view's padding. + embeddedView.Padding = Padding; + Padding = new Thickness(); + } + } + else if (propertyName.EqualsCI("BackgroundColor")) + { + embeddedView.BackgroundColor = BackgroundColor; + } + } + //------------------------------------------------------------------- + protected override void OnChildAdded (Element child) + { + base.OnChildAdded(child); + } + protected override void OnChildRemoved (Element child) + { + base.OnChildRemoved(child); + } + //------------------------------------------------------------------- + protected override void OnSizeAllocated (double width, double height) + { + base.OnSizeAllocated(width, height); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Forms/ControlViews/SbmEntryView.cs b/SaBusMgrMobCore/Mobile/Core/Forms/ControlViews/SbmEntryView.cs new file mode 100644 index 0000000..1d0f51c --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Forms/ControlViews/SbmEntryView.cs @@ -0,0 +1,164 @@ +using Sarand.Core.Base; +using Sarand.Core.Mobile.Forms.Controls; +using System; +using System.Collections.Generic; +using System.Runtime.CompilerServices; +using System.Text; +using Xamarin.Forms; + +namespace Sarand.BusinessMgr.Mobile.Core.Forms.Base +{ + //======================================================================= + public class SbmEntryView : SbmControlView + { + //------------------------------------------------------------------- + // Definitions. + + //------------------------------------------------------------------- + // Data members. + private readonly SbmEntry entry = new SbmEntry(); + + //------------------------------------------------------------------- + // Construction. + public SbmEntryView () + { + // Control configuration. + entry.BackgroundColor = Color.Transparent; + + // Entry events. + entry.Focused += Entry_Focused; + entry.Unfocused += Entry_Unfocused; + entry.TextChanged += Entry_TextChanged; + entry.Completed += Entry_Completed; + + ConfigureComponents(); + SetControlActivity(); + } + + //------------------------------------------------------------------- + // Properties. + public int MaxLength + { + get { return entry.MaxLength; } + set { entry.MaxLength = value; } + } + public SaxEntry.TextCaseType TextCase + { + get { return entry.TextCase; } + set { entry.TextCase = value; } + } + public bool NumericOnly + { + get { return entry.NumericOnly; } + set { entry.NumericOnly = value; } + } + public byte Decimals + { + get { return entry.Decimals; } + set { entry.Decimals = value; } + } + public Keyboard Keyboard + { + get { return entry.Keyboard; } + set { entry.Keyboard = value; } + } + public bool IsPassword + { + get { return entry.IsPassword; } + set { entry.IsPassword = value; } + } + public String Text + { + get { return entry.Text; } + set { value = StringUtil.EmptyOnNull(value); if (entry.Text != null && entry.Text.Equals(value)) return; entry.Text = value; } + } + + //------------------------------------------------------------------- + // C o n f i g u r e C o m p o n e n t s + //------------------------------------------------------------------- + /// Control configuration that can be changed dynamically. + protected override void ConfigureComponents () + { + base.ConfigureComponents(); + } + + //------------------------------------------------------------------- + // C o n t r o l A c t i v i t y + //------------------------------------------------------------------- + protected override void SetControlActivity () + { + base.SetControlActivity(); + SetControlsReadOnly(); + } + protected override void SetControlsReadOnly () + { + base.SetControlsReadOnly(); + if (!ReadOnly) Content = entry; + } + + //------------------------------------------------------------------- + // C o n t r o l E v e n t s + //------------------------------------------------------------------- + private void Entry_Focused (object sender, FocusEventArgs e) + { + Control_Focused(sender, e); + } + //------------------------------------------------------------------- + private void Entry_Unfocused (object sender, FocusEventArgs e) + { + Control_Unfocused(sender, e); + } + //------------------------------------------------------------------- + // Text changed. + public event EventHandler TextChanged; + private void Entry_TextChanged (object sender, TextChangedEventArgs e) + { + ReadOnlyText = entry.Text; + if (ReadOnly) return; + if (TextChanged != null) TextChanged.Invoke(sender, e); + } + //------------------------------------------------------------------- + // Completed. + public event EventHandler Completed; + private void Entry_Completed (object sender, EventArgs e) + { + if (ReadOnly) return; + if (Completed != null) Completed.Invoke(sender, e); + } + + //------------------------------------------------------------------- + // V i e w E v e n t s + //------------------------------------------------------------------- + protected override void OnParentSet () + { + base.OnParentSet(); + } + //------------------------------------------------------------------- + protected override void OnPropertyChanging ([CallerMemberName] string propertyName = null) + { + base.OnPropertyChanging(propertyName); + } + protected override void OnPropertyChanged ([CallerMemberName] string propertyName = null) + { + base.OnPropertyChanged(propertyName); + //Logger.Debug(GetType().Name + ".OnPropertyChanged Name=" + propertyName); + } + //------------------------------------------------------------------- + protected override void OnChildAdded (Element child) + { + base.OnChildAdded(child); + } + protected override void OnChildRemoved (Element child) + { + base.OnChildRemoved(child); + } + //------------------------------------------------------------------- + protected override void OnSizeAllocated (double width, double height) + { + base.OnSizeAllocated(width, height); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Forms/ControlViews/SbmPickerView.cs b/SaBusMgrMobCore/Mobile/Core/Forms/ControlViews/SbmPickerView.cs new file mode 100644 index 0000000..41e5c40 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Forms/ControlViews/SbmPickerView.cs @@ -0,0 +1,142 @@ +using Sarand.BusinessMgr.Mobile.Core.Forms.Base; +using Sarand.Core.Base; +using Sarand.Core.Mobile.Forms.Controls; +using System; +using System.Collections.Generic; +using System.Runtime.CompilerServices; +using System.Text; +using Xamarin.Forms; + +namespace Sarand.BusinessMgr.Mobile.Core.Forms.Base +{ + //======================================================================= + public class SbmPickerView : SbmControlView + { + //------------------------------------------------------------------- + // Definitions. + + //------------------------------------------------------------------- + // Data members. + private readonly SbmPicker picker = new SbmPicker(); + + //------------------------------------------------------------------- + // Construction. + public SbmPickerView (SbmPicker suppliedPicker = null) + { + // Control configuration. + if (suppliedPicker != null) picker = suppliedPicker; + picker.BackgroundColor = Color.Transparent; + + // Control events. + picker.Focused += Picker_Focused; + picker.Unfocused += Picker_Unfocused; + picker.BackgroundColor = Color.Transparent; + picker.SelectedIndexChanged += Picker_SelectedIndexChanged; + picker.Populated += Picker_Populated; + + ConfigureComponents(); + SetControlActivity(); + } + + //------------------------------------------------------------------- + // Properties. + protected SbmPicker Picker { get { return picker; } } + public IList Items { get { return picker.Items; } } + public int SelectedIndex + { + get { return picker.SelectedIndex; } + set { if (picker.SelectedIndex == value) return; picker.SelectedIndex = value; } + } + public SbmPicker.SlmPickerItem SelectedPickerItem { get { return picker.SelectedPickerItem; } } + public object SelectedItem + { + get { return picker.SelectedItem; } + set { picker.SelectedItem = value; } + } + + //------------------------------------------------------------------- + // C o n f i g u r e C o m p o n e n t s + //------------------------------------------------------------------- + /// Control configuration that can b changed dynamically. + protected override void ConfigureComponents () + { + base.ConfigureComponents(); + } + + //------------------------------------------------------------------- + // C o n t r o l A c t i v i t y + //------------------------------------------------------------------- + protected override void SetControlActivity () + { + base.SetControlActivity(); + SetControlsReadOnly(); + } + protected override void SetControlsReadOnly () + { + base.SetControlsReadOnly(); + if (!ReadOnly) Content = picker; + } + + //------------------------------------------------------------------- + // V i e w E v e n t s + //------------------------------------------------------------------- + protected override void OnParentSet () + { + base.OnParentSet(); + } + //------------------------------------------------------------------- + protected override void OnPropertyChanging ([CallerMemberName] string propertyName = null) + { + base.OnPropertyChanging(propertyName); + } + protected override void OnPropertyChanged ([CallerMemberName] string propertyName = null) + { + base.OnPropertyChanged(propertyName); + //Logger.Debug(GetType().Name + ".OnPropertyChanged Name=" + propertyName); + } + //------------------------------------------------------------------- + protected override void OnChildAdded (Element child) + { + base.OnChildAdded(child); + } + protected override void OnChildRemoved (Element child) + { + base.OnChildRemoved(child); + } + //------------------------------------------------------------------- + protected override void OnSizeAllocated (double width, double height) + { + base.OnSizeAllocated(width, height); + } + + //------------------------------------------------------------------- + // C o n t r o l E v e n t s + //------------------------------------------------------------------- + private void Picker_Focused (object sender, FocusEventArgs e) + { + Control_Focused(sender, e); + } + //------------------------------------------------------------------- + private void Picker_Unfocused (object sender, FocusEventArgs e) + { + Control_Unfocused(sender, e); + } + //------------------------------------------------------------------- + public event SaxPicker.PopulatedEventHandler Populated; + private void Picker_Populated (object sender, SaxPicker.PopulatedEventArgs e) + { + if (Populated != null) Populated.Invoke(this, e); + } + //------------------------------------------------------------------- + public event EventHandler SelectedIndexChanged; + private void Picker_SelectedIndexChanged (object sender, EventArgs e) + { + ReadOnlyText = (picker.SelectedItem != null ? picker.SelectedItem.ToString() : ""); + if (ReadOnly) return; + if (SelectedIndexChanged != null) SelectedIndexChanged.Invoke(sender, e); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Forms/Controls/SbmEntry.cs b/SaBusMgrMobCore/Mobile/Core/Forms/Controls/SbmEntry.cs new file mode 100644 index 0000000..ca89f6d --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Forms/Controls/SbmEntry.cs @@ -0,0 +1,33 @@ +using Sarand.Core.Mobile.Forms.Controls; +using Sarand.BusinessMgr.Mobile.Core.App; +using System; +using System.Collections.Generic; +using System.Text; +using Xamarin.Forms; + +namespace Sarand.BusinessMgr.Mobile.Core.Forms.Base +{ + //======================================================================= + public class SbmEntry : SaxEntry + { + //------------------------------------------------------------------- + // Definitions. + + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmEntry () + { + // Font sizing. + FontSize = FontSize * SbmMobile.FontSizeRatio; + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Forms/Controls/SbmLabel.cs b/SaBusMgrMobCore/Mobile/Core/Forms/Controls/SbmLabel.cs new file mode 100644 index 0000000..0082386 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Forms/Controls/SbmLabel.cs @@ -0,0 +1,36 @@ +using Sarand.BusinessMgr.Mobile.Core.App; +using Sarand.Core.Mobile.Forms.Controls; +using System; +using System.Collections.Generic; +using System.Text; +using Xamarin.Forms; + +namespace Sarand.BusinessMgr.Mobile.Core.Forms.Base +{ + //======================================================================= + public class SbmLabel : SaxLabel + { + //------------------------------------------------------------------- + // Definitions. + + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmLabel () + { + // Styling. + Margin = SbmMobile.LabelMargin; + + // Font sizing. + FontSize = FontSize * SbmMobile.FontSizeRatio; + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Forms/Controls/SbmPicker.cs b/SaBusMgrMobCore/Mobile/Core/Forms/Controls/SbmPicker.cs new file mode 100644 index 0000000..62dd1ee --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Forms/Controls/SbmPicker.cs @@ -0,0 +1,39 @@ +using Sarand.BusinessMgr.Mobile.Core.App; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Mobile.Forms.Controls; +using System; +using System.Collections.Generic; +using System.Text; +using Xamarin.Forms; + +namespace Sarand.BusinessMgr.Mobile.Core.Forms.Base +{ + //======================================================================= + public class SbmPicker : SaxPicker + { + //------------------------------------------------------------------- + // Definitions. + + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmPicker () + { + // Font sizing. + FontSize = FontSize * SbmMobile.FontSizeRatio; + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // P i c k e r E v e n t s + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Forms/Layouts/SbmAbsoluteLayout.cs b/SaBusMgrMobCore/Mobile/Core/Forms/Layouts/SbmAbsoluteLayout.cs new file mode 100644 index 0000000..16212a4 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Forms/Layouts/SbmAbsoluteLayout.cs @@ -0,0 +1,29 @@ +using Sarand.Core.Mobile.Forms.Layouts; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.Forms.Layouts +{ + //======================================================================= + public class SbmAbsoluteLayout : SaxAbsoluteLayout + { + //------------------------------------------------------------------- + // Definitions. + + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmAbsoluteLayout () + { + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Forms/Layouts/SbmStackLayout.cs b/SaBusMgrMobCore/Mobile/Core/Forms/Layouts/SbmStackLayout.cs new file mode 100644 index 0000000..4487cde --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Forms/Layouts/SbmStackLayout.cs @@ -0,0 +1,30 @@ +using Sarand.Core.Mobile.Forms.Layouts; +using System; +using System.Collections.Generic; +using System.Text; +using Xamarin.Forms; + +namespace Sarand.BusinessMgr.Mobile.Core.Forms.Base +{ + //======================================================================= + public class SbmStackLayout : SaxStackLayout + { + //------------------------------------------------------------------- + // Definitions. + + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmStackLayout () + { + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Forms/Pages/SbmContentPage.cs b/SaBusMgrMobCore/Mobile/Core/Forms/Pages/SbmContentPage.cs new file mode 100644 index 0000000..1095c76 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Forms/Pages/SbmContentPage.cs @@ -0,0 +1,63 @@ +using Sarand.Core.Base; +using Sarand.Core.Mobile.Forms.Pages; +using Sarand.BusinessMgr.Mobile.Core.App; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading.Tasks; +using Xamarin.Forms; + +namespace Sarand.BusinessMgr.Mobile.Core.Forms.Pages +{ + //======================================================================= + public class SbmContentPage : SaxContentPage + { + //------------------------------------------------------------------- + // Definitions. + + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + protected SbmContentPage () + { + } + + //------------------------------------------------------------------- + // Properties. + public override String MessageTitleDefault { get { return SbmMobile.AppTitle; } } + + //------------------------------------------------------------------- + // P o p u p M e s s a g e s + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + // P a g e E v e n t s + //------------------------------------------------------------------- + protected override void OnParentSet () + { + base.OnParentSet(); + } + //------------------------------------------------------------------- + protected override void OnPropertyChanged ([CallerMemberName] string propertyName = null) + { + base.OnPropertyChanged(propertyName); + } + //------------------------------------------------------------------- + protected override void OnAppearing () + { + base.OnAppearing(); + } + //------------------------------------------------------------------- + protected override void OnDisappearing () + { + base.OnDisappearing(); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} \ No newline at end of file diff --git a/SaBusMgrMobCore/Mobile/Core/Forms/Pages/SbmFormPage.cs b/SaBusMgrMobCore/Mobile/Core/Forms/Pages/SbmFormPage.cs new file mode 100644 index 0000000..a5399d1 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Forms/Pages/SbmFormPage.cs @@ -0,0 +1,310 @@ +using Sarand.Core.Mobile.Forms.Controls; +using Sarand.BusinessMgr.Core.WebService; +using Sarand.BusinessMgr.Mobile.Core.App; +using Sarand.BusinessMgr.Mobile.Core.Forms.Base; +using Sarand.BusinessMgr.Mobile.Core.Forms.Layouts; +using Sarand.BusinessMgr.Mobile.Core.Forms.Views; +using Sarand.BusinessMgr.Mobile.Core.Mgr; +using System; +using System.Collections.Generic; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading.Tasks; +using Xamarin.Forms; + +namespace Sarand.BusinessMgr.Mobile.Core.Forms.Pages +{ + //======================================================================= + public abstract class SbmFormPage : SbmContentPage + { + //------------------------------------------------------------------- + // Definitions. + public enum NavigationMode + { + OkCancel, + Close + } + public class Config + { + public bool ReadOnly { get; set; } + public NavigationMode NavigationMode { get; set; } = NavigationMode.OkCancel; + } + + //------------------------------------------------------------------- + // Data members. + private readonly Config config; + private SbmAccountMgr_Mobile accountMgr; + private SbmAssetMgr_Mobile assetMgr; + private SbmCommodityMgr_Mobile commodityMgr; + private SbmDataItemMgr_Mobile dataItemMgr; + private SbmProcessMgr_Mobile processMgr; + private SbmStockMgr_Mobile stockMgr; + private SbmTransactionMgr_Mobile transactionMgr; + private SbmWebServiceClient webServiceClient; + // Form layout - to allow popup content over main layout. + private SbmAbsoluteLayout formLayout = new SbmAbsoluteLayout(); + // Main grid. + private SbmGrid gridPage = new SbmGrid(); + // Caption bar. + private SbmStackLayout viewCaptionBar = new SbmStackLayout(); + private Label labelCaption = new Label(); + // Page body. + private SbmScrollView scrollViewBody = new SbmScrollView(); + private SbmContentView contentViewBody = new SbmContentView(); + // Footer. + private SbmContentView viewNavigation = new SbmContentView(); + private SbmGrid gridNavigation = new SbmGrid(); + private SaxButton buttonOk = new SaxButton() { Text = "OK" }; + private SaxButton buttonClose = new SaxButton() { Text = "Close" }; + private SaxButton buttonCancel = new SaxButton() { Text = "Cancel" }; + + //------------------------------------------------------------------- + // Construction. + public SbmFormPage (Config config) + { + this.config = config; + InitialiseComponents(); + ConfigureForm(); + } + + //------------------------------------------------------------------- + // Properties. + protected virtual String MessageTitle { get { return Title; } } + protected virtual String DataPreparationMessage { get { return "Loading data. Please wait ..."; } } + // Session. + protected SbmUserContext_Mobile UserContext { get { return SbmGlobals_Mobile.SessionProfile.UserContext_Mobile; } } + protected SbmSessionContext_Mobile SessionContext { get { return SbmGlobals_Mobile.SessionProfile.SessionContext_Mobile; } } + // Layout. + protected SbmContentView FormBodyView { get { return contentViewBody; } } + // Process control. + public bool AddMode { get; protected set; } = true; + public bool Changed { get; protected set; } = false; + public bool Cancelled { get; private set; } = true; + // Managers. + protected SbmAccountMgr_Mobile AccountMgr { get { if (accountMgr == null) accountMgr = new SbmAccountMgr_Mobile(UserContext); return accountMgr; } } + protected SbmAssetMgr_Mobile AssetMgr { get { if (assetMgr == null) assetMgr = new SbmAssetMgr_Mobile(UserContext); return assetMgr; } } + protected SbmCommodityMgr_Mobile CommodityMgr { get { if (commodityMgr == null) commodityMgr = new SbmCommodityMgr_Mobile(UserContext); return commodityMgr; } } + protected SbmDataItemMgr_Mobile DataItemMgr { get { if (dataItemMgr == null) dataItemMgr = new SbmDataItemMgr_Mobile(UserContext); return dataItemMgr; } } + protected SbmProcessMgr_Mobile ProcessMgr { get { if (processMgr == null) processMgr = new SbmProcessMgr_Mobile(UserContext); return processMgr; } } + protected SbmStockMgr_Mobile StockMgr { get { if (stockMgr == null) stockMgr = new SbmStockMgr_Mobile(UserContext); return stockMgr; } } + protected SbmTransactionMgr_Mobile BerthingMgr { get { if (transactionMgr == null) transactionMgr = new SbmTransactionMgr_Mobile(UserContext); return transactionMgr; } } + public SbmWebServiceClient WebServiceClient { get { if (webServiceClient == null) webServiceClient = new SbmWebServiceClient(); return webServiceClient; } } + + //------------------------------------------------------------------- + // C l o s e F o r m + //------------------------------------------------------------------- + protected void CloseFormWithAlert (String message) + { + Device.BeginInvokeOnMainThread(async () => + { + await DisplayAlert(MessageTitle, message, "OK"); + await Navigation.PopModalAsync(); + }); + } + + //------------------------------------------------------------------- + // I n i t i a l i s e + //------------------------------------------------------------------- + private void InitialiseComponents () + { + NavigationPage.SetHasNavigationBar(this, false); + this.SizeChanged += OnSizeChanged; + + // Base layout. + BackgroundColor = SbmMobile.PageBackgroundColor; + // NB Form layout is 'Absolute' to allow overlays, eg. to display progress info. + Content = formLayout; + //formLayout.BackgroundColor = Color.LightGreen; + formLayout.HorizontalOptions = LayoutOptions.FillAndExpand; + formLayout.VerticalOptions = LayoutOptions.FillAndExpand; + + // Form grid. + formLayout.Children.Add(gridPage, new Rectangle(0, 0, 1, 1), AbsoluteLayoutFlags.All); + gridPage.HorizontalOptions = LayoutOptions.FillAndExpand; + gridPage.VerticalOptions = LayoutOptions.FillAndExpand; + gridPage.Margin = new Thickness(0); + gridPage.Padding = new Thickness(0); + gridPage.RowSpacing = 4; + gridPage.ColumnSpacing = 0; + gridPage.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Star }); + //gridPage.BackgroundColor = Color.LightCoral; + + // Page grid has 3 rows: Caption, body, footer (navgation controls). + + // Caption bar. + int pageGridRow = gridPage.RowDefinitions.Count; + gridPage.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto }); + gridPage.Children.Add(viewCaptionBar, 0, pageGridRow); + viewCaptionBar.HorizontalOptions = LayoutOptions.FillAndExpand; + viewCaptionBar.Padding = new Thickness(SbmMobile.PageCaptionPaddingHorizontal, SbmMobile.PageCaptionPaddingVertical); + viewCaptionBar.BackgroundColor = SbmMobile.ApplicationBarBackgroundColor; + viewCaptionBar.Children.Add(labelCaption); + labelCaption.Text = "Form"; + labelCaption.TextColor = SbmMobile.PageCaptionTextColor; + labelCaption.FontSize *= SbmMobile.FontSizeRatio * SbmMobile.PageCaptionTextSizeRatio; + labelCaption.HorizontalOptions = LayoutOptions.CenterAndExpand; + labelCaption.HorizontalTextAlignment = TextAlignment.Center; + + // Page body. + pageGridRow = gridPage.RowDefinitions.Count; + gridPage.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Star }); + gridPage.Children.Add(scrollViewBody, 0, pageGridRow); + scrollViewBody.Padding = new Thickness(SbmMobile.PageBodyPaddingHorizontalMin, SbmMobile.PageBodyPaddingVerticalMin); + scrollViewBody.BackgroundColor = Color.Transparent; + scrollViewBody.Content = contentViewBody; + + // Navigation bar. + pageGridRow = gridPage.RowDefinitions.Count; + gridPage.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto }); + gridPage.Children.Add(viewNavigation, 0, pageGridRow); + viewNavigation.Content = gridNavigation; + viewNavigation.Padding = new Thickness(0, SbmMobile.PageNavigationBorderTopWidth, 0, 0); + viewNavigation.BackgroundColor = SbmMobile.PageNavigationBorderColor; + buttonOk.Clicked += ButtonOk_Clicked; + buttonCancel.Clicked += ButtonCancel_Clicked; + buttonClose.Clicked += ButtonClose_Clicked; + } + + //------------------------------------------------------------------- + // C o n f i g u r e F o r m + //------------------------------------------------------------------- + private void ConfigureForm () + { + ConfigureNavigationBar(); + } + private void ConfigureNavigationBar () + { + gridNavigation.Margin = new Thickness(0); + gridNavigation.Padding = new Thickness(SbmMobile.PageBodyPaddingHorizontalMin, SbmMobile.PageNavigationPaddingVertical); + gridNavigation.RowSpacing = 4; + if (gridNavigation.RowDefinitions.Count == 0) + gridNavigation.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto }); + gridNavigation.ColumnSpacing = 0; + if (gridNavigation.ColumnDefinitions.Count == 0) + { + gridNavigation.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Auto }); + gridNavigation.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Star }); + gridNavigation.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Auto }); + } + gridNavigation.BackgroundColor = SbmMobile.PageNavigationBackgroundColor; + + if (config.NavigationMode == NavigationMode.OkCancel) + { + // OK & Cancel Buttons. + buttonCancel.HorizontalOptions = LayoutOptions.Start; + gridNavigation.Children.Add(buttonCancel, 0, 0); + buttonOk.HorizontalOptions = LayoutOptions.End; + gridNavigation.Children.Add(buttonOk, 2, 0); + } + else + { + buttonClose.HorizontalOptions = LayoutOptions.Center; + gridNavigation.Children.Add(buttonClose, 1, 0); + } + } + + //------------------------------------------------------------------- + // P a n e l s + //------------------------------------------------------------------- + protected void SetAdditionalPanel (ContentView panel) + { + ClearAdditionalPanel(); + formLayout.Children.Add(panel, new Rectangle(0, 0, 1, 1), AbsoluteLayoutFlags.All); + } + protected void ClearAdditionalPanel () + { + // Remove all but the first child on the form layout - this is the form itself. + while (formLayout.Children.Count > 1) + formLayout.Children.RemoveAt(1); + } + + //------------------------------------------------------------------- + // C o n t r o l A c t i v i t y + //------------------------------------------------------------------- + protected virtual void SetControlActivity () + { + } + protected virtual void SetControlsReadOnly () + { + } + + //------------------------------------------------------------------- + // P a g e E v e n t s + //------------------------------------------------------------------- + protected override void OnPropertyChanged ([CallerMemberName] string propertyName = null) + { + base.OnPropertyChanged(propertyName); + if (propertyName.Equals("Title")) + labelCaption.Text = Title; + } + //------------------------------------------------------------------- + protected override void OnAppearing () + { + base.OnAppearing(); + } + protected override void OnDisappearing () + { + base.OnDisappearing(); + } + + //------------------------------------------------------------------- + // N a v i g a t i o n E v e n t s + //------------------------------------------------------------------- + protected override bool OnBackButtonPressed () + { + // Return true to prevent 'Back'. + return true; + } + protected async void CloseForm () + { + await Navigation.PopModalAsync(); + } + //------------------------------------------------------------------- + /// Close - remove (pop) the form page with no interfreence. + protected virtual void ButtonClose_Clicked (object sender, EventArgs e) + { + CloseForm(); + } + //------------------------------------------------------------------- + /// Confirm that form is valid and details saved before closing the form page. + protected void ButtonOk_Clicked (object sender, EventArgs e) + { + bool saveFormData = SaveFormData(); + if (!saveFormData) return; + Cancelled = false; + CloseForm(); + } + protected virtual bool SaveFormData () { return false; } + //------------------------------------------------------------------- + /// Confirm that form is valid and details saved before closig the form page. + protected void ButtonCancel_Clicked (object sender, EventArgs e) + { + if (!QueryCancelForm()) return; + CloseForm(); + } + protected virtual bool QueryCancelForm () + { + if (Changed) + { + String message = "Data has been changed.\n\nAre you sure that you want to abandon changes and close the form?"; + if (!DisplayConfirm(message).GetAwaiter().GetResult()) return false; + } + return true; + } + + //------------------------------------------------------------------- + // S i z e a n d P o s i t i o n + //------------------------------------------------------------------- + private void OnSizeChanged (object sender, EventArgs e) + { + // Page size has changed. + double widthPadding = Math.Max(SbmMobile.PageBodyPaddingHorizontalMin, (Width - 460) / 2); + double heightPadding = Math.Max(SbmMobile.PageBodyPaddingVerticalMin, (Height - 800) / 20); + scrollViewBody.Padding = new Thickness(widthPadding, heightPadding); + gridNavigation.Padding = new Thickness(widthPadding, SbmMobile.PageNavigationPaddingVertical); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Forms/Panels/SbmMainPanel.cs b/SaBusMgrMobCore/Mobile/Core/Forms/Panels/SbmMainPanel.cs new file mode 100644 index 0000000..77149ff --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Forms/Panels/SbmMainPanel.cs @@ -0,0 +1,90 @@ +using Sarand.BusinessMgr.Mobile.Core.Forms.Panels; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading.Tasks; +using Xamarin.Forms; + +namespace Sarand.BusinessMgr.Mobile.Core.Forms.Panels +{ + //======================================================================= + public class SbmMainPanel : SbmPanel + { + //------------------------------------------------------------------- + // Definitions. + public new class Config : SbmPanel.Config + { + } + + //------------------------------------------------------------------- + // Data members. + private Config config; + + //------------------------------------------------------------------- + // Construction. + protected SbmMainPanel () + { + this.config = new Config(); + } + protected SbmMainPanel (Config config) + { + this.config = config; + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // C o n f i g u r e C o m p o n e n t s + //------------------------------------------------------------------- + protected override void ConfigureComponents () + { + } + + //------------------------------------------------------------------- + // C o n t r o l A c t i v i t y + //------------------------------------------------------------------- + protected override void SetControlActivity () + { + } + protected override void SetControlsReadOnly () + { + } + + //------------------------------------------------------------------- + // P a n e l E v e n t s + //------------------------------------------------------------------- + protected override void OnParentSet () + { + base.OnParentSet(); + } + //------------------------------------------------------------------- + protected override void OnPropertyChanging ([CallerMemberName] string propertyName = null) + { + base.OnPropertyChanging(propertyName); + } + protected override void OnPropertyChanged ([CallerMemberName] string propertyName = null) + { + base.OnPropertyChanged(propertyName); + } + //------------------------------------------------------------------- + protected override void OnChildAdded (Element child) + { + base.OnChildAdded(child); + } + protected override void OnChildRemoved (Element child) + { + base.OnChildRemoved(child); + } + //------------------------------------------------------------------- + protected override void OnSizeAllocated (double width, double height) + { + base.OnSizeAllocated(width, height); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} \ No newline at end of file diff --git a/SaBusMgrMobCore/Mobile/Core/Forms/Panels/SbmPanel.cs b/SaBusMgrMobCore/Mobile/Core/Forms/Panels/SbmPanel.cs new file mode 100644 index 0000000..2527624 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Forms/Panels/SbmPanel.cs @@ -0,0 +1,75 @@ +using Sarand.BusinessMgr.Mobile.Core.App; +using Sarand.BusinessMgr.Mobile.Core.Forms.Views; +using Sarand.BusinessMgr.Mobile.Core.Mgr; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading.Tasks; +using Xamarin.Forms; + +namespace Sarand.BusinessMgr.Mobile.Core.Forms.Panels +{ + //======================================================================= + public class SbmPanel : SbmContentView + { + //------------------------------------------------------------------- + // Definitions. + public class Config + { + public Boolean ReadOnly { get; set; } + } + + //------------------------------------------------------------------- + // Data members. + private Config config; + + //------------------------------------------------------------------- + // Construction. + public SbmPanel () : this(new Config()) + { + } + protected SbmPanel (Config config) + { + this.config = config; + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // C o n f i g u r e C o m p o n e n t s + //------------------------------------------------------------------- + protected override void ConfigureComponents () + { + } + + //------------------------------------------------------------------- + // D i s p l a y M e s s a g e s + //------------------------------------------------------------------- + protected Task DisplayAlert (string title, string message, string cancel) + { + return SbmGlobals_Mobile.Application.CurrentPage.DisplayAlert(title, message, cancel); + } + + //------------------------------------------------------------------- + // C o n t r o l A c t i v i t y + //------------------------------------------------------------------- + protected override void SetControlActivity () + { + base.SetControlActivity(); + } + protected override void SetControlsReadOnly () + { + base.SetControlsReadOnly(); + } + + //------------------------------------------------------------------- + // P a n e l E v e n t s + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + } + //======================================================================= +} \ No newline at end of file diff --git a/SaBusMgrMobCore/Mobile/Core/Forms/Panels/SbmPanel_ItemListHeader.cs b/SaBusMgrMobCore/Mobile/Core/Forms/Panels/SbmPanel_ItemListHeader.cs new file mode 100644 index 0000000..675c1f1 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Forms/Panels/SbmPanel_ItemListHeader.cs @@ -0,0 +1,49 @@ +using Sarand.Core.Mobile.Forms.Panels; +using Sarand.BusinessMgr.Mobile.Core.App; +using System; +using System.Collections.Generic; +using System.Text; +using Xamarin.Forms; + +namespace Sarand.BusinessMgr.Mobile.Core.Forms.Panels +{ + public class SbmPanel_ItemListHeader : SaxPanel_ItemListHeader + { + //------------------------------------------------------------------- + // Definitions. + public new class Config : SaxPanel_ItemListHeader.Config + { + public Config () + { + Margin = new Thickness(0, 0, 0, 4.0); + HeaderBorderWidth = SbmMobile.ItemListHeaderBorderWidth; + HeaderBorderRadius = SbmMobile.ItemListHeaderBorderRadius; + HeaderBorderColor = SbmMobile.ItemListHeaderBorderColor; + HeaderBackgroundColor = SbmMobile.ItemListHeaderBackgroundColor; + LabelMargin = SbmMobile.LabelMargin; + CaptionLabelFontSizeRatio = SbmMobile.FontSizeRatio * SbmMobile.PageCaptionTextSizeRatio; + PagingLabelFontSizeRatio = SbmMobile.FontSizeRatio; + } + } + + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmPanel_ItemListHeader (Config config) : + base(config) + { + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // P a n e l E v e n t s + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Forms/Views/SbmContentView.cs b/SaBusMgrMobCore/Mobile/Core/Forms/Views/SbmContentView.cs new file mode 100644 index 0000000..79ed613 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Forms/Views/SbmContentView.cs @@ -0,0 +1,79 @@ +using Sarand.Core.Mobile.Forms.Views; +using Sarand.BusinessMgr.Core.WebService; +using Sarand.BusinessMgr.Mobile.Core.App; +using Sarand.BusinessMgr.Mobile.Core.Mgr; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text; + +using Xamarin.Forms; + +namespace Sarand.BusinessMgr.Mobile.Core.Forms.Views +{ + //======================================================================= + public class SbmContentView : SaxContentView + { + //------------------------------------------------------------------- + // Definitions. + + //------------------------------------------------------------------- + // Data members. + private SbmAccountMgr_Mobile accountMgr = null; + private SbmAssetMgr_Mobile assetMgr = null; + private SbmCommodityMgr_Mobile commodityMgr = null; + private SbmDataItemMgr_Mobile dataItemMgr = null; + private SbmProcessMgr_Mobile processMgr = null; + private SbmStockMgr_Mobile stockMgr = null; + private SbmTransactionMgr_Mobile transactionMgr = null; + private SbmWebServiceClient webServiceClient; + + //------------------------------------------------------------------- + // Construction. + public SbmContentView () + { + } + + //------------------------------------------------------------------- + // Properties. + // Session. + protected SbmUserContext_Mobile UserContext { get { return SbmGlobals_Mobile.SessionProfile.UserContext_Mobile; } } + protected SbmSessionContext_Mobile SessionContext { get { return SbmGlobals_Mobile.SessionProfile.SessionContext_Mobile; } } + // Managers. + protected SbmAccountMgr_Mobile AccountMgr { get { if (accountMgr == null) accountMgr = new SbmAccountMgr_Mobile(UserContext); return accountMgr; } } + protected SbmAssetMgr_Mobile AssetMgr { get { if (assetMgr == null) assetMgr = new SbmAssetMgr_Mobile(UserContext); return assetMgr; } } + protected SbmCommodityMgr_Mobile CommodityMgr { get { if (commodityMgr == null) commodityMgr = new SbmCommodityMgr_Mobile(UserContext); return commodityMgr; } } + protected SbmDataItemMgr_Mobile DataItemMgr { get { if (dataItemMgr == null) dataItemMgr = new SbmDataItemMgr_Mobile(UserContext); return dataItemMgr; } } + protected SbmProcessMgr_Mobile ProcessMgr { get { if (processMgr == null) processMgr = new SbmProcessMgr_Mobile(UserContext); return processMgr; } } + protected SbmStockMgr_Mobile StockMgr { get { if (stockMgr == null) stockMgr = new SbmStockMgr_Mobile(UserContext); return stockMgr; } } + protected SbmTransactionMgr_Mobile BerthingMgr { get { if (transactionMgr == null) transactionMgr = new SbmTransactionMgr_Mobile(UserContext); return transactionMgr; } } + public SbmWebServiceClient WebServiceClient { get { if (webServiceClient == null) webServiceClient = new SbmWebServiceClient(); return webServiceClient; } } + + //------------------------------------------------------------------- + // C o n f i g u r e C o m p o n e n t s + //------------------------------------------------------------------- + protected override void ConfigureComponents () + { + } + + //------------------------------------------------------------------- + // C o n t r o l A c t i v i t y + //------------------------------------------------------------------- + protected override void SetControlActivity () + { + base.SetControlActivity(); + } + protected override void SetControlsReadOnly () + { + base.SetControlsReadOnly(); + } + + //------------------------------------------------------------------- + // V i e w E v e n t s + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + } + //======================================================================= +} \ No newline at end of file diff --git a/SaBusMgrMobCore/Mobile/Core/Forms/Views/SbmFrame.cs b/SaBusMgrMobCore/Mobile/Core/Forms/Views/SbmFrame.cs new file mode 100644 index 0000000..c6bc383 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Forms/Views/SbmFrame.cs @@ -0,0 +1,29 @@ +using Sarand.Core.Mobile.Forms.Views; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.Forms.Base +{ + //======================================================================= + public class SbmFrame : SaxFrame + { + //------------------------------------------------------------------- + // Definitions. + + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmFrame () + { + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Forms/Views/SbmGrid.cs b/SaBusMgrMobCore/Mobile/Core/Forms/Views/SbmGrid.cs new file mode 100644 index 0000000..b9b8226 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Forms/Views/SbmGrid.cs @@ -0,0 +1,66 @@ +using Sarand.Core.Mobile.Forms.Templates; +using System; +using System.Collections.Generic; +using System.Runtime.CompilerServices; +using System.Text; +using Xamarin.Forms; + +namespace Sarand.BusinessMgr.Mobile.Core.Forms.Views +{ + //======================================================================= + public class SbmGrid : SaxGrid + { + //------------------------------------------------------------------- + // Definitions. + + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmGrid () + { + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // G r i d E v e n t s + //------------------------------------------------------------------- + protected override void OnParentSet () + { + base.OnParentSet(); + } + //------------------------------------------------------------------- + protected override void OnPropertyChanging ([CallerMemberName] string propertyName = null) + { + base.OnPropertyChanging(propertyName); + } + protected override void OnPropertyChanged ([CallerMemberName] string propertyName = null) + { + base.OnPropertyChanged(propertyName); + } + //------------------------------------------------------------------- + protected override void OnAdded (View view) + { + base.OnAdded(view); + } + protected override void OnChildAdded (Element child) + { + base.OnChildAdded(child); + } + //------------------------------------------------------------------- + protected override void OnRemoved (View view) + { + base.OnRemoved(view); + } + protected override void OnChildRemoved (Element child) + { + base.OnChildRemoved(child); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Forms/Views/SbmScrollView.cs b/SaBusMgrMobCore/Mobile/Core/Forms/Views/SbmScrollView.cs new file mode 100644 index 0000000..50927ed --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Forms/Views/SbmScrollView.cs @@ -0,0 +1,63 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text; + +using Xamarin.Forms; + +namespace Sarand.BusinessMgr.Mobile.Core.Forms.Base +{ + //======================================================================= + public class SbmScrollView : ScrollView + { + //------------------------------------------------------------------- + // Definitions. + + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmScrollView () + { + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // V i e w E v e n t s + //------------------------------------------------------------------- + protected override void OnParentSet () + { + base.OnParentSet(); + } + //------------------------------------------------------------------- + protected override void OnPropertyChanging ([CallerMemberName] string propertyName = null) + { + base.OnPropertyChanging(propertyName); + } + protected override void OnPropertyChanged ([CallerMemberName] string propertyName = null) + { + base.OnPropertyChanged(propertyName); + } + //------------------------------------------------------------------- + protected override void OnChildAdded (Element child) + { + base.OnChildAdded(child); + } + protected override void OnChildRemoved (Element child) + { + base.OnChildRemoved(child); + } + //------------------------------------------------------------------- + protected override void OnSizeAllocated (double width, double height) + { + base.OnSizeAllocated(width, height); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} \ No newline at end of file diff --git a/SaBusMgrMobCore/Mobile/Core/Forms/Views/SbmView.cs b/SaBusMgrMobCore/Mobile/Core/Forms/Views/SbmView.cs new file mode 100644 index 0000000..3fecc60 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Forms/Views/SbmView.cs @@ -0,0 +1,29 @@ +using Sarand.Core.Mobile.Forms.Views; +using System; +using System.Collections.Generic; +using System.Text; +using Xamarin.Forms; + +namespace Sarand.BusinessMgr.Mobile.Core.Forms.Base +{ + //======================================================================= + public class SbmView : SaxView + { + //------------------------------------------------------------------- + // Definitions. + + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmView () + { + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + } +} diff --git a/SaBusMgrMobCore/Mobile/Core/Forms/Views/SbmWebView.cs b/SaBusMgrMobCore/Mobile/Core/Forms/Views/SbmWebView.cs new file mode 100644 index 0000000..49929ea --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Forms/Views/SbmWebView.cs @@ -0,0 +1,44 @@ +using Sarand.BusinessMgr.Mobile.Core.App; +using Sarand.BusinessMgr.Mobile.Core.Mgr; +using Sarand.Core.Base; +using Sarand.Core.Mobile.Forms.Controls; +using System; +using System.Collections.Generic; +using System.Text; +using Xamarin.Forms; + +namespace Sarand.BusinessMgr.Mobile.Core.Forms.Views +{ + //======================================================================= + public class SbmWebView : SaxWebView + { + //------------------------------------------------------------------- + // Definitions. + + //------------------------------------------------------------------- + // Data members. + // Managers. + + //------------------------------------------------------------------- + // Construction. + public SbmWebView () + { + } + + //------------------------------------------------------------------- + // Properties. + protected SbmSessionContext_Mobile SessionContext { get { return SbmGlobals_Mobile.SessionProfile.SessionContext_Mobile; } } + // Managers. + + //------------------------------------------------------------------- + // N a v i g a t i o n + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + // V i e w E v e n t s + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAccountMgr_Mobile-Addresses.cs b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAccountMgr_Mobile-Addresses.cs new file mode 100644 index 0000000..5e0d30e --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAccountMgr_Mobile-Addresses.cs @@ -0,0 +1,385 @@ +using Sarand.Core.App; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Data; +using Sarand.Core.Dbas.Base; +using Sarand.Core.Tasks; +using Sarand.Core.Xml; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using System.Xml.Linq; +using Sarand.BusinessMgr.Mobile.Core.Bus; +using Sarand.BusinessMgr.Core.WebService; + +namespace Sarand.BusinessMgr.Mobile.Core.Mgr +{ + //======================================================================= + partial class SbmAccountMgr_Mobile + { + //******************************************************************* + // A d d r e s s e s + //******************************************************************* + // Create Address. + public override SbmAddress CreateAddress (Sbm.ItemType itemType, SysId idItem, Sbm.AddressType addressType) + { + ClearErrorState(); + return new SbmAddress_Mobile(UserContext, null, itemType, idItem, addressType,0); + } + + //------------------------------------------------------------------- + // Get Address. + public override SbmAddress GetAddress (SbmAddress.Params prmAddress) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate Address. + public override bool IsValidAddressData (SbmAddress.Data data, SbmAddress.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidAddressData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert Address. + public override bool InsertAddress (SbmAddress address, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidAddress(address)) return false; + if (SysId.IsValid(address.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update Address. + public override bool UpdateAddress (SbmAddress address, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidAddress(address)) return false; + if (!SysId.IsValid(address.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete Address. + public override bool AddressCanBeDeleted (SbmAddress address) + { + ClearErrorState(); + if (!base.AddressCanBeDeleted(address)) return false; + return true; + } + public override bool DeleteAddress (SbmAddress address, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!AddressCanBeDeleted(address)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement addressElement, SbmAddress address, DbUpdateInfo dbUpdateInfo) + { + addressElement.AppendElement(nameof(address.Id), SysId.ToString(address.Id)); + addressElement.AppendElement(nameof(address.ItemType), address.ItemType.ToString()); + addressElement.AppendElement(nameof(address.ItemId), SysId.ToString(address.ItemId)); + addressElement.AppendElement(nameof(address.AddressType), address.AddressType.ToString()); + addressElement.AppendElement(nameof(address.AddressIdRef), SysId.ToString(address.AddressIdRef)); + addressElement.AppendElement(nameof(address.RefExt), address.RefExt); + addressElement.AppendElement(nameof(address.Name), address.Name); + addressElement.AppendElement(nameof(address.DescBrief), address.DescBrief); + addressElement.AppendElement(nameof(address.Line1), address.Line1); + addressElement.AppendElement(nameof(address.Line2), address.Line2); + addressElement.AppendElement(nameof(address.Line3), address.Line3); + addressElement.AppendElement(nameof(address.City), address.City); + addressElement.AppendElement(nameof(address.Province), address.Province); + addressElement.AppendElement(nameof(address.Postcode), address.Postcode); + addressElement.AppendElement(nameof(address.Country), address.Country); + addressElement.AppendElement(nameof(address.RegionIdCity), SysId.ToString(address.RegionIdCity)); + addressElement.AppendElement(nameof(address.RegionIdProvince), SysId.ToString(address.RegionIdProvince)); + addressElement.AppendElement(nameof(address.RegionIdCountry), SysId.ToString(address.RegionIdCountry)); + addressElement.AppendElement(nameof(address.Contact), address.Contact); + addressElement.AppendElement(nameof(address.Phone), address.Phone); + addressElement.AppendElement(nameof(address.Fax), address.Fax); + addressElement.AppendElement(nameof(address.Email), address.Email); + addressElement.AppendElement(nameof(address.AccountManagerCode), address.AccountManagerCode); + addressElement.AppendElement(nameof(address.AccountHandlerCode), address.AccountHandlerCode); + addressElement.AppendElement(nameof(address.ContactAreaCode), address.ContactAreaCode); + addressElement.AppendElement(nameof(address.ContactHandlerCode), address.ContactHandlerCode); + addressElement.AppendElement(nameof(address.DeliveryTypeCode), address.DeliveryTypeCode); + addressElement.AppendElement(nameof(address.DeliveryMethodCode), address.DeliveryMethodCode); + addressElement.AppendElement(nameof(address.DeliveryBookInCode), address.DeliveryBookInCode); + addressElement.AppendElement(nameof(address.LastVisitOn), DateUtil.FormatXmlDateTime(address.LastVisitOn)); + addressElement.AppendElement(nameof(address.NextVisitOn), DateUtil.FormatXmlDateTime(address.NextVisitOn)); + addressElement.AppendElement(nameof(address.Notes), address.Notes); + addressElement.AppendElement(nameof(address.Status), SacsSystem.GetStatusCode(address.Status)); + addressElement.AppendElement(nameof(address.Flags), address.Flags.ToString()); + if (!SysId.IsValid(address.Id)) + { + addressElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + addressElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + addressElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + addressElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + addressElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + addressElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement addressElement, SbmAddress address) + { + address.Id = new SysId(StringUtil.ToInt(addressElement.GetChildText("Id"))); + //address.ItemType = EnumUtil.ParseEnum(addressElement.GetChildText(nameof(address.ItemType)), Sbm.ItemType.Unknown); + //address.ItemId = new SysId(StringUtil.ToInt(addressElement.GetChildText(nameof(address.ItemId)))); + address.AddressType = EnumUtil.ParseEnum(addressElement.GetChildText(nameof(address.AddressType)), Sbm.AddressType.Any); + address.AddressIdRef = new SysId(StringUtil.ToInt(addressElement.GetChildText(nameof(address.AddressIdRef)))); + address.RefExt = addressElement.GetChildText(nameof(address.RefExt)); + address.Name = addressElement.GetChildText(nameof(address.Name)); + address.DescBrief = addressElement.GetChildText(nameof(address.DescBrief)); + address.Line1 = addressElement.GetChildText(nameof(address.Line1)); + address.Line2 = addressElement.GetChildText(nameof(address.Line2)); + address.Line3 = addressElement.GetChildText(nameof(address.Line3)); + address.City = addressElement.GetChildText(nameof(address.City)); + address.Province = addressElement.GetChildText(nameof(address.Province)); + address.Postcode = addressElement.GetChildText(nameof(address.Postcode)); + address.Country = addressElement.GetChildText(nameof(address.Country)); + address.RegionIdCity = new SysId(StringUtil.ToInt(addressElement.GetChildText(nameof(address.RegionIdCity)))); + address.RegionIdProvince = new SysId(StringUtil.ToInt(addressElement.GetChildText(nameof(address.RegionIdProvince)))); + address.RegionIdCountry = new SysId(StringUtil.ToInt(addressElement.GetChildText(nameof(address.RegionIdCountry)))); + address.Contact = addressElement.GetChildText(nameof(address.Contact)); + address.Phone = addressElement.GetChildText(nameof(address.Phone)); + address.Fax = addressElement.GetChildText(nameof(address.Fax)); + address.Email = addressElement.GetChildText(nameof(address.Email)); + address.AccountManagerCode = addressElement.GetChildText(nameof(address.AccountManagerCode)); + address.AccountHandlerCode = addressElement.GetChildText(nameof(address.AccountHandlerCode)); + address.ContactAreaCode = addressElement.GetChildText(nameof(address.ContactAreaCode)); + address.ContactHandlerCode = addressElement.GetChildText(nameof(address.ContactHandlerCode)); + address.DeliveryTypeCode = addressElement.GetChildText(nameof(address.DeliveryTypeCode)); + address.DeliveryMethodCode = addressElement.GetChildText(nameof(address.DeliveryMethodCode)); + address.DeliveryBookInCode = addressElement.GetChildText(nameof(address.DeliveryBookInCode)); + address.LastVisitOn = DateUtil.ParseXmlDateTime(addressElement.GetChildText(nameof(address.LastVisitOn))); + address.NextVisitOn = DateUtil.ParseXmlDateTime(addressElement.GetChildText(nameof(address.NextVisitOn))); + address.Notes = addressElement.GetChildText(nameof(address.Notes)); + address.Status = SacsSystem.GetStatusForCode(addressElement.GetChildText(nameof(address.Status))); + address.SetCreateStamp(DateUtil.ParseXmlDateTime(addressElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(addressElement.GetChildText("CreateBy"))), addressElement.GetChildText("CreateHost")); + address.SetUpdateStamp(DateUtil.ParseXmlDateTime(addressElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(addressElement.GetChildText("UpdateBy"))), addressElement.GetChildText("UpdateHost")); + address.AcceptChanges(); + } + + //------------------------------------------------------------------- + // Address column definitions. + public override ColumnDfn GetAddressColumnDfn (SbmAddress.Column columnId, string caption = "", int width = 0) + { + ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width); + if (!String.IsNullOrEmpty(caption)) + columnDfn.Caption = caption; + if (width > 0) + columnDfn.Width = width; + columnDfn.DataName = columnId.ToString(); + return columnDfn; + } + + //------------------------------------------------------------------- + // Address query filter. + public override List GetAddressQueryFilter (SbmAddress.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetAddressQueryFilter_Mobile (SbmAddress.Params prm) + { + Dictionary filter = new Dictionary(); + + // Address Id. + if (prm.IncludedIds.Count > 0) filter.Add(nameof(prm.IncludedIds), prm.IncludedIds.Concat(",")); + if (prm.ExcludedIds.Count > 0) filter.Add(nameof(prm.ExcludedIds), prm.ExcludedIds.Concat(",")); + + // Address type. + if ((int)prm.AddressType > 0) filter.Add(nameof(prm.AddressType), ((int)prm.AddressType).ToString()); + + // Item Id. + if (SysId.IsValid(prm.ItemId.Id)) filter.Add(nameof(prm.ItemId.Id), SysId.ToString(prm.ItemId.Id)); + + // Affiliate Id owner. + if (SysId.IsValid(prm.AffiliateIdOwner)) filter.Add(nameof(prm.AffiliateIdOwner), SysId.ToString(prm.AffiliateIdOwner)); + + // Address Id ref. + if (SysId.IsValid(prm.AddressIdRef)) filter.Add(nameof(prm.AddressIdRef), SysId.ToString(prm.AddressIdRef)); + + // Ref ext. + if (!StringUtil.IsEmpty(prm.RefExt)) filter.Add(nameof(prm.RefExt), prm.RefExt); + + // Name. + if (!StringUtil.IsEmpty(prm.Name)) filter.Add(nameof(prm.Name), prm.Name); + if (!StringUtil.IsEmpty(prm.NamePartial)) filter.Add(nameof(prm.NamePartial), prm.NamePartial); + + // Address. + if (!StringUtil.IsEmpty(prm.Address)) filter.Add(nameof(prm.Address), prm.Address); + if (!StringUtil.IsEmpty(prm.AddressPartial)) filter.Add(nameof(prm.AddressPartial), prm.AddressPartial); + + // Postcode. + if (!StringUtil.IsEmpty(prm.Postcode)) filter.Add(nameof(prm.Postcode), prm.Postcode); + if (!StringUtil.IsEmpty(prm.PostcodePartial)) filter.Add(nameof(prm.PostcodePartial), prm.PostcodePartial); + + // Phone. + if (!StringUtil.IsEmpty(prm.Phone)) filter.Add(nameof(prm.Phone), prm.Phone); + if (!StringUtil.IsEmpty(prm.PhonePartial)) filter.Add(nameof(prm.PhonePartial), prm.PhonePartial); + + // Account manager code. + if (!StringUtil.IsEmpty(prm.AccountManagerCode)) filter.Add(nameof(prm.AccountManagerCode), prm.AccountManagerCode); + + // Account handler code. + if (!StringUtil.IsEmpty(prm.AccountHandlerCode)) filter.Add(nameof(prm.AccountHandlerCode), prm.AccountHandlerCode); + + // Contact area code. + if (!StringUtil.IsEmpty(prm.ContactAreaCode)) filter.Add(nameof(prm.ContactAreaCode), prm.ContactAreaCode); + + // Contact handler code. + if (!StringUtil.IsEmpty(prm.ContactHandlerCode)) filter.Add(nameof(prm.ContactHandlerCode), prm.ContactHandlerCode); + + // Delivery type code. + if (!StringUtil.IsEmpty(prm.DeliveryTypeCode)) filter.Add(nameof(prm.DeliveryTypeCode), prm.DeliveryTypeCode); + + // Delivery book in code. + if (!StringUtil.IsEmpty(prm.DeliveryBookInCode)) filter.Add(nameof(prm.DeliveryBookInCode), prm.DeliveryBookInCode); + + // Primary only. + if (prm.PrimaryOnly != false) filter.Add(nameof(prm.PrimaryOnly), prm.PrimaryOnly.ToString()); + + // Status. + filter.Add(nameof(prm.StatusCat), prm.StatusCat.ToString()); + + // Paging. + if (prm.ResultsPaging.Paged) + { + filter.Add(nameof(prm.ResultsPaging.PageNo), prm.ResultsPaging.PageNo.ToString()); + filter.Add(nameof(prm.ResultsPaging.PageLength), prm.ResultsPaging.PageLength.ToString()); + } + + return filter; + } + // Address sort columns. + public List GetAddressSortColumns (SbmAddress.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Address count. + public override long GetAddressCount (SbmAddress.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Address list. + public override List GetAddressList (SbmAddress.Params prm) + { + List addresses = new List(); + throw new NotImplementedException(); + } + public async Task> GetAddressList_Mobile (SbmAddress.Params prmAddress, SacsTaskData taskData) + { + ClearErrorState(); + List addresses = new List(); + String fn = GetType().Name + ".GetAddressList_Mobile"; + + // Address columns. + List columns = new List(EnumUtil.GetValues()); + + List itemDataList = await ExecuteAddressQuery_Mobile(columns, prmAddress, taskData); + foreach (SbmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + // TODO - Find correct columns to use: + SysId id = itemData.GetIdValue(SbmAddress.Column.Id); + //Sbm.ItemType itemType = EnumUtil.ParseEnum(itemData.GetValue(SbmAddress.Column.ItemType), Sbm.ItemType.Unknown); + SysId itemId = new SysId(); + //Sbm.AddressType addressType = EnumUtil.ParseEnum(itemData.GetValue(SbmAddress.Column.AddressType), Sbm.AddressType.Any); + ushort flags = (ushort)itemData.GetIntValue(SbmAddress.Column.Flag); + // Create item. + SbmAddress_Mobile address = new SbmAddress_Mobile(UserContext, id, Sbm.ItemType.Unknown, itemId, Sbm.AddressType.Any, flags); + // Populate item properties. + foreach (SbmAddress.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + //case SbmAddress.Column.AddressType: address.AddressType = EnumUtil.ParseEnum(itemData.GetValue(column), Sbm.AddressType.Any); break; + //case SbmAddress.Column.AddressIdRef: address.AddressIdRef = itemData.GetIdValue(column); break; + case SbmAddress.Column.RefExt: address.RefExt = value; break; + case SbmAddress.Column.Name: address.Name = value; break; + case SbmAddress.Column.DescBrief: address.DescBrief = value; break; + case SbmAddress.Column.Line1: address.Line1 = value; break; + case SbmAddress.Column.Line2: address.Line2 = value; break; + case SbmAddress.Column.Line3: address.Line3 = value; break; + case SbmAddress.Column.City: address.City = value; break; + case SbmAddress.Column.Province: address.Province = value; break; + case SbmAddress.Column.Postcode: address.Postcode= value; break; + case SbmAddress.Column.Country: address.Country = value; break; + //case SbmAddress.Column.RegionIdCity: address.RegionIdCity = itemData.GetIdValue(column); break; + //case SbmAddress.Column.RegionIdProvince: address.RegionIdProvince = itemData.GetIdValue(column); break; + //case SbmAddress.Column.RegionIdCountry: address.RegionIdCountry = itemData.GetIdValue(column); break; + case SbmAddress.Column.Contact: address.Contact = value; break; + case SbmAddress.Column.Phone: address.Phone = value; break; + case SbmAddress.Column.Fax: address.Fax = value; break; + case SbmAddress.Column.Email: address.Email = value; break; + //case SbmAddress.Column.AccountHandlerCode: address.AccountHandlerCode = value; break; + //case SbmAddress.Column.ContactAreaCode: address.ContactAreaCode = value; break; + //case SbmAddress.Column.ContactHandlerCode: address.ContactHandlerCode = value; break; + //case SbmAddress.Column.DeliveryTypeCode: address.DeliveryTypeCode = value; break; + //case SbmAddress.Column.DeliveryMethodCode: address.DeliveryMethodCode = value; break; + //case SbmAddress.Column.DeliveryBookInCode: address.DeliveryBookInCode = value; break; + case SbmAddress.Column.LastVisitOn: address.LastVisitOn= itemData.GetDateTimeValue(column); break; + case SbmAddress.Column.NextVisitOn: address.NextVisitOn = itemData.GetDateTimeValue(column); break; + case SbmAddress.Column.Notes: address.Notes = value; break; + case SbmAddress.Column.Status: address.Status = SacsSystem.GetStatusForCode(value); break; + } + } + addresses.Add(address); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " Addresses: " + addresses.Count); + return addresses; + } + + + //------------------------------------------------------------------- + // Address query execution. + public override DbResultSet AddressExecuteQuery (List columns, SbmAddress.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecuteAddressQuery_Mobile (List addressColumns, SbmAddress.Params prmAddress, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SbmAddress.Column column in addressColumns) + columns.Add(column.ToString()); + + SbmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetAddressRequestConfig(SbmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetAddressQueryFilter_Mobile(prmAddress), columns, this.GetSortColumns_Mobile(prmAddress), taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SbmWebServiceRequest.Config GetAddressRequestConfig (SbmWebServiceRequest.RequestType requestType, bool debug = false) + { + SbmWebServiceRequest.Config configRequest = new SbmWebServiceRequest.Config(); + configRequest.DataType = SbmWebServiceRequest.DataType.Address; + configRequest.RequestType = requestType; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} \ No newline at end of file diff --git a/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAccountMgr_Mobile-Affiliates.cs b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAccountMgr_Mobile-Affiliates.cs new file mode 100644 index 0000000..a52f7f4 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAccountMgr_Mobile-Affiliates.cs @@ -0,0 +1,364 @@ +using Sarand.Core.App; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Data; +using Sarand.Core.Dbas.Base; +using Sarand.Core.Tasks; +using Sarand.Core.Xml; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using System.Xml.Linq; +using Sarand.BusinessMgr.Mobile.Core.Bus; +using Sarand.BusinessMgr.Core.WebService; + +namespace Sarand.BusinessMgr.Mobile.Core.Mgr +{ + //======================================================================= + partial class SbmAccountMgr_Mobile + { + //******************************************************************* + // A f f i l i a t e s + //******************************************************************* + // Create Affiliate. + public override SbmAffiliate CreateAffiliate (Sbm.AffiliateType affiliateType) + { + ClearErrorState(); + return new SbmAffiliate_Mobile(UserContext, null, affiliateType, 0); + } + + //------------------------------------------------------------------- + // Get Affiliate. + public override SbmAffiliate GetAffiliate (SbmAffiliate.Params prmAffiliate) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate Affiliate. + public override bool IsValidAffiliateData (SbmAffiliate.Data data, SbmAffiliate.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidAffiliateData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert Affiliate. + public override bool InsertAffiliate (SbmAffiliate affiliate, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidAffiliate(affiliate)) return false; + if (SysId.IsValid(affiliate.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update Affiliate. + public override bool UpdateAffiliate (SbmAffiliate affiliate, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidAffiliate(affiliate)) return false; + if (!SysId.IsValid(affiliate.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete Affiliate. + public override bool AffiliateCanBeDeleted (SbmAffiliate affiliate) + { + ClearErrorState(); + if (!base.AffiliateCanBeDeleted(affiliate)) return false; + return true; + } + public override bool DeleteAffiliate (SbmAffiliate affiliate, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!AffiliateCanBeDeleted(affiliate)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement affiliateElement, SbmAffiliate affiliate, DbUpdateInfo dbUpdateInfo) + { + affiliateElement.AppendElement(nameof(affiliate.Id), SysId.ToString(affiliate.Id)); + affiliateElement.AppendElement(nameof(affiliate.AffiliateType), affiliate.AffiliateType.ToString()); + affiliateElement.AppendElement(nameof(affiliate.PhoneMain), affiliate.PhoneMain); + affiliateElement.AppendElement(nameof(affiliate.PhoneAlt), affiliate.PhoneAlt); + affiliateElement.AppendElement(nameof(affiliate.PhoneFax), affiliate.PhoneFax); + affiliateElement.AppendElement(nameof(affiliate.Email), affiliate.Email); + affiliateElement.AppendElement(nameof(affiliate.Website), affiliate.Website); + // Organisation + affiliateElement.AppendElement(nameof(affiliate.AffiliateIdParent), SysId.ToString(affiliate.AffiliateIdParent)); + affiliateElement.AppendElement(nameof(affiliate.Name), affiliate.Name); + affiliateElement.AppendElement(nameof(affiliate.Abbr), affiliate.Abbr); + affiliateElement.AppendElement(nameof(affiliate.Nature), affiliate.Nature); + affiliateElement.AppendElement(nameof(affiliate.Contact), affiliate.Contact); + affiliateElement.AppendElement(nameof(affiliate.CompanyNo), affiliate.CompanyNo); + affiliateElement.AppendElement(nameof(affiliate.VatReg), affiliate.VatReg); + affiliateElement.AppendElement(nameof(affiliate.PhoneDirect), affiliate.PhoneDirect); + // Individual. + affiliateElement.AppendElement(nameof(affiliate.Title), affiliate.Title); + affiliateElement.AppendElement(nameof(affiliate.Initials), affiliate.Initials); + affiliateElement.AppendElement(nameof(affiliate.LastName), affiliate.LastName); + affiliateElement.AppendElement(nameof(affiliate.FirstName), affiliate.FirstName); + affiliateElement.AppendElement(nameof(affiliate.Salutation), affiliate.Salutation); + affiliateElement.AppendElement(nameof(affiliate.PhoneMobile), affiliate.PhoneMobile); + affiliateElement.AppendElement(nameof(affiliate.BirthDay), affiliate.BirthDay.ToString("N3")); + affiliateElement.AppendElement(nameof(affiliate.BirthMonth), affiliate.BirthMonth.ToString("N3")); + affiliateElement.AppendElement(nameof(affiliate.BirthYear), affiliate.BirthYear.ToString("N3")); + affiliateElement.AppendElement(nameof(affiliate.MaritalStatus), affiliate.MaritalStatus); + affiliateElement.AppendElement(nameof(affiliate.Spouse), affiliate.Spouse); + affiliateElement.AppendElement(nameof(affiliate.Children), affiliate.Children); + affiliateElement.AppendElement(nameof(affiliate.Hometown), affiliate.Hometown); + affiliateElement.AppendElement(nameof(affiliate.UserId), SysId.ToString(affiliate.UserId)); + affiliateElement.AppendElement(nameof(affiliate.Notes), affiliate.Notes); + affiliateElement.AppendElement(nameof(affiliate.Status), SacsSystem.GetStatusCode(affiliate.Status)); + affiliateElement.AppendElement(nameof(affiliate.Flags), affiliate.Flags.ToString()); + if (!SysId.IsValid(affiliate.Id)) + { + affiliateElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + affiliateElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + affiliateElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + affiliateElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + affiliateElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + affiliateElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement affiliateElement, SbmAffiliate affiliate) + { + affiliate.Id = new SysId(StringUtil.ToInt(affiliateElement.GetChildText("Id"))); + affiliate.AffiliateType = EnumUtil.ParseEnum(affiliateElement.GetChildText(nameof(affiliate.AffiliateType)), Sbm.AffiliateType.Unknown); + affiliate.PhoneMain = affiliateElement.GetChildText(nameof(affiliate.PhoneMain)); + affiliate.PhoneAlt = affiliateElement.GetChildText(nameof(affiliate.PhoneAlt)); + affiliate.PhoneFax = affiliateElement.GetChildText(nameof(affiliate.PhoneFax)); + affiliate.Email = affiliateElement.GetChildText(nameof(affiliate.Email)); + affiliate.Website = affiliateElement.GetChildText(nameof(affiliate.Website)); + // Organisation. + affiliate.AffiliateIdParent = new SysId(StringUtil.ToInt(affiliateElement.GetChildText(nameof(affiliate.AffiliateIdParent)))); + affiliate.Name = affiliateElement.GetChildText(nameof(affiliate.Name)); + affiliate.Abbr = affiliateElement.GetChildText(nameof(affiliate.Abbr)); + affiliate.Nature = affiliateElement.GetChildText(nameof(affiliate.Nature)); + affiliate.Contact = affiliateElement.GetChildText(nameof(affiliate.Contact)); + affiliate.CompanyNo = affiliateElement.GetChildText(nameof(affiliate.CompanyNo)); + affiliate.VatReg = affiliateElement.GetChildText(nameof(affiliate.VatReg)); + affiliate.PhoneDirect = affiliateElement.GetChildText(nameof(affiliate.PhoneDirect)); + // Individual. + affiliate.Title = affiliateElement.GetChildText(nameof(affiliate.Title)); + affiliate.Initials = affiliateElement.GetChildText(nameof(affiliate.Initials)); + affiliate.LastName = affiliateElement.GetChildText(nameof(affiliate.LastName)); + affiliate.FirstName = affiliateElement.GetChildText(nameof(affiliate.FirstName)); + affiliate.Salutation = affiliateElement.GetChildText(nameof(affiliate.Salutation)); + affiliate.PhoneMobile = affiliateElement.GetChildText(nameof(affiliate.PhoneMobile)); + affiliate.BirthDay = decimal.ToByte(StringUtil.ToDecimal(affiliateElement.GetChildText(nameof(affiliate.BirthDay)))); + affiliate.BirthMonth = decimal.ToByte(StringUtil.ToDecimal(affiliateElement.GetChildText(nameof(affiliate.BirthMonth)))); + affiliate.BirthYear = StringUtil.ToShort(affiliateElement.GetChildText(nameof(affiliate.BirthYear))); + affiliate.MaritalStatus = affiliateElement.GetChildText(nameof(affiliate.MaritalStatus)); + affiliate.Spouse = affiliateElement.GetChildText(nameof(affiliate.Spouse)); + affiliate.Children = affiliateElement.GetChildText(nameof(affiliate.Children)); + affiliate.Hometown = affiliateElement.GetChildText(nameof(affiliate.Hometown)); + affiliate.UserId = new SysId(StringUtil.ToInt(affiliateElement.GetChildText(nameof(affiliate.UserId)))); + affiliate.Notes = affiliateElement.GetChildText(nameof(affiliate.Notes)); + affiliate.Status = SacsSystem.GetStatusForCode(affiliateElement.GetChildText(nameof(affiliate.Status))); + affiliate.SetCreateStamp(DateUtil.ParseXmlDateTime(affiliateElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(affiliateElement.GetChildText("CreateBy"))), affiliateElement.GetChildText("CreateHost")); + affiliate.SetUpdateStamp(DateUtil.ParseXmlDateTime(affiliateElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(affiliateElement.GetChildText("UpdateBy"))), affiliateElement.GetChildText("UpdateHost")); + affiliate.AcceptChanges(); + } + + //------------------------------------------------------------------- + // Affiliate column definitions. + public override ColumnDfn GetAffiliateColumnDfn (SbmAffiliate.Column columnId, string caption = "", int width = 0) + { + ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width); + if (!String.IsNullOrEmpty(caption)) + columnDfn.Caption = caption; + if (width > 0) + columnDfn.Width = width; + columnDfn.DataName = columnId.ToString(); + return columnDfn; + } + + //------------------------------------------------------------------- + // Affiliate query filter. + public override List GetAffiliateQueryFilter (SbmAffiliate.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetAffiliateQueryFilter_Mobile (SbmAffiliate.Params prm) + { + Dictionary filter = new Dictionary(); + + // Affiliate Id. + if (prm.IncludedIds.Count > 0) filter.Add(nameof(prm.IncludedIds), prm.IncludedIds.Concat(",")); + if (prm.ExcludedIds.Count > 0) filter.Add(nameof(prm.ExcludedIds), prm.ExcludedIds.Concat(",")); + + // Affiliate. + if ((int)prm.AffiliateType > 0) filter.Add(nameof(prm.AffiliateType), ((int)prm.AffiliateType).ToString()); + if (SysId.IsValid(prm.AffiliateIdParent)) filter.Add(nameof(prm.AffiliateIdParent), SysId.ToString(prm.AffiliateIdParent)); + if (SysId.IsValid(prm.UserId)) filter.Add(nameof(prm.UserId), SysId.ToString(prm.UserId)); + if (!StringUtil.IsEmpty(prm.Name)) filter.Add(nameof(prm.Name), prm.Name); + if (!StringUtil.IsEmpty(prm.NamePartial)) filter.Add(nameof(prm.NamePartial), prm.NamePartial); + if (!StringUtil.IsEmpty(prm.PhonePartial)) filter.Add(nameof(prm.PhonePartial), prm.PhonePartial); + if (!StringUtil.IsEmpty(prm.EmailPartial)) filter.Add(nameof(prm.EmailPartial), prm.EmailPartial); + if (!StringUtil.IsEmpty(prm.PostcodePartial)) filter.Add(nameof(prm.PostcodePartial), prm.PostcodePartial); + if (!StringUtil.IsEmpty(prm.AddressPartial)) filter.Add(nameof(prm.AddressPartial), prm.AddressPartial); + if (!StringUtil.IsEmpty(prm.NotesPartial)) filter.Add(nameof(prm.NotesPartial), prm.NotesPartial); + + // Restrict to affiliates with associations with the following. + if (SysId.IsValid(prm.AffiliateIdAssocOwner)) filter.Add(nameof(prm.AffiliateIdAssocOwner), SysId.ToString(prm.AffiliateIdAssocOwner)); + if (SysId.IsValid(prm.AffiliateIdAssocTarget)) filter.Add(nameof(prm.AffiliateIdAssocTarget), SysId.ToString(prm.AffiliateIdAssocTarget)); + if (SysId.IsValid(prm.AffiliateIdExcludeTargetsOf)) filter.Add(nameof(prm.AffiliateIdExcludeTargetsOf), SysId.ToString(prm.AffiliateIdExcludeTargetsOf)); + if ((int)prm.AssociationType > 0) filter.Add(nameof(prm.AssociationType), ((int)prm.AssociationType).ToString()); + if ((int)prm.AssociationTypeExclude > 0) filter.Add(nameof(prm.AssociationTypeExclude), ((int)prm.AssociationTypeExclude).ToString()); + if (DateUtil.IsValid(prm.AssociationEffectiveOn)) filter.Add(nameof(prm.AssociationEffectiveOn), DateUtil.FormatXmlDate(prm.AssociationEffectiveOn)); + + // Current associations. Default: True [only relevant when association filter specified]. + if (prm.CurrentAssociationsOnly != false) filter.Add(nameof(prm.CurrentAssociationsOnly), prm.CurrentAssociationsOnly.ToString()); + + // Supervised associations - in combination with the owner/target above: + if ((int)prm.OwnerSupervised > 0) filter.Add(nameof(prm.OwnerSupervised), ((int)prm.OwnerSupervised).ToString()); + if ((int)prm.TargetSupervised > 0) filter.Add(nameof(prm.TargetSupervised), ((int)prm.TargetSupervised).ToString()); + + // Interfaces. + if (SysId.IsValid(prm.InterfaceIdExcludeSystemUsers)) filter.Add(nameof(prm.InterfaceIdExcludeSystemUsers), SysId.ToString(prm.InterfaceIdExcludeSystemUsers)); + + // Status. + filter.Add(nameof(prm.StatusCat), prm.StatusCat.ToString()); + + // Paging. + if (prm.ResultsPaging.Paged) + { + filter.Add(nameof(prm.ResultsPaging.PageNo), prm.ResultsPaging.PageNo.ToString()); + filter.Add(nameof(prm.ResultsPaging.PageLength), prm.ResultsPaging.PageLength.ToString()); + } + + return filter; + } + // Affiliate sort columns. + public List GetAffiliateSortColumns (SbmAffiliate.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Affiliate count. + public override long GetAffiliateCount (SbmAffiliate.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Affiliate list. + public override List GetAffiliateList (SbmAffiliate.Params prm) + { + List affiliates = new List(); + throw new NotImplementedException(); + } + public async Task> GetAffiliateList_Mobile (SbmAffiliate.Params prmAffiliate, SacsTaskData taskData) + { + ClearErrorState(); + List affiliates = new List(); + String fn = GetType().Name + ".GetAffiliateList_Mobile"; + + // Affiliate columns. + List columns = new List(EnumUtil.GetValues()); + + List itemDataList = await ExecuteAffiliateQuery_Mobile(columns, prmAffiliate, taskData); + foreach (SbmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + // TODO - Find correct columns to use: + SysId id = itemData.GetIdValue(SbmAffiliate.Column.Id); + Sbm.AffiliateType affiliateType = EnumUtil.ParseEnum(itemData.GetValue(SbmAffiliate.Column.Type_Desc), Sbm.AffiliateType.Unknown); + ushort flags = (ushort)itemData.GetIntValue(SbmAffiliate.Column.Flag); + // Create item. + SbmAffiliate_Mobile affiliate = new SbmAffiliate_Mobile(UserContext, id, affiliateType, flags); + // Populate item properties. + foreach (SbmAffiliate.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + case SbmAffiliate.Column.Type_Desc: affiliate.AffiliateType= EnumUtil.ParseEnum(itemData.GetValue(column), Sbm.AffiliateType.Any); break; + case SbmAffiliate.Column.PhoneMain: affiliate.PhoneMain = value; break; + case SbmAffiliate.Column.PhoneAlt: affiliate.PhoneAlt = value; break; + case SbmAffiliate.Column.PhoneFax: affiliate.PhoneFax = value; break; + case SbmAffiliate.Column.Email: affiliate.Email = value; break; + case SbmAffiliate.Column.Website: affiliate.Website = value; break; + // Organisation. + //case SbmAffiliate.Column.AffiliateIdParent: affiliate.AffiliateIdParent = itemData.GetIdValue(column); break; + case SbmAffiliate.Column.Name: affiliate.Name = value; break; + case SbmAffiliate.Column.Abbrev: affiliate.Abbr = value; break; + case SbmAffiliate.Column.Nature: affiliate.Nature = value; break; + case SbmAffiliate.Column.Contact: affiliate.Contact = value; break; + case SbmAffiliate.Column.CompanyNo: affiliate.CompanyNo = value; break; + case SbmAffiliate.Column.VatReg: affiliate.VatReg = value; break; + case SbmAffiliate.Column.PhoneDirect: affiliate.PhoneDirect = value; break; + // Individual. + case SbmAffiliate.Column.Title: affiliate.Title = value; break; + case SbmAffiliate.Column.Initials: affiliate.Initials = value; break; + case SbmAffiliate.Column.LastName: affiliate.LastName = value; break; + case SbmAffiliate.Column.FirstName: affiliate.FirstName = value; break; + case SbmAffiliate.Column.Salutation: affiliate.Salutation = value; break; + case SbmAffiliate.Column.PhoneMobile: affiliate.PhoneMobile = value; break; + //case SbmAffiliate.Column.BirthDay: affiliate.BirthYear = decimal.ToByte(itemData.GetDecimalValue(column)); break; + //case SbmAffiliate.Column.BirthMonth: affiliate.BirthMonth = decimal.ToByte(itemData.GetDecimalValue(column)); break; + //case SbmAffiliate.Column.BirthYear: affiliate.BirthYear = StringUtil.ToShort(itemData.GetDecimalValue(column)); break; + //case SbmAffiliate.Column.MaritalStatus: affiliate.MaritalStatus = value; break; + //case SbmAffiliate.Column.Spouse: affiliate.Spouse = value; break; + //case SbmAffiliate.Column.Children: affiliate.Children = value; break; + //case SbmAffiliate.Column.Hometown: affiliate.Hometown = value; break; + //case SbmAffiliate.Column.UserId: affiliate.UserId = itemData.GetIdValue(column); break; + case SbmAffiliate.Column.Notes: affiliate.Notes = value; break; + case SbmAffiliate.Column.Status: affiliate.Status = SacsSystem.GetStatusForCode(value); break; + } + } + affiliates.Add(affiliate); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " Affiliates: " + affiliates.Count); + return affiliates; + } + + + //------------------------------------------------------------------- + // Affiliate query execution. + public override DbResultSet ExecuteAffiliateQuery (List columns, SbmAffiliate.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecuteAffiliateQuery_Mobile (List affiliateColumns, SbmAffiliate.Params prmAffiliate, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SbmAffiliate.Column column in affiliateColumns) + columns.Add(column.ToString()); + + SbmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetAffiliateRequestConfig(SbmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetAffiliateQueryFilter_Mobile(prmAffiliate), columns, this.GetSortColumns_Mobile(prmAffiliate), taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SbmWebServiceRequest.Config GetAffiliateRequestConfig (SbmWebServiceRequest.RequestType requestType, bool debug = false) + { + SbmWebServiceRequest.Config configRequest = new SbmWebServiceRequest.Config(); + configRequest.DataType = SbmWebServiceRequest.DataType.Affiliate; + configRequest.RequestType = requestType; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} \ No newline at end of file diff --git a/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAccountMgr_Mobile-Associations.cs b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAccountMgr_Mobile-Associations.cs new file mode 100644 index 0000000..e0c4c15 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAccountMgr_Mobile-Associations.cs @@ -0,0 +1,416 @@ +using Sarand.Core.App; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Data; +using Sarand.Core.Dbas.Base; +using Sarand.Core.Tasks; +using Sarand.Core.Xml; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using System.Xml.Linq; +using Sarand.BusinessMgr.Mobile.Core.Bus; +using Sarand.BusinessMgr.Core.WebService; + +namespace Sarand.BusinessMgr.Mobile.Core.Mgr +{ + //======================================================================= + partial class SbmAccountMgr_Mobile + { + //******************************************************************* + // A s s o c i a t i o n s + //******************************************************************* + // Create Association. + public override SbmAssociation CreateAssociation (SysId affiliateIdOwner, Sbm.AssociationType associationType, SysId affiliateIdTarget) + { + ClearErrorState(); + return new SbmAssociation_Mobile(UserContext, null, affiliateIdOwner, associationType, affiliateIdTarget, 0); + } + + //------------------------------------------------------------------- + // Get Association. + public override SbmAssociation GetAssociation (SbmAssociation.Params prmAssociation) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate Association. + public override bool IsValidAssociationData (SbmAssociation.Data data, SbmAssociation.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidAssociationData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert Association. + public override bool InsertAssociation (SbmAssociation berthing, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidAssociation(berthing)) return false; + if (SysId.IsValid(berthing.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update Association. + public override bool UpdateAssociation (SbmAssociation berthing, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidAssociation(berthing)) return false; + if (!SysId.IsValid(berthing.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete Association. + public override bool AssociationCanBeDeleted (SbmAssociation berthing) + { + ClearErrorState(); + if (!base.AssociationCanBeDeleted(berthing)) return false; + return true; + } + public override bool DeleteAssociation (SbmAssociation berthing, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!AssociationCanBeDeleted(berthing)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement berthingElement, SbmAssociation berthing, DbUpdateInfo dbUpdateInfo) + { + berthingElement.AppendElement(nameof(berthing.Id), SysId.ToString(berthing.Id)); + berthingElement.AppendElement(nameof(berthing.AffiliateIdOwner), SysId.ToString(berthing.AffiliateIdOwner)); + berthingElement.AppendElement(nameof(berthing.AffiliateIdTarget), SysId.ToString(berthing.AffiliateIdTarget)); + berthingElement.AppendElement(nameof(berthing.AssociationType), berthing.AssociationType.ToString()); + berthingElement.AppendElement(nameof(berthing.Code), berthing.Code); + berthingElement.AppendElement(nameof(berthing.RefExt), berthing.RefExt); + berthingElement.AppendElement(nameof(berthing.Location), berthing.Location); + berthingElement.AppendElement(nameof(berthing.Role), berthing.Role); + berthingElement.AppendElement(nameof(berthing.PhoneMain), berthing.PhoneMain); + berthingElement.AppendElement(nameof(berthing.Email), berthing.Email); + berthingElement.AppendElement(nameof(berthing.Group), berthing.Group); + berthingElement.AppendElement(nameof(berthing.DescDetail), berthing.DescDetail); + berthingElement.AppendElement(nameof(berthing.DefaultNominalCode), berthing.DefaultNominalCode); + // Account. + berthingElement.AppendElement(nameof(berthing.AccountManagerCode), berthing.AccountManagerCode); + berthingElement.AppendElement(nameof(berthing.AccountHandlerCode), berthing.AccountHandlerCode); + berthingElement.AppendElement(nameof(berthing.AccountTypeCode), berthing.AccountTypeCode); + berthingElement.AppendElement(nameof(berthing.AccountRatingCode), berthing.AccountRatingCode); + // Contact. + berthingElement.AppendElement(nameof(berthing.ContactAreaCode), berthing.ContactAreaCode); + berthingElement.AppendElement(nameof(berthing.ContactHandlerCode), berthing.ContactHandlerCode); + berthingElement.AppendElement(nameof(berthing.ContactMethodCode), berthing.ContactMethodCode); + berthingElement.AppendElement(nameof(berthing.ContactCallCycleCode), berthing.ContactCallCycleCode); + berthingElement.AppendElement(nameof(berthing.CallsPerYear), berthing.CallsPerYear.ToString("N3")); + berthingElement.AppendElement(nameof(berthing.LastCall), DateUtil.FormatXmlDateTime(berthing.LastCall)); + // Customer. + berthingElement.AppendElement(nameof(berthing.OrderLeadTimeCode), berthing.OrderLeadTimeCode); + berthingElement.AppendElement(nameof(berthing.DeliveryTypeCode), berthing.DeliveryTypeCode); + berthingElement.AppendElement(nameof(berthing.DeliveryMethodCode), berthing.DeliveryMethodCode); + berthingElement.AppendElement(nameof(berthing.DeliveryCourierCode), berthing.DeliveryCourierCode); + berthingElement.AppendElement(nameof(berthing.DeliveryBookInCode), berthing.DeliveryBookInCode); + // Transactions. + berthingElement.AppendElement(nameof(berthing.AmountTransMax), berthing.AmountTransMax.ToString("N3")); + berthingElement.AppendElement(nameof(berthing.AnnualSalesTarget), berthing.AnnualSalesTarget.ToString("N3")); + berthingElement.AppendElement(nameof(berthing.CreditLimit), berthing.CreditLimit.ToString("N3")); + berthingElement.AppendElement(nameof(berthing.AccountBalance), berthing.AccountBalance.ToString("N3")); + berthingElement.AppendElement(nameof(berthing.DiscountType), berthing.DiscountType.ToString());; + berthingElement.AppendElement(nameof(berthing.DiscountRate), berthing.DiscountRate.ToString("N3")); + berthingElement.AppendElement(nameof(berthing.PriceSetId), SysId.ToString(berthing.PriceSetId)); + berthingElement.AppendElement(nameof(berthing.TaxCodeId), SysId.ToString(berthing.TaxCodeId)); + berthingElement.AppendElement(nameof(berthing.PaymentTerms), berthing.PaymentTerms.ToString("N3")); + berthingElement.AppendElement(nameof(berthing.InvoiceDesc), berthing.InvoiceDesc); ; + berthingElement.AppendElement(nameof(berthing.Terminated), DateUtil.FormatXmlDateTime(berthing.Terminated)); + berthingElement.AppendElement(nameof(berthing.Notes), berthing.Notes); + berthingElement.AppendElement(nameof(berthing.Status), SacsSystem.GetStatusCode(berthing.Status)); + berthingElement.AppendElement(nameof(berthing.Flags), berthing.Flags.ToString()); + if (!SysId.IsValid(berthing.Id)) + { + berthingElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + berthingElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + berthingElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + berthingElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + berthingElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + berthingElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement berthingElement, SbmAssociation berthing) + { + berthing.Id = new SysId(StringUtil.ToInt(berthingElement.GetChildText("Id"))); + berthing.AffiliateIdOwner = new SysId(StringUtil.ToInt(berthingElement.GetChildText(nameof(berthing.AffiliateIdOwner)))); + berthing.AffiliateIdTarget = new SysId(StringUtil.ToInt(berthingElement.GetChildText(nameof(berthing.AffiliateIdTarget)))); + berthing.AssociationType = EnumUtil.ParseEnum(berthingElement.GetChildText(nameof(berthing.AssociationType)), Sbm.AssociationType.Unknown); + berthing.Code = berthingElement.GetChildText(nameof(berthing.Code)); + berthing.RefExt = berthingElement.GetChildText(nameof(berthing.RefExt)); + berthing.Location = berthingElement.GetChildText(nameof(berthing.Location)); + berthing.Role = berthingElement.GetChildText(nameof(berthing.Role)); + berthing.PhoneMain = berthingElement.GetChildText(nameof(berthing.PhoneMain)); + berthing.Email = berthingElement.GetChildText(nameof(berthing.Email)); + berthing.Group = berthingElement.GetChildText(nameof(berthing.Group)); + berthing.DescDetail = berthingElement.GetChildText(nameof(berthing.DescDetail)); + berthing.DefaultNominalCode = berthingElement.GetChildText(nameof(berthing.DefaultNominalCode)); + // Account. + berthing.AccountManagerCode = berthingElement.GetChildText(nameof(berthing.AccountManagerCode)); + berthing.AccountHandlerCode = berthingElement.GetChildText(nameof(berthing.AccountHandlerCode)); + berthing.AccountTypeCode = berthingElement.GetChildText(nameof(berthing.AccountTypeCode)); + berthing.AccountRatingCode = berthingElement.GetChildText(nameof(berthing.AccountRatingCode)); + // Contact. + berthing.ContactAreaCode = berthingElement.GetChildText(nameof(berthing.ContactAreaCode)); + berthing.ContactHandlerCode = berthingElement.GetChildText(nameof(berthing.ContactHandlerCode)); + berthing.ContactMethodCode = berthingElement.GetChildText(nameof(berthing.ContactMethodCode)); + berthing.ContactCallCycleCode = berthingElement.GetChildText(nameof(berthing.ContactCallCycleCode)); + berthing.CallsPerYear = StringUtil.ToInt(berthingElement.GetChildText(nameof(berthing.CallsPerYear))); + berthing.LastCall = DateUtil.ParseXmlDateTime(berthingElement.GetChildText(nameof(berthing.LastCall))); + // Customer. + berthing.OrderLeadTimeCode = berthingElement.GetChildText(nameof(berthing.OrderLeadTimeCode)); + berthing.DeliveryTypeCode = berthingElement.GetChildText(nameof(berthing.DeliveryTypeCode)); + berthing.DeliveryMethodCode = berthingElement.GetChildText(nameof(berthing.DeliveryMethodCode)); + berthing.DeliveryCourierCode = berthingElement.GetChildText(nameof(berthing.DeliveryCourierCode)); + berthing.DeliveryBookInCode = berthingElement.GetChildText(nameof(berthing.DeliveryBookInCode)); + // Transactions. + berthing.AmountTransMax = StringUtil.ToDecimal(berthingElement.GetChildText(nameof(berthing.AmountTransMax))); + berthing.AnnualSalesTarget = StringUtil.ToDecimal(berthingElement.GetChildText(nameof(berthing.AnnualSalesTarget))); + berthing.CreditLimit = StringUtil.ToDecimal(berthingElement.GetChildText(nameof(berthing.CreditLimit))); + berthing.AccountBalance = StringUtil.ToDecimal(berthingElement.GetChildText(nameof(berthing.AccountBalance))); + berthing.DiscountType = EnumUtil.ParseEnum(berthingElement.GetChildText(nameof(berthing.DiscountType)), Sbm.DiscountType.NoDiscount); + berthing.DiscountRate = StringUtil.ToDecimal(berthingElement.GetChildText(nameof(berthing.DiscountRate))); + berthing.PriceSetId = new SysId(StringUtil.ToInt(berthingElement.GetChildText(nameof(berthing.PriceSetId)))); + berthing.TaxCodeId = new SysId(StringUtil.ToInt(berthingElement.GetChildText(nameof(berthing.TaxCodeId)))); + berthing.PaymentTerms = StringUtil.ToShort(berthingElement.GetChildText(nameof(berthing.PaymentTerms))); + berthing.InvoiceDesc = berthingElement.GetChildText(nameof(berthing.InvoiceDesc)); + berthing.Terminated = DateUtil.ParseXmlDateTime(berthingElement.GetChildText(nameof(berthing.Terminated))); + berthing.Notes = berthingElement.GetChildText(nameof(berthing.Notes)); + berthing.Status = SacsSystem.GetStatusForCode(berthingElement.GetChildText(nameof(berthing.Status))); + berthing.SetCreateStamp(DateUtil.ParseXmlDateTime(berthingElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(berthingElement.GetChildText("CreateBy"))), berthingElement.GetChildText("CreateHost")); + berthing.SetUpdateStamp(DateUtil.ParseXmlDateTime(berthingElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(berthingElement.GetChildText("UpdateBy"))), berthingElement.GetChildText("UpdateHost")); + berthing.AcceptChanges(); + } + + //------------------------------------------------------------------- + // Association column definitions. + public override ColumnDfn GetAssociationColumnDfn (SbmAssociation.Column columnId, string caption = "", int width = 0) + { + ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width); + if (!String.IsNullOrEmpty(caption)) + columnDfn.Caption = caption; + if (width > 0) + columnDfn.Width = width; + columnDfn.DataName = columnId.ToString(); + return columnDfn; + } + + //------------------------------------------------------------------- + // Association query filter. + public override List GetAssociationQueryFilter (SbmAssociation.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetAssociationQueryFilter_Mobile (SbmAssociation.Params prm) + { + Dictionary filter = new Dictionary(); + + // Association Id. + if (prm.IncludedIds.Count > 0) filter.Add(nameof(prm.IncludedIds), prm.IncludedIds.Concat(",")); + if (prm.ExcludedIds.Count > 0) filter.Add(nameof(prm.ExcludedIds), prm.ExcludedIds.Concat(",")); + + // Association. + if ((int)prm.AssociationType > 0) filter.Add(nameof(prm.AssociationType), ((int)prm.AssociationType).ToString()); + if (SysId.IsValid(prm.AffiliateIdOwner)) filter.Add(nameof(prm.AffiliateIdOwner), SysId.ToString(prm.AffiliateIdOwner)); + if (SysId.IsValid(prm.AffiliateIdTarget)) filter.Add(nameof(prm.AffiliateIdTarget), SysId.ToString(prm.AffiliateIdTarget)); + if (SysId.IsValid(prm.PriceSetId)) filter.Add(nameof(prm.PriceSetId), SysId.ToString(prm.PriceSetId)); + if (SysId.IsValid(prm.AffiliateIdContactGroup)) filter.Add(nameof(prm.AffiliateIdContactGroup), SysId.ToString(prm.AffiliateIdContactGroup)); + if (!StringUtil.IsEmpty(prm.Code)) filter.Add(nameof(prm.Code), prm.Code); + if (!StringUtil.IsEmpty(prm.CodePartial)) filter.Add(nameof(prm.CodePartial), prm.CodePartial); + if (!StringUtil.IsEmpty(prm.NameTargetFull)) filter.Add(nameof(prm.NameTargetFull), prm.NameTargetFull); + if (!StringUtil.IsEmpty(prm.NameTargetPartial)) filter.Add(nameof(prm.NameTargetPartial), prm.NameTargetPartial); + if (!StringUtil.IsEmpty(prm.GroupFull)) filter.Add(nameof(prm.GroupFull), prm.GroupFull); + if (!StringUtil.IsEmpty(prm.GroupPartial)) filter.Add(nameof(prm.GroupPartial), prm.GroupPartial); + if (!StringUtil.IsEmpty(prm.AddressPartial)) filter.Add(nameof(prm.AddressPartial), prm.AddressPartial); + if (!StringUtil.IsEmpty(prm.PostcodePartial)) filter.Add(nameof(prm.PostcodePartial), prm.PostcodePartial); + + if (!StringUtil.IsEmpty(prm.DefaultNominalCodeFull)) filter.Add(nameof(prm.DefaultNominalCodeFull), prm.DefaultNominalCodeFull); + if (!StringUtil.IsEmpty(prm.DefaultNominalCodePartial)) filter.Add(nameof(prm.DefaultNominalCodePartial), prm.DefaultNominalCodePartial); + if (prm.AccountManagerCodes.Count > 0) filter.Add(nameof(prm.AccountManagerCodes), prm.AccountManagerCodes.Concat(",")); + if (prm.AccountHandlerCodes.Count > 0) filter.Add(nameof(prm.AccountHandlerCodes), prm.AccountHandlerCodes.Concat(",")); + if (prm.AccountTypeCodes.Count > 0) filter.Add(nameof(prm.AccountTypeCodes), prm.AccountTypeCodes.Concat(",")); + if (prm.AccountRatingCodes.Count > 0) filter.Add(nameof(prm.AccountRatingCodes), prm.AccountRatingCodes.Concat(",")); + if (prm.ContactAreaCodes.Count > 0) filter.Add(nameof(prm.ContactAreaCodes), prm.ContactAreaCodes.Concat(",")); + if (prm.ContactHandlerCodes.Count > 0) filter.Add(nameof(prm.ContactHandlerCodes), prm.ContactHandlerCodes.Concat(",")); + if (prm.ContactMethodCodes.Count > 0) filter.Add(nameof(prm.ContactMethodCodes), prm.ContactMethodCodes.Concat(",")); + if (prm.ContactCallCycleCodes.Count > 0) filter.Add(nameof(prm.ContactCallCycleCodes), prm.ContactCallCycleCodes.Concat(",")); + if (prm.OrderLeadTimeCodes.Count > 0) filter.Add(nameof(prm.OrderLeadTimeCodes), prm.OrderLeadTimeCodes.Concat(",")); + if (prm.DeliveryTypeCodes.Count > 0) filter.Add(nameof(prm.DeliveryTypeCodes), prm.DeliveryTypeCodes.Concat(",")); + if (prm.DeliveryMethodCodes.Count > 0) filter.Add(nameof(prm.DeliveryMethodCodes), prm.DeliveryMethodCodes.Concat(",")); + if (prm.DeliveryCourierCodes.Count > 0) filter.Add(nameof(prm.DeliveryCourierCodes), prm.DeliveryCourierCodes.Concat(",")); + if (prm.DeliveryBookInCodes.Count > 0) filter.Add(nameof(prm.DeliveryBookInCodes), prm.DeliveryBookInCodes.Concat(",")); + + // Association must have a transaction active at some time between the specified dates (one date can be specified for open ended period). + if ((int)prm.TransactionStatusCat > 0) filter.Add(nameof(prm.TransactionStatusCat), ((int)prm.TransactionStatusCat).ToString()); + if (DateUtil.IsValid(prm.TransActiveFrom)) filter.Add(nameof(prm.TransActiveFrom), DateUtil.FormatXmlDate(prm.TransActiveFrom)); + if (DateUtil.IsValid(prm.TransActiveTo)) filter.Add(nameof(prm.TransActiveTo), DateUtil.FormatXmlDate(prm.TransActiveTo)); + if (SysId.IsValid(prm.InterfaceIdExcludeSystemAccounts)) filter.Add(nameof(prm.InterfaceIdExcludeSystemAccounts), SysId.ToString(prm.InterfaceIdExcludeSystemAccounts)); + + if (prm.Supervised > 0) filter.Add(nameof(prm.Supervised), ((int)prm.Supervised).ToString()); + if (prm.PrimaryOnly != false) filter.Add(nameof(prm.PrimaryOnly), prm.PrimaryOnly.ToString()); + if (DateUtil.IsValid(prm.ApplicableFrom)) filter.Add(nameof(prm.ApplicableFrom), DateUtil.FormatXmlDate(prm.ApplicableFrom)); + + // Status. + filter.Add(nameof(prm.StatusCat), prm.StatusCat.ToString()); + + if (!StringUtil.IsEmpty(prm.SeasonalCategoryCode)) filter.Add(nameof(prm.SeasonalCategoryCode), prm.SeasonalCategoryCode); + + if (prm.AddressContext > 0) filter.Add(nameof(prm.AddressContext), ((int)prm.AddressContext).ToString()); + + // Paging. + if (prm.ResultsPaging.Paged) + { + filter.Add(nameof(prm.ResultsPaging.PageNo), prm.ResultsPaging.PageNo.ToString()); + filter.Add(nameof(prm.ResultsPaging.PageLength), prm.ResultsPaging.PageLength.ToString()); + } + + return filter; + } + // Association sort columns. + public List GetAssociationSortColumns (SbmAssociation.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Association count. + public override long GetAssociationCount (SbmAssociation.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Association list. + public override List GetAssociationList (SbmAssociation.Params prm) + { + List associations = new List(); + throw new NotImplementedException(); + } + public async Task> GetAssociationList_Mobile (SbmAssociation.Params prmAssociation, SacsTaskData taskData) + { + ClearErrorState(); + List associations = new List(); + String fn = GetType().Name + ".GetAssociationList_Mobile"; + + // Association columns. + List columns = new List(EnumUtil.GetValues()); + + List itemDataList = await ExecuteAssociationQuery_Mobile(columns, prmAssociation, taskData); + foreach (SbmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId id = itemData.GetIdValue(SbmAssociation.Column.Id); + SysId affiliateIdOwner = itemData.GetIdValue(SbmAssociation.Column.AffIdOwner); + //Sbm.AssociationType associationType = EnumUtil.ParseEnum(itemData.GetValue(SbmAssociation.Column.AssociationType), Sbm.AssociationType.Unknown); + SysId affiliateIdTarget = itemData.GetIdValue(SbmAssociation.Column.AffIdTarget); + ushort flags = (ushort)itemData.GetIntValue(SbmAssociation.Column.Flag); + // Create item. + SbmAssociation_Mobile berthing = new SbmAssociation_Mobile(UserContext, id, affiliateIdOwner, Sbm.AssociationType.Unknown, affiliateIdTarget, flags); + // Populate item properties. + foreach (SbmAssociation.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + case SbmAssociation.Column.AffIdOwner: berthing.AffiliateIdOwner = itemData.GetIdValue(column); break; + case SbmAssociation.Column.AffIdTarget: berthing.AffiliateIdTarget = itemData.GetIdValue(column); break; + case SbmAssociation.Column.Type: berthing.AssociationType = EnumUtil.ParseEnum(itemData.GetValue(column), Sbm.AssociationType.Unknown); break; + case SbmAssociation.Column.Code: berthing.Code = value; break; + case SbmAssociation.Column.ExtRef: berthing.RefExt = value; break; + case SbmAssociation.Column.Location: berthing.Location = value; break; + case SbmAssociation.Column.Role: berthing.Role = value; break; + case SbmAssociation.Column.PhoneMain: berthing.PhoneMain = value; break; + case SbmAssociation.Column.Email: berthing.Email = value; break; + case SbmAssociation.Column.Group: berthing.Group = value; break; + case SbmAssociation.Column.DescDetail: berthing.DescDetail = value; break; + case SbmAssociation.Column.DefaultNominalCode: berthing.DefaultNominalCode = value; break; + // Account. + case SbmAssociation.Column.AccountManagerCode: berthing.AccountManagerCode = value; break; + case SbmAssociation.Column.AccountHandlerCode: berthing.AccountHandlerCode = value; break; + case SbmAssociation.Column.AccountTypeCode: berthing.AccountTypeCode = value; break; + case SbmAssociation.Column.AccountRatingCode: berthing.AccountRatingCode = value; break; + // Contact. + case SbmAssociation.Column.ContactAreaCode: berthing.ContactAreaCode = value; break; + case SbmAssociation.Column.ContactHandlerCode: berthing.ContactHandlerCode = value; break; + case SbmAssociation.Column.ContactMethodCode: berthing.ContactMethodCode = value; break; + case SbmAssociation.Column.ContactCallCycleCode: berthing.ContactCallCycleCode = value; break; + case SbmAssociation.Column.CallsPerYear: berthing.CallsPerYear = itemData.GetIntValue(column); break; + case SbmAssociation.Column.LastCall: berthing.LastCall = itemData.GetDateTimeValue(column); break; + // Customer. + case SbmAssociation.Column.OrderLeadTimeCode: berthing.OrderLeadTimeCode = value; break; + case SbmAssociation.Column.DeliveryTypeCode: berthing.DeliveryTypeCode = value; break; + case SbmAssociation.Column.DeliveryMethodCode: berthing.DeliveryMethodCode = value; break; + //case SbmAssociation.Column.DeliveryCourierCode: berthing.DeliveryCourierCode = value; break; + case SbmAssociation.Column.DeliveryBookInCode: berthing.DeliveryBookInCode = value; break; + // Transactions. + case SbmAssociation.Column.AmountTransMax: berthing.AmountTransMax = itemData.GetDecimalValue(column); break; + case SbmAssociation.Column.AnnualSalesTarget: berthing.AnnualSalesTarget = itemData.GetDecimalValue(column); break; + case SbmAssociation.Column.CreditLimit: berthing.CreditLimit = itemData.GetDecimalValue(column); break; + case SbmAssociation.Column.AccountBalance: berthing.AccountBalance = itemData.GetDecimalValue(column); break; + case SbmAssociation.Column.DiscountType: berthing.DiscountType = EnumUtil.ParseEnum(itemData.GetValue(column), Sbm.DiscountType.NoDiscount); break; + case SbmAssociation.Column.DiscountRate: berthing.DiscountRate = itemData.GetDecimalValue(column); break; + case SbmAssociation.Column.PriceSetId: berthing.PriceSetId = itemData.GetIdValue(column); break; + case SbmAssociation.Column.TaxCodeId: berthing.TaxCodeId = itemData.GetIdValue(column); break; + case SbmAssociation.Column.PaymentTerms: berthing.PaymentTerms = StringUtil.ToShort(itemData.GetDecimalValue(column)); break; + case SbmAssociation.Column.InvoiceDesc: berthing.InvoiceDesc = value; break; + case SbmAssociation.Column.Terminated: berthing.Terminated = itemData.GetDateTimeValue(column); break; + case SbmAssociation.Column.Notes: berthing.Notes = value; break; + case SbmAssociation.Column.Status: berthing.Status = SacsSystem.GetStatusForCode(value); break; + } + } + associations.Add(berthing); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " Associations: " + associations.Count); + return associations; + } + + + //------------------------------------------------------------------- + // Association query execution. + public override DbResultSet ExecuteAssociationQuery (List columns, SbmAssociation.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecuteAssociationQuery_Mobile (List berthingColumns, SbmAssociation.Params prmAssociation, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SbmAssociation.Column column in berthingColumns) + columns.Add(column.ToString()); + + SbmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetAssociationRequestConfig(SbmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetAssociationQueryFilter_Mobile(prmAssociation), columns, this.GetSortColumns_Mobile(prmAssociation), taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SbmWebServiceRequest.Config GetAssociationRequestConfig (SbmWebServiceRequest.RequestType requestType, bool debug = false) + { + SbmWebServiceRequest.Config configRequest = new SbmWebServiceRequest.Config(); + configRequest.DataType = SbmWebServiceRequest.DataType.Association; + configRequest.RequestType = requestType; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} \ No newline at end of file diff --git a/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAccountMgr_Mobile-SysParams.cs b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAccountMgr_Mobile-SysParams.cs new file mode 100644 index 0000000..8a39fbf --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAccountMgr_Mobile-SysParams.cs @@ -0,0 +1,279 @@ +using Sarand.Core.App; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Data; +using Sarand.Core.Dbas.Base; +using Sarand.Core.Tasks; +using Sarand.Core.Xml; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using System.Xml.Linq; +using Sarand.BusinessMgr.Mobile.Core.Bus; +using Sarand.BusinessMgr.Core.WebService; + +namespace Sarand.BusinessMgr.Mobile.Core.Mgr +{ + //======================================================================= + partial class SbmAccountMgr_Mobile + { + //******************************************************************* + // S y s P a r a m s + //******************************************************************* + // Create SysParam. + public override SbmSysParam CreateSysParam (Sbm.SysParamCategory category, string name) + { + ClearErrorState(); + return new SbmSysParam_Mobile(UserContext, null, category, name, 0); + } + + //------------------------------------------------------------------- + // Get SysParam. + public override SbmSysParam GetSysParam (SbmSysParam.Params prmSysParam) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate SysParam. + public override bool IsValidSysParamData (SbmSysParam.Data data, SbmSysParam.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidSysParamData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert SysParam. + public override bool InsertSysParam (SbmSysParam sysParam, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidSysParam(sysParam)) return false; + if (SysId.IsValid(sysParam.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update SysParam. + public override bool UpdateSysParam (SbmSysParam sysParam, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidSysParam(sysParam)) return false; + if (!SysId.IsValid(sysParam.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete SysParam. + public override bool SysParamCanBeDeleted (SbmSysParam sysParam) + { + ClearErrorState(); + if (!base.SysParamCanBeDeleted(sysParam)) return false; + return true; + } + public override bool DeleteSysParam (SbmSysParam sysParam, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!SysParamCanBeDeleted(sysParam)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement sysParamElement, SbmSysParam sysParam, DbUpdateInfo dbUpdateInfo) + { + sysParamElement.AppendElement(nameof(sysParam.Id), SysId.ToString(sysParam.Id)); + sysParamElement.AppendElement(nameof(sysParam.Category), sysParam.Category.ToString()); + sysParamElement.AppendElement(nameof(sysParam.Name), sysParam.Name); + sysParamElement.AppendElement(nameof(sysParam.Value), sysParam.Value); + sysParamElement.AppendElement(nameof(sysParam.AffiliateIdOwner), SysId.ToString(sysParam.AffiliateIdOwner)); + sysParamElement.AppendElement(nameof(sysParam.AffiliateIdTarget), SysId.ToString(sysParam.AffiliateIdTarget)); + sysParamElement.AppendElement(nameof(sysParam.AssociationId), SysId.ToString(sysParam.AssociationId)); + sysParamElement.AppendElement(nameof(sysParam.Notes), sysParam.Notes); + sysParamElement.AppendElement(nameof(sysParam.Status), SacsSystem.GetStatusCode(sysParam.Status)); + sysParamElement.AppendElement(nameof(sysParam.Flags), sysParam.Flags.ToString()); + if (!SysId.IsValid(sysParam.Id)) + { + sysParamElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + sysParamElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + sysParamElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + sysParamElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + sysParamElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + sysParamElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement sysParamElement, SbmSysParam sysParam) + { + //sysParam.Id = new SysId(StringUtil.ToInt(sysParamElement.GetChildText("Id"))); + sysParam.Category = EnumUtil.ParseEnum(sysParamElement.GetChildText(nameof(sysParam.Category)), Sbm.SysParamCategory.Any); + sysParam.Name = sysParamElement.GetChildText(nameof(sysParam.Name)); + sysParam.Value = sysParamElement.GetChildText(nameof(sysParam.Value)); + sysParam.AffiliateIdOwner = new SysId(StringUtil.ToInt(sysParamElement.GetChildText(nameof(sysParam.AffiliateIdOwner)))); + sysParam.AffiliateIdTarget = new SysId(StringUtil.ToInt(sysParamElement.GetChildText(nameof(sysParam.AffiliateIdTarget)))); + sysParam.AssociationId = new SysId(StringUtil.ToInt(sysParamElement.GetChildText(nameof(sysParam.AssociationId)))); + sysParam.Notes = sysParamElement.GetChildText(nameof(sysParam.Notes)); + sysParam.Status = SacsSystem.GetStatusForCode(sysParamElement.GetChildText(nameof(sysParam.Status))); + sysParam.SetCreateStamp(DateUtil.ParseXmlDateTime(sysParamElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(sysParamElement.GetChildText("CreateBy"))), sysParamElement.GetChildText("CreateHost")); + sysParam.SetUpdateStamp(DateUtil.ParseXmlDateTime(sysParamElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(sysParamElement.GetChildText("UpdateBy"))), sysParamElement.GetChildText("UpdateHost")); + sysParam.AcceptChanges(); + } + + //------------------------------------------------------------------- + // SysParam column definitions. + public override ColumnDfn GetSysParamColumnDfn (SbmSysParam.Column columnId, string caption = "", int width = 0) + { + ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width); + if (!String.IsNullOrEmpty(caption)) + columnDfn.Caption = caption; + if (width > 0) + columnDfn.Width = width; + columnDfn.DataName = columnId.ToString(); + return columnDfn; + } + + //------------------------------------------------------------------- + // SysParam query filter. + public override List GetSysParamQueryFilter (SbmSysParam.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetSysParamQueryFilter_Mobile (SbmSysParam.Params prm) + { + Dictionary filter = new Dictionary(); + + // Category. + if ((int)prm.Category > 0) filter.Add(nameof(prm.Category), ((int)prm.Category).ToString()); + + // SysParam Id. + if (prm.IncludedIds.Count > 0) filter.Add(nameof(prm.IncludedIds), prm.IncludedIds.Concat(",")); + if (prm.ExcludedIds.Count > 0) filter.Add(nameof(prm.ExcludedIds), prm.ExcludedIds.Concat(",")); + + // Name. + if (!StringUtil.IsEmpty(prm.Name)) filter.Add(nameof(prm.Name), prm.Name); + if (!StringUtil.IsEmpty(prm.NamePartial)) filter.Add(nameof(prm.NamePartial), prm.NamePartial); + + // AffIdOwner. + if (SysId.IsValid(prm.AffIdOwner)) filter.Add(nameof(prm.AffIdOwner), SysId.ToString(prm.AffIdOwner)); + + // AffIdTarget. + if (SysId.IsValid(prm.AffIdTarget)) filter.Add(nameof(prm.AffIdTarget), SysId.ToString(prm.AffIdTarget)); + + // Assoc Id. + if (SysId.IsValid(prm.AssocId)) filter.Add(nameof(prm.AssocId), SysId.ToString(prm.AssocId)); + + // Status. + filter.Add(nameof(prm.StatusCat), prm.StatusCat.ToString()); + + // Paging. + if (prm.ResultsPaging.Paged) + { + filter.Add(nameof(prm.ResultsPaging.PageNo), prm.ResultsPaging.PageNo.ToString()); + filter.Add(nameof(prm.ResultsPaging.PageLength), prm.ResultsPaging.PageLength.ToString()); + } + + return filter; + } + // SysParam sort columns. + public List GetSysParamSortColumns (SbmSysParam.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // SysParam count. + public override long GetSysParamCount (SbmSysParam.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // SysParam list. + public override List GetSysParamList (SbmSysParam.Params prm) + { + List sysParams = new List(); + throw new NotImplementedException(); + } + public async Task> GetSysParamList_Mobile (SbmSysParam.Params prmSysParam, SacsTaskData taskData) + { + ClearErrorState(); + List sysParams = new List(); + String fn = GetType().Name + ".GetSysParamList_Mobile"; + + // SysParam columns. + List columns = new List(EnumUtil.GetValues()); + + List itemDataList = await ExecuteSysParamQuery_Mobile(columns, prmSysParam, taskData); + foreach (SbmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId id = itemData.GetIdValue(SbmSysParam.Column.Id); + Sbm.SysParamCategory category = EnumUtil.ParseEnum(itemData.GetValue(SbmSysParam.Column.Category), Sbm.SysParamCategory.Any); + string name = itemData.GetValue(SbmSysParam.Column.Name); + ushort flags = (ushort)itemData.GetIntValue(SbmSysParam.Column.Flag); + // Create item. + SbmSysParam_Mobile sysParam = new SbmSysParam_Mobile(UserContext, id, category, name, flags); + // Populate item properties. + foreach (SbmSysParam.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + case SbmSysParam.Column.Category: sysParam.Category = EnumUtil.ParseEnum(itemData.GetValue(column), Sbm.SysParamCategory.Any); break; + case SbmSysParam.Column.Name: sysParam.Name = value; break; + case SbmSysParam.Column.Value: sysParam.Value = value; break; + case SbmSysParam.Column.AffIdOwner: sysParam.AffiliateIdOwner = itemData.GetIdValue(column); break; + case SbmSysParam.Column.AffIdTarget: sysParam.AffiliateIdTarget = itemData.GetIdValue(column); break; + case SbmSysParam.Column.AssocId: sysParam.AssociationId = itemData.GetIdValue(column); break; + case SbmSysParam.Column.Notes: sysParam.Notes = value; break; + case SbmSysParam.Column.Status: sysParam.Status = SacsSystem.GetStatusForCode(value); break; + } + } + sysParams.Add(sysParam); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " SysParams: " + sysParams.Count); + return sysParams; + } + + + //------------------------------------------------------------------- + // SysParam query execution. + public override DbResultSet ExecuteSysParamQuery (List columns, SbmSysParam.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecuteSysParamQuery_Mobile (List sysParamColumns, SbmSysParam.Params prmSysParam, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SbmSysParam.Column column in sysParamColumns) + columns.Add(column.ToString()); + + SbmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetSysParamRequestConfig(SbmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetSysParamQueryFilter_Mobile(prmSysParam), columns, this.GetSortColumns_Mobile(prmSysParam), taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SbmWebServiceRequest.Config GetSysParamRequestConfig (SbmWebServiceRequest.RequestType requestType, bool debug = false) + { + SbmWebServiceRequest.Config configRequest = new SbmWebServiceRequest.Config(); + configRequest.DataType = SbmWebServiceRequest.DataType.SysParam; + configRequest.RequestType = requestType; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} + diff --git a/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAccountMgr_Mobile-SystemAccountUsers.cs b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAccountMgr_Mobile-SystemAccountUsers.cs new file mode 100644 index 0000000..3113cbc --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAccountMgr_Mobile-SystemAccountUsers.cs @@ -0,0 +1,268 @@ +using Sarand.Core.App; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Data; +using Sarand.Core.Dbas.Base; +using Sarand.Core.Tasks; +using Sarand.Core.Xml; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.BusinessMgr.Core.WebService; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using System.Xml.Linq; +using Sarand.BusinessMgr.Mobile.Core.Bus; + +namespace Sarand.BusinessMgr.Mobile.Core.Mgr +{ + //======================================================================= + partial class SbmAccountMgr_Mobile + { + //******************************************************************* + // S y s t e m A c c o u n t U s e r s + //******************************************************************* + // Create SystemAccountUser. + public override SbmSystemAccountUser CreateSystemAccountUser (SysId accountId, SysId userId) + { + ClearErrorState(); + return new SbmSystemAccountUser_Mobile(UserContext, accountId, userId, 0); + } + + //------------------------------------------------------------------- + // Get SystemAccountUser. + public override SbmSystemAccountUser GetSystemAccountUser (SbmSystemAccountUser.Params prmSystemAccountUser) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate SystemAccountUser. + public override bool IsValidSystemAccountUserData (SbmSystemAccountUser.Data data, SbmSystemAccountUser.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidSystemAccountUserData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert SystemAccountUser. + public override bool InsertSystemAccountUser (SbmSystemAccountUser systemAccountUser, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidSystemAccountUser(systemAccountUser)) return false; + if (SysId.IsValid(systemAccountUser.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update SystemAccountUser. + public override bool UpdateSystemAccountUser (SbmSystemAccountUser systemAccountUser, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidSystemAccountUser(systemAccountUser)) return false; + if (!SysId.IsValid(systemAccountUser.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete SystemAccountUser. + public override bool SystemAccountUserCanBeDeleted (SbmSystemAccountUser systemAccountUser) + { + ClearErrorState(); + if (!base.SystemAccountUserCanBeDeleted(systemAccountUser)) return false; + return true; + } + public override bool DeleteSystemAccountUser (SbmSystemAccountUser systemAccountUser, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!SystemAccountUserCanBeDeleted(systemAccountUser)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement systemAccountUserElement, SbmSystemAccountUser systemAccountUser, DbUpdateInfo dbUpdateInfo) + { + systemAccountUserElement.AppendElement(nameof(systemAccountUser.Id), SysId.ToString(systemAccountUser.Id)); + systemAccountUserElement.AppendElement(nameof(systemAccountUser.AccountId), SysId.ToString(systemAccountUser.AccountId)); + systemAccountUserElement.AppendElement(nameof(systemAccountUser.UserId), SysId.ToString(systemAccountUser.UserId)); + systemAccountUserElement.AppendElement(nameof(systemAccountUser.Notes), systemAccountUser.Notes); + systemAccountUserElement.AppendElement(nameof(systemAccountUser.Status), SacsSystem.GetStatusCode(systemAccountUser.Status)); + systemAccountUserElement.AppendElement(nameof(systemAccountUser.Flags), systemAccountUser.Flags.ToString()); + if (!SysId.IsValid(systemAccountUser.Id)) + { + systemAccountUserElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + systemAccountUserElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + systemAccountUserElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + systemAccountUserElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + systemAccountUserElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + systemAccountUserElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement systemAccountUserElement, SbmSystemAccountUser systemAccountUser) + { + //systemAccountUser.Id = new SysId(StringUtil.ToInt(systemAccountUserElement.GetChildText("Id"))); + systemAccountUser.AccountId = new SysId(StringUtil.ToInt(systemAccountUserElement.GetChildText(nameof(systemAccountUser.AccountId)))); + systemAccountUser.UserId = new SysId(StringUtil.ToInt(systemAccountUserElement.GetChildText(nameof(systemAccountUser.UserId)))); + systemAccountUser.Notes = systemAccountUserElement.GetChildText(nameof(systemAccountUser.Notes)); + systemAccountUser.Status = SacsSystem.GetStatusForCode(systemAccountUserElement.GetChildText(nameof(systemAccountUser.Status))); + systemAccountUser.SetCreateStamp(DateUtil.ParseXmlDateTime(systemAccountUserElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(systemAccountUserElement.GetChildText("CreateBy"))), systemAccountUserElement.GetChildText("CreateHost")); + systemAccountUser.SetUpdateStamp(DateUtil.ParseXmlDateTime(systemAccountUserElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(systemAccountUserElement.GetChildText("UpdateBy"))), systemAccountUserElement.GetChildText("UpdateHost")); + systemAccountUser.AcceptChanges(); + } + + //------------------------------------------------------------------- + // SystemAccountUser column definitions. + public override ColumnDfn GetSystemAccountUserColumnDfn (SbmSystemAccountUser.Column columnId, string caption = "", int width = 0) + { + ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width); + if (!String.IsNullOrEmpty(caption)) + columnDfn.Caption = caption; + if (width > 0) + columnDfn.Width = width; + columnDfn.DataName = columnId.ToString(); + return columnDfn; + } + + //------------------------------------------------------------------- + // SystemAccountUser query filter. + public override List GetSystemAccountUserQueryFilter (SbmSystemAccountUser.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetSystemAccountUserQueryFilter_Mobile (SbmSystemAccountUser.Params prm) + { + Dictionary filter = new Dictionary(); + + // SystemAccountUser Id. + if (prm.IncludedIds.Count > 0) filter.Add(nameof(prm.IncludedIds), prm.IncludedIds.Concat(",")); + if (prm.ExcludedIds.Count > 0) filter.Add(nameof(prm.ExcludedIds), prm.ExcludedIds.Concat(",")); + + // Interface Id. + if (SysId.IsValid(prm.InterfaceId)) filter.Add(nameof(prm.InterfaceId), SysId.ToString(prm.InterfaceId)); + + // Account Id. + if (SysId.IsValid(prm.AccountId)) filter.Add(nameof(prm.AccountId), SysId.ToString(prm.AccountId)); + + // Assoc Id. + if (SysId.IsValid(prm.AssocId)) filter.Add(nameof(prm.AssocId), SysId.ToString(prm.AssocId)); + + // User Id. + if (SysId.IsValid(prm.UserId)) filter.Add(nameof(prm.UserId), SysId.ToString(prm.UserId)); + + // Affiliate Id. + if (SysId.IsValid(prm.AffiliateId)) filter.Add(nameof(prm.AffiliateId), SysId.ToString(prm.AffiliateId)); + + // Restrict to active. + if (prm.RestrictToActive != false) filter.Add(nameof(prm.RestrictToActive), prm.RestrictToActive.ToString()); + + // Status. + filter.Add(nameof(prm.StatusCat), prm.StatusCat.ToString()); + + // Paging. + if (prm.ResultsPaging.Paged) + { + filter.Add(nameof(prm.ResultsPaging.PageNo), prm.ResultsPaging.PageNo.ToString()); + filter.Add(nameof(prm.ResultsPaging.PageLength), prm.ResultsPaging.PageLength.ToString()); + } + + return filter; + } + // SystemAccountUser sort columns. + public List GetSystemAccountUserSortColumns (SbmSystemAccountUser.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // SystemAccountUser count. + public override long GetSystemAccountUserCount (SbmSystemAccountUser.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // SystemAccountUser list. + public override List GetSystemAccountUserList (SbmSystemAccountUser.Params prm) + { + List systemAccountUsers = new List(); + throw new NotImplementedException(); + } + public async Task> GetSystemAccountUserList_Mobile (SbmSystemAccountUser.Params prmSystemAccountUser, SacsTaskData taskData) + { + ClearErrorState(); + List systemAccountUsers = new List(); + String fn = GetType().Name + ".GetSystemAccountUserList_Mobile"; + + // SystemAccountUser columns. + List columns = new List(EnumUtil.GetValues()); + + List itemDataList = await ExecuteSystemAccountUserQuery_Mobile(columns, prmSystemAccountUser, taskData); + foreach (SbmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId accountId = itemData.GetIdValue(SbmSystemAccountUser.Column.AccountId); + SysId userId = itemData.GetIdValue(SbmSystemAccountUser.Column.UserId); + ushort flags = (ushort)itemData.GetIntValue(SbmSystemAccountUser.Column.Flag); + // Create item. + SbmSystemAccountUser_Mobile systemAccountUser = new SbmSystemAccountUser_Mobile(UserContext, accountId, userId, flags); + // Populate item properties. + foreach (SbmSystemAccountUser.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + case SbmSystemAccountUser.Column.AccountId: systemAccountUser.AccountId = itemData.GetIdValue(column); break; + case SbmSystemAccountUser.Column.UserId: systemAccountUser.UserId = itemData.GetIdValue(column); break; + case SbmSystemAccountUser.Column.Notes: systemAccountUser.Notes = value; break; + case SbmSystemAccountUser.Column.Status: systemAccountUser.Status = SacsSystem.GetStatusForCode(value); break; + } + } + systemAccountUsers.Add(systemAccountUser); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " SystemAccountUsers: " + systemAccountUsers.Count); + return systemAccountUsers; + } + + + //------------------------------------------------------------------- + // SystemAccountUser query execution. + public override DbResultSet SystemAccountUserExecuteQuery (List columns, SbmSystemAccountUser.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecuteSystemAccountUserQuery_Mobile (List systemAccountUserColumns, SbmSystemAccountUser.Params prmSystemAccountUser, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SbmSystemAccountUser.Column column in systemAccountUserColumns) + columns.Add(column.ToString()); + + SbmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetSystemAccountUserRequestConfig(SbmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetSystemAccountUserQueryFilter_Mobile(prmSystemAccountUser), columns, this.GetSortColumns_Mobile(prmSystemAccountUser), taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SbmWebServiceRequest.Config GetSystemAccountUserRequestConfig (SbmWebServiceRequest.RequestType requestType, bool debug = false) + { + SbmWebServiceRequest.Config configRequest = new SbmWebServiceRequest.Config(); + configRequest.DataType = SbmWebServiceRequest.DataType.SystemAccountUser; + configRequest.RequestType = requestType; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} + diff --git a/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAccountMgr_Mobile-SystemAccounts.cs b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAccountMgr_Mobile-SystemAccounts.cs new file mode 100644 index 0000000..b9101b9 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAccountMgr_Mobile-SystemAccounts.cs @@ -0,0 +1,291 @@ +using Sarand.Core.App; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Data; +using Sarand.Core.Dbas.Base; +using Sarand.Core.Tasks; +using Sarand.Core.Xml; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using System.Xml.Linq; +using Sarand.BusinessMgr.Mobile.Core.Bus; +using Sarand.BusinessMgr.Core.WebService; + +namespace Sarand.BusinessMgr.Mobile.Core.Mgr +{ + //======================================================================= + partial class SbmAccountMgr_Mobile + { + //******************************************************************* + // S y s t e m A c c o u n t + //******************************************************************* + // Create SystemAccount. + public override SbmSystemAccount CreateSystemAccount (Sbm.SystemAccountType systemAccountType, SysId interfaceId, SysId assocId) + { + ClearErrorState(); + return new SbmSystemAccount_Mobile(UserContext, null, null, systemAccountType, interfaceId, assocId, 0); + } + + //------------------------------------------------------------------- + // Get SystemAccount. + public override SbmSystemAccount GetSystemAccount (SbmSystemAccount.Params prmSystemAccount) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate SystemAccount. + public override bool IsValidSystemAccountData (SbmSystemAccount.Data data, SbmSystemAccount.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidSystemAccountData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert SystemAccount. + public override bool InsertSystemAccount (SbmSystemAccount systemAccount, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidSystemAccount(systemAccount)) return false; + if (SysId.IsValid(systemAccount.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update SystemAccount. + public override bool UpdateSystemAccount (SbmSystemAccount systemAccount, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidSystemAccount(systemAccount)) return false; + if (!SysId.IsValid(systemAccount.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete SystemAccount. + public override bool SystemAccountCanBeDeleted (SbmSystemAccount systemAccount) + { + ClearErrorState(); + if (!base.SystemAccountCanBeDeleted(systemAccount)) return false; + return true; + } + public override bool DeleteSystemAccount (SbmSystemAccount systemAccount, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!SystemAccountCanBeDeleted(systemAccount)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement systemAccountElement, SbmSystemAccount systemAccount, DbUpdateInfo dbUpdateInfo) + { + systemAccountElement.AppendElement(nameof(systemAccount.Id), SysId.ToString(systemAccount.Id)); + systemAccountElement.AppendElement(nameof(systemAccount.AffiliateIdOwner), SysId.ToString(systemAccount.AffiliateIdOwner)); + systemAccountElement.AppendElement(nameof(systemAccount.SystemAccountType), systemAccount.SystemAccountType.ToString()); + systemAccountElement.AppendElement(nameof(systemAccount.InterfaceId), SysId.ToString(systemAccount.InterfaceId)); + systemAccountElement.AppendElement(nameof(systemAccount.AssociationId), SysId.ToString(systemAccount.AssociationId)); + systemAccountElement.AppendElement(nameof(systemAccount.Code), systemAccount.Code); + systemAccountElement.AppendElement(nameof(systemAccount.Name), systemAccount.Name); + systemAccountElement.AppendElement(nameof(systemAccount.AuthCodeEnc), systemAccount.AuthCodeEnc); + systemAccountElement.AppendElement(nameof(systemAccount.Notes), systemAccount.Notes); + systemAccountElement.AppendElement(nameof(systemAccount.Status), SacsSystem.GetStatusCode(systemAccount.Status)); + systemAccountElement.AppendElement(nameof(systemAccount.Flags), systemAccount.Flags.ToString()); + if (!SysId.IsValid(systemAccount.Id)) + { + systemAccountElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + systemAccountElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + systemAccountElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + systemAccountElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + systemAccountElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + systemAccountElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement systemAccountElement, SbmSystemAccount systemAccount) + { + //systemAccount.Id = new SysId(StringUtil.ToInt(systemAccountElement.GetChildText("Id"))); + systemAccount.AffiliateIdOwner = new SysId(StringUtil.ToInt(systemAccountElement.GetChildText(nameof(systemAccount.AffiliateIdOwner)))); + systemAccount.SystemAccountType = EnumUtil.ParseEnum(systemAccountElement.GetChildText(nameof(systemAccount.SystemAccountType)), Sbm.SystemAccountType.Unknown); + systemAccount.InterfaceId = new SysId(StringUtil.ToInt(systemAccountElement.GetChildText(nameof(systemAccount.InterfaceId)))); + systemAccount.AssociationId = new SysId(StringUtil.ToInt(systemAccountElement.GetChildText(nameof(systemAccount.AssociationId)))); + systemAccount.Code = systemAccountElement.GetChildText(nameof(systemAccount.Code)); + systemAccount.Name = systemAccountElement.GetChildText(nameof(systemAccount.Name)); + systemAccount.AuthCodeEnc = systemAccountElement.GetChildText(nameof(systemAccount.AuthCodeEnc)); + systemAccount.Notes = systemAccountElement.GetChildText(nameof(systemAccount.Notes)); + systemAccount.Status = SacsSystem.GetStatusForCode(systemAccountElement.GetChildText(nameof(systemAccount.Status))); + systemAccount.SetCreateStamp(DateUtil.ParseXmlDateTime(systemAccountElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(systemAccountElement.GetChildText("CreateBy"))), systemAccountElement.GetChildText("CreateHost")); + systemAccount.SetUpdateStamp(DateUtil.ParseXmlDateTime(systemAccountElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(systemAccountElement.GetChildText("UpdateBy"))), systemAccountElement.GetChildText("UpdateHost")); + systemAccount.AcceptChanges(); + } + + //------------------------------------------------------------------- + // SystemAccount column definitions. + public override ColumnDfn GetSystemAccountColumnDfn (SbmSystemAccount.Column columnId, string caption = "", int width = 0) + { + ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width); + if (!String.IsNullOrEmpty(caption)) + columnDfn.Caption = caption; + if (width > 0) + columnDfn.Width = width; + columnDfn.DataName = columnId.ToString(); + return columnDfn; + } + + //------------------------------------------------------------------- + // SystemAccount query filter. + public override List GetSystemAccountQueryFilter (SbmSystemAccount.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetSystemAccountQueryFilter_Mobile (SbmSystemAccount.Params prm) + { + Dictionary filter = new Dictionary(); + + // SystemAccount Id. + if (prm.IncludedIds.Count > 0) filter.Add(nameof(prm.IncludedIds), prm.IncludedIds.Concat(",")); + if (prm.ExcludedIds.Count > 0) filter.Add(nameof(prm.ExcludedIds), prm.ExcludedIds.Concat(",")); + + // System account type. + if ((int)prm.Type > 0) filter.Add(nameof(prm.Type), ((int)prm.Type).ToString()); + + // Interface Id. + if (SysId.IsValid(prm.InterfaceId)) filter.Add(nameof(prm.InterfaceId), SysId.ToString(prm.InterfaceId)); + + // Assoc Id. + if (SysId.IsValid(prm.AssocId)) filter.Add(nameof(prm.AssocId), SysId.ToString(prm.AssocId)); + + // Affiliate exclude Id user accounts. + if (SysId.IsValid(prm.AffiliateExcludeIdUserAccounts)) filter.Add(nameof(prm.AffiliateExcludeIdUserAccounts), SysId.ToString(prm.AffiliateExcludeIdUserAccounts)); + + // Code. + if (!StringUtil.IsEmpty(prm.Code)) filter.Add(nameof(prm.Code), prm.Code); + if (!StringUtil.IsEmpty(prm.CodePartial)) filter.Add(nameof(prm.CodePartial), prm.CodePartial); + + // Name. + if (!StringUtil.IsEmpty(prm.Name)) filter.Add(nameof(prm.Name), prm.Name); + if (!StringUtil.IsEmpty(prm.NamePartial)) filter.Add(nameof(prm.NamePartial), prm.NamePartial); + + // Has items. + if (prm.RestrictToActive != false) filter.Add(nameof(prm.RestrictToActive), prm.RestrictToActive.ToString()); + + // Status. + filter.Add(nameof(prm.StatusCat), prm.StatusCat.ToString()); + + // Paging. + if (prm.ResultsPaging.Paged) + { + filter.Add(nameof(prm.ResultsPaging.PageNo), prm.ResultsPaging.PageNo.ToString()); + filter.Add(nameof(prm.ResultsPaging.PageLength), prm.ResultsPaging.PageLength.ToString()); + } + + return filter; + } + // SystemAccount sort columns. + public List GetSystemAccountSortColumns (SbmSystemAccount.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // SystemAccount count. + public override long GetSystemAccountCount (SbmSystemAccount.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // SystemAccount list. + public override List GetSystemAccountList (SbmSystemAccount.Params prm) + { + List systemAccounts = new List(); + throw new NotImplementedException(); + } + public async Task> GetSystemAccountList_Mobile (SbmSystemAccount.Params prmSystemAccount, SacsTaskData taskData) + { + ClearErrorState(); + List systemAccounts = new List(); + String fn = GetType().Name + ".GetSystemAccountList_Mobile"; + + // SystemAccount columns. + List columns = new List(EnumUtil.GetValues()); + + List itemDataList = await ExecuteSystemAccountQuery_Mobile(columns, prmSystemAccount, taskData); + foreach (SbmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId id = itemData.GetIdValue(SbmSystemAccount.Column.Id); + SysId affIdOwner = new SysId(); + //Sbm.SystemAccountType systemAccountType = EnumUtil.ParseEnum(itemData.GetValue(SbmSystemAccount.Column.SystemAccountType), Sbm.SystemAccountType.Unknown); + SysId interfaceId = new SysId(); + SysId assocId = new SysId(); + ushort flags = (ushort)itemData.GetIntValue(SbmSystemAccount.Column.Flag); + // Create item. + SbmSystemAccount_Mobile systemAccount = new SbmSystemAccount_Mobile(UserContext, id, affIdOwner, Sbm.SystemAccountType.Unknown, interfaceId, assocId, flags); + // Populate item properties. + foreach (SbmSystemAccount.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + //case SbmSystemAccount.Column.AffIdOwner: systemAccount.AffIdOwner = itemData.GetIdValue(column); break; + //case SbmSystemAccount.Column.SystemAccountType: systemAccount.SystemAccountType = EnumUtil.ParseEnum(itemData.GetValue(column), Sbm.SystemAccountType.Unknown); break; + //case SbmSystemAccount.Column.InterfaceId: systemAccount.InterfaceId = itemData.GetIdValue(column); break; + //case SbmSystemAccount.Column.AssocId: systemAccount.AssocId = itemData.GetIdValue(column); break; + case SbmSystemAccount.Column.Code: systemAccount.Code = value; break; + case SbmSystemAccount.Column.Name: systemAccount.Name = value; break; + //case SbmSystemAccount.Column.AuthCodeEnc: systemAccount.AuthCodeEnc = value; break; + case SbmSystemAccount.Column.Notes: systemAccount.Notes = value; break; + case SbmSystemAccount.Column.Status: systemAccount.Status = SacsSystem.GetStatusForCode(value); break; + } + } + systemAccounts.Add(systemAccount); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " SystemAccounts: " + systemAccounts.Count); + return systemAccounts; + } + + + //------------------------------------------------------------------- + // SystemAccount query execution. + public override DbResultSet SystemAccountExecuteQuery (List columns, SbmSystemAccount.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecuteSystemAccountQuery_Mobile (List systemAccountColumns, SbmSystemAccount.Params prmSystemAccount, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SbmSystemAccount.Column column in systemAccountColumns) + columns.Add(column.ToString()); + + SbmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetSystemAccountRequestConfig(SbmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetSystemAccountQueryFilter_Mobile(prmSystemAccount), columns, this.GetSortColumns_Mobile(prmSystemAccount), taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SbmWebServiceRequest.Config GetSystemAccountRequestConfig (SbmWebServiceRequest.RequestType requestType, bool debug = false) + { + SbmWebServiceRequest.Config configRequest = new SbmWebServiceRequest.Config(); + configRequest.DataType = SbmWebServiceRequest.DataType.SystemAccount; + configRequest.RequestType = requestType; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} + diff --git a/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAccountMgr_Mobile-SystemUsers.cs b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAccountMgr_Mobile-SystemUsers.cs new file mode 100644 index 0000000..c43fc38 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAccountMgr_Mobile-SystemUsers.cs @@ -0,0 +1,281 @@ +using Sarand.Core.App; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Data; +using Sarand.Core.Dbas.Base; +using Sarand.Core.Tasks; +using Sarand.Core.Xml; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.BusinessMgr.Core.WebService; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using System.Xml.Linq; +using Sarand.BusinessMgr.Mobile.Core.Bus; + +namespace Sarand.BusinessMgr.Mobile.Core.Mgr +{ + //======================================================================= + partial class SbmAccountMgr_Mobile + { + //******************************************************************* + // S y s t e m U s e r s + //******************************************************************* + // Create SystemUser. + public override SbmSystemUser CreateSystemUser (SysId interfaceId, SysId affiliateId) + { + ClearErrorState(); + return new SbmSystemUser_Mobile(UserContext, null, null, interfaceId, affiliateId, 0); + } + + //------------------------------------------------------------------- + // Get SystemUser. + public override SbmSystemUser GetSystemUser (SbmSystemUser.Params prmSystemUser) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate SystemUser. + public override bool IsValidSystemUserData (SbmSystemUser.Data data, SbmSystemUser.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidSystemUserData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert SystemUser. + public override bool InsertSystemUser (SbmSystemUser systemUser, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidSystemUser(systemUser)) return false; + if (SysId.IsValid(systemUser.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update SystemUser. + public override bool UpdateSystemUser (SbmSystemUser systemUser, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidSystemUser(systemUser)) return false; + if (!SysId.IsValid(systemUser.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete SystemUser. + public override bool SystemUserCanBeDeleted (SbmSystemUser systemUser) + { + ClearErrorState(); + if (!base.SystemUserCanBeDeleted(systemUser)) return false; + return true; + } + public override bool DeleteSystemUser (SbmSystemUser systemUser, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!SystemUserCanBeDeleted(systemUser)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement systemUserElement, SbmSystemUser systemUser, DbUpdateInfo dbUpdateInfo) + { + systemUserElement.AppendElement(nameof(systemUser.Id), SysId.ToString(systemUser.Id)); + systemUserElement.AppendElement(nameof(systemUser.AffiliateIdOwner), SysId.ToString(systemUser.AffiliateIdOwner)); + systemUserElement.AppendElement(nameof(systemUser.InterfaceId), SysId.ToString(systemUser.InterfaceId)); + systemUserElement.AppendElement(nameof(systemUser.AffiliateId), SysId.ToString(systemUser.AffiliateId)); + systemUserElement.AppendElement(nameof(systemUser.Code), systemUser.Code); + systemUserElement.AppendElement(nameof(systemUser.AuthCodeEnc), systemUser.AuthCodeEnc); + systemUserElement.AppendElement(nameof(systemUser.Notes), systemUser.Notes); + systemUserElement.AppendElement(nameof(systemUser.Status), SacsSystem.GetStatusCode(systemUser.Status)); + systemUserElement.AppendElement(nameof(systemUser.Flags), systemUser.Flags.ToString()); + if (!SysId.IsValid(systemUser.Id)) + { + systemUserElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + systemUserElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + systemUserElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + systemUserElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + systemUserElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + systemUserElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement systemUserElement, SbmSystemUser systemUser) + { + //systemUser.Id = new SysId(StringUtil.ToInt(systemUserElement.GetChildText("Id"))); + systemUser.AffiliateIdOwner = new SysId(StringUtil.ToInt(systemUserElement.GetChildText(nameof(systemUser.AffiliateIdOwner)))); + systemUser.InterfaceId = new SysId(StringUtil.ToInt(systemUserElement.GetChildText(nameof(systemUser.InterfaceId)))); + systemUser.AffiliateId = new SysId(StringUtil.ToInt(systemUserElement.GetChildText(nameof(systemUser.AffiliateId)))); + systemUser.Code = systemUserElement.GetChildText(nameof(systemUser.Code)); + systemUser.AuthCodeEnc = systemUserElement.GetChildText(nameof(systemUser.AuthCodeEnc)); + systemUser.Notes = systemUserElement.GetChildText(nameof(systemUser.Notes)); + systemUser.Status = SacsSystem.GetStatusForCode(systemUserElement.GetChildText(nameof(systemUser.Status))); + systemUser.SetCreateStamp(DateUtil.ParseXmlDateTime(systemUserElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(systemUserElement.GetChildText("CreateBy"))), systemUserElement.GetChildText("CreateHost")); + systemUser.SetUpdateStamp(DateUtil.ParseXmlDateTime(systemUserElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(systemUserElement.GetChildText("UpdateBy"))), systemUserElement.GetChildText("UpdateHost")); + systemUser.AcceptChanges(); + } + + //------------------------------------------------------------------- + // SystemUser column definitions. + public override ColumnDfn GetSystemUserColumnDfn (SbmSystemUser.Column columnId, string caption = "", int width = 0) + { + ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width); + if (!String.IsNullOrEmpty(caption)) + columnDfn.Caption = caption; + if (width > 0) + columnDfn.Width = width; + columnDfn.DataName = columnId.ToString(); + return columnDfn; + } + + //------------------------------------------------------------------- + // SystemUser query filter. + public override List GetSystemUserQueryFilter (SbmSystemUser.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetSystemUserQueryFilter_Mobile (SbmSystemUser.Params prm) + { + Dictionary filter = new Dictionary(); + + // SystemUser Id. + if (prm.IncludedIds.Count > 0) filter.Add(nameof(prm.IncludedIds), prm.IncludedIds.Concat(",")); + if (prm.ExcludedIds.Count > 0) filter.Add(nameof(prm.ExcludedIds), prm.ExcludedIds.Concat(",")); + + // Aff Id owner. + if (SysId.IsValid(prm.AffIdOwner)) filter.Add(nameof(prm.AffIdOwner), SysId.ToString(prm.AffIdOwner)); + + // Interface Id. + if (SysId.IsValid(prm.InterfaceId)) filter.Add(nameof(prm.InterfaceId), SysId.ToString(prm.InterfaceId)); + + // Affiliate Id. + if (SysId.IsValid(prm.AffiliateId)) filter.Add(nameof(prm.AffiliateId), SysId.ToString(prm.AffiliateId)); + + // Association exclude Id user accounts. + if (SysId.IsValid(prm.AssocationExcludeIdUserAccounts)) filter.Add(nameof(prm.AssocationExcludeIdUserAccounts), SysId.ToString(prm.AssocationExcludeIdUserAccounts)); + + // Code. + if (!StringUtil.IsEmpty(prm.Code)) filter.Add(nameof(prm.Code), prm.Code); + if (!StringUtil.IsEmpty(prm.CodePartial)) filter.Add(nameof(prm.CodePartial), prm.CodePartial); + + // Email. + if (!StringUtil.IsEmpty(prm.Email)) filter.Add(nameof(prm.Email), prm.Email); + if (!StringUtil.IsEmpty(prm.EmailPartial)) filter.Add(nameof(prm.EmailPartial), prm.EmailPartial); + + // Status. + filter.Add(nameof(prm.StatusCat), prm.StatusCat.ToString()); + + // Paging. + if (prm.ResultsPaging.Paged) + { + filter.Add(nameof(prm.ResultsPaging.PageNo), prm.ResultsPaging.PageNo.ToString()); + filter.Add(nameof(prm.ResultsPaging.PageLength), prm.ResultsPaging.PageLength.ToString()); + } + + return filter; + } + // SystemUser sort columns. + public List GetSystemUserSortColumns (SbmSystemUser.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // SystemUser count. + public override long GetSystemUserCount (SbmSystemUser.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // SystemUser list. + public override List GetSystemUserList (SbmSystemUser.Params prm) + { + List systemUsers = new List(); + throw new NotImplementedException(); + } + public async Task> GetSystemUserList_Mobile (SbmSystemUser.Params prmSystemUser, SacsTaskData taskData) + { + ClearErrorState(); + List systemUsers = new List(); + String fn = GetType().Name + ".GetSystemUserList_Mobile"; + + // SystemUser columns. + List columns = new List(EnumUtil.GetValues()); + + List itemDataList = await ExecuteSystemUserQuery_Mobile(columns, prmSystemUser, taskData); + foreach (SbmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId id = itemData.GetIdValue(SbmSystemUser.Column.Id); + SysId affIdOwner = new SysId(); + SysId interfaceId = new SysId(); + SysId affiliateId = new SysId(); + ushort flags = (ushort)itemData.GetIntValue(SbmSystemUser.Column.Flag); + // Create item. + SbmSystemUser_Mobile systemUser = new SbmSystemUser_Mobile(UserContext, id, affIdOwner, interfaceId, affiliateId,flags); + // Populate item properties. + foreach (SbmSystemUser.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + //case SbmSystemUser.Column.AffIdOwner: systemUser.AffIdOwner = itemData.GetIdValue(column); break; + //case SbmSystemUser.Column.InterfaceId: systemUser.InterfaceId = itemData.GetIdValue(column); break; + //case SbmSystemUser.Column.AffiliateId: systemUser.AffiliateId = itemData.GetIdValue(column); break; + case SbmSystemUser.Column.Code: systemUser.Code = value; break; + //case SbmSystemUser.Column.AuthCodeEnc: systemUser.AuthCodeEnc = value; break; + case SbmSystemUser.Column.Notes: systemUser.Notes = value; break; + case SbmSystemUser.Column.Status: systemUser.Status = SacsSystem.GetStatusForCode(value); break; + } + } + systemUsers.Add(systemUser); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " SystemUsers: " + systemUsers.Count); + return systemUsers; + } + + + //------------------------------------------------------------------- + // SystemUser query execution. + public override DbResultSet SystemUserExecuteQuery (List columns, SbmSystemUser.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecuteSystemUserQuery_Mobile (List systemUserColumns, SbmSystemUser.Params prmSystemUser, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SbmSystemUser.Column column in systemUserColumns) + columns.Add(column.ToString()); + + SbmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetSystemUserRequestConfig(SbmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetSystemUserQueryFilter_Mobile(prmSystemUser), columns, this.GetSortColumns_Mobile(prmSystemUser), taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SbmWebServiceRequest.Config GetSystemUserRequestConfig (SbmWebServiceRequest.RequestType requestType, bool debug = false) + { + SbmWebServiceRequest.Config configRequest = new SbmWebServiceRequest.Config(); + configRequest.DataType = SbmWebServiceRequest.DataType.SystemUser; + configRequest.RequestType = requestType; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} + diff --git a/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAccountMgr_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAccountMgr_Mobile.cs new file mode 100644 index 0000000..d5d2bbb --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAccountMgr_Mobile.cs @@ -0,0 +1,138 @@ +using Sarand.BusinessMgr.Mobile.Core.App; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.BusinessMgr.Core.Mgr; +using Sarand.BusinessMgr.Core.WebService; +using Sarand.BusinessMgr.Mobile.Core.Mgr; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Dbas.Base; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.Mgr +{ + //======================================================================= + public partial class SbmAccountMgr_Mobile : SbmAccountMgr, ISbmItemMgr_Mobile + { + //------------------------------------------------------------------- + // Definitions. + + //------------------------------------------------------------------- + // Data members. + private SbmWebServiceClient webServiceClient = new SbmWebServiceClient(); + + //------------------------------------------------------------------- + // Construction. + public SbmAccountMgr_Mobile (SbmUserContext userContext) : + base(userContext) + { + } + + //------------------------------------------------------------------- + // Properties. + public SbmSessionProfile_Mobile SessionProfile { get { return SbmGlobals_Mobile.SessionProfile; } } + public String UserCode { get; } + public String EmailAddress { get; } + + + //------------------------------------------------------------------- + // A s s o c i a t e d D a t a + //------------------------------------------------------------------- + public override bool SystemAccountDatabaseIsValid => throw new NotImplementedException(); + + public override string GetAffiliateName (SysId affiliateId) + { + throw new NotImplementedException(); + } + + public override SysId GetAssociationAffIdTarget (SysId idAssoc) + { + throw new NotImplementedException(); + } + + public override string GetAssociationCode (SysId idAssoc) + { + throw new NotImplementedException(); + } + + public override string GetAssociationOwnerName (SysId associationIdOwner) + { + throw new NotImplementedException(); + } + + public override string GetAssociationTargetName (SysId associationIdTarget) + { + throw new NotImplementedException(); + } + + public override List GetAssocIdsForTargets (SysId affiliateIdOwner, Sbm.AssociationType associationType, List affiliateIdsTarget) + { + throw new NotImplementedException(); + } + + public override List GetCustomerAssocIdsForTargets (List affiliateIdsTarget) + { + throw new NotImplementedException(); + } + + public override List GetCustomerTargetIds (List affiliateIdsInclude, List affiliateIdsExclude) + { + throw new NotImplementedException(); + } + + public override SbmDbDfn.ColumnIdx GetDbCol (SbmAssociation.Column column) + { + throw new NotImplementedException(); + } + + public override List GetMemberTargetIds (SysId affiliateIdOwner) + { + throw new NotImplementedException(); + } + + public override long OwnerAssociationCount (SysId id, Sbm.AssociationType associationType = Sbm.AssociationType.Any, bool activeOnly = true) + { + throw new NotImplementedException(); + } + + public override bool OwnerHasAssociations (SysId id, Sbm.AssociationType associationType = Sbm.AssociationType.Any, bool activeOnly = true) + { + throw new NotImplementedException(); + } + + public override bool OwnerHasAssociationsWith (SysId ownerId, SysId affiliateIdTarget, bool activeOnly = true) + { + throw new NotImplementedException(); + } + + public override long OwnerTargetAssociationCount (SysId ownerId, SysId affiliateIdTarget, bool activeOnly = true) + { + throw new NotImplementedException(); + } + + public override long TargetAssociationCount (SysId id, Sbm.AssociationType associationType = Sbm.AssociationType.Any, bool activeOnly = true) + { + throw new NotImplementedException(); + } + + public override bool TargetHasAssociations (SysId id, Sbm.AssociationType associationType = Sbm.AssociationType.Any, bool activeOnly = true) + { + throw new NotImplementedException(); + } + + public override bool VerifyAsPrimaryAddress (SbmAddress addressPrimary) + { + throw new NotImplementedException(); + } + + public override List GetAssociationTypesInUse () + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAssetMgr_Mobile-AssetCategories.cs b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAssetMgr_Mobile-AssetCategories.cs new file mode 100644 index 0000000..05b3f43 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAssetMgr_Mobile-AssetCategories.cs @@ -0,0 +1,304 @@ +using Sarand.Core.App; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Data; +using Sarand.Core.Dbas.Base; +using Sarand.Core.Tasks; +using Sarand.Core.Xml; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.BusinessMgr.Core.WebService; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using System.Xml.Linq; +using Sarand.BusinessMgr.Mobile.Core.Bus; + +namespace Sarand.BusinessMgr.Mobile.Core.Mgr +{ + //======================================================================= + partial class SbmAssetMgr_Mobile + { + //******************************************************************* + // A s s e t C a t e g o r y + //******************************************************************* + // Create AssetCategory. + public override SbmAssetCategory CreateAssetCategory (Sbm.AssetType assetType) + { + ClearErrorState(); + return new SbmAssetCategory_Mobile(UserContext, null, 0); + } + + //------------------------------------------------------------------- + // Get AssetCategory. + public override SbmAssetCategory GetAssetCategory (SbmAssetCategory.Params prmAssetCategory) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate AssetCategory. + public override bool IsValidAssetCategoryData (SbmAssetCategory.Data data, SbmAssetCategory.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidAssetCategoryData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert AssetCategory. + public override bool InsertAssetCategory (SbmAssetCategory assetCategory, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidAssetCategory(assetCategory)) return false; + if (SysId.IsValid(assetCategory.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update AssetCategory. + public override bool UpdateAssetCategory (SbmAssetCategory assetCategory, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidAssetCategory(assetCategory)) return false; + if (!SysId.IsValid(assetCategory.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete AssetCategory. + public override bool AssetCategoryCanBeDeleted (SbmAssetCategory assetCategory) + { + ClearErrorState(); + if (!base.AssetCategoryCanBeDeleted(assetCategory)) return false; + return true; + } + public override bool DeleteAssetCategory (SbmAssetCategory assetCategory, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!AssetCategoryCanBeDeleted(assetCategory)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement assetCategoryElement, SbmAssetCategory assetCategory, DbUpdateInfo dbUpdateInfo) + { + assetCategoryElement.AppendElement(nameof(assetCategory.Id), SysId.ToString(assetCategory.Id)); + assetCategoryElement.AppendElement(nameof(assetCategory.AffIdOwner), SysId.ToString(assetCategory.AffIdOwner)); + assetCategoryElement.AppendElement(nameof(assetCategory.AssetType), assetCategory.AssetType.ToString()); + assetCategoryElement.AppendElement(nameof(assetCategory.Code), assetCategory.Code); + assetCategoryElement.AppendElement(nameof(assetCategory.DescBrief), assetCategory.DescBrief); + assetCategoryElement.AppendElement(nameof(assetCategory.IncomeType), assetCategory.IncomeType.ToString()); + assetCategoryElement.AppendElement(nameof(assetCategory.AssocIdSupplier), SysId.ToString(assetCategory.AssocIdSupplier)); + assetCategoryElement.AppendElement(nameof(assetCategory.PaymentTerms), assetCategory.PaymentTerms.ToString("N3")); + assetCategoryElement.AppendElement(nameof(assetCategory.TaxCodeIdPurchase), SysId.ToString(assetCategory.TaxCodeIdPurchase)); + assetCategoryElement.AppendElement(nameof(assetCategory.AssocIdCustomer), SysId.ToString(assetCategory.AssocIdCustomer)); + assetCategoryElement.AppendElement(nameof(assetCategory.TaxCodeIdSell), SysId.ToString(assetCategory.TaxCodeIdSell)); + assetCategoryElement.AppendElement(nameof(assetCategory.TaxCodeIdProfit), SysId.ToString(assetCategory.TaxCodeIdProfit)); + assetCategoryElement.AppendElement(nameof(assetCategory.DisposeCode), assetCategory.DisposeCode); + assetCategoryElement.AppendElement(nameof(assetCategory.UomIdRentalCost), SysId.ToString(assetCategory.UomIdRentalCost)); + assetCategoryElement.AppendElement(nameof(assetCategory.TaxCodeIdRentalCost), SysId.ToString(assetCategory.TaxCodeIdRentalCost)); + assetCategoryElement.AppendElement(nameof(assetCategory.UomIdRentalPrice), SysId.ToString(assetCategory.UomIdRentalPrice)); + assetCategoryElement.AppendElement(nameof(assetCategory.TaxCodeIdRentalPrice), SysId.ToString(assetCategory.TaxCodeIdRentalPrice)); + assetCategoryElement.AppendElement(nameof(assetCategory.Notes), assetCategory.Notes); + assetCategoryElement.AppendElement(nameof(assetCategory.Status), SacsSystem.GetStatusCode(assetCategory.Status)); + assetCategoryElement.AppendElement(nameof(assetCategory.Flags), assetCategory.Flags.ToString()); + if (!SysId.IsValid(assetCategory.Id)) + { + assetCategoryElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + assetCategoryElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + assetCategoryElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + assetCategoryElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + assetCategoryElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + assetCategoryElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement assetCategoryElement, SbmAssetCategory assetCategory) + { + assetCategory.Id = new SysId(StringUtil.ToInt(assetCategoryElement.GetChildText("Id"))); + assetCategory.AffIdOwner = new SysId(StringUtil.ToInt(assetCategoryElement.GetChildText(nameof(assetCategory.AffIdOwner)))); + assetCategory.AssetType = EnumUtil.ParseEnum(assetCategoryElement.GetChildText(nameof(assetCategory.AssetType)), Sbm.AssetType.Unknown); + assetCategory.Code = assetCategoryElement.GetChildText(nameof(assetCategory.Code)); + assetCategory.DescBrief = assetCategoryElement.GetChildText(nameof(assetCategory.DescBrief)); + assetCategory.IncomeType = EnumUtil.ParseEnum(assetCategoryElement.GetChildText(nameof(assetCategory.IncomeType)), Sbm.AssetIncomeType.Unknown); + assetCategory.AssocIdSupplier = new SysId(StringUtil.ToInt(assetCategoryElement.GetChildText(nameof(assetCategory.AssocIdSupplier)))); + assetCategory.PaymentTerms = StringUtil.ToShort(assetCategoryElement.GetChildText(nameof(assetCategory.PaymentTerms))); + assetCategory.TaxCodeIdPurchase = new SysId(StringUtil.ToInt(assetCategoryElement.GetChildText(nameof(assetCategory.TaxCodeIdPurchase)))); + assetCategory.AssocIdCustomer = new SysId(StringUtil.ToInt(assetCategoryElement.GetChildText(nameof(assetCategory.AssocIdCustomer)))); + assetCategory.TaxCodeIdSell = new SysId(StringUtil.ToInt(assetCategoryElement.GetChildText(nameof(assetCategory.TaxCodeIdSell)))); + assetCategory.TaxCodeIdProfit = new SysId(StringUtil.ToInt(assetCategoryElement.GetChildText(nameof(assetCategory.TaxCodeIdProfit)))); + assetCategory.DisposeCode = assetCategoryElement.GetChildText(nameof(assetCategory.DisposeCode)); + assetCategory.UomIdRentalCost = new SysId(StringUtil.ToInt(assetCategoryElement.GetChildText(nameof(assetCategory.UomIdRentalCost)))); + assetCategory.TaxCodeIdRentalCost = new SysId(StringUtil.ToInt(assetCategoryElement.GetChildText(nameof(assetCategory.TaxCodeIdRentalCost)))); + assetCategory.UomIdRentalPrice = new SysId(StringUtil.ToInt(assetCategoryElement.GetChildText(nameof(assetCategory.UomIdRentalPrice)))); + assetCategory.TaxCodeIdRentalPrice = new SysId(StringUtil.ToInt(assetCategoryElement.GetChildText(nameof(assetCategory.TaxCodeIdRentalPrice)))); + assetCategory.Notes = assetCategoryElement.GetChildText(nameof(assetCategory.Notes)); + assetCategory.Status = SacsSystem.GetStatusForCode(assetCategoryElement.GetChildText(nameof(assetCategory.Status))); + assetCategory.SetCreateStamp(DateUtil.ParseXmlDateTime(assetCategoryElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(assetCategoryElement.GetChildText("CreateBy"))), assetCategoryElement.GetChildText("CreateHost")); + assetCategory.SetUpdateStamp(DateUtil.ParseXmlDateTime(assetCategoryElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(assetCategoryElement.GetChildText("UpdateBy"))), assetCategoryElement.GetChildText("UpdateHost")); + assetCategory.AcceptChanges(); + } + + //------------------------------------------------------------------- + // AssetCategory column definitions. + public override ColumnDfn GetAssetCategoryColumnDfn (SbmAssetCategory.Column columnId, string caption = "", int width = 0) + { + ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width); + if (!String.IsNullOrEmpty(caption)) + columnDfn.Caption = caption; + if (width > 0) + columnDfn.Width = width; + columnDfn.DataName = columnId.ToString(); + return columnDfn; + } + + //------------------------------------------------------------------- + // AssetCategory query filter. + public override List GetAssetCategoryQueryFilter (SbmAssetCategory.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetAssetCategoryQueryFilter_Mobile (SbmAssetCategory.Params prm) + { + Dictionary filter = new Dictionary(); + + // AssetCategory Id. + if (prm.IncludedIds.Count > 0) filter.Add(nameof(prm.IncludedIds), prm.IncludedIds.Concat(",")); + if (prm.ExcludedIds.Count > 0) filter.Add(nameof(prm.ExcludedIds), prm.ExcludedIds.Concat(",")); + + // Asset type. + if ((int)prm.AssetType > 0) filter.Add(nameof(prm.AssetType), ((int)prm.AssetType).ToString()); + + // Code. + if (!StringUtil.IsEmpty(prm.Code)) filter.Add(nameof(prm.Code), prm.Code); + if (!StringUtil.IsEmpty(prm.CodePartial)) filter.Add(nameof(prm.CodePartial), prm.CodePartial); + + // Desc brief. + if (!StringUtil.IsEmpty(prm.DescBrief)) filter.Add(nameof(prm.DescBrief), prm.DescBrief); + if (!StringUtil.IsEmpty(prm.DescBriefPartial)) filter.Add(nameof(prm.DescBriefPartial), prm.DescBriefPartial); + + // Restrict to active. + if (prm.RestrictToActive != false) filter.Add(nameof(prm.RestrictToActive), prm.RestrictToActive.ToString()); + + // Status. + filter.Add(nameof(prm.StatusCat), prm.StatusCat.ToString()); + + // Paging. + if (prm.ResultsPaging.Paged) + { + filter.Add(nameof(prm.ResultsPaging.PageNo), prm.ResultsPaging.PageNo.ToString()); + filter.Add(nameof(prm.ResultsPaging.PageLength), prm.ResultsPaging.PageLength.ToString()); + } + + return filter; + } + // AssetCategory sort columns. + public List GetAssetCategorySortColumns (SbmAssetCategory.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // AssetCategory count. + public override long GetAssetCategoryCount (SbmAssetCategory.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // AssetCategory list. + public override List GetAssetCategoryList (SbmAssetCategory.Params prm) + { + List assetCategories = new List(); + throw new NotImplementedException(); + } + public async Task> GetAssetCategoryList_Mobile (SbmAssetCategory.Params prmAssetCategory, SacsTaskData taskData) + { + ClearErrorState(); + List assetCategories = new List(); + String fn = GetType().Name + ".GetAssetCategoryList_Mobile"; + + // AssetCategory columns. + List columns = new List(EnumUtil.GetValues()); + + List itemDataList = await ExecuteAssetCategoryQuery_Mobile(columns, prmAssetCategory, taskData); + foreach (SbmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId id = itemData.GetIdValue(SbmAssetCategory.Column.Id); + ushort flags = (ushort)itemData.GetIntValue(SbmAssetCategory.Column.Flag); + // Create item. + SbmAssetCategory_Mobile assetCategory = new SbmAssetCategory_Mobile(UserContext, id, flags); + // Populate item properties. + foreach (SbmAssetCategory.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + case SbmAssetCategory.Column.AffIdOwner: assetCategory.AffIdOwner = itemData.GetIdValue(column); break; + case SbmAssetCategory.Column.AssetType: assetCategory.AssetType = EnumUtil.ParseEnum(itemData.GetValue(column), Sbm.AssetType.Unknown); break; + case SbmAssetCategory.Column.Code: assetCategory.Code = value; break; + case SbmAssetCategory.Column.DescBrief: assetCategory.DescBrief = value; break; + case SbmAssetCategory.Column.IncomeType: assetCategory.IncomeType = EnumUtil.ParseEnum(itemData.GetValue(column), Sbm.AssetIncomeType.Unknown); break; + case SbmAssetCategory.Column.AssocIdSupplier: assetCategory.AssocIdSupplier = itemData.GetIdValue(column); break; + case SbmAssetCategory.Column.PaymentTerms: assetCategory.PaymentTerms = StringUtil.ToShort(itemData.GetDecimalValue(column)); break; + case SbmAssetCategory.Column.TaxCodeIdPurchase: assetCategory.TaxCodeIdPurchase = itemData.GetIdValue(column); break; + case SbmAssetCategory.Column.AssocIdCustomer: assetCategory.AssocIdCustomer = itemData.GetIdValue(column); break; + case SbmAssetCategory.Column.TaxCodeIdSell: assetCategory.TaxCodeIdSell = itemData.GetIdValue(column); break; + case SbmAssetCategory.Column.TaxCodeIdProfit: assetCategory.TaxCodeIdProfit = itemData.GetIdValue(column); break; + case SbmAssetCategory.Column.DisposeCode: assetCategory.DisposeCode = value; break; + case SbmAssetCategory.Column.UomIdRentalCost: assetCategory.UomIdRentalCost = itemData.GetIdValue(column); break; + case SbmAssetCategory.Column.TaxCodeIdRentalCost: assetCategory.TaxCodeIdRentalCost = itemData.GetIdValue(column); break; + case SbmAssetCategory.Column.UomIdRentalPrice: assetCategory.UomIdRentalPrice = itemData.GetIdValue(column); break; + case SbmAssetCategory.Column.TaxCodeIdRentalPrice: assetCategory.TaxCodeIdRentalPrice = itemData.GetIdValue(column); break; + case SbmAssetCategory.Column.Notes: assetCategory.Notes = value; break; + case SbmAssetCategory.Column.Status: assetCategory.Status = SacsSystem.GetStatusForCode(value); break; + } + } + assetCategories.Add(assetCategory); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " AssetCategories: " + assetCategories.Count); + return assetCategories; + } + + + //------------------------------------------------------------------- + // AssetCategory query execution. + public override DbResultSet ExecuteAssetCategoryQuery (List columns, SbmAssetCategory.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecuteAssetCategoryQuery_Mobile (List assetCategoryColumns, SbmAssetCategory.Params prmAssetCategory, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SbmAssetCategory.Column column in assetCategoryColumns) + columns.Add(column.ToString()); + + SbmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetAssetCategoryRequestConfig(SbmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetAssetCategoryQueryFilter_Mobile(prmAssetCategory), columns, this.GetSortColumns_Mobile(prmAssetCategory), taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SbmWebServiceRequest.Config GetAssetCategoryRequestConfig (SbmWebServiceRequest.RequestType requestType, bool debug = false) + { + SbmWebServiceRequest.Config configRequest = new SbmWebServiceRequest.Config(); + configRequest.DataType = SbmWebServiceRequest.DataType.AssetCategory; + configRequest.RequestType = requestType; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} \ No newline at end of file diff --git a/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAssetMgr_Mobile-AssetProcesses.cs b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAssetMgr_Mobile-AssetProcesses.cs new file mode 100644 index 0000000..401bd04 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAssetMgr_Mobile-AssetProcesses.cs @@ -0,0 +1,274 @@ +using Sarand.Core.App; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Data; +using Sarand.Core.Dbas.Base; +using Sarand.Core.Tasks; +using Sarand.Core.Xml; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.BusinessMgr.Core.WebService; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using System.Xml.Linq; +using Sarand.BusinessMgr.Mobile.Core.Bus; + +namespace Sarand.BusinessMgr.Mobile.Core.Mgr +{ + //======================================================================= + partial class SbmAssetMgr_Mobile + { + //******************************************************************* + // A s s e t P r o c e s s e s + //******************************************************************* + // Create AssetProcess. + public override SbmAssetProcess CreateAssetProcess (Sbm.AssetType assetType) + { + ClearErrorState(); + return new SbmAssetProcess_Mobile(UserContext, null, null, null, 0); + } + + //------------------------------------------------------------------- + // Get AssetProcess. + public override SbmAssetProcess GetAssetProcess (SbmAssetProcess.Params prmAssetProcess) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate AssetProcess. + public override bool IsValidAssetProcessData (SbmAssetProcess.Data data, SbmAssetProcess.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidAssetProcessData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert AssetProcess. + public override bool InsertAssetProcess (SbmAssetProcess assetProcess, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidAssetProcess(assetProcess)) return false; + if (SysId.IsValid(assetProcess.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update AssetProcess. + public override bool UpdateAssetProcess (SbmAssetProcess assetProcess, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidAssetProcess(assetProcess)) return false; + if (!SysId.IsValid(assetProcess.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete AssetProcess. + public override bool AssetProcessCanBeDeleted (SbmAssetProcess assetProcess) + { + ClearErrorState(); + if (!base.AssetProcessCanBeDeleted(assetProcess)) return false; + return true; + } + public override bool DeleteAssetProcess (SbmAssetProcess assetProcess, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!AssetProcessCanBeDeleted(assetProcess)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement assetProcessElement, SbmAssetProcess assetProcess, DbUpdateInfo dbUpdateInfo) + { + assetProcessElement.AppendElement(nameof(assetProcess.Id), SysId.ToString(assetProcess.Id)); + assetProcessElement.AppendElement(nameof(assetProcess.AssetId), SysId.ToString(assetProcess.AssetId)); + assetProcessElement.AppendElement(nameof(assetProcess.Seq), assetProcess.Seq); + assetProcessElement.AppendElement(nameof(assetProcess.ProcessId), SysId.ToString(assetProcess.ProcessId)); + assetProcessElement.AppendElement(nameof(assetProcess.RequiredOn), DateUtil.FormatXmlDateTime(assetProcess.RequiredOn)); + assetProcessElement.AppendElement(nameof(assetProcess.ExpectedOn), DateUtil.FormatXmlDateTime(assetProcess.ExpectedOn)); + assetProcessElement.AppendElement(nameof(assetProcess.ProcessedOn), DateUtil.FormatXmlDateTime(assetProcess.ProcessedOn)); + assetProcessElement.AppendElement(nameof(assetProcess.Notes), assetProcess.Notes); + assetProcessElement.AppendElement(nameof(assetProcess.Status), SacsSystem.GetStatusCode(assetProcess.Status)); + assetProcessElement.AppendElement(nameof(assetProcess.Flags), assetProcess.Flags.ToString()); + if (!SysId.IsValid(assetProcess.Id)) + { + assetProcessElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + assetProcessElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + assetProcessElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + assetProcessElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + assetProcessElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + assetProcessElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement assetProcessElement, SbmAssetProcess assetProcess) + { + //assetProcess.Id = new SysId(StringUtil.ToInt(assetProcessElement.GetChildText("Id"))); + assetProcess.AssetId = new SysId(StringUtil.ToInt(assetProcessElement.GetChildText(nameof(assetProcess.AssetId)))); + assetProcess.Seq = assetProcessElement.GetChildText(nameof(assetProcess.Seq)); + assetProcess.ProcessId = new SysId(StringUtil.ToInt(assetProcessElement.GetChildText(nameof(assetProcess.ProcessId)))); + assetProcess.RequiredOn = DateUtil.ParseXmlDateTime(assetProcessElement.GetChildText(nameof(assetProcess.RequiredOn))); + assetProcess.ExpectedOn = DateUtil.ParseXmlDateTime(assetProcessElement.GetChildText(nameof(assetProcess.ExpectedOn))); + assetProcess.ProcessedOn = DateUtil.ParseXmlDateTime(assetProcessElement.GetChildText(nameof(assetProcess.ProcessedOn))); + assetProcess.Notes = assetProcessElement.GetChildText(nameof(assetProcess.Notes)); + assetProcess.Status = SacsSystem.GetStatusForCode(assetProcessElement.GetChildText(nameof(assetProcess.Status))); + assetProcess.SetCreateStamp(DateUtil.ParseXmlDateTime(assetProcessElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(assetProcessElement.GetChildText("CreateBy"))), assetProcessElement.GetChildText("CreateHost")); + assetProcess.SetUpdateStamp(DateUtil.ParseXmlDateTime(assetProcessElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(assetProcessElement.GetChildText("UpdateBy"))), assetProcessElement.GetChildText("UpdateHost")); + assetProcess.AcceptChanges(); + } + + //------------------------------------------------------------------- + // AssetProcess column definitions. + public override ColumnDfn GetAssetProcessColumnDfn (SbmAssetProcess.Column columnId, string caption = "", int width = 0) + { + ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width); + if (!String.IsNullOrEmpty(caption)) + columnDfn.Caption = caption; + if (width > 0) + columnDfn.Width = width; + columnDfn.DataName = columnId.ToString(); + return columnDfn; + } + + //------------------------------------------------------------------- + // AssetProcess query filter. + public override List GetAssetProcessQueryFilter (SbmAssetProcess.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetAssetProcessQueryFilter_Mobile (SbmAssetProcess.Params prm) + { + Dictionary filter = new Dictionary(); + + // AssetProcess Id. + if (prm.IncludedIds.Count > 0) filter.Add(nameof(prm.IncludedIds), prm.IncludedIds.Concat(",")); + if (prm.ExcludedIds.Count > 0) filter.Add(nameof(prm.ExcludedIds), prm.ExcludedIds.Concat(",")); + + // Asset Id. + if (SysId.IsValid(prm.AssetId)) filter.Add(nameof(prm.AssetId), SysId.ToString(prm.AssetId)); + + // Process Id. + if (SysId.IsValid(prm.ProcessId)) filter.Add(nameof(prm.ProcessId), SysId.ToString(prm.ProcessId)); + + // Seq. + if (!StringUtil.IsEmpty(prm.Seq)) filter.Add(nameof(prm.Seq), prm.Seq); + + // Restrict to active. + if (prm.RestrictToActive != false) filter.Add(nameof(prm.RestrictToActive), prm.RestrictToActive.ToString()); + + // Status. + filter.Add(nameof(prm.StatusCat), prm.StatusCat.ToString()); + + // Paging. + if (prm.ResultsPaging.Paged) + { + filter.Add(nameof(prm.ResultsPaging.PageNo), prm.ResultsPaging.PageNo.ToString()); + filter.Add(nameof(prm.ResultsPaging.PageLength), prm.ResultsPaging.PageLength.ToString()); + } + + return filter; + } + // AssetProcess sort columns. + public List GetAssetProcessSortColumns (SbmAssetProcess.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // AssetProcess count. + public override long GetAssetProcessCount (SbmAssetProcess.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // AssetProcess list. + public override List GetAssetProcessList (SbmAssetProcess.Params prm) + { + List assetProcesses = new List(); + throw new NotImplementedException(); + } + public async Task> GetAssetProcessList_Mobile (SbmAssetProcess.Params prmAssetProcess, SacsTaskData taskData) + { + ClearErrorState(); + List assetProcesses = new List(); + String fn = GetType().Name + ".GetAssetProcessList_Mobile"; + + // AssetProcess columns. + List columns = new List(EnumUtil.GetValues()); + + List itemDataList = await ExecuteAssetProcessQuery_Mobile(columns, prmAssetProcess, taskData); + foreach (SbmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId id = itemData.GetIdValue(SbmAssetProcess.Column.Id); + SysId assetId = itemData.GetIdValue(SbmAssetProcess.Column.AssetId); + SysId processId = itemData.GetIdValue(SbmAssetProcess.Column.ProcessId); + ushort flags = (ushort)itemData.GetIntValue(SbmAssetProcess.Column.Flag); + // Create item. + SbmAssetProcess_Mobile assetProcess = new SbmAssetProcess_Mobile(UserContext, id, assetId, processId, flags); + // Populate item properties. + foreach (SbmAssetProcess.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + case SbmAssetProcess.Column.AssetId: assetProcess.AssetId = itemData.GetIdValue(column); break; + case SbmAssetProcess.Column.Seq: assetProcess.Seq = value; break; + case SbmAssetProcess.Column.ProcessId: assetProcess.ProcessId = itemData.GetIdValue(column); break; + case SbmAssetProcess.Column.RequiredOn: assetProcess.RequiredOn = itemData.GetDateTimeValue(column); break; + case SbmAssetProcess.Column.ExpectedOn: assetProcess.ExpectedOn = itemData.GetDateTimeValue(column); break; + case SbmAssetProcess.Column.ProcessedOn: assetProcess.ProcessedOn = itemData.GetDateTimeValue(column); break; + case SbmAssetProcess.Column.Notes: assetProcess.Notes = value; break; + case SbmAssetProcess.Column.Status: assetProcess.Status = SacsSystem.GetStatusForCode(value); break; + } + } + assetProcesses.Add(assetProcess); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " AssetProcesses: " + assetProcesses.Count); + return assetProcesses; + } + + + //------------------------------------------------------------------- + // AssetProcess query execution. + public override DbResultSet ExecuteAssetProcessQuery (List columns, SbmAssetProcess.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecuteAssetProcessQuery_Mobile (List assetProcessColumns, SbmAssetProcess.Params prmAssetProcess, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SbmAssetProcess.Column column in assetProcessColumns) + columns.Add(column.ToString()); + + SbmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetAssetProcessRequestConfig(SbmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetAssetProcessQueryFilter_Mobile(prmAssetProcess), columns, this.GetSortColumns_Mobile(prmAssetProcess), taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SbmWebServiceRequest.Config GetAssetProcessRequestConfig (SbmWebServiceRequest.RequestType requestType, bool debug = false) + { + SbmWebServiceRequest.Config configRequest = new SbmWebServiceRequest.Config(); + configRequest.DataType = SbmWebServiceRequest.DataType.AssetProcess; + configRequest.RequestType = requestType; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} \ No newline at end of file diff --git a/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAssetMgr_Mobile-Assets.cs b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAssetMgr_Mobile-Assets.cs new file mode 100644 index 0000000..feee454 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAssetMgr_Mobile-Assets.cs @@ -0,0 +1,370 @@ +using Sarand.Core.App; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Data; +using Sarand.Core.Dbas.Base; +using Sarand.Core.Tasks; +using Sarand.Core.Xml; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.BusinessMgr.Core.WebService; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using System.Xml.Linq; +using Sarand.BusinessMgr.Mobile.Core.Bus; + +namespace Sarand.BusinessMgr.Mobile.Core.Mgr +{ + //======================================================================= + partial class SbmAssetMgr_Mobile + { + //******************************************************************* + // A s s e t s + //******************************************************************* + // Create Asset. + public override SbmAsset CreateAsset (SysId assetCatId) + { + ClearErrorState(); + return new SbmAsset_Mobile(UserContext, null, assetCatId, 0); + } + + //------------------------------------------------------------------- + // Get Asset. + public override SbmAsset GetAsset (SbmAsset.Params prmAsset) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate Asset. + public override bool IsValidAssetData (SbmAsset.Data data, SbmAsset.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidAssetData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert Asset. + public override bool InsertAsset (SbmAsset asset, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidAsset(asset)) return false; + if (SysId.IsValid(asset.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update Asset. + public override bool UpdateAsset (SbmAsset asset, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidAsset(asset)) return false; + if (!SysId.IsValid(asset.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete Asset. + public override bool AssetCanBeDeleted (SbmAsset asset) + { + ClearErrorState(); + if (!base.AssetCanBeDeleted(asset)) return false; + return true; + } + public override bool DeleteAsset (SbmAsset asset, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!AssetCanBeDeleted(asset)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement assetElement, SbmAsset asset, DbUpdateInfo dbUpdateInfo) + { + assetElement.AppendElement(nameof(asset.Id), SysId.ToString(asset.Id)); + assetElement.AppendElement(nameof(asset.AssetCategoryId), SysId.ToString(asset.AssetCategoryId)); + assetElement.AppendElement(nameof(asset.SerialNumber), asset.SerialNumber); + assetElement.AppendElement(nameof(asset.RefExt), asset.RefExt); + assetElement.AppendElement(nameof(asset.DescBrief), asset.DescBrief); + assetElement.AppendElement(nameof(asset.ItemId), asset.ItemId.ToString()); + assetElement.AppendElement(nameof(asset.PurchaseOn), DateUtil.FormatXmlDateTime(asset.PurchaseOn)); + assetElement.AppendElement(nameof(asset.AssocIdSupplier), SysId.ToString(asset.AssocIdSupplier)); + assetElement.AppendElement(nameof(asset.PurchaseInvoiceRef), asset.PurchaseInvoiceRef); + assetElement.AppendElement(nameof(asset.PaymentTerms), asset.PaymentTerms.ToString("N3")); + assetElement.AppendElement(nameof(asset.AmountPurchase), asset.AmountPurchase.ToString("N3")); + assetElement.AppendElement(nameof(asset.TaxCodeIdPurchase), SysId.ToString(asset.TaxCodeIdPurchase)); + assetElement.AppendElement(nameof(asset.AmountPurchaseGross), asset.AmountPurchaseGross.ToString("N3")); + assetElement.AppendElement(nameof(asset.AmountSettlementGross), asset.AmountSettlementGross.ToString("N3")); + assetElement.AppendElement(nameof(asset.AmountEnhancementGross), asset.AmountEnhancementGross.ToString("N3")); + assetElement.AppendElement(nameof(asset.AssocIdCustomer), SysId.ToString(asset.AssocIdCustomer)); + assetElement.AppendElement(nameof(asset.SellCategoryCode), asset.SellCategoryCode); + assetElement.AppendElement(nameof(asset.AmountSell), asset.AmountSell.ToString("N3")); + assetElement.AppendElement(nameof(asset.TaxCodeIdSell), SysId.ToString(asset.TaxCodeIdSell)); + assetElement.AppendElement(nameof(asset.AmountSellGross), asset.AmountSellGross.ToString("N3")); + assetElement.AppendElement(nameof(asset.TaxCodeIdProfit), SysId.ToString(asset.TaxCodeIdProfit)); + assetElement.AppendElement(nameof(asset.SoldOn), DateUtil.FormatXmlDateTime(asset.SoldOn)); + assetElement.AppendElement(nameof(asset.AmountSold), asset.AmountSold.ToString("N3")); + assetElement.AppendElement(nameof(asset.AmountSoldGross), asset.AmountSoldGross.ToString("N3")); + assetElement.AppendElement(nameof(asset.DisposeCode), asset.DisposeCode); + assetElement.AppendElement(nameof(asset.DisposeOn), DateUtil.FormatXmlDateTime(asset.DisposeOn)); + assetElement.AppendElement(nameof(asset.DueBackOn), DateUtil.FormatXmlDateTime(asset.DueBackOn)); + assetElement.AppendElement(nameof(asset.AmountRentalCost), asset.AmountRentalCost.ToString("N3")); + assetElement.AppendElement(nameof(asset.UomIdRentalCost), SysId.ToString(asset.UomIdRentalCost)); + assetElement.AppendElement(nameof(asset.TaxCodeIdRentalCost), SysId.ToString(asset.TaxCodeIdRentalCost)); + assetElement.AppendElement(nameof(asset.AmountRentalPrice), asset.AmountRentalPrice.ToString("N3")); + assetElement.AppendElement(nameof(asset.UomIdRentalPrice), SysId.ToString(asset.UomIdRentalPrice)); + assetElement.AppendElement(nameof(asset.TaxCodeIdRentalPrice), SysId.ToString(asset.TaxCodeIdRentalPrice)); + assetElement.AppendElement(nameof(asset.ProcessIdNext), SysId.ToString(asset.ProcessIdNext)); + assetElement.AppendElement(nameof(asset.Notes), asset.Notes); + assetElement.AppendElement(nameof(asset.Status), SacsSystem.GetStatusCode(asset.Status)); + assetElement.AppendElement(nameof(asset.Flags), asset.Flags.ToString()); + if (!SysId.IsValid(asset.Id)) + { + assetElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + assetElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + assetElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + assetElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + assetElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + assetElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement assetElement, SbmAsset asset) + { + asset.Id = new SysId(StringUtil.ToInt(assetElement.GetChildText("Id"))); + asset.AssetCategoryId = new SysId(StringUtil.ToInt(assetElement.GetChildText(nameof(asset.AssetCategoryId)))); + asset.SerialNumber = assetElement.GetChildText(nameof(asset.SerialNumber)); + asset.RefExt = assetElement.GetChildText(nameof(asset.RefExt)); + asset.DescBrief = assetElement.GetChildText(nameof(asset.DescBrief)); + Sbm.ItemType itemType = EnumUtil.ParseEnum(assetElement.GetChildText("ItemType"), Sbm.ItemType.Unknown); + SysId itemId = new SysId(StringUtil.ToInt(assetElement.GetChildText("ItemId"))); + asset.ItemId = new ItemId((short)itemType, itemId); + asset.PurchaseOn = DateUtil.ParseXmlDateTime(assetElement.GetChildText(nameof(asset.PurchaseOn))); + asset.AssocIdSupplier = new SysId(StringUtil.ToInt(assetElement.GetChildText(nameof(asset.AssocIdSupplier)))); + asset.PurchaseInvoiceRef = assetElement.GetChildText(nameof(asset.PurchaseInvoiceRef)); + asset.PaymentTerms = StringUtil.ToShort(assetElement.GetChildText(nameof(asset.PaymentTerms))); + asset.AmountPurchase = StringUtil.ToDecimal(assetElement.GetChildText(nameof(asset.AmountPurchase))); + asset.TaxCodeIdPurchase = new SysId(StringUtil.ToInt(assetElement.GetChildText(nameof(asset.TaxCodeIdPurchase)))); + asset.AmountPurchaseGross = StringUtil.ToDecimal(assetElement.GetChildText(nameof(asset.AmountPurchaseGross))); + asset.AmountSettlementGross = StringUtil.ToDecimal(assetElement.GetChildText(nameof(asset.AmountSettlementGross))); + asset.AmountEnhancementGross = StringUtil.ToDecimal(assetElement.GetChildText(nameof(asset.AmountEnhancementGross))); + asset.AssocIdCustomer = new SysId(StringUtil.ToInt(assetElement.GetChildText(nameof(asset.AssocIdCustomer)))); + asset.SellCategoryCode = assetElement.GetChildText(nameof(asset.SellCategoryCode)); + asset.AmountSell = StringUtil.ToDecimal(assetElement.GetChildText(nameof(asset.AmountSell))); + asset.TaxCodeIdSell = new SysId(StringUtil.ToInt(assetElement.GetChildText(nameof(asset.TaxCodeIdSell)))); + asset.AmountSellGross = StringUtil.ToDecimal(assetElement.GetChildText(nameof(asset.AmountSellGross))); + asset.TaxCodeIdProfit = new SysId(StringUtil.ToInt(assetElement.GetChildText(nameof(asset.TaxCodeIdProfit)))); + asset.SoldOn = DateUtil.ParseXmlDateTime(assetElement.GetChildText(nameof(asset.SoldOn))); + asset.AmountSold = StringUtil.ToDecimal(assetElement.GetChildText(nameof(asset.AmountSold))); + asset.AmountSoldGross = StringUtil.ToDecimal(assetElement.GetChildText(nameof(asset.AmountSoldGross))); + asset.DisposeCode = assetElement.GetChildText(nameof(asset.DisposeCode)); + asset.DisposeOn = DateUtil.ParseXmlDateTime(assetElement.GetChildText(nameof(asset.DisposeOn))); + asset.DueBackOn = DateUtil.ParseXmlDateTime(assetElement.GetChildText(nameof(asset.DueBackOn))); + asset.AmountRentalCost = StringUtil.ToDecimal(assetElement.GetChildText(nameof(asset.AmountRentalCost))); + asset.UomIdRentalCost = new SysId(StringUtil.ToInt(assetElement.GetChildText(nameof(asset.UomIdRentalCost)))); + asset.TaxCodeIdRentalCost = new SysId(StringUtil.ToInt(assetElement.GetChildText(nameof(asset.TaxCodeIdRentalCost)))); + asset.AmountRentalPrice = StringUtil.ToDecimal(assetElement.GetChildText(nameof(asset.AmountRentalPrice))); + asset.UomIdRentalPrice = new SysId(StringUtil.ToInt(assetElement.GetChildText(nameof(asset.UomIdRentalPrice)))); + asset.TaxCodeIdRentalPrice = new SysId(StringUtil.ToInt(assetElement.GetChildText(nameof(asset.TaxCodeIdRentalPrice)))); + asset.ProcessIdNext = new SysId(StringUtil.ToInt(assetElement.GetChildText(nameof(asset.ProcessIdNext)))); + asset.Notes = assetElement.GetChildText(nameof(asset.Notes)); + asset.Status = SacsSystem.GetStatusForCode(assetElement.GetChildText(nameof(asset.Status))); + asset.SetCreateStamp(DateUtil.ParseXmlDateTime(assetElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(assetElement.GetChildText("CreateBy"))), assetElement.GetChildText("CreateHost")); + asset.SetUpdateStamp(DateUtil.ParseXmlDateTime(assetElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(assetElement.GetChildText("UpdateBy"))), assetElement.GetChildText("UpdateHost")); + asset.AcceptChanges(); + } + + //------------------------------------------------------------------- + // Asset column definitions. + public override ColumnDfn GetAssetColumnDfn (SbmAsset.Column columnId, string caption = "", int width = 0) + { + ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width); + if (!String.IsNullOrEmpty(caption)) + columnDfn.Caption = caption; + if (width > 0) + columnDfn.Width = width; + columnDfn.DataName = columnId.ToString(); + return columnDfn; + } + + //------------------------------------------------------------------- + // Asset query filter. + public override List GetAssetQueryFilter (SbmAsset.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetAssetQueryFilter_Mobile (SbmAsset.Params prm) + { + Dictionary filter = new Dictionary(); + + // Asset Id. + if (prm.IncludedIds.Count > 0) filter.Add(nameof(prm.IncludedIds), prm.IncludedIds.Concat(",")); + if (prm.ExcludedIds.Count > 0) filter.Add(nameof(prm.ExcludedIds), prm.ExcludedIds.Concat(",")); + + // Vessel Id. + if (SysId.IsValid(prm.AssetCatId)) filter.Add(nameof(prm.AssetCatId), SysId.ToString(prm.AssetCatId)); + + // Item type. + if ((int)prm.ItemType > 0) filter.Add(nameof(prm.ItemType), ((int)prm.ItemType).ToString()); + + // Serial number. + if (!StringUtil.IsEmpty(prm.SerialNumber)) filter.Add(nameof(prm.SerialNumber), prm.SerialNumber); + if (!StringUtil.IsEmpty(prm.SerialNumberPartial)) filter.Add(nameof(prm.SerialNumberPartial), prm.SerialNumberPartial); + + // Desc brief partial. + if (!StringUtil.IsEmpty(prm.DescBriefPartial)) filter.Add(nameof(prm.DescBriefPartial), prm.DescBriefPartial); + + // Item Id. + if (SysId.IsValid(prm.ItemId.Id)) filter.Add(nameof(prm.ItemId.Id), SysId.ToString(prm.ItemId.Id)); + + // Process Id next. + if (SysId.IsValid(prm.ProcessIdNext)) filter.Add(nameof(prm.ProcessIdNext), SysId.ToString(prm.ProcessIdNext)); + + // Process Id active. + if (SysId.IsValid(prm.ProcessIdActive)) filter.Add(nameof(prm.ProcessIdActive), SysId.ToString(prm.ProcessIdActive)); + + // Restrict to active. + if (prm.RestrictToActive != false) filter.Add(nameof(prm.RestrictToActive), prm.RestrictToActive.ToString()); + + // Status. + filter.Add(nameof(prm.StatusCat), prm.StatusCat.ToString()); + + // Paging. + if (prm.ResultsPaging.Paged) + { + filter.Add(nameof(prm.ResultsPaging.PageNo), prm.ResultsPaging.PageNo.ToString()); + filter.Add(nameof(prm.ResultsPaging.PageLength), prm.ResultsPaging.PageLength.ToString()); + } + + return filter; + } + // Asset sort columns. + public List GetAssetSortColumns (SbmAsset.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Asset count. + public override long GetAssetCount (SbmAsset.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Asset list. + public override List GetAssetList (SbmAsset.Params prm) + { + List assets = new List(); + throw new NotImplementedException(); + } + public async Task> GetAssetList_Mobile (SbmAsset.Params prmAsset, SacsTaskData taskData) + { + ClearErrorState(); + List assets = new List(); + String fn = GetType().Name + ".GetAssetList_Mobile"; + + // Asset columns. + List columns = new List(EnumUtil.GetValues()); + + List itemDataList = await ExecuteAssetQuery_Mobile(columns, prmAsset, taskData); + foreach (SbmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId id = itemData.GetIdValue(SbmAsset.Column.Id); + SysId assetCatId = itemData.GetIdValue(SbmAsset.Column.AssetCategoryId); + ushort flags = (ushort)itemData.GetIntValue(SbmAsset.Column.Flag); + // Create item. + SbmAsset_Mobile asset = new SbmAsset_Mobile(UserContext, id, assetCatId, flags); + // Populate item properties. + foreach (SbmAsset.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + case SbmAsset.Column.AssetCategoryId: asset.AssetCategoryId = itemData.GetIdValue(column); break; + case SbmAsset.Column.SerialNumber: asset.SerialNumber = value; break; + //case SbmAsset.Column.RefExt: asset.RefExt = value; break; + case SbmAsset.Column.DescBrief: asset.DescBrief = value; break; + //case SbmAsset.Column.ItemId: asset.ItemId = EnumUtil.ParseEnum(itemData.GetValue(column), new ItemId()); break; + case SbmAsset.Column.PurchaseOn: asset.PurchaseOn = itemData.GetDateTimeValue(column); break; + //case SbmAsset.Column.AssocIdSupplier: asset.AssocIdSupplier = itemData.GetIdValue(column); break; + //case SbmAsset.Column.PurchaseInvoiceRef: asset.PurchaseInvoiceRef = value; break; + //case SbmAsset.Column.PaymentTerms: asset.PaymentTerms = StringUtil.ToShort(itemData.GetDecimalValue(column)); break; + case SbmAsset.Column.AmountPurchase: asset.AmountPurchase = itemData.GetDecimalValue(column); break; + //case SbmAsset.Column.TaxCodeIdPurchase: asset.TaxCodeIdPurchase = itemData.GetIdValue(column); break; + case SbmAsset.Column.AmountPurchaseGross: asset.AmountPurchaseGross = itemData.GetDecimalValue(column); break; + //case SbmAsset.Column.AmountSettlementGross: asset.AmountSettlementGross = itemData.GetDecimalValue(column); break; + //case SbmAsset.Column.AmountEnhancementGross: asset.AmountEnhancementGross = itemData.GetDecimalValue(column); break; + //case SbmAsset.Column.AssocIdCustomer: asset.AssocIdCustomer = itemData.GetIdValue(column); break; + //case SbmAsset.Column.SellCategoryCode: asset.SellCategoryCode = value; break; + case SbmAsset.Column.AmountSell: asset.AmountSell = itemData.GetDecimalValue(column); break; + //case SbmAsset.Column.TaxCodeIdSell: asset.TaxCodeIdSell = itemData.GetIdValue(column); break; + case SbmAsset.Column.AmountSellGross: asset.AmountSellGross = itemData.GetDecimalValue(column); break; + //case SbmAsset.Column.TaxCodeIdProfit: asset.TaxCodeIdProfit = itemData.GetIdValue(column); break; + case SbmAsset.Column.SoldOn: asset.SoldOn = itemData.GetDateTimeValue(column); break; + case SbmAsset.Column.AmountSold: asset.AmountSold = itemData.GetDecimalValue(column); break; + //case SbmAsset.Column.AmountSoldGross: asset.AmountSoldGross = itemData.GetDecimalValue(column); break; + case SbmAsset.Column.DisposeCode: asset.DisposeCode = value; break; + case SbmAsset.Column.DisposeOn: asset.DisposeOn = itemData.GetDateTimeValue(column); break; + case SbmAsset.Column.DueBackOn: asset.DueBackOn = itemData.GetDateTimeValue(column); break; + case SbmAsset.Column.AmountRentalCost: asset.AmountRentalCost = itemData.GetDecimalValue(column); break; + case SbmAsset.Column.UomRentalCost_Id: asset.UomIdRentalCost = itemData.GetIdValue(column); break; + //case SbmAsset.Column.TaxCodeIdRentalCost: asset.TaxCodeIdRentalCost = itemData.GetIdValue(column); break; + case SbmAsset.Column.AmountRentalPrice: asset.AmountRentalPrice = itemData.GetDecimalValue(column); break; + case SbmAsset.Column.UomRentalPrice_Id: asset.UomIdRentalPrice = itemData.GetIdValue(column); break; + //case SbmAsset.Column.TaxCodeIdRentalPrice: asset.TaxCodeIdRentalPrice = itemData.GetIdValue(column); break; + case SbmAsset.Column.ProcessIdNext: asset.ProcessIdNext = itemData.GetIdValue(column); break; + case SbmAsset.Column.Notes: asset.Notes = value; break; + case SbmAsset.Column.Status: asset.Status = SacsSystem.GetStatusForCode(value); break; + } + } + assets.Add(asset); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " Assets: " + assets.Count); + return assets; + } + + + //------------------------------------------------------------------- + // Asset query execution. + public override DbResultSet ExecuteAssetQuery (List columns, SbmAsset.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecuteAssetQuery_Mobile (List assetColumns, SbmAsset.Params prmAsset, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SbmAsset.Column column in assetColumns) + columns.Add(column.ToString()); + + SbmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetAssetRequestConfig(SbmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetAssetQueryFilter_Mobile(prmAsset), columns, this.GetSortColumns_Mobile(prmAsset), taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SbmWebServiceRequest.Config GetAssetRequestConfig (SbmWebServiceRequest.RequestType requestType, bool debug = false) + { + SbmWebServiceRequest.Config configRequest = new SbmWebServiceRequest.Config(); + configRequest.DataType = SbmWebServiceRequest.DataType.Asset; + configRequest.RequestType = requestType; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} + diff --git a/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAssetMgr_Mobile-VehicleClasses.cs b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAssetMgr_Mobile-VehicleClasses.cs new file mode 100644 index 0000000..5680604 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAssetMgr_Mobile-VehicleClasses.cs @@ -0,0 +1,317 @@ +using Sarand.Core.App; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Data; +using Sarand.Core.Dbas.Base; +using Sarand.Core.Tasks; +using Sarand.Core.Xml; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.BusinessMgr.Core.WebService; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using System.Xml.Linq; +using Sarand.BusinessMgr.Mobile.Core.Bus; + +namespace Sarand.BusinessMgr.Mobile.Core.Mgr +{ + //======================================================================= + partial class SbmAssetMgr_Mobile + { + //******************************************************************* + // V e h i c l e C l a s s e s + //******************************************************************* + // Create VehicleClass. + public override SbmVehicleClass CreateVehicleClass () + { + ClearErrorState(); + return new SbmVehicleClass_Mobile(UserContext, null, 0); + } + + //------------------------------------------------------------------- + // Get VehicleClass. + public override SbmVehicleClass GetVehicleClass (SbmVehicleClass.Params prmVehicleClass) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate VehicleClass. + public override bool IsValidVehicleClassData (SbmVehicleClass.Data data, SbmVehicleClass.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidVehicleClassData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert VehicleClass. + public override bool InsertVehicleClass (SbmVehicleClass vehicleClass, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidVehicleClass(vehicleClass)) return false; + if (SysId.IsValid(vehicleClass.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update VehicleClass. + public override bool UpdateVehicleClass (SbmVehicleClass vehicleClass, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidVehicleClass(vehicleClass)) return false; + if (!SysId.IsValid(vehicleClass.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete VehicleClass. + public override bool VehicleClassCanBeDeleted (SbmVehicleClass vehicleClass) + { + ClearErrorState(); + if (!base.VehicleClassCanBeDeleted(vehicleClass)) return false; + return true; + } + public override bool DeleteVehicleClass (SbmVehicleClass vehicleClass, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!VehicleClassCanBeDeleted(vehicleClass)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement vehicleClassElement, SbmVehicleClass vehicleClass, DbUpdateInfo dbUpdateInfo) + { + vehicleClassElement.AppendElement(nameof(vehicleClass.Id), SysId.ToString(vehicleClass.Id)); + vehicleClassElement.AppendElement(nameof(vehicleClass.MakeCode), vehicleClass.MakeCode); + vehicleClassElement.AppendElement(nameof(vehicleClass.Model), vehicleClass.Model); + vehicleClassElement.AppendElement(nameof(vehicleClass.Derivative), vehicleClass.Derivative); + vehicleClassElement.AppendElement(nameof(vehicleClass.DescBrief), vehicleClass.DescBrief); + vehicleClassElement.AppendElement(nameof(vehicleClass.VehicleType), vehicleClass.VehicleType.ToString()); + vehicleClassElement.AppendElement(nameof(vehicleClass.VehicleCategoryCode), vehicleClass.VehicleCategoryCode); + vehicleClassElement.AppendElement(nameof(vehicleClass.FuelType), vehicleClass.FuelType.ToString()); + vehicleClassElement.AppendElement(nameof(vehicleClass.OdometerUnits), vehicleClass.OdometerUnits.ToString()); + vehicleClassElement.AppendElement(nameof(vehicleClass.Seats), vehicleClass.Seats.ToString("N3")); + vehicleClassElement.AppendElement(nameof(vehicleClass.Weight), vehicleClass.Weight.ToString("N3")); + vehicleClassElement.AppendElement(nameof(vehicleClass.InsuranceCode), vehicleClass.InsuranceCode); + vehicleClassElement.AppendElement(nameof(vehicleClass.FirstServiceOdo), vehicleClass.FirstServiceOdo.ToString("N3")); + vehicleClassElement.AppendElement(nameof(vehicleClass.ServiceOdo), vehicleClass.ServiceOdo.ToString("N3")); + vehicleClassElement.AppendElement(nameof(vehicleClass.ServiceWeeks), vehicleClass.ServiceWeeks.ToString("N3")); + vehicleClassElement.AppendElement(nameof(vehicleClass.AmountRentalCost), vehicleClass.AmountRentalCost.ToString("N3")); + vehicleClassElement.AppendElement(nameof(vehicleClass.UomIdRentalCost), SysId.ToString(vehicleClass.UomIdRentalCost)); + vehicleClassElement.AppendElement(nameof(vehicleClass.AmountRentalPrice), vehicleClass.AmountRentalPrice.ToString("N3")); + vehicleClassElement.AppendElement(nameof(vehicleClass.UomIdRentalPrice), SysId.ToString(vehicleClass.UomIdRentalPrice)); + vehicleClassElement.AppendElement(nameof(vehicleClass.Notes), vehicleClass.Notes); + vehicleClassElement.AppendElement(nameof(vehicleClass.Status), SacsSystem.GetStatusCode(vehicleClass.Status)); + vehicleClassElement.AppendElement(nameof(vehicleClass.Flags), vehicleClass.Flags.ToString()); + if (!SysId.IsValid(vehicleClass.Id)) + { + vehicleClassElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + vehicleClassElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + vehicleClassElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + vehicleClassElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + vehicleClassElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + vehicleClassElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement vehicleClassElement, SbmVehicleClass vehicleClass) + { + vehicleClass.Id = new SysId(StringUtil.ToInt(vehicleClassElement.GetChildText("Id"))); + vehicleClass.MakeCode = vehicleClassElement.GetChildText(nameof(vehicleClass.MakeCode)); + vehicleClass.Model = vehicleClassElement.GetChildText(nameof(vehicleClass.Model)); + vehicleClass.Derivative = vehicleClassElement.GetChildText(nameof(vehicleClass.Derivative)); + vehicleClass.DescBrief = vehicleClassElement.GetChildText(nameof(vehicleClass.DescBrief)); + vehicleClass.VehicleType = EnumUtil.ParseEnum(vehicleClassElement.GetChildText(nameof(vehicleClass.VehicleType)), Sbm.VehicleType.Unknown); + vehicleClass.VehicleCategoryCode = vehicleClassElement.GetChildText(nameof(vehicleClass.VehicleCategoryCode)); + vehicleClass.FuelType = EnumUtil.ParseEnum(vehicleClassElement.GetChildText(nameof(vehicleClass.FuelType)), Sbm.VehicleFuelType.Unknown); + vehicleClass.OdometerUnits = EnumUtil.ParseEnum(vehicleClassElement.GetChildText(nameof(vehicleClass.OdometerUnits)), Sbm.VehicleOdometerUnits.OdoUnits_Unknown); + vehicleClass.Seats = StringUtil.ToShort(vehicleClassElement.GetChildText(nameof(vehicleClass.Seats))); + vehicleClass.Weight = StringUtil.ToDecimal(vehicleClassElement.GetChildText(nameof(vehicleClass.Weight))); + vehicleClass.InsuranceCode = vehicleClassElement.GetChildText(nameof(vehicleClass.InsuranceCode)); + vehicleClass.FirstServiceOdo = StringUtil.ToDecimal(vehicleClassElement.GetChildText(nameof(vehicleClass.FirstServiceOdo))); + vehicleClass.ServiceOdo = StringUtil.ToDecimal(vehicleClassElement.GetChildText(nameof(vehicleClass.ServiceOdo))); + vehicleClass.ServiceWeeks = StringUtil.ToShort(vehicleClassElement.GetChildText(nameof(vehicleClass.ServiceWeeks))); + vehicleClass.AmountRentalCost = StringUtil.ToDecimal(vehicleClassElement.GetChildText(nameof(vehicleClass.AmountRentalCost))); + vehicleClass.UomIdRentalCost = new SysId(StringUtil.ToInt(vehicleClassElement.GetChildText(nameof(vehicleClass.UomIdRentalCost)))); + vehicleClass.AmountRentalPrice = StringUtil.ToDecimal(vehicleClassElement.GetChildText(nameof(vehicleClass.AmountRentalPrice))); + vehicleClass.UomIdRentalPrice = new SysId(StringUtil.ToInt(vehicleClassElement.GetChildText(nameof(vehicleClass.UomIdRentalPrice)))); + vehicleClass.Notes = vehicleClassElement.GetChildText(nameof(vehicleClass.Notes)); + vehicleClass.Status = SacsSystem.GetStatusForCode(vehicleClassElement.GetChildText(nameof(vehicleClass.Status))); + vehicleClass.SetCreateStamp(DateUtil.ParseXmlDateTime(vehicleClassElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(vehicleClassElement.GetChildText("CreateBy"))), vehicleClassElement.GetChildText("CreateHost")); + vehicleClass.SetUpdateStamp(DateUtil.ParseXmlDateTime(vehicleClassElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(vehicleClassElement.GetChildText("UpdateBy"))), vehicleClassElement.GetChildText("UpdateHost")); + vehicleClass.AcceptChanges(); + } + + //------------------------------------------------------------------- + // VehicleClass column definitions. + public override ColumnDfn GetVehicleClassColumnDfn (SbmVehicleClass.Column columnId, string caption = "", int width = 0) + { + ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width); + if (!String.IsNullOrEmpty(caption)) + columnDfn.Caption = caption; + if (width > 0) + columnDfn.Width = width; + columnDfn.DataName = columnId.ToString(); + return columnDfn; + } + + //------------------------------------------------------------------- + // VehicleClass query filter. + public override List GetVehicleClassQueryFilter (SbmVehicleClass.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetVehicleClassQueryFilter_Mobile (SbmVehicleClass.Params prm) + { + Dictionary filter = new Dictionary(); + + // VehicleClass Id. + if (prm.IncludedIds.Count > 0) filter.Add(nameof(prm.IncludedIds), prm.IncludedIds.Concat(",")); + if (prm.ExcludedIds.Count > 0) filter.Add(nameof(prm.ExcludedIds), prm.ExcludedIds.Concat(",")); + + // Make code. + if (!StringUtil.IsEmpty(prm.MakeCode)) filter.Add(nameof(prm.MakeCode), prm.MakeCode); + + // Model. + if (!StringUtil.IsEmpty(prm.Model)) filter.Add(nameof(prm.Model), prm.Model); + if (!StringUtil.IsEmpty(prm.ModelPartial)) filter.Add(nameof(prm.ModelPartial), prm.ModelPartial); + + // Desc brief. + if (!StringUtil.IsEmpty(prm.DescBrief)) filter.Add(nameof(prm.DescBrief), prm.DescBrief); + if (!StringUtil.IsEmpty(prm.DescBriefPartial)) filter.Add(nameof(prm.DescBriefPartial), prm.DescBriefPartial); + + // Derivative. + if (!StringUtil.IsEmpty(prm.Derivative)) filter.Add(nameof(prm.Derivative), prm.Derivative); + + // Vehicle category code. + if (!StringUtil.IsEmpty(prm.VehicleCategoryCode)) filter.Add(nameof(prm.VehicleCategoryCode), prm.VehicleCategoryCode); + + // Restrict to active. + if (prm.RestrictToActive != false) filter.Add(nameof(prm.RestrictToActive), prm.RestrictToActive.ToString()); + + // Status. + filter.Add(nameof(prm.StatusCat), prm.StatusCat.ToString()); + + // Paging. + if (prm.ResultsPaging.Paged) + { + filter.Add(nameof(prm.ResultsPaging.PageNo), prm.ResultsPaging.PageNo.ToString()); + filter.Add(nameof(prm.ResultsPaging.PageLength), prm.ResultsPaging.PageLength.ToString()); + } + + return filter; + } + // VehicleClass sort columns. + public List GetVehicleClassSortColumns (SbmVehicleClass.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // VehicleClass count. + public override long GetVehicleClassCount (SbmVehicleClass.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // VehicleClass list. + public override List GetVehicleClassList (SbmVehicleClass.Params prm) + { + List vehicleClasses = new List(); + throw new NotImplementedException(); + } + public async Task> GetVehicleClassList_Mobile (SbmVehicleClass.Params prmVehicleClass, SacsTaskData taskData) + { + ClearErrorState(); + List vehicleClasses = new List(); + String fn = GetType().Name + ".GetVehicleClassList_Mobile"; + + // VehicleClass columns. + List columns = new List(EnumUtil.GetValues()); + + List itemDataList = await ExecuteVehicleClassQuery_Mobile(columns, prmVehicleClass, taskData); + foreach (SbmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId id = itemData.GetIdValue(SbmVehicleClass.Column.Id); + ushort flags = (ushort)itemData.GetIntValue(SbmVehicleClass.Column.Flag); + // Create item. + SbmVehicleClass_Mobile vehicleClass = new SbmVehicleClass_Mobile(UserContext, id, flags); + // Populate item properties. + foreach (SbmVehicleClass.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + case SbmVehicleClass.Column.MakeCode: vehicleClass.MakeCode = value; break; + case SbmVehicleClass.Column.Model: vehicleClass.Model = value; break; + case SbmVehicleClass.Column.Derivative: vehicleClass.Derivative = value; break; + case SbmVehicleClass.Column.DescBrief: vehicleClass.DescBrief = value; break; + case SbmVehicleClass.Column.VehicleType: vehicleClass.VehicleType = EnumUtil.ParseEnum(itemData.GetValue(column), Sbm.VehicleType.Any); break; + case SbmVehicleClass.Column.VehicleCategoryCode: vehicleClass.VehicleCategoryCode = value; break; + case SbmVehicleClass.Column.FuelTypeDesc: vehicleClass.FuelType = EnumUtil.ParseEnum(itemData.GetValue(column), Sbm.VehicleFuelType.Unknown); break; + case SbmVehicleClass.Column.OdometerUnitsDesc: vehicleClass.OdometerUnits = EnumUtil.ParseEnum(itemData.GetValue(column), Sbm.VehicleOdometerUnits.OdoUnits_Unknown); break; + case SbmVehicleClass.Column.Seats: vehicleClass.Seats = StringUtil.ToShort(itemData.GetDecimalValue(column)); break; + case SbmVehicleClass.Column.Weight: vehicleClass.Weight = itemData.GetDecimalValue(column); break; + case SbmVehicleClass.Column.InsuranceCode: vehicleClass.InsuranceCode = value; break; + case SbmVehicleClass.Column.FirstServiceOdo: vehicleClass.FirstServiceOdo = itemData.GetDecimalValue(column); break; + case SbmVehicleClass.Column.ServiceOdo: vehicleClass.ServiceOdo = itemData.GetDecimalValue(column); break; + case SbmVehicleClass.Column.ServiceWeeks: vehicleClass.ServiceWeeks = StringUtil.ToShort(itemData.GetDecimalValue(column)); break; + case SbmVehicleClass.Column.AmountRentalCost: vehicleClass.AmountRentalCost = itemData.GetDecimalValue(column); break; + case SbmVehicleClass.Column.RentalCostUomDesc: vehicleClass.UomIdRentalCost = itemData.GetIdValue(column); break; + case SbmVehicleClass.Column.AmountRentalPrice: vehicleClass.AmountRentalPrice = itemData.GetDecimalValue(column); break; + case SbmVehicleClass.Column.RentalPriceUomDesc: vehicleClass.UomIdRentalPrice = itemData.GetIdValue(column); break; + case SbmVehicleClass.Column.Notes: vehicleClass.Notes = value; break; + case SbmVehicleClass.Column.Status: vehicleClass.Status = SacsSystem.GetStatusForCode(value); break; + } + } + vehicleClasses.Add(vehicleClass); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " VehicleClasses: " + vehicleClasses.Count); + return vehicleClasses; + } + + + //------------------------------------------------------------------- + // VehicleClass query execution. + public override DbResultSet ExecuteVehicleClassQuery (List columns, SbmVehicleClass.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecuteVehicleClassQuery_Mobile (List vehicleClassColumns, SbmVehicleClass.Params prmVehicleClass, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SbmVehicleClass.Column column in vehicleClassColumns) + columns.Add(column.ToString()); + + SbmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetVehicleClassRequestConfig(SbmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetVehicleClassQueryFilter_Mobile(prmVehicleClass), columns, this.GetSortColumns_Mobile(prmVehicleClass), taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SbmWebServiceRequest.Config GetVehicleClassRequestConfig (SbmWebServiceRequest.RequestType requestType, bool debug = false) + { + SbmWebServiceRequest.Config configRequest = new SbmWebServiceRequest.Config(); + configRequest.DataType = SbmWebServiceRequest.DataType.VehicleClass; + configRequest.RequestType = requestType; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} + diff --git a/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAssetMgr_Mobile-VehicleEvents.cs b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAssetMgr_Mobile-VehicleEvents.cs new file mode 100644 index 0000000..6f48baa --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAssetMgr_Mobile-VehicleEvents.cs @@ -0,0 +1,292 @@ +using Sarand.Core.App; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Data; +using Sarand.Core.Dbas.Base; +using Sarand.Core.Tasks; +using Sarand.Core.Xml; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.BusinessMgr.Core.WebService; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using System.Xml.Linq; +using Sarand.BusinessMgr.Mobile.Core.Bus; + +namespace Sarand.BusinessMgr.Mobile.Core.Mgr +{ + //======================================================================= + partial class SbmAssetMgr_Mobile + { + //******************************************************************* + // V e h i c l e E v e n t s + //******************************************************************* + // Create VehicleEvent. + public override SbmVehicleEvent CreateVehicleEvent (SysId vehicleId, Sbm.VehicleEventType vehicleEventType) + { + ClearErrorState(); + return new SbmVehicleEvent_Mobile(UserContext, vehicleId, vehicleEventType, 0); + } + + //------------------------------------------------------------------- + // Get VehicleEvent. + public override SbmVehicleEvent GetVehicleEvent (SbmVehicleEvent.Params prmVehicleEvent) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate VehicleEvent. + public override bool IsValidVehicleEventData (SbmVehicleEvent.Data data, SbmVehicleEvent.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidVehicleEventData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert VehicleEvent. + public override bool InsertVehicleEvent (SbmVehicleEvent vehicleClass, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidVehicleEvent(vehicleClass)) return false; + if (SysId.IsValid(vehicleClass.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update VehicleEvent. + public override bool UpdateVehicleEvent (SbmVehicleEvent vehicleClass, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidVehicleEvent(vehicleClass)) return false; + if (!SysId.IsValid(vehicleClass.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete VehicleEvent. + public override bool VehicleEventCanBeDeleted (SbmVehicleEvent vehicleClass) + { + ClearErrorState(); + if (!base.VehicleEventCanBeDeleted(vehicleClass)) return false; + return true; + } + public override bool DeleteVehicleEvent (SbmVehicleEvent vehicleClass, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!VehicleEventCanBeDeleted(vehicleClass)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement vehicleClassElement, SbmVehicleEvent vehicleClass, DbUpdateInfo dbUpdateInfo) + { + vehicleClassElement.AppendElement(nameof(vehicleClass.Id), SysId.ToString(vehicleClass.Id)); + vehicleClassElement.AppendElement(nameof(vehicleClass.VehicleId), SysId.ToString(vehicleClass.VehicleId)); + vehicleClassElement.AppendElement(nameof(vehicleClass.VehicleEventType), vehicleClass.VehicleEventType.ToString()); + vehicleClassElement.AppendElement(nameof(vehicleClass.StartOn), DateUtil.FormatXmlDateTime(vehicleClass.StartOn)); + vehicleClassElement.AppendElement(nameof(vehicleClass.FinishOn), DateUtil.FormatXmlDateTime(vehicleClass.FinishOn)); + vehicleClassElement.AppendElement(nameof(vehicleClass.Odometer), vehicleClass.Odometer.ToString("N3")); + vehicleClassElement.AppendElement(nameof(vehicleClass.DescBrief), vehicleClass.DescBrief); + vehicleClassElement.AppendElement(nameof(vehicleClass.DescDetail), vehicleClass.DescDetail); + vehicleClassElement.AppendElement(nameof(vehicleClass.AmountNet), vehicleClass.AmountNet.ToString("N3")); + vehicleClassElement.AppendElement(nameof(vehicleClass.TaxCodeId), SysId.ToString(vehicleClass.TaxCodeId)); + vehicleClassElement.AppendElement(nameof(vehicleClass.TaxRate), vehicleClass.TaxRate.ToString("N3")); + vehicleClassElement.AppendElement(nameof(vehicleClass.AmountTax), vehicleClass.AmountTax.ToString("N3")); + vehicleClassElement.AppendElement(nameof(vehicleClass.AmountTot), vehicleClass.AmountTot.ToString("N3")); + vehicleClassElement.AppendElement(nameof(vehicleClass.Notes), vehicleClass.Notes); + vehicleClassElement.AppendElement(nameof(vehicleClass.Status), SacsSystem.GetStatusCode(vehicleClass.Status)); + vehicleClassElement.AppendElement(nameof(vehicleClass.Flags), vehicleClass.Flags.ToString()); + if (!SysId.IsValid(vehicleClass.Id)) + { + vehicleClassElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + vehicleClassElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + vehicleClassElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + vehicleClassElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + vehicleClassElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + vehicleClassElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement vehicleClassElement, SbmVehicleEvent vehicleClass) + { + vehicleClass.Id = new SysId(StringUtil.ToInt(vehicleClassElement.GetChildText("Id"))); + vehicleClass.VehicleId = new SysId(StringUtil.ToInt(vehicleClassElement.GetChildText(nameof(vehicleClass.VehicleId)))); + vehicleClass.VehicleEventType = EnumUtil.ParseEnum(vehicleClassElement.GetChildText(nameof(vehicleClass.VehicleEventType)), Sbm.VehicleEventType.Any); + vehicleClass.StartOn = DateUtil.ParseXmlDateTime(vehicleClassElement.GetChildText(nameof(vehicleClass.StartOn))); + vehicleClass.FinishOn = DateUtil.ParseXmlDateTime(vehicleClassElement.GetChildText(nameof(vehicleClass.FinishOn))); + vehicleClass.Odometer = StringUtil.ToDecimal(vehicleClassElement.GetChildText(nameof(vehicleClass.Odometer))); + vehicleClass.DescBrief = vehicleClassElement.GetChildText(nameof(vehicleClass.DescBrief)); + vehicleClass.DescDetail = vehicleClassElement.GetChildText(nameof(vehicleClass.DescDetail)); + vehicleClass.AmountNet = StringUtil.ToDecimal(vehicleClassElement.GetChildText(nameof(vehicleClass.AmountNet))); + vehicleClass.TaxCodeId = new SysId(StringUtil.ToInt(vehicleClassElement.GetChildText(nameof(vehicleClass.TaxCodeId)))); + vehicleClass.TaxRate = StringUtil.ToDecimal(vehicleClassElement.GetChildText(nameof(vehicleClass.TaxRate))); + vehicleClass.AmountTax = StringUtil.ToDecimal(vehicleClassElement.GetChildText(nameof(vehicleClass.AmountTax))); + vehicleClass.AmountTot = StringUtil.ToDecimal(vehicleClassElement.GetChildText(nameof(vehicleClass.AmountTot))); + vehicleClass.Notes = vehicleClassElement.GetChildText(nameof(vehicleClass.Notes)); + vehicleClass.Status = SacsSystem.GetStatusForCode(vehicleClassElement.GetChildText(nameof(vehicleClass.Status))); + vehicleClass.SetCreateStamp(DateUtil.ParseXmlDateTime(vehicleClassElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(vehicleClassElement.GetChildText("CreateBy"))), vehicleClassElement.GetChildText("CreateHost")); + vehicleClass.SetUpdateStamp(DateUtil.ParseXmlDateTime(vehicleClassElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(vehicleClassElement.GetChildText("UpdateBy"))), vehicleClassElement.GetChildText("UpdateHost")); + vehicleClass.AcceptChanges(); + } + + //------------------------------------------------------------------- + // VehicleEvent column definitions. + public override ColumnDfn GetVehicleEventColumnDfn (SbmVehicleEvent.Column columnId, string caption = "", int width = 0) + { + ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width); + if (!String.IsNullOrEmpty(caption)) + columnDfn.Caption = caption; + if (width > 0) + columnDfn.Width = width; + columnDfn.DataName = columnId.ToString(); + return columnDfn; + } + + //------------------------------------------------------------------- + // VehicleEvent query filter. + public override List GetVehicleEventQueryFilter (SbmVehicleEvent.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetVehicleEventQueryFilter_Mobile (SbmVehicleEvent.Params prm) + { + Dictionary filter = new Dictionary(); + + // VehicleEvent Id. + if (prm.IncludedIds.Count > 0) filter.Add(nameof(prm.IncludedIds), prm.IncludedIds.Concat(",")); + if (prm.ExcludedIds.Count > 0) filter.Add(nameof(prm.ExcludedIds), prm.ExcludedIds.Concat(",")); + + // Vehicle Id. + if (SysId.IsValid(prm.VehicleId)) filter.Add(nameof(prm.VehicleId), SysId.ToString(prm.VehicleId)); + + // Vehicle event type. + if ((int)prm.VehicleEventType > 0) filter.Add(nameof(prm.VehicleEventType), ((int)prm.VehicleEventType).ToString()); + + // Event on. + if (DateUtil.IsValid(prm.EventOn)) filter.Add(nameof(prm.EventOn), DateUtil.FormatXmlDate(prm.EventOn)); + + // Restrict to active. + if (prm.RestrictToActive != false) filter.Add(nameof(prm.RestrictToActive), prm.RestrictToActive.ToString()); + + // Status. + filter.Add(nameof(prm.StatusCat), prm.StatusCat.ToString()); + + // Paging. + if (prm.ResultsPaging.Paged) + { + filter.Add(nameof(prm.ResultsPaging.PageNo), prm.ResultsPaging.PageNo.ToString()); + filter.Add(nameof(prm.ResultsPaging.PageLength), prm.ResultsPaging.PageLength.ToString()); + } + + return filter; + } + // VehicleEvent sort columns. + public List GetVehicleEventSortColumns (SbmVehicleEvent.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // VehicleEvent count. + public override long GetVehicleEventCount (SbmVehicleEvent.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // VehicleEvent list. + public override List GetVehicleEventList (SbmVehicleEvent.Params prm) + { + List vehicleClasses = new List(); + throw new NotImplementedException(); + } + public async Task> GetVehicleEventList_Mobile (SbmVehicleEvent.Params prmVehicleEvent, SacsTaskData taskData) + { + ClearErrorState(); + List vehicleClasses = new List(); + String fn = GetType().Name + ".GetVehicleEventList_Mobile"; + + // VehicleEvent columns. + List columns = new List(EnumUtil.GetValues()); + + List itemDataList = await ExecuteVehicleEventQuery_Mobile(columns, prmVehicleEvent, taskData); + foreach (SbmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId vehicleId = itemData.GetIdValue(SbmVehicleEvent.Column.VehicleId); + Sbm.VehicleEventType vehicleEventType = EnumUtil.ParseEnum(itemData.GetValue(SbmVehicleEvent.Column.EventTypeDesc), Sbm.VehicleEventType.Unknown); + ushort flags = (ushort)itemData.GetIntValue(SbmVehicleEvent.Column.Flag); + // Create item. + SbmVehicleEvent_Mobile vehicleClass = new SbmVehicleEvent_Mobile(UserContext, vehicleId, vehicleEventType, flags); + // Populate item properties. + foreach (SbmVehicleEvent.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + case SbmVehicleEvent.Column.VehicleId: vehicleClass.VehicleId = itemData.GetIdValue(column); break; + case SbmVehicleEvent.Column.EventTypeDesc: vehicleClass.VehicleEventType = EnumUtil.ParseEnum(itemData.GetValue(column), Sbm.VehicleEventType.Unknown); break; + case SbmVehicleEvent.Column.StartOnDateTime: vehicleClass.StartOn = itemData.GetDateTimeValue(column); break; + case SbmVehicleEvent.Column.FinishOnDateTime: vehicleClass.FinishOn = itemData.GetDateTimeValue(column); break; + case SbmVehicleEvent.Column.Odometer: vehicleClass.Odometer = itemData.GetDecimalValue(column); break; + case SbmVehicleEvent.Column.DescBrief: vehicleClass.DescBrief = value; break; + case SbmVehicleEvent.Column.DescDetail: vehicleClass.DescDetail = value; break; + case SbmVehicleEvent.Column.AmountNet: vehicleClass.AmountNet = itemData.GetDecimalValue(column); break; + case SbmVehicleEvent.Column.TaxCodeId: vehicleClass.TaxCodeId = itemData.GetIdValue(column); break; + case SbmVehicleEvent.Column.TaxRate: vehicleClass.TaxRate = itemData.GetDecimalValue(column); break; + case SbmVehicleEvent.Column.AmountTax: vehicleClass.AmountTax = itemData.GetDecimalValue(column); break; + case SbmVehicleEvent.Column.AmountTot: vehicleClass.AmountTot = itemData.GetDecimalValue(column); break; + case SbmVehicleEvent.Column.Notes: vehicleClass.Notes = value; break; + case SbmVehicleEvent.Column.Status: vehicleClass.Status = SacsSystem.GetStatusForCode(value); break; + } + } + vehicleClasses.Add(vehicleClass); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " VehicleEventes: " + vehicleClasses.Count); + return vehicleClasses; + } + + + //------------------------------------------------------------------- + // VehicleEvent query execution. + public override DbResultSet VehicleEventExecuteQuery (List columns, SbmVehicleEvent.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecuteVehicleEventQuery_Mobile (List vehicleClassColumns, SbmVehicleEvent.Params prmVehicleEvent, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SbmVehicleEvent.Column column in vehicleClassColumns) + columns.Add(column.ToString()); + + SbmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetVehicleEventRequestConfig(SbmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetVehicleEventQueryFilter_Mobile(prmVehicleEvent), columns, this.GetSortColumns_Mobile(prmVehicleEvent), taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SbmWebServiceRequest.Config GetVehicleEventRequestConfig (SbmWebServiceRequest.RequestType requestType, bool debug = false) + { + SbmWebServiceRequest.Config configRequest = new SbmWebServiceRequest.Config(); + configRequest.DataType = SbmWebServiceRequest.DataType.VehicleEvent; + configRequest.RequestType = requestType; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} + diff --git a/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAssetMgr_Mobile-VehicleFeatures.cs b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAssetMgr_Mobile-VehicleFeatures.cs new file mode 100644 index 0000000..0219b1b --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAssetMgr_Mobile-VehicleFeatures.cs @@ -0,0 +1,283 @@ +using Sarand.Core.App; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Data; +using Sarand.Core.Dbas.Base; +using Sarand.Core.Tasks; +using Sarand.Core.Xml; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.BusinessMgr.Core.WebService; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using System.Xml.Linq; +using Sarand.BusinessMgr.Mobile.Core.Bus; + +namespace Sarand.BusinessMgr.Mobile.Core.Mgr +{ + //======================================================================= + partial class SbmAssetMgr_Mobile + { + //******************************************************************* + // V e h i c l e F e a t u r e s + //******************************************************************* + // Create VehicleFeature. + public override SbmVehicleFeature CreateVehicleFeature (SbmVehicleFeature.SbmVehicleFeature_Id vehicleFeature_Id) + { + ClearErrorState(); + return new SbmVehicleFeature_Mobile(UserContext, null, Sbm.VehicleFeatureSource.Unknown, Sbm.VehicleFeatureType.Unknown, 0); + } + + //------------------------------------------------------------------- + // Get VehicleFeature. + public override SbmVehicleFeature GetVehicleFeature (SbmVehicleFeature.Params prmVehicleFeature) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate VehicleFeature. + public override bool IsValidVehicleFeatureData (SbmVehicleFeature.Data data, SbmVehicleFeature.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidVehicleFeatureData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert VehicleFeature. + public override bool InsertVehicleFeature (SbmVehicleFeature vehicleFeature, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidVehicleFeature(vehicleFeature)) return false; + if (SysId.IsValid(vehicleFeature.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update VehicleFeature. + public override bool UpdateVehicleFeature (SbmVehicleFeature vehicleFeature, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidVehicleFeature(vehicleFeature)) return false; + if (!SysId.IsValid(vehicleFeature.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete VehicleFeature. + public override bool VehicleFeatureCanBeDeleted (SbmVehicleFeature vehicleFeature) + { + ClearErrorState(); + if (!base.VehicleFeatureCanBeDeleted(vehicleFeature)) return false; + return true; + } + public override bool DeleteVehicleFeature (SbmVehicleFeature vehicleFeature, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!VehicleFeatureCanBeDeleted(vehicleFeature)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement vehicleFeatureElement, SbmVehicleFeature vehicleFeature, DbUpdateInfo dbUpdateInfo) + { + vehicleFeatureElement.AppendElement(nameof(vehicleFeature.Id), SysId.ToString(vehicleFeature.Id)); + vehicleFeatureElement.AppendElement(nameof(vehicleFeature.VehicleId), SysId.ToString(vehicleFeature.VehicleId)); + vehicleFeatureElement.AppendElement(nameof(vehicleFeature.VehicleFeatureSource), vehicleFeature.VehicleFeatureSource.ToString()); + vehicleFeatureElement.AppendElement(nameof(vehicleFeature.VehicleFeatureType), vehicleFeature.VehicleFeatureType.ToString()); + vehicleFeatureElement.AppendElement(nameof(vehicleFeature.CategoryCode), vehicleFeature.CategoryCode); + vehicleFeatureElement.AppendElement(nameof(vehicleFeature.CategoryDesc), vehicleFeature.CategoryDesc); + vehicleFeatureElement.AppendElement(nameof(vehicleFeature.FeatureCode), vehicleFeature.FeatureCode); + vehicleFeatureElement.AppendElement(nameof(vehicleFeature.FeatureDesc), vehicleFeature.FeatureDesc); + vehicleFeatureElement.AppendElement(nameof(vehicleFeature.Notes), vehicleFeature.Notes); + vehicleFeatureElement.AppendElement(nameof(vehicleFeature.Status), SacsSystem.GetStatusCode(vehicleFeature.Status)); + vehicleFeatureElement.AppendElement(nameof(vehicleFeature.Flags), vehicleFeature.Flags.ToString()); + if (!SysId.IsValid(vehicleFeature.Id)) + { + vehicleFeatureElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + vehicleFeatureElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + vehicleFeatureElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + vehicleFeatureElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + vehicleFeatureElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + vehicleFeatureElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement vehicleFeatureElement, SbmVehicleFeature vehicleFeature) + { + vehicleFeature.Id = new SysId(StringUtil.ToInt(vehicleFeatureElement.GetChildText("Id"))); + vehicleFeature.VehicleId = new SysId(StringUtil.ToInt(vehicleFeatureElement.GetChildText(nameof(vehicleFeature.VehicleId)))); + vehicleFeature.VehicleFeatureSource = EnumUtil.ParseEnum(vehicleFeatureElement.GetChildText(nameof(vehicleFeature.VehicleFeatureSource)), Sbm.VehicleFeatureSource.Any); + vehicleFeature.VehicleFeatureType = EnumUtil.ParseEnum(vehicleFeatureElement.GetChildText(nameof(vehicleFeature.VehicleFeatureType)), Sbm.VehicleFeatureType.Any); + vehicleFeature.CategoryCode = vehicleFeatureElement.GetChildText(nameof(vehicleFeature.CategoryCode)); + vehicleFeature.CategoryDesc = vehicleFeatureElement.GetChildText(nameof(vehicleFeature.CategoryDesc)); + vehicleFeature.FeatureCode = vehicleFeatureElement.GetChildText(nameof(vehicleFeature.FeatureCode)); + vehicleFeature.FeatureDesc = vehicleFeatureElement.GetChildText(nameof(vehicleFeature.FeatureDesc)); + vehicleFeature.Notes = vehicleFeatureElement.GetChildText(nameof(vehicleFeature.Notes)); + vehicleFeature.Status = SacsSystem.GetStatusForCode(vehicleFeatureElement.GetChildText(nameof(vehicleFeature.Status))); + vehicleFeature.SetCreateStamp(DateUtil.ParseXmlDateTime(vehicleFeatureElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(vehicleFeatureElement.GetChildText("CreateBy"))), vehicleFeatureElement.GetChildText("CreateHost")); + vehicleFeature.SetUpdateStamp(DateUtil.ParseXmlDateTime(vehicleFeatureElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(vehicleFeatureElement.GetChildText("UpdateBy"))), vehicleFeatureElement.GetChildText("UpdateHost")); + vehicleFeature.AcceptChanges(); + } + + //------------------------------------------------------------------- + // VehicleFeature column definitions. + public override ColumnDfn GetVehicleFeatureColumnDfn (SbmVehicleFeature.Column columnId, string caption = "", int width = 0) + { + ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width); + if (!String.IsNullOrEmpty(caption)) + columnDfn.Caption = caption; + if (width > 0) + columnDfn.Width = width; + columnDfn.DataName = columnId.ToString(); + return columnDfn; + } + + //------------------------------------------------------------------- + // VehicleFeature query filter. + public override List GetVehicleFeatureQueryFilter (SbmVehicleFeature.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetVehicleFeatureQueryFilter_Mobile (SbmVehicleFeature.Params prm) + { + Dictionary filter = new Dictionary(); + + // VehicleFeature Id. + if (prm.IncludedIds.Count > 0) filter.Add(nameof(prm.IncludedIds), prm.IncludedIds.Concat(",")); + if (prm.ExcludedIds.Count > 0) filter.Add(nameof(prm.ExcludedIds), prm.ExcludedIds.Concat(",")); + + // Vehicle Id. + if (SysId.IsValid(prm.VehicleId)) filter.Add(nameof(prm.VehicleId), SysId.ToString(prm.VehicleId)); + + // Vehicle feature source. + if ((int)prm.VehicleFeatureSource > 0) filter.Add(nameof(prm.VehicleFeatureSource), ((int)prm.VehicleFeatureSource).ToString()); + + // Vehicle feature type. + if ((int)prm.VehicleFeatureType > 0) filter.Add(nameof(prm.VehicleFeatureType), ((int)prm.VehicleFeatureType).ToString()); + + // Category code. + if (!StringUtil.IsEmpty(prm.CategoryCode)) filter.Add(nameof(prm.CategoryCode), prm.CategoryCode); + + // Feature code. + if (!StringUtil.IsEmpty(prm.FeatureCode)) filter.Add(nameof(prm.FeatureCode), prm.FeatureCode); + + // Full feature Id. + if (prm.FullFeatureId != false) filter.Add(nameof(prm.FullFeatureId), prm.FullFeatureId.ToString()); + + // Status. + filter.Add(nameof(prm.StatusCat), prm.StatusCat.ToString()); + + // Paging. + if (prm.ResultsPaging.Paged) + { + filter.Add(nameof(prm.ResultsPaging.PageNo), prm.ResultsPaging.PageNo.ToString()); + filter.Add(nameof(prm.ResultsPaging.PageLength), prm.ResultsPaging.PageLength.ToString()); + } + + return filter; + } + // VehicleFeature sort columns. + public List GetVehicleFeatureSortColumns (SbmVehicleFeature.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // VehicleFeature count. + public override long GetVehicleFeatureCount (SbmVehicleFeature.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // VehicleFeature list. + public override List GetVehicleFeatureList (SbmVehicleFeature.Params prm) + { + List vehicleFeatures = new List(); + throw new NotImplementedException(); + } + public async Task> GetVehicleFeatureList_Mobile (SbmVehicleFeature.Params prmVehicleFeature, SacsTaskData taskData) + { + ClearErrorState(); + List vehicleFeatures = new List(); + String fn = GetType().Name + ".GetVehicleFeatureList_Mobile"; + + // VehicleFeature columns. + List columns = new List(EnumUtil.GetValues()); + + List itemDataList = await ExecuteVehicleFeatureQuery_Mobile(columns, prmVehicleFeature, taskData); + foreach (SbmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId vehicleId = itemData.GetIdValue(SbmVehicleFeature.Column.VehicleId); + Sbm.VehicleFeatureSource vehicleFeatureSource = EnumUtil.ParseEnum(itemData.GetValue(SbmVehicleFeature.Column.FeatureSourceDesc), Sbm.VehicleFeatureSource.Unknown); + Sbm.VehicleFeatureType vehicleFeatureType = EnumUtil.ParseEnum(itemData.GetValue(SbmVehicleFeature.Column.FeatureTypeDesc), Sbm.VehicleFeatureType.Unknown); + ushort flags = (ushort)itemData.GetIntValue(SbmVehicleFeature.Column.Flag); + // Create item. + SbmVehicleFeature_Mobile vehicleFeature = new SbmVehicleFeature_Mobile(UserContext, vehicleId , vehicleFeatureSource, vehicleFeatureType, flags); + // Populate item properties. + foreach (SbmVehicleFeature.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + case SbmVehicleFeature.Column.VehicleId: vehicleFeature.VehicleId = itemData.GetIdValue(column); break; + case SbmVehicleFeature.Column.FeatureSourceDesc: vehicleFeature.VehicleFeatureSource = EnumUtil.ParseEnum(itemData.GetValue(column), Sbm.VehicleFeatureSource.Unknown); break; + case SbmVehicleFeature.Column.FeatureTypeDesc: vehicleFeature.VehicleFeatureType = EnumUtil.ParseEnum(itemData.GetValue(column), Sbm.VehicleFeatureType.Any); break; + case SbmVehicleFeature.Column.CategoryCode: vehicleFeature.CategoryCode = value; break; + case SbmVehicleFeature.Column.CategoryDesc: vehicleFeature.CategoryDesc = value; break; + case SbmVehicleFeature.Column.FeatureCode: vehicleFeature.FeatureCode = value; break; + case SbmVehicleFeature.Column.FeatureDesc: vehicleFeature.FeatureDesc = value; break; + case SbmVehicleFeature.Column.Notes: vehicleFeature.Notes = value; break; + case SbmVehicleFeature.Column.Status: vehicleFeature.Status = SacsSystem.GetStatusForCode(value); break; + } + } + vehicleFeatures.Add(vehicleFeature); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " VehicleFeatures: " + vehicleFeatures.Count); + return vehicleFeatures; + } + + + //------------------------------------------------------------------- + // VehicleFeature query execution. + public override DbResultSet VehicleFeatureExecuteQuery (List columns, SbmVehicleFeature.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecuteVehicleFeatureQuery_Mobile (List vehicleFeatureColumns, SbmVehicleFeature.Params prmVehicleFeature, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SbmVehicleFeature.Column column in vehicleFeatureColumns) + columns.Add(column.ToString()); + + SbmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetVehicleFeatureRequestConfig(SbmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetVehicleFeatureQueryFilter_Mobile(prmVehicleFeature), columns, this.GetSortColumns_Mobile(prmVehicleFeature), taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SbmWebServiceRequest.Config GetVehicleFeatureRequestConfig (SbmWebServiceRequest.RequestType requestType, bool debug = false) + { + SbmWebServiceRequest.Config configRequest = new SbmWebServiceRequest.Config(); + configRequest.DataType = SbmWebServiceRequest.DataType.VehicleFeature; + configRequest.RequestType = requestType; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} \ No newline at end of file diff --git a/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAssetMgr_Mobile-Vehicles.cs b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAssetMgr_Mobile-Vehicles.cs new file mode 100644 index 0000000..5403d72 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAssetMgr_Mobile-Vehicles.cs @@ -0,0 +1,355 @@ +using Sarand.Core.App; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Data; +using Sarand.Core.Dbas.Base; +using Sarand.Core.Tasks; +using Sarand.Core.Xml; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.BusinessMgr.Core.WebService; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using System.Xml.Linq; +using Sarand.BusinessMgr.Mobile.Core.Bus; + +namespace Sarand.BusinessMgr.Mobile.Core.Mgr +{ + //======================================================================= + partial class SbmAssetMgr_Mobile + { + //******************************************************************* + // V e h i c l e s + //******************************************************************* + // Create Vehicle. + public override SbmVehicle CreateVehicle () + { + ClearErrorState(); + return new SbmVehicle_Mobile(UserContext, null, 0); + } + + //------------------------------------------------------------------- + // Get Vehicle. + public override SbmVehicle GetVehicle (SbmVehicle.Params prmVehicle) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate Vehicle. + public override bool IsValidVehicleData (SbmVehicle.Data data, SbmVehicle.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidVehicleData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert Vehicle. + public override bool InsertVehicle (SbmVehicle vehicle, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidVehicle(vehicle)) return false; + if (SysId.IsValid(vehicle.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update Vehicle. + public override bool UpdateVehicle (SbmVehicle vehicle, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidVehicle(vehicle)) return false; + if (!SysId.IsValid(vehicle.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete Vehicle. + public override bool VehicleCanBeDeleted (SbmVehicle vehicle) + { + ClearErrorState(); + if (!base.VehicleCanBeDeleted(vehicle)) return false; + return true; + } + public override bool DeleteVehicle (SbmVehicle vehicle, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!VehicleCanBeDeleted(vehicle)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement vehicleElement, SbmVehicle vehicle, DbUpdateInfo dbUpdateInfo) + { + vehicleElement.AppendElement(nameof(vehicle.Id), SysId.ToString(vehicle.Id)); + vehicleElement.AppendElement(nameof(vehicle.AssetSerial), vehicle.AssetSerial); + vehicleElement.AppendElement(nameof(vehicle.VehicleClassId), SysId.ToString(vehicle.VehicleClassId)); + vehicleElement.AppendElement(nameof(vehicle.RegNumber), vehicle.RegNumber); + vehicleElement.AppendElement(nameof(vehicle.Vin), vehicle.Vin); + vehicleElement.AppendElement(nameof(vehicle.CapCode), vehicle.CapCode); + vehicleElement.AppendElement(nameof(vehicle.KeyNumber), vehicle.KeyNumber); + vehicleElement.AppendElement(nameof(vehicle.KeyLocation), vehicle.KeyLocation); + vehicleElement.AppendElement(nameof(vehicle.EngineNumber), vehicle.EngineNumber); + vehicleElement.AppendElement(nameof(vehicle.EngineCapacity), vehicle.EngineCapacity.ToString("N3")); + vehicleElement.AppendElement(nameof(vehicle.Seats), vehicle.Seats.ToString("N3")); + vehicleElement.AppendElement(nameof(vehicle.Weight), vehicle.Weight.ToString("N3")); + vehicleElement.AppendElement(nameof(vehicle.ManufactureYear), vehicle.ManufactureYear.ToString("N3")); + vehicleElement.AppendElement(nameof(vehicle.BuildOn), DateUtil.FormatXmlDateTime(vehicle.BuildOn)); + vehicleElement.AppendElement(nameof(vehicle.FirstRegisterOn), DateUtil.FormatXmlDateTime(vehicle.FirstRegisterOn)); + vehicleElement.AppendElement(nameof(vehicle.RegisterOn), DateUtil.FormatXmlDateTime(vehicle.RegisterOn)); + vehicleElement.AppendElement(nameof(vehicle.RegNumberPrev), vehicle.RegNumberPrev); + vehicleElement.AppendElement(nameof(vehicle.PurchaseOdo), vehicle.PurchaseOdo.ToString("N3")); + vehicleElement.AppendElement(nameof(vehicle.TachoCode), vehicle.TachoCode); + vehicleElement.AppendElement(nameof(vehicle.TachoId), vehicle.TachoId); + vehicleElement.AppendElement(nameof(vehicle.LastServiceOdo), vehicle.LastServiceOdo.ToString("N3")); + vehicleElement.AppendElement(nameof(vehicle.LastServiceOn), DateUtil.FormatXmlDateTime(vehicle.LastServiceOn)); + vehicleElement.AppendElement(nameof(vehicle.NextServiceOdo), vehicle.NextServiceOdo.ToString("N3")); + vehicleElement.AppendElement(nameof(vehicle.NextServiceOn), DateUtil.FormatXmlDateTime(vehicle.NextServiceOn)); + vehicleElement.AppendElement(nameof(vehicle.MotOn), DateUtil.FormatXmlDateTime(vehicle.MotOn)); + vehicleElement.AppendElement(nameof(vehicle.MotNo), vehicle.MotNo); + vehicleElement.AppendElement(nameof(vehicle.NextTaxOn), DateUtil.FormatXmlDateTime(vehicle.NextTaxOn)); + vehicleElement.AppendElement(nameof(vehicle.LatestOdo), vehicle.LatestOdo.ToString("N3")); + vehicleElement.AppendElement(nameof(vehicle.LatestOdoOn), DateUtil.FormatXmlDateTime(vehicle.LatestOdoOn)); + vehicleElement.AppendElement(nameof(vehicle.Notes), vehicle.Notes); + vehicleElement.AppendElement(nameof(vehicle.Status), SacsSystem.GetStatusCode(vehicle.Status)); + vehicleElement.AppendElement(nameof(vehicle.Flags), vehicle.Flags.ToString()); + if (!SysId.IsValid(vehicle.Id)) + { + vehicleElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + vehicleElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + vehicleElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + vehicleElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + vehicleElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + vehicleElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement vehicleElement, SbmVehicle vehicle) + { + vehicle.Id = new SysId(StringUtil.ToInt(vehicleElement.GetChildText(nameof(vehicle.Id)))); + vehicle.AssetSerial = vehicleElement.GetChildText(nameof(vehicle.AssetSerial)); + vehicle.VehicleClassId = new SysId(StringUtil.ToInt(vehicleElement.GetChildText(nameof(vehicle.VehicleClassId)))); + vehicle.RegNumber = vehicleElement.GetChildText(nameof(vehicle.RegNumber)); + vehicle.Vin = vehicleElement.GetChildText(nameof(vehicle.Vin)); + vehicle.CapCode = vehicleElement.GetChildText(nameof(vehicle.CapCode)); + vehicle.KeyNumber = vehicleElement.GetChildText(nameof(vehicle.KeyNumber)); + vehicle.KeyLocation = vehicleElement.GetChildText(nameof(vehicle.KeyLocation)); + vehicle.EngineNumber = vehicleElement.GetChildText(nameof(vehicle.EngineNumber)); + vehicle.EngineCapacity = StringUtil.ToShort(vehicleElement.GetChildText(nameof(vehicle.EngineCapacity))); + vehicle.Seats = StringUtil.ToShort(vehicleElement.GetChildText(nameof(vehicle.Seats))); + vehicle.Weight = StringUtil.ToShort(vehicleElement.GetChildText(nameof(vehicle.Weight))); + vehicle.ManufactureYear = StringUtil.ToShort(vehicleElement.GetChildText(nameof(vehicle.ManufactureYear))); + vehicle.BuildOn = DateUtil.ParseXmlDateTime(vehicleElement.GetChildText(nameof(vehicle.BuildOn))); + vehicle.FirstRegisterOn = DateUtil.ParseXmlDateTime(vehicleElement.GetChildText(nameof(vehicle.FirstRegisterOn))); + vehicle.RegisterOn = DateUtil.ParseXmlDateTime(vehicleElement.GetChildText(nameof(vehicle.RegisterOn))); + vehicle.RegNumberPrev = vehicleElement.GetChildText(nameof(vehicle.RegNumberPrev)); + vehicle.PurchaseOdo = StringUtil.ToDecimal(vehicleElement.GetChildText(nameof(vehicle.PurchaseOdo))); + vehicle.TachoCode = vehicleElement.GetChildText(nameof(vehicle.TachoCode)); + vehicle.TachoId = vehicleElement.GetChildText(nameof(vehicle.TachoId)); + vehicle.LastServiceOdo = StringUtil.ToDecimal(vehicleElement.GetChildText(nameof(vehicle.LastServiceOdo))); + vehicle.LastServiceOn = DateUtil.ParseXmlDateTime(vehicleElement.GetChildText(nameof(vehicle.LastServiceOn))); + vehicle.NextServiceOdo = StringUtil.ToDecimal(vehicleElement.GetChildText(nameof(vehicle.NextServiceOdo))); + vehicle.NextServiceOn = DateUtil.ParseXmlDateTime(vehicleElement.GetChildText(nameof(vehicle.NextServiceOn))); + vehicle.MotOn = DateUtil.ParseXmlDateTime(vehicleElement.GetChildText(nameof(vehicle.MotOn))); + vehicle.MotNo = vehicleElement.GetChildText(nameof(vehicle.MotNo)); + vehicle.NextTaxOn = DateUtil.ParseXmlDateTime(vehicleElement.GetChildText(nameof(vehicle.NextTaxOn))); + vehicle.LatestOdo = StringUtil.ToDecimal(vehicleElement.GetChildText(nameof(vehicle.LatestOdo))); + vehicle.LatestOdoOn = DateUtil.ParseXmlDateTime(vehicleElement.GetChildText(nameof(vehicle.LatestOdoOn))); + vehicle.Notes = vehicleElement.GetChildText(nameof(vehicle.Notes)); + vehicle.Status = SacsSystem.GetStatusForCode(vehicleElement.GetChildText(nameof(vehicle.Status))); + vehicle.SetCreateStamp(DateUtil.ParseXmlDateTime(vehicleElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(vehicleElement.GetChildText("CreateBy"))), vehicleElement.GetChildText("CreateHost")); + vehicle.SetUpdateStamp(DateUtil.ParseXmlDateTime(vehicleElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(vehicleElement.GetChildText("UpdateBy"))), vehicleElement.GetChildText("UpdateHost")); + vehicle.AcceptChanges(); + } + + //------------------------------------------------------------------- + // Vehicle column definitions. + public override ColumnDfn GetVehicleColumnDfn (SbmVehicle.Column columnId, string caption = "", int width = 0) + { + ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width); + if (!String.IsNullOrEmpty(caption)) + columnDfn.Caption = caption; + if (width > 0) + columnDfn.Width = width; + columnDfn.DataName = columnId.ToString(); + return columnDfn; + } + + //------------------------------------------------------------------- + // Vehicle query filter. + public override List GetVehicleQueryFilter (SbmVehicle.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetVehicleQueryFilter_Mobile (SbmVehicle.Params prm) + { + Dictionary filter = new Dictionary(); + + // Vehicle Id. + if (prm.IncludedIds.Count > 0) filter.Add(nameof(prm.IncludedIds), prm.IncludedIds.Concat(",")); + if (prm.ExcludedIds.Count > 0) filter.Add(nameof(prm.ExcludedIds), prm.ExcludedIds.Concat(",")); + + // Vehicle class Id. + if (SysId.IsValid(prm.VehicleClassId)) filter.Add(nameof(prm.VehicleClassId), SysId.ToString(prm.VehicleClassId)); + + // Asset cat Id include. + if (SysId.IsValid(prm.AssetCatIdInclude)) filter.Add(nameof(prm.AssetCatIdInclude), SysId.ToString(prm.AssetCatIdInclude)); + + // Asset cat Id Exlucde. + if (SysId.IsValid(prm.AssetCatIdExclude)) filter.Add(nameof(prm.AssetCatIdExclude), SysId.ToString(prm.AssetCatIdExclude)); + + // Asset process Id next. + if (SysId.IsValid(prm.AssetProcessIdNext)) filter.Add(nameof(prm.AssetProcessIdNext), SysId.ToString(prm.AssetProcessIdNext)); + + // Reg number. + if (!StringUtil.IsEmpty(prm.RegNumber)) filter.Add(nameof(prm.RegNumber), prm.RegNumber); + if (!StringUtil.IsEmpty(prm.RegNumberPartial)) filter.Add(nameof(prm.RegNumberPartial), prm.RegNumberPartial); + + // Vin partial. + if (!StringUtil.IsEmpty(prm.VinPartial)) filter.Add(nameof(prm.VinPartial), prm.VinPartial); + + // Make code. + if (!StringUtil.IsEmpty(prm.MakeCode)) filter.Add(nameof(prm.MakeCode), prm.MakeCode); + + // Class desc partial. + if (!StringUtil.IsEmpty(prm.ClassDescPartial)) filter.Add(nameof(prm.ClassDescPartial), prm.ClassDescPartial); + + // Restrict to active. + if (!StringUtil.IsEmpty(prm.RestrictToActive)) filter.Add(nameof(prm.RestrictToActive), prm.RestrictToActive); + + // Status. + filter.Add(nameof(prm.StatusCat), prm.StatusCat.ToString()); + + // Paging. + if (prm.ResultsPaging.Paged) + { + filter.Add(nameof(prm.ResultsPaging.PageNo), prm.ResultsPaging.PageNo.ToString()); + filter.Add(nameof(prm.ResultsPaging.PageLength), prm.ResultsPaging.PageLength.ToString()); + } + + return filter; + } + // Vehicle sort columns. + public List GetVehicleSortColumns (SbmVehicle.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Vehicle count. + public override long GetVehicleCount (SbmVehicle.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Vehicle list. + public override List GetVehicleList (SbmVehicle.Params prm) + { + List vehicles = new List(); + throw new NotImplementedException(); + } + public async Task> GetVehicleList_Mobile (SbmVehicle.Params prmVehicle, SacsTaskData taskData) + { + ClearErrorState(); + List vehicles = new List(); + String fn = GetType().Name + ".GetVehicleList_Mobile"; + + // Vehicle columns. + List columns = new List(EnumUtil.GetValues()); + + List itemDataList = await ExecuteVehicleQuery_Mobile(columns, prmVehicle, taskData); + foreach (SbmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId id = itemData.GetIdValue(SbmVehicle.Column.Id); + ushort flags = (ushort)itemData.GetIntValue(SbmVehicle.Column.Flag); + // Create item. + SbmVehicle_Mobile vehicle = new SbmVehicle_Mobile(UserContext, id, flags); + // Populate item properties. + foreach (SbmVehicle.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + //case SbmVehicle.Column.AssetSerial: vehicle.AssetSerial = value; break; + case SbmVehicle.Column.VehicleClass_Id: vehicle.VehicleClassId = itemData.GetIdValue(column); break; + case SbmVehicle.Column.RegNumber: vehicle.RegNumber = value; break; + case SbmVehicle.Column.Vin: vehicle.Vin = value; break; + case SbmVehicle.Column.CapCode: vehicle.CapCode = value; break; + case SbmVehicle.Column.KeyNumber: vehicle.KeyNumber = value; break; + case SbmVehicle.Column.KeyLocation: vehicle.KeyLocation = value; break; + case SbmVehicle.Column.EngineNumber: vehicle.EngineNumber= value; break; + //case SbmVehicle.Column.EngineCapacity: vehicle.EngineCapacity = StringUtil.ToShort(itemData.GetDecimalValue(column)); break; + case SbmVehicle.Column.VehicleClass_Seats: vehicle.Seats = StringUtil.ToShort(itemData.GetDecimalValue(column)); break; + //case SbmVehicle.Column.Weight: vehicle.Weight = StringUtil.ToShort(itemData.GetDecimalValue(column)); break; + //case SbmVehicle.Column.ManufactureYear: vehicle.ManufactureYear = StringUtil.ToShort(itemData.GetDecimalValue(column)); break; + case SbmVehicle.Column.BuildOn: vehicle.BuildOn = itemData.GetDateTimeValue(column); break; + case SbmVehicle.Column.FirstRegisterOn: vehicle.FirstRegisterOn= itemData.GetDateTimeValue(column); break; + case SbmVehicle.Column.RegisterOn: vehicle.RegisterOn = itemData.GetDateTimeValue(column); break; + case SbmVehicle.Column.RegNumberPrev: vehicle.RegNumberPrev = value; break; + case SbmVehicle.Column.PurchaseOdo: vehicle.PurchaseOdo = itemData.GetDecimalValue(column); break; + case SbmVehicle.Column.TachoCode: vehicle.TachoCode = value; break; + case SbmVehicle.Column.TachoId: vehicle.TachoId = value; break; + case SbmVehicle.Column.LastServiceOdo: vehicle.LastServiceOdo = itemData.GetDecimalValue(column); break; + case SbmVehicle.Column.LastServiceOn: vehicle.LastServiceOn = itemData.GetDateTimeValue(column); break; + case SbmVehicle.Column.NextServiceOdo: vehicle.NextServiceOdo = itemData.GetDecimalValue(column); break; + case SbmVehicle.Column.NextServiceOn: vehicle.NextServiceOn = itemData.GetDateTimeValue(column); break; + case SbmVehicle.Column.MotOn: vehicle.MotOn= itemData.GetDateTimeValue(column); break; + case SbmVehicle.Column.MotNo: vehicle.MotNo = value; break; + case SbmVehicle.Column.NextTaxOn: vehicle.NextTaxOn = itemData.GetDateTimeValue(column); break; + case SbmVehicle.Column.LatestOdo: vehicle.LatestOdo = itemData.GetDecimalValue(column); break; + case SbmVehicle.Column.LatestOdoOn: vehicle.LatestOdoOn = itemData.GetDateTimeValue(column); break; + case SbmVehicle.Column.Notes: vehicle.Notes = value; break; + case SbmVehicle.Column.Status: vehicle.Status = SacsSystem.GetStatusForCode(value); break; + } + } + vehicles.Add(vehicle); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " Vehicles: " + vehicles.Count); + return vehicles; + } + + + //------------------------------------------------------------------- + // Vehicle query execution. + public override DbResultSet ExecuteVehicleQuery (List columns, SbmVehicle.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecuteVehicleQuery_Mobile (List vehicleColumns, SbmVehicle.Params prmVehicle, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SbmVehicle.Column column in vehicleColumns) + columns.Add(column.ToString()); + + SbmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetVehicleRequestConfig(SbmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetVehicleQueryFilter_Mobile(prmVehicle), columns, this.GetSortColumns_Mobile(prmVehicle), taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SbmWebServiceRequest.Config GetVehicleRequestConfig (SbmWebServiceRequest.RequestType requestType, bool debug = false) + { + SbmWebServiceRequest.Config configRequest = new SbmWebServiceRequest.Config(); + configRequest.DataType = SbmWebServiceRequest.DataType.Vehicle; + configRequest.RequestType = requestType; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} + diff --git a/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAssetMgr_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAssetMgr_Mobile.cs new file mode 100644 index 0000000..0790d45 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmAssetMgr_Mobile.cs @@ -0,0 +1,89 @@ +using Sarand.BusinessMgr.Mobile.Core.App; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.BusinessMgr.Core.Mgr; +using Sarand.BusinessMgr.Core.WebService; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Dbas.Base; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.Mgr +{ + //======================================================================= + public partial class SbmAssetMgr_Mobile : SbmAssetMgr, ISbmItemMgr_Mobile + { + //------------------------------------------------------------------- + // Definitions. + + //------------------------------------------------------------------- + // Data members. + private SbmWebServiceClient webServiceClient = new SbmWebServiceClient(); + + //------------------------------------------------------------------- + // Construction. + public SbmAssetMgr_Mobile (SbmUserContext userContext) : + base(userContext) + { + } + + //------------------------------------------------------------------- + // Properties. + public SbmSessionProfile_Mobile SessionProfile { get { return SbmGlobals_Mobile.SessionProfile; } } + public String UserCode { get; } + public String EmailAddress { get; } + + //------------------------------------------------------------------- + // A s s o c i a t e d D a t a + //------------------------------------------------------------------- + public override List GetClassesForModel (string makeCode, string model) + { + throw new NotImplementedException(); + } + + public override List GetDerivativesForModel (string makeCode, string model) + { + throw new NotImplementedException(); + } + + public override List GetModelsForMake (string makeCode) + { + throw new NotImplementedException(); + } + + public override string GetVehicleClassDescBrief (SysId id) + { + throw new NotImplementedException(); + } + + public override List GetVehicleClasses_IdName (SbmVehicleClass.Params prm) + { + throw new NotImplementedException(); + } + + public override bool StoreVehicleFeature (SbmVehicleFeature.Data vehicleFeatureData, DbUpdateInfo dbUpdateInfo) + { + throw new NotImplementedException(); + } + + public override bool VehicleFeatureExistsByVF_Id (SbmVehicleFeature.SbmVehicleFeature_Id id) + { + throw new NotImplementedException(); + } + + public override bool VehicleFeaturesExist (SbmVehicleFeature.Params prm) + { + throw new NotImplementedException(); + } + + public override bool AssetDatabaseIsValid () + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Mgr/SbmCommodityMgr_Mobile-Commodities.cs b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmCommodityMgr_Mobile-Commodities.cs new file mode 100644 index 0000000..da76eec --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmCommodityMgr_Mobile-Commodities.cs @@ -0,0 +1,633 @@ +using Sarand.Core.App; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Dbas.Base; +using Sarand.Core.Tasks; +using Sarand.Core.Xml; +using Sarand.BusinessMgr.Core.Bus; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using System.Xml.Linq; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Mobile.Core.Bus; +using Sarand.BusinessMgr.Core.WebService; + +namespace Sarand.BusinessMgr.Mobile.Core.Mgr +{ + //======================================================================= + partial class SbmCommodityMgr_Mobile + { + //******************************************************************* + // C o m m o d i t i e s + //******************************************************************* + // Create Commodity. + public override SbmCommodity CreateCommodity (SysId id, SysId affIdOwner, Sbm.CommodityType commodityType, string code) + { + ClearErrorState(); + return new SbmCommodity_Mobile(UserContext, id, affIdOwner, commodityType, code, 0); + } + + //------------------------------------------------------------------- + // Get Commodity. + public override SbmCommodity GetCommodity (SbmCommodity.Params prmCommodity) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate Commodity. + public override bool IsValidCommodityData (SbmCommodity.Data data, SbmCommodity.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidCommodityData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert Commodity. + public override bool InsertCommodity (SbmCommodity commodity, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidCommodity(commodity)) return false; + if (SysId.IsValid(commodity.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update Commodity. + public override bool UpdateCommodity (SbmCommodity commodity, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidCommodity(commodity)) return false; + if (!SysId.IsValid(commodity.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete Commodity. + public override bool CommodityCanBeDeleted (SbmCommodity commodity) + { + ClearErrorState(); + if (!base.CommodityCanBeDeleted(commodity)) return false; + return true; + } + public override bool DeleteCommodity (SbmCommodity commodity, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!CommodityCanBeDeleted(commodity)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement commodityElement, SbmCommodity commodity, DbUpdateInfo dbUpdateInfo) + { + commodityElement.AppendElement(nameof(commodity.Id), SysId.ToString(commodity.Id)); + // Commodity. + commodityElement.AppendElement(nameof(commodity.AffiliateIdOwner), SysId.ToString(commodity.AffiliateIdOwner)); + commodityElement.AppendElement(nameof(commodity.CommodityType), commodity.CommodityType.ToString()); + commodityElement.AppendElement(nameof(commodity.Code), commodity.Code); + commodityElement.AppendElement(nameof(commodity.DescBrief), commodity.DescBrief); + commodityElement.AppendElement(nameof(commodity.DescOrder), commodity.DescOrder); + commodityElement.AppendElement(nameof(commodity.DescDetail), commodity.DescDetail); + commodityElement.AppendElement(nameof(commodity.DrawingNumber), commodity.DrawingNumber); + commodityElement.AppendElement(nameof(commodity.DrawingIssue), commodity.DrawingIssue); + // TODO - give incrementDrawingIssue a parameter + //commodityElement.AppendElement(nameof(commodity.IncrementDrawingIssue), SbmCommodity.IncrementDrawingIssue()); + commodityElement.AppendElement(nameof(commodity.AssetCatId), SysId.ToString(commodity.AssetCatId)); + commodityElement.AppendElement(nameof(commodity.ImagePath), commodity.ImagePath); + commodityElement.AppendElement(nameof(commodity.Category1), commodity.Category1); + commodityElement.AppendElement(nameof(commodity.Category2), commodity.Category2); + commodityElement.AppendElement(nameof(commodity.Category3), commodity.Category3); + commodityElement.AppendElement(nameof(commodity.Location), commodity.Location); + commodityElement.AppendElement(nameof(commodity.Department), commodity.Department); + commodityElement.AppendElement(nameof(commodity.CatalogRef), commodity.CatalogRef); + //Specification + commodityElement.AppendElement(nameof(commodity.Weight), (commodity.Weight).ToString("N3")); + commodityElement.AppendElement(nameof(commodity.UomIdWeight), SysId.ToString(commodity.UomIdWeight)); + commodityElement.AppendElement(nameof(commodity.Length), (commodity.Length).ToString("N3")); + commodityElement.AppendElement(nameof(commodity.UomIdLength), SysId.ToString(commodity.UomIdLength)); + commodityElement.AppendElement(nameof(commodity.Volume), (commodity.Volume).ToString("N3")); + commodityElement.AppendElement(nameof(commodity.UomIdVolume), SysId.ToString(commodity.UomIdVolume)); + commodityElement.AppendElement(nameof(commodity.Density), (commodity.Density).ToString("N3")); + commodityElement.AppendElement(nameof(commodity.UomIdDensity), SysId.ToString(commodity.UomIdDensity)); + commodityElement.AppendElement(nameof(commodity.BoxQuantity), (commodity.BoxQuantity).ToString("N3")); + commodityElement.AppendElement(nameof(commodity.UomIdBox), SysId.ToString(commodity.UomIdBox)); + commodityElement.AppendElement(nameof(commodity.Dimensions), commodity.Dimensions); + commodityElement.AppendElement(nameof(commodity.SpecSummary), commodity.SpecSummary); + // Codings. + commodityElement.AppendElement(nameof(commodity.RangeCode), commodity.RangeCode); + commodityElement.AppendElement(nameof(commodity.ColourCode), commodity.ColourCode); + commodityElement.AppendElement(nameof(commodity.SourceCode), commodity.SourceCode); + commodityElement.AppendElement(nameof(commodity.SupplyMethodCode), commodity.SupplyMethodCode); + commodityElement.AppendElement(nameof(commodity.HandlingCode), commodity.HandlingCode); + commodityElement.AppendElement(nameof(commodity.DeliveryCode), commodity.DeliveryCode); + commodityElement.AppendElement(nameof(commodity.MaterialCode), commodity.MaterialCode); + commodityElement.AppendElement(nameof(commodity.FinishCode), commodity.FinishCode); + commodityElement.AppendElement(nameof(commodity.PromotionCode), commodity.PromotionCode); + commodityElement.AppendElement(nameof(commodity.NominalCode), commodity.NominalCode); + commodityElement.AppendElement(nameof(commodity.NominalCodePurchase), commodity.NominalCodePurchase); + commodityElement.AppendElement(nameof(commodity.ICNTariffCode), commodity.ICNTariffCode); + // Production time. + commodityElement.AppendElement(nameof(commodity.TimeProd), commodity.TimeProd.ToString("N3")); + commodityElement.AppendElement(nameof(commodity.UomIdTimeProd), SysId.ToString(commodity.UomIdTimeProd)); + // Purchasing. + commodityElement.AppendElement(nameof(commodity.AssociationIdSupplier), SysId.ToString(commodity.AssociationIdSupplier)); + commodityElement.AppendElement(nameof(commodity.SupplierRef), commodity.SupplierRef); + commodityElement.AppendElement(nameof(commodity.CostPrice), commodity.CostPrice.ToString("N3")); + commodityElement.AppendElement(nameof(commodity.PlaceOfOrigin), commodity.PlaceOfOrigin); + commodityElement.AppendElement(nameof(commodity.MaterialCost), commodity.MaterialCost.ToString("N3")); + commodityElement.AppendElement(nameof(commodity.CurrencyIdMaterial), SysId.ToString(commodity.CurrencyIdMaterial)); + commodityElement.AppendElement(nameof(commodity.ExWorksCost), commodity.ExWorksCost.ToString("N3")); + commodityElement.AppendElement(nameof(commodity.CurrencyIdExWorks), SysId.ToString(commodity.CurrencyIdExWorks)); + commodityElement.AppendElement(nameof(commodity.ReorderLevel), commodity.ReorderLevel.ToString("N3")); + commodityElement.AppendElement(nameof(commodity.ReorderQty), commodity.ReorderQty.ToString("N3")); + commodityElement.AppendElement(nameof(commodity.QtyOnOrder), commodity.QtyOnOrder.ToString("N3")); + // Sales. + commodityElement.AppendElement(nameof(commodity.AssociationIdCustomer), SysId.ToString(commodity.AssociationIdCustomer)); + commodityElement.AppendElement(nameof(commodity.SalesPrice), commodity.SalesPrice.ToString("N3")); + commodityElement.AppendElement(nameof(commodity.RetailPrice), commodity.RetailPrice.ToString("N3")); + commodityElement.AppendElement(nameof(commodity.RetailPricePlanned), commodity.RetailPricePlanned.ToString("N3")); + commodityElement.AppendElement(nameof(commodity.UomIdSale), SysId.ToString(commodity.UomIdSale)); + commodityElement.AppendElement(nameof(commodity.CarriageCostIndicative), commodity.CarriageCostIndicative.ToString("N3")); + commodityElement.AppendElement(nameof(commodity.MinOrderQty), commodity.MinOrderQty.ToString("N3")); + commodityElement.AppendElement(nameof(commodity.PackQtySale), commodity.PackQtySale.ToString("N3")); + commodityElement.AppendElement(nameof(commodity.TaxCodeId), SysId.ToString(commodity.TaxCodeId)); + commodityElement.AppendElement(nameof(commodity.LastOrderDate), DateUtil.FormatXmlDateTime(commodity.LastOrderDate)); + commodityElement.AppendElement(nameof(commodity.LastOrderQty), commodity.LastOrderQty.ToString("N3")); + // Projected sales. + commodityElement.AppendElement(nameof(commodity.TaxCodeId), SysId.ToString(commodity.TaxCodeId)); + commodityElement.AppendElement(nameof(commodity.SalesProjAnnual), commodity.SalesProjAnnual.ToString("N3")); + commodityElement.AppendElement(nameof(commodity.SalesProjMonth01), commodity.SalesProjMonth01.ToString("N3")); + commodityElement.AppendElement(nameof(commodity.SalesProjMonth02), commodity.SalesProjMonth02.ToString("N3")); + commodityElement.AppendElement(nameof(commodity.SalesProjMonth03), commodity.SalesProjMonth03.ToString("N3")); + commodityElement.AppendElement(nameof(commodity.SalesProjMonth04), commodity.SalesProjMonth04.ToString("N3")); + commodityElement.AppendElement(nameof(commodity.SalesProjMonth05), commodity.SalesProjMonth05.ToString("N3")); + commodityElement.AppendElement(nameof(commodity.SalesProjMonth06), commodity.SalesProjMonth06.ToString("N3")); + commodityElement.AppendElement(nameof(commodity.SalesProjMonth07), commodity.SalesProjMonth07.ToString("N3")); + commodityElement.AppendElement(nameof(commodity.SalesProjMonth08), commodity.SalesProjMonth08.ToString("N3")); + commodityElement.AppendElement(nameof(commodity.SalesProjMonth09), commodity.SalesProjMonth09.ToString("N3")); + commodityElement.AppendElement(nameof(commodity.SalesProjMonth10), commodity.SalesProjMonth10.ToString("N3")); + commodityElement.AppendElement(nameof(commodity.SalesProjMonth11), commodity.SalesProjMonth11.ToString("N3")); + commodityElement.AppendElement(nameof(commodity.SalesProjMonth12), commodity.SalesProjMonth12.ToString("N3")); + // Proposed sales - budget. + commodityElement.AppendElement(nameof(commodity.SalesPropAnnual), commodity.SalesPropAnnual.ToString("N3")); + commodityElement.AppendElement(nameof(commodity.SalesPropMonth01), commodity.SalesPropMonth01.ToString("N3")); + commodityElement.AppendElement(nameof(commodity.SalesPropMonth02), commodity.SalesPropMonth02.ToString("N3")); + commodityElement.AppendElement(nameof(commodity.SalesPropMonth03), commodity.SalesPropMonth03.ToString("N3")); + commodityElement.AppendElement(nameof(commodity.SalesPropMonth04), commodity.SalesPropMonth04.ToString("N3")); + commodityElement.AppendElement(nameof(commodity.SalesPropMonth05), commodity.SalesPropMonth05.ToString("N3")); + commodityElement.AppendElement(nameof(commodity.SalesPropMonth06), commodity.SalesPropMonth06.ToString("N3")); + commodityElement.AppendElement(nameof(commodity.SalesPropMonth07), commodity.SalesPropMonth07.ToString("N3")); + commodityElement.AppendElement(nameof(commodity.SalesPropMonth08), commodity.SalesPropMonth08.ToString("N3")); + commodityElement.AppendElement(nameof(commodity.SalesPropMonth09), commodity.SalesPropMonth09.ToString("N3")); + commodityElement.AppendElement(nameof(commodity.SalesPropMonth10), commodity.SalesPropMonth10.ToString("N3")); + commodityElement.AppendElement(nameof(commodity.SalesPropMonth11), commodity.SalesPropMonth11.ToString("N3")); + commodityElement.AppendElement(nameof(commodity.SalesPropMonth12), commodity.SalesPropMonth12.ToString("N3")); + commodityElement.AppendElement(nameof(commodity.Notes), commodity.Notes); + commodityElement.AppendElement(nameof(commodity.Status), SacsSystem.GetStatusCode(commodity.Status)); + commodityElement.AppendElement(nameof(commodity.Flags), commodity.Flags.ToString()); + if (!SysId.IsValid(commodity.Id)) + { + commodityElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + commodityElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + commodityElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + commodityElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + commodityElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + commodityElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement commodityElement, SbmCommodity commodity) + { + commodity.Id = new SysId(StringUtil.ToInt(commodityElement.GetChildText("Id"))); + // Commodity. + commodity.AffiliateIdOwner = new SysId(StringUtil.ToInt(commodityElement.GetChildText(nameof(commodity.AffiliateIdOwner)))); + commodity.CommodityType = EnumUtil.ParseEnum(commodityElement.GetChildText(nameof(commodity.CommodityType)), Sbm.CommodityType.Unknown); + commodity.Code = commodityElement.GetChildText(nameof(commodity.Code)); + commodity.DescBrief = commodityElement.GetChildText(nameof(commodity.DescBrief)); + commodity.DescOrder = commodityElement.GetChildText(nameof(commodity.DescOrder)); + commodity.DescDetail = commodityElement.GetChildText(nameof(commodity.DescDetail)); + commodity.DrawingNumber = commodityElement.GetChildText(nameof(commodity.DrawingNumber)); + commodity.DrawingIssue = commodityElement.GetChildText(nameof(commodity.DrawingIssue)); + //SbmCommodity.IncrementDrawingIssue() = commodityElement.GetChildText(nameof(commodity.IncrementDrawingIssue)); + commodity.AssetCatId = new SysId(StringUtil.ToInt(commodityElement.GetChildText(nameof(commodity.AssetCatId)))); + commodity.ImagePath = commodityElement.GetChildText(nameof(commodity.ImagePath)); + commodity.Category1 = commodityElement.GetChildText(nameof(commodity.Category1)); + commodity.Category2 = commodityElement.GetChildText(nameof(commodity.Category2)); + commodity.Category3 = commodityElement.GetChildText(nameof(commodity.Category3)); + commodity.Location = commodityElement.GetChildText(nameof(commodity.Location)); + commodity.Department = commodityElement.GetChildText(nameof(commodity.Department)); + commodity.CatalogRef = commodityElement.GetChildText(nameof(commodity.CatalogRef)); + // Specification. + commodity.Weight = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.Weight))); + commodity.UomIdWeight = new SysId(StringUtil.ToInt(commodityElement.GetChildText(nameof(commodity.UomIdWeight)))); + commodity.Length = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.Length))); + commodity.UomIdLength = new SysId(StringUtil.ToInt(commodityElement.GetChildText(nameof(commodity.UomIdLength)))); + commodity.Volume = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.Volume))); + commodity.UomIdVolume = new SysId(StringUtil.ToInt(commodityElement.GetChildText(nameof(commodity.UomIdVolume)))); + commodity.Density = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.Density))); + commodity.UomIdDensity = new SysId(StringUtil.ToInt(commodityElement.GetChildText(nameof(commodity.UomIdDensity)))); + commodity.BoxQuantity = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.BoxQuantity))); + commodity.UomIdBox = new SysId(StringUtil.ToInt(commodityElement.GetChildText(nameof(commodity.UomIdBox)))); + commodity.Dimensions = commodityElement.GetChildText(nameof(commodity.Dimensions)); + commodity.SpecSummary = commodityElement.GetChildText(nameof(commodity.SpecSummary)); + // Codings. + commodity.RangeCode = commodityElement.GetChildText(nameof(commodity.RangeCode)); + commodity.ColourCode = commodityElement.GetChildText(nameof(commodity.ColourCode)); + commodity.SourceCode = commodityElement.GetChildText(nameof(commodity.SourceCode)); + commodity.SupplyMethodCode = commodityElement.GetChildText(nameof(commodity.SupplyMethodCode)); + commodity.HandlingCode = commodityElement.GetChildText(nameof(commodity.HandlingCode)); + commodity.DeliveryCode = commodityElement.GetChildText(nameof(commodity.DeliveryCode)); + commodity.MaterialCode = commodityElement.GetChildText(nameof(commodity.MaterialCode)); + commodity.FinishCode = commodityElement.GetChildText(nameof(commodity.FinishCode)); + commodity.PromotionCode = commodityElement.GetChildText(nameof(commodity.PromotionCode)); + commodity.NominalCode = commodityElement.GetChildText(nameof(commodity.NominalCode)); + commodity.NominalCodePurchase = commodityElement.GetChildText(nameof(commodity.NominalCodePurchase)); + commodity.ICNTariffCode = commodityElement.GetChildText(nameof(commodity.ICNTariffCode)); + // Production time. + commodity.TimeProd = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.TimeProd))); + commodity.UomIdTimeProd = new SysId(StringUtil.ToInt(commodityElement.GetChildText(nameof(commodity.UomIdTimeProd)))); + // Purchasing. + commodity.AssociationIdSupplier = new SysId(StringUtil.ToInt(commodityElement.GetChildText(nameof(commodity.AssociationIdSupplier)))); + commodity.SupplierRef = commodityElement.GetChildText(nameof(commodity.SupplierRef)); + commodity.CostPrice = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.CostPrice))); + commodity.PlaceOfOrigin = commodityElement.GetChildText(nameof(commodity.PlaceOfOrigin)); + commodity.MaterialCost = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.MaterialCost))); + commodity.CurrencyIdMaterial = new SysId(StringUtil.ToInt(commodityElement.GetChildText(nameof(commodity.CurrencyIdMaterial)))); + commodity.ExWorksCost = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.ExWorksCost))); + commodity.CurrencyIdExWorks = new SysId(StringUtil.ToInt(commodityElement.GetChildText(nameof(commodity.CurrencyIdExWorks)))); + commodity.ReorderLevel = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.ReorderLevel))); + commodity.ReorderQty = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.ReorderQty))); + commodity.QtyOnOrder = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.QtyOnOrder))); + // Sales. + commodity.AssociationIdCustomer = new SysId(StringUtil.ToInt(commodityElement.GetChildText(nameof(commodity.AssociationIdCustomer)))); + commodity.SalesPrice = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.SalesPrice))); + commodity.RetailPrice = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.RetailPrice))); + commodity.RetailPricePlanned = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.RetailPricePlanned))); + commodity.UomIdSale = new SysId(StringUtil.ToInt(commodityElement.GetChildText(nameof(commodity.UomIdSale)))); + commodity.CarriageCostIndicative = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.CarriageCostIndicative))); + commodity.MinOrderQty = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.MinOrderQty))); + commodity.PackQtySale = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.PackQtySale))); + commodity.TaxCodeId = new SysId(StringUtil.ToInt(commodityElement.GetChildText(nameof(commodity.TaxCodeId)))); + commodity.LastOrderDate = DateUtil.ParseXmlDateTime(commodityElement.GetChildText(nameof(commodity.LastOrderDate))); + commodity.LastOrderQty = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.LastOrderQty))); + // Stock. + commodity.QtyInStock = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.QtyInStock))); + commodity.QtyAllocated = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.QtyAllocated))); + commodity.FreeStock = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.FreeStock))); + commodity.StockTakeDate = DateUtil.ParseXmlDateTime(commodityElement.GetChildText(nameof(commodity.StockTakeDate))); + commodity.StockTakeQty = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.StockTakeQty))); + // Projected sales. + commodity.CommodityIdSalesProj = new SysId(StringUtil.ToInt(commodityElement.GetChildText(nameof(commodity.CommodityIdSalesProj)))); + commodity.SalesProjAnnual = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.SalesProjAnnual))); + commodity.SalesProjMonth01 = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.SalesProjMonth01))); + commodity.SalesProjMonth02 = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.SalesProjMonth02))); + commodity.SalesProjMonth03 = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.SalesProjMonth03))); + commodity.SalesProjMonth04 = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.SalesProjMonth04))); + commodity.SalesProjMonth05 = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.SalesProjMonth05))); + commodity.SalesProjMonth06 = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.SalesProjMonth06))); + commodity.SalesProjMonth07 = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.SalesProjMonth07))); + commodity.SalesProjMonth08 = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.SalesProjMonth08))); + commodity.SalesProjMonth09 = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.SalesProjMonth09))); + commodity.SalesProjMonth10 = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.SalesProjMonth10))); + commodity.SalesProjMonth11 = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.SalesProjMonth11))); + commodity.SalesProjMonth12 = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.SalesProjMonth12))); + // Projected sales - budget. + commodity.SalesPropAnnual = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.SalesPropAnnual))); + commodity.SalesPropMonth01 = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.SalesPropMonth01))); + commodity.SalesPropMonth02 = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.SalesPropMonth02))); + commodity.SalesPropMonth03 = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.SalesPropMonth03))); + commodity.SalesPropMonth04 = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.SalesPropMonth04))); + commodity.SalesPropMonth05 = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.SalesPropMonth05))); + commodity.SalesPropMonth06 = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.SalesPropMonth06))); + commodity.SalesPropMonth07 = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.SalesPropMonth07))); + commodity.SalesPropMonth08 = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.SalesPropMonth08))); + commodity.SalesPropMonth09 = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.SalesPropMonth09))); + commodity.SalesPropMonth10 = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.SalesPropMonth10))); + commodity.SalesPropMonth11 = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.SalesPropMonth11))); + commodity.SalesPropMonth12 = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodity.SalesPropMonth12))); + commodity.Notes = commodityElement.GetChildText(nameof(commodity.Notes)); + commodity.Status = SacsSystem.GetStatusForCode(commodityElement.GetChildText(nameof(commodity.Status))); + commodity.SetCreateStamp(DateUtil.ParseXmlDateTime(commodityElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(commodityElement.GetChildText("CreateBy"))), commodityElement.GetChildText("CreateHost")); + commodity.SetUpdateStamp(DateUtil.ParseXmlDateTime(commodityElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(commodityElement.GetChildText("UpdateBy"))), commodityElement.GetChildText("UpdateHost")); + commodity.AcceptChanges(); + } + + //------------------------------------------------------------------- + // Commodity column definitions. + public override ColumnDfn GetCommodityColumnDfn (SbmCommodity.Column columnId, string caption = "", int width = 0) + { + ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width); + if (!String.IsNullOrEmpty(caption)) + columnDfn.Caption = caption; + if (width > 0) + columnDfn.Width = width; + columnDfn.DataName = columnId.ToString(); + return columnDfn; + } + + //------------------------------------------------------------------- + // Commodity query filter. + public override List GetCommodityQueryFilter (SbmCommodity.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetCommodityQueryFilter_Mobile (SbmCommodity.Params prm) + { + Dictionary filter = new Dictionary(); + + // Commodity Id. + if (prm.IncludedIds.Count > 0) filter.Add(nameof(prm.IncludedIds), prm.IncludedIds.Concat(",")); + if (prm.ExcludedIds.Count > 0) filter.Add(nameof(prm.ExcludedIds), prm.ExcludedIds.Concat(",")); + + // Commodity. + if ((int)prm.CommodityType > 0) filter.Add(nameof(prm.CommodityType), ((int)prm.CommodityType).ToString()); + if (prm.StockItemsOnly != false) filter.Add(nameof(prm.StockItemsOnly), prm.StockItemsOnly.ToString()); + if (!StringUtil.IsEmpty(prm.CodeFull)) filter.Add(nameof(prm.CodeFull), prm.CodeFull); + if (!StringUtil.IsEmpty(prm.CodePartial)) filter.Add(nameof(prm.CodePartial), prm.CodePartial); + if (!StringUtil.IsEmpty(prm.DescBriefFull)) filter.Add(nameof(prm.DescBriefFull), prm.DescBriefFull); + if (!StringUtil.IsEmpty(prm.DescBriefPartial)) filter.Add(nameof(prm.DescBriefPartial), prm.DescBriefPartial); + if (!StringUtil.IsEmpty(prm.DrawingNoFull)) filter.Add(nameof(prm.DrawingNoFull), prm.DrawingNoFull); + if (!StringUtil.IsEmpty(prm.DrawingNoPartial)) filter.Add(nameof(prm.DrawingNoPartial), prm.DrawingNoPartial); + if (!StringUtil.IsEmpty(prm.DrawingIssueFull)) filter.Add(nameof(prm.DrawingIssueFull), prm.DrawingIssueFull); + if (!StringUtil.IsEmpty(prm.DrawingIssuePartial)) filter.Add(nameof(prm.DrawingIssuePartial), prm.DrawingIssuePartial); + + // Category. + if (!StringUtil.IsEmpty(prm.CatalogRefPartial)) filter.Add(nameof(prm.CatalogRefPartial), prm.CatalogRefPartial); + if (prm.Categories.Count > 0) filter.Add(nameof(prm.Categories), prm.Categories.Concat(",")); + + // Customer. + if (SysId.IsValid(prm.AssociationIdCustomer)) filter.Add(nameof(prm.AssociationIdCustomer), SysId.ToString(prm.AssociationIdCustomer)); + if (!StringUtil.IsEmpty(prm.CustomerName)) filter.Add(nameof(prm.CustomerName), prm.CustomerName); + if (SysId.IsValid(prm.AssociationIdCommodityCustomer)) filter.Add(nameof(prm.AssociationIdCommodityCustomer), SysId.ToString(prm.AssociationIdCommodityCustomer)); + if (!StringUtil.IsEmpty(prm.AccountCodeCommodityCustomer)) filter.Add(nameof(prm.AccountCodeCommodityCustomer), prm.AccountCodeCommodityCustomer); + + // Supplier. + if (SysId.IsValid(prm.AssociationIdSupplier)) filter.Add(nameof(prm.AssociationIdSupplier), SysId.ToString(prm.AssociationIdSupplier)); + if (!StringUtil.IsEmpty(prm.SupplierName)) filter.Add(nameof(prm.SupplierName), prm.SupplierName); + + // Order references. + if (!StringUtil.IsEmpty(prm.OrderRef)) filter.Add(nameof(prm.OrderRef), prm.OrderRef); + if (!StringUtil.IsEmpty(prm.SalesOrderRef)) filter.Add(nameof(prm.SalesOrderRef), prm.SalesOrderRef); + if (!StringUtil.IsEmpty(prm.PurchaseOrderRef)) filter.Add(nameof(prm.PurchaseOrderRef), prm.PurchaseOrderRef); + + // Codes. + if (!StringUtil.IsEmpty(prm.RangeCode)) filter.Add(nameof(prm.RangeCode), prm.RangeCode); + if (!StringUtil.IsEmpty(prm.ColourCode)) filter.Add(nameof(prm.ColourCode), prm.ColourCode); + if (!StringUtil.IsEmpty(prm.SourceCode)) filter.Add(nameof(prm.SourceCode), prm.SourceCode); + if (!StringUtil.IsEmpty(prm.SupplyMethodCode)) filter.Add(nameof(prm.SupplyMethodCode), prm.SupplyMethodCode); + if (!StringUtil.IsEmpty(prm.HandlingCode)) filter.Add(nameof(prm.HandlingCode), prm.HandlingCode); + if (!StringUtil.IsEmpty(prm.DeliveryCode)) filter.Add(nameof(prm.DeliveryCode), prm.DeliveryCode); + if (!StringUtil.IsEmpty(prm.MaterialCode)) filter.Add(nameof(prm.MaterialCode), prm.MaterialCode); + if (!StringUtil.IsEmpty(prm.FinishCode)) filter.Add(nameof(prm.FinishCode), prm.FinishCode); + if (!StringUtil.IsEmpty(prm.PromotionCode)) filter.Add(nameof(prm.PromotionCode), prm.PromotionCode); + + // Price Set. + if (prm.PriceSetIdsIncluded.Count > 0) filter.Add(nameof(prm.PriceSetIdsIncluded), prm.PriceSetIdsIncluded.Concat(",")); + if (prm.PriceSetIdsExcluded.Count > 0) filter.Add(nameof(prm.PriceSetIdsExcluded), prm.PriceSetIdsExcluded.Concat(",")); + + // Stock Control. + if ((int)prm.StockLocationFilter > 0) filter.Add(nameof(prm.StockLocationFilter), ((int)prm.StockLocationFilter).ToString()); + if (SysId.IsValid(prm.LocationIdStock)) filter.Add(nameof(prm.LocationIdStock), SysId.ToString(prm.LocationIdStock)); + if (DateUtil.IsValid(prm.StockSoldFrom)) filter.Add(nameof(prm.StockSoldFrom), DateUtil.FormatXmlDate(prm.StockSoldFrom)); + if (DateUtil.IsValid(prm.StockSoldTo)) filter.Add(nameof(prm.StockSoldTo), DateUtil.FormatXmlDate(prm.StockSoldTo)); + if (DateUtil.IsValid(prm.ProjectedSalesFrom)) filter.Add(nameof(prm.ProjectedSalesFrom), DateUtil.FormatXmlDate(prm.ProjectedSalesFrom)); + if (DateUtil.IsValid(prm.ProjectedSalesTo)) filter.Add(nameof(prm.ProjectedSalesTo), DateUtil.FormatXmlDate(prm.ProjectedSalesTo)); + + // Stock level. + if (prm.StockLevelMin > 0) filter.Add(nameof(prm.StockLevelMin), prm.StockLevelMin.ToString("N3")); + if (prm.StockLevelMax > 0) filter.Add(nameof(prm.StockLevelMax), prm.StockLevelMax.ToString("N3")); + + // Portfolio. + if (SysId.IsValid(prm.PortfolioIdInclude)) filter.Add(nameof(prm.PortfolioIdInclude), SysId.ToString(prm.PortfolioIdInclude)); + if (SysId.IsValid(prm.PortfolioIdExclude)) filter.Add(nameof(prm.PortfolioIdExclude), SysId.ToString(prm.PortfolioIdExclude)); + if (SysId.IsValid(prm.PortfolioForItemCountId)) filter.Add(nameof(prm.PortfolioForItemCountId), SysId.ToString(prm.PortfolioForItemCountId)); + + // Currency. + if (SysId.IsValid(prm.CurrencyIdMaterial)) filter.Add(nameof(prm.CurrencyIdMaterial), SysId.ToString(prm.CurrencyIdMaterial)); + if (SysId.IsValid(prm.CurrencyIdExWorks)) filter.Add(nameof(prm.CurrencyIdExWorks), SysId.ToString(prm.CurrencyIdExWorks)); + + // Price. + if (prm.SalesPrice > 0) filter.Add(nameof(prm.SalesPrice), prm.SalesPrice.ToString("N3")); + if (prm.RetailPrice > 0) filter.Add(nameof(prm.RetailPrice), prm.RetailPrice.ToString("N3")); + if (SysId.IsValid(prm.UomIdSale)) filter.Add(nameof(prm.UomIdSale), SysId.ToString(prm.UomIdSale)); + if (SysId.IsValid(prm.TaxCodeId)) filter.Add(nameof(prm.TaxCodeId), SysId.ToString(prm.TaxCodeId)); + if (DateUtil.IsValid(prm.StockTakeDate)) filter.Add(nameof(prm.StockTakeDate), DateUtil.FormatXmlDate(prm.StockTakeDate)); + if (SysId.IsValid(prm.CommodityIdSalesProj)) filter.Add(nameof(prm.CommodityIdSalesProj), SysId.ToString(prm.CommodityIdSalesProj)); + if (prm.SalesProjAnnual > 0) filter.Add(nameof(prm.SalesProjAnnual), prm.SalesProjAnnual.ToString("N3")); + + // Status. + filter.Add(nameof(prm.StatusCat), prm.StatusCat.ToString()); + + // Paging. + if (prm.ResultsPaging.Paged) + { + filter.Add(nameof(prm.ResultsPaging.PageNo), prm.ResultsPaging.PageNo.ToString()); + filter.Add(nameof(prm.ResultsPaging.PageLength), prm.ResultsPaging.PageLength.ToString()); + } + + return filter; + } + // Commodity sort columns. + public List GetCommoditySortColumns (SbmCommodity.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Commodity count. + public override long GetCommodityCount (SbmCommodity.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Commodity list. + public override List GetCommodityList (SbmCommodity.Params prm) + { + List commodities = new List(); + throw new NotImplementedException(); + } + public async Task> GetCommodityList_Mobile (SbmCommodity.Params prmCommodity, SacsTaskData taskData) + { + ClearErrorState(); + List commodities = new List(); + String fn = GetType().Name + ".GetCommodityList_Mobile"; + + // Commodity columns. + List columns = new List(EnumUtil.GetValues()); + + List itemDataList = await ExecuteCommodityQuery_Mobile(columns, prmCommodity, taskData); + foreach (SbmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId id = itemData.GetIdValue(SbmCommodity.Column.Id); + SysId affiliateIdOwner = new SysId(); + //Sbm.CommodityType commodityType = EnumUtil.ParseEnum(itemData.GetValue(SbmCommodity.Column.CommodityType), Sbm.CommodityType.Unknown); + string code = itemData.GetValue(SbmCommodity.Column.Code); + ushort flags = (ushort)itemData.GetIntValue(SbmCommodity.Column.Flag); + // Create item. + SbmCommodity_Mobile commodity = new SbmCommodity_Mobile(UserContext, id, affiliateIdOwner, Sbm.CommodityType.Unknown, code, flags); + // Populate item properties. + foreach (SbmCommodity.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + // Commodity. + //case SbmCommodity.Column.AffiliateIdOwner: commodity.AffiliateIdOwner = itemData.GetIdValue(column); break; + //case SbmCommodity.Column.CommodityType: commodity.CommodityType = EnumUtil.ParseEnum(itemData.GetValue(column), Sbm.CommodityType.Any); break; + case SbmCommodity.Column.Code: commodity.Code = value; break; + case SbmCommodity.Column.DescBrief: commodity.DescBrief = value; break; + case SbmCommodity.Column.DescOrder: commodity.DescOrder = value; break; + case SbmCommodity.Column.DescDetail: commodity.DescDetail = value; break; + case SbmCommodity.Column.DrawingNo: commodity.DrawingNumber = value; break; + case SbmCommodity.Column.DrawingIssue: commodity.DrawingIssue = value; break; + //case SbmCommodity.Column.IncrementDrawingIssue: SbmCommodity.IncrementDrawingIssue() = value; break; + //case SbmCommodity.Column.AssetCatId: commodity.AssetCatId = itemData.GetIdValue(column); break; + case SbmCommodity.Column.ImagePath: commodity.ImagePath = value; break; + case SbmCommodity.Column.Category1Code: commodity.Category1 = value; break; + case SbmCommodity.Column.Category2Code: commodity.Category2 = value; break; + case SbmCommodity.Column.Category3Code: commodity.Category3 = value; break; + case SbmCommodity.Column.Location: commodity.Location = value; break; + case SbmCommodity.Column.Department: commodity.Department = value; break; + case SbmCommodity.Column.CatalogRef: commodity.CatalogRef = value; break; + // Specification. + case SbmCommodity.Column.Weight: commodity.Weight = itemData.GetDecimalValue(column); break; + case SbmCommodity.Column.Weight_UomId: commodity.UomIdWeight = itemData.GetIdValue(column); break; + case SbmCommodity.Column.Length: commodity.Length = itemData.GetDecimalValue(column); break; + case SbmCommodity.Column.Length_UomId: commodity.UomIdLength = itemData.GetIdValue(column); break; + case SbmCommodity.Column.Volume: commodity.Volume = itemData.GetDecimalValue(column); break; + case SbmCommodity.Column.Volume_UomId: commodity.UomIdVolume = itemData.GetIdValue(column); break; + case SbmCommodity.Column.Density: commodity.Density = itemData.GetDecimalValue(column); break; + case SbmCommodity.Column.Density_UomId: commodity.UomIdDensity = itemData.GetIdValue(column); break; + case SbmCommodity.Column.BoxQuantity: commodity.BoxQuantity = itemData.GetDecimalValue(column); break; + case SbmCommodity.Column.BoxQuantity_UomId: commodity.UomIdBox = itemData.GetIdValue(column); break; + case SbmCommodity.Column.Dimensions: commodity.Dimensions = value; break; + case SbmCommodity.Column.SpecSummary: commodity.SpecSummary = value; break; + // Codings. + case SbmCommodity.Column.RangeCode: commodity.RangeCode = value; break; + case SbmCommodity.Column.ColourCode: commodity.ColourCode = value; break; + case SbmCommodity.Column.SourceCode: commodity.SourceCode = value; break; + case SbmCommodity.Column.SupplyMethodCode: commodity.SupplyMethodCode = value; break; + case SbmCommodity.Column.HandlingCode: commodity.HandlingCode = value; break; + case SbmCommodity.Column.DeliveryCode: commodity.DeliveryCode = value; break; + case SbmCommodity.Column.MaterialCode: commodity.MaterialCode = value; break; + case SbmCommodity.Column.FinishCode: commodity.FinishCode = value; break; + case SbmCommodity.Column.PromotionCode: commodity.PromotionCode = value; break; + case SbmCommodity.Column.NominalCode: commodity.NominalCode = value; break; + case SbmCommodity.Column.NominalCodePurchase: commodity.NominalCodePurchase = value; break; + case SbmCommodity.Column.ICNTariffCode: commodity.ICNTariffCode = value; break; + // Production time. + //case SbmCommodity.Column.TimeProd: commodity.TimeProd = itemData.GetDecimalValue(column); break; + //case SbmCommodity.Column.UomIdTimeProd: commodity.UomIdTimeProd = itemData.GetIdValue(column); break; + // Purchasing. + case SbmCommodity.Column.AssociationIdSupplier: commodity.AssociationIdSupplier = itemData.GetIdValue(column); break; + case SbmCommodity.Column.Supplier_Ref: commodity.SupplierRef = value; break; + case SbmCommodity.Column.CostPrice: commodity.CostPrice = itemData.GetDecimalValue(column); break; + case SbmCommodity.Column.PlaceOfOrigin: commodity.PlaceOfOrigin = value; break; + case SbmCommodity.Column.MaterialCost: commodity.MaterialCost = itemData.GetDecimalValue(column); break; + case SbmCommodity.Column.MaterialCurrencyId: commodity.CurrencyIdMaterial = itemData.GetIdValue(column); break; + case SbmCommodity.Column.ExWorksCost: commodity.ExWorksCost = itemData.GetDecimalValue(column); break; + //case SbmCommodity.Column.CurrencyIdExWorks: commodity.CurrencyIdExWorks = itemData.GetIdValue(column); break; + case SbmCommodity.Column.ReorderLevel: commodity.ReorderLevel = itemData.GetDecimalValue(column); break; + case SbmCommodity.Column.ReorderQty: commodity.ReorderQty = itemData.GetDecimalValue(column); break; + case SbmCommodity.Column.QtyOnOrder: commodity.QtyOnOrder = itemData.GetDecimalValue(column); break; + // Sales. + case SbmCommodity.Column.AssociationIdCustomer: commodity.AssociationIdCustomer = itemData.GetIdValue(column); break; + case SbmCommodity.Column.SalesPrice: commodity.SalesPrice = itemData.GetDecimalValue(column); break; + case SbmCommodity.Column.RetailPrice: commodity.RetailPrice = itemData.GetDecimalValue(column); break; + case SbmCommodity.Column.RetailPricePlanned: commodity.RetailPricePlanned = itemData.GetDecimalValue(column); break; + case SbmCommodity.Column.UomIdSale: commodity.UomIdSale = itemData.GetIdValue(column); break; + case SbmCommodity.Column.CarriageCostIndicative: commodity.CarriageCostIndicative = itemData.GetDecimalValue(column); break; + case SbmCommodity.Column.MinOrderQty: commodity.MinOrderQty = itemData.GetDecimalValue(column); break; + case SbmCommodity.Column.PackQtySale: commodity.PackQtySale = itemData.GetDecimalValue(column); break; + case SbmCommodity.Column.TaxCodeId: commodity.TaxCodeId = itemData.GetIdValue(column); break; + case SbmCommodity.Column.LastOrderDate: commodity.LastOrderDate = itemData.GetDateTimeValue(column); break; + case SbmCommodity.Column.LastOrderQty: commodity.LastOrderQty = itemData.GetDecimalValue(column); break; + // Stock. + case SbmCommodity.Column.QtyInStock: commodity.QtyInStock = itemData.GetDecimalValue(column); break; + case SbmCommodity.Column.QtyAllocated: commodity.QtyAllocated = itemData.GetDecimalValue(column); break; + case SbmCommodity.Column.FreeStock: commodity.FreeStock = itemData.GetDecimalValue(column); break; + case SbmCommodity.Column.StockTakeDate: commodity.StockTakeDate = itemData.GetDateTimeValue(column); break; + case SbmCommodity.Column.StockTakeQty: commodity.StockTakeQty = itemData.GetDecimalValue(column); break; + // Projected sales. + case SbmCommodity.Column.CommodityIdSalesProj: commodity.CommodityIdSalesProj = itemData.GetIdValue(column); break; + case SbmCommodity.Column.SalesProj_Annual: commodity.SalesProjAnnual = itemData.GetDecimalValue(column); break; + case SbmCommodity.Column.SalesProjMonth01: commodity.SalesProjMonth01 = itemData.GetDecimalValue(column); break; + case SbmCommodity.Column.SalesProjMonth02: commodity.SalesProjMonth02 = itemData.GetDecimalValue(column); break; + case SbmCommodity.Column.SalesProjMonth03: commodity.SalesProjMonth03 = itemData.GetDecimalValue(column); break; + case SbmCommodity.Column.SalesProjMonth04: commodity.SalesProjMonth04 = itemData.GetDecimalValue(column); break; + case SbmCommodity.Column.SalesProjMonth05: commodity.SalesProjMonth05 = itemData.GetDecimalValue(column); break; + case SbmCommodity.Column.SalesProjMonth06: commodity.SalesProjMonth06 = itemData.GetDecimalValue(column); break; + case SbmCommodity.Column.SalesProjMonth07: commodity.SalesProjMonth07 = itemData.GetDecimalValue(column); break; + case SbmCommodity.Column.SalesProjMonth08: commodity.SalesProjMonth08 = itemData.GetDecimalValue(column); break; + case SbmCommodity.Column.SalesProjMonth09: commodity.SalesProjMonth09 = itemData.GetDecimalValue(column); break; + case SbmCommodity.Column.SalesProjMonth10: commodity.SalesProjMonth10 = itemData.GetDecimalValue(column); break; + case SbmCommodity.Column.SalesProjMonth11: commodity.SalesProjMonth11 = itemData.GetDecimalValue(column); break; + case SbmCommodity.Column.SalesProjMonth12: commodity.SalesProjMonth12 = itemData.GetDecimalValue(column); break; + // Proposed sales - budget. + //case SbmCommodity.Column.SalesPropAnnual: commodity.SalesPropAnnual = itemData.GetDecimalValue(column); break; + //case SbmCommodity.Column.SalesPropMonth01: commodity.SalesPropMonth01 = itemData.GetDecimalValue(column); break; + //case SbmCommodity.Column.SalesPropMonth02: commodity.SalesPropMonth02 = itemData.GetDecimalValue(column); break; + //case SbmCommodity.Column.SalesPropMonth03: commodity.SalesPropMonth03 = itemData.GetDecimalValue(column); break; + //case SbmCommodity.Column.SalesPropMonth04: commodity.SalesPropMonth04 = itemData.GetDecimalValue(column); break; + //case SbmCommodity.Column.SalesPropMonth05: commodity.SalesPropMonth05 = itemData.GetDecimalValue(column); break; + //case SbmCommodity.Column.SalesPropMonth06: commodity.SalesPropMonth06 = itemData.GetDecimalValue(column); break; + //case SbmCommodity.Column.SalesPropMonth07: commodity.SalesPropMonth07 = itemData.GetDecimalValue(column); break; + //case SbmCommodity.Column.SalesPropMonth08: commodity.SalesPropMonth08 = itemData.GetDecimalValue(column); break; + //case SbmCommodity.Column.SalesPropMonth09: commodity.SalesPropMonth09 = itemData.GetDecimalValue(column); break; + //case SbmCommodity.Column.SalesPropMonth10: commodity.SalesPropMonth10 = itemData.GetDecimalValue(column); break; + //case SbmCommodity.Column.SalesPropMonth11: commodity.SalesPropMonth11 = itemData.GetDecimalValue(column); break; + //case SbmCommodity.Column.SalesPropMonth12: commodity.SalesPropMonth12 = itemData.GetDecimalValue(column); break; + case SbmCommodity.Column.Notes: commodity.Notes = value; break; + case SbmCommodity.Column.Status: commodity.Status = SacsSystem.GetStatusForCode(value); break; + } + } + commodities.Add(commodity); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " Commodities: " + commodities.Count); + return commodities; + } + + + //------------------------------------------------------------------- + // Commodity query execution. + public override DbResultSet ExecuteCommodityQuery (List columns, SbmCommodity.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecuteCommodityQuery_Mobile (List commodityColumns, SbmCommodity.Params prmCommodity, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SbmCommodity.Column column in commodityColumns) + columns.Add(column.ToString()); + + SbmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetCommodityRequestConfig(SbmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetCommodityQueryFilter_Mobile(prmCommodity), columns, this.GetSortColumns_Mobile(prmCommodity), taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SbmWebServiceRequest.Config GetCommodityRequestConfig (SbmWebServiceRequest.RequestType requestType, bool debug = false) + { + SbmWebServiceRequest.Config configRequest = new SbmWebServiceRequest.Config(); + configRequest.DataType = SbmWebServiceRequest.DataType.Commodity; + configRequest.RequestType = requestType; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} \ No newline at end of file diff --git a/SaBusMgrMobCore/Mobile/Core/Mgr/SbmCommodityMgr_Mobile-CommodityCustomers.cs b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmCommodityMgr_Mobile-CommodityCustomers.cs new file mode 100644 index 0000000..dd348b9 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmCommodityMgr_Mobile-CommodityCustomers.cs @@ -0,0 +1,275 @@ +using Sarand.Core.App; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Dbas.Base; +using Sarand.Core.Tasks; +using Sarand.Core.Xml; +using Sarand.BusinessMgr.Core.Bus; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using System.Xml.Linq; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Mobile.Core.Bus; +using Sarand.BusinessMgr.Core.WebService; + +namespace Sarand.BusinessMgr.Mobile.Core.Mgr +{ + //======================================================================= + partial class SbmCommodityMgr_Mobile + { + //******************************************************************* + // C o m m o d i t y C u s t o m e r + //******************************************************************* + // Create CommodityCustomer. + public override SbmCommodityCustomer CreateCommodityCustomer (SysId commodityId, SysId assocIdCustomer) + { + ClearErrorState(); + return new SbmCommodityCustomer_Mobile(UserContext, commodityId, assocIdCustomer, 0); + } + + //------------------------------------------------------------------- + // Get CommodityCustomer. + public override SbmCommodityCustomer GetCommodityCustomer (SbmCommodityCustomer.Params prmCommodityCustomer) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate CommodityCustomer. + public override bool IsValidCommodityCustomerData (SbmCommodityCustomer.Data data, SbmCommodityCustomer.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidCommodityCustomerData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert CommodityCustomer. + public override bool InsertCommodityCustomer (SbmCommodityCustomer commodityCustomer, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidCommodityCustomer(commodityCustomer)) return false; + if (SysId.IsValid(commodityCustomer.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update CommodityCustomer. + public override bool UpdateCommodityCustomer (SbmCommodityCustomer commodityCustomer, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidCommodityCustomer(commodityCustomer)) return false; + if (!SysId.IsValid(commodityCustomer.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete CommodityCustomer. + public override bool CommodityCustomerCanBeDeleted (SbmCommodityCustomer commodityCustomer) + { + ClearErrorState(); + if (!base.CommodityCustomerCanBeDeleted(commodityCustomer)) return false; + return true; + } + public override bool DeleteCommodityCustomer (SbmCommodityCustomer commodityCustomer, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!CommodityCustomerCanBeDeleted(commodityCustomer)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement commodityElement, SbmCommodityCustomer commodityCustomer, DbUpdateInfo dbUpdateInfo) + { + commodityElement.AppendElement(nameof(commodityCustomer.CommodityId), SysId.ToString(commodityCustomer.CommodityId)); + commodityElement.AppendElement(nameof(commodityCustomer.AssocIdCustomer), SysId.ToString(commodityCustomer.AssocIdCustomer)); + commodityElement.AppendElement(nameof(commodityCustomer.ProductCode), commodityCustomer.ProductCode); + commodityElement.AppendElement(nameof(commodityCustomer.AmountRetail), commodityCustomer.AmountRetail.ToString("N3")); + commodityElement.AppendElement(nameof(commodityCustomer.CurrencyIdRetail), SysId.ToString(commodityCustomer.CurrencyIdRetail)); + commodityElement.AppendElement(nameof(commodityCustomer.PromotionCode), commodityCustomer.PromotionCode); + commodityElement.AppendElement(nameof(commodityCustomer.Notes), commodityCustomer.Notes); + commodityElement.AppendElement(nameof(commodityCustomer.Status), SacsSystem.GetStatusCode(commodityCustomer.Status)); + commodityElement.AppendElement(nameof(commodityCustomer.Flags), commodityCustomer.Flags.ToString()); + if (!SysId.IsValid(commodityCustomer.Id)) + { + commodityElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + commodityElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + commodityElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + commodityElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + commodityElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + commodityElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement commodityElement, SbmCommodityCustomer commodityCustomer) + { + commodityCustomer.Id = new SysId(StringUtil.ToInt(commodityElement.GetChildText("Id"))); + commodityCustomer.CommodityId = new SysId(StringUtil.ToInt(commodityElement.GetChildText(nameof(commodityCustomer.CommodityId)))); + commodityCustomer.AssocIdCustomer = new SysId(StringUtil.ToInt(commodityElement.GetChildText(nameof(commodityCustomer.AssocIdCustomer)))); + commodityCustomer.ProductCode = commodityElement.GetChildText(nameof(commodityCustomer.ProductCode)); + commodityCustomer.AmountRetail = StringUtil.ToDecimal(commodityElement.GetChildText(nameof(commodityCustomer.AmountRetail))); + commodityCustomer.CurrencyIdRetail = new SysId(StringUtil.ToInt(commodityElement.GetChildText(nameof(commodityCustomer.CurrencyIdRetail)))); + commodityCustomer.PromotionCode = commodityElement.GetChildText(nameof(commodityCustomer.PromotionCode)); + commodityCustomer.Notes = commodityElement.GetChildText(nameof(commodityCustomer.Notes)); + commodityCustomer.Status = SacsSystem.GetStatusForCode(commodityElement.GetChildText(nameof(commodityCustomer.Status))); + commodityCustomer.SetCreateStamp(DateUtil.ParseXmlDateTime(commodityElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(commodityElement.GetChildText("CreateBy"))), commodityElement.GetChildText("CreateHost")); + commodityCustomer.SetUpdateStamp(DateUtil.ParseXmlDateTime(commodityElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(commodityElement.GetChildText("UpdateBy"))), commodityElement.GetChildText("UpdateHost")); + commodityCustomer.AcceptChanges(); + } + + //------------------------------------------------------------------- + // CommodityCustomer column definitions. + public override ColumnDfn GetCommodityCustomerColumnDfn (SbmCommodityCustomer.Column columnId, string caption = "", int width = 0) + { + ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width); + if (!String.IsNullOrEmpty(caption)) + columnDfn.Caption = caption; + if (width > 0) + columnDfn.Width = width; + columnDfn.DataName = columnId.ToString(); + return columnDfn; + } + + //------------------------------------------------------------------- + // CommodityCustomer query filter. + public override List GetCommodityCustomerQueryFilter (SbmCommodityCustomer.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetCommodityCustomerQueryFilter_Mobile (SbmCommodityCustomer.Params prm) + { + Dictionary filter = new Dictionary(); + + // CommodityCustomer Id. + if (prm.IncludedIds.Count > 0) filter.Add(nameof(prm.IncludedIds), prm.IncludedIds.Concat(",")); + if (prm.ExcludedIds.Count > 0) filter.Add(nameof(prm.ExcludedIds), prm.ExcludedIds.Concat(",")); + + // Commodity Id. + if (SysId.IsValid(prm.CommodityId)) filter.Add(nameof(prm.CommodityId), SysId.ToString(prm.CommodityId)); + + // Assoc Id Customer. + if (SysId.IsValid(prm.AssocIdCustomer)) filter.Add(nameof(prm.AssocIdCustomer), SysId.ToString(prm.AssocIdCustomer)); + + // Commodity. + if (!StringUtil.IsEmpty(prm.CommodityPartial)) filter.Add(nameof(prm.CommodityPartial), prm.CommodityPartial); + + // Customer. + if (!StringUtil.IsEmpty(prm.CustomerPartial)) filter.Add(nameof(prm.CustomerPartial), prm.CustomerPartial); + + // Product code. + if (!StringUtil.IsEmpty(prm.ProductCode)) filter.Add(nameof(prm.ProductCode), prm.ProductCode); + if (!StringUtil.IsEmpty(prm.ProductCodePartial)) filter.Add(nameof(prm.ProductCodePartial), prm.ProductCodePartial); + + // Status. + filter.Add(nameof(prm.StatusCat), prm.StatusCat.ToString()); + + // Paging. + if (prm.ResultsPaging.Paged) + { + filter.Add(nameof(prm.ResultsPaging.PageNo), prm.ResultsPaging.PageNo.ToString()); + filter.Add(nameof(prm.ResultsPaging.PageLength), prm.ResultsPaging.PageLength.ToString()); + } + + return filter; + } + // CommodityCustomer sort columns. + public List GetCommodityCustomerSortColumns (SbmCommodityCustomer.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // CommodityCustomer count. + public override long GetCommodityCustomerCount (SbmCommodityCustomer.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // CommodityCustomer list. + public override List GetCommodityCustomerList (SbmCommodityCustomer.Params prm) + { + List commodityCustomers = new List(); + throw new NotImplementedException(); + } + public async Task> GetCommodityCustomerList_Mobile (SbmCommodityCustomer.Params prmCommodityCustomer, SacsTaskData taskData) + { + ClearErrorState(); + List commodityCustomers = new List(); + String fn = GetType().Name + ".GetCommodityCustomerList_Mobile"; + + // CommodityCustomer columns. + List columns = new List(EnumUtil.GetValues()); + + List itemDataList = await ExecuteCommodityCustomerQuery_Mobile(columns, prmCommodityCustomer, taskData); + foreach (SbmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId commodityId = itemData.GetIdValue(SbmCommodityCustomer.Column.Commodity_Id); + SysId assocIdCustomer = itemData.GetIdValue(SbmCommodityCustomer.Column.AssocIdCustomer); + ushort flags = (ushort)itemData.GetIntValue(SbmCommodityCustomer.Column.Flag); + // Create item. + SbmCommodityCustomer_Mobile commodityCustomer = new SbmCommodityCustomer_Mobile(UserContext, commodityId, assocIdCustomer, flags); + // Populate item properties. + foreach (SbmCommodityCustomer.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + //case SbmCommodityCustomer.Column.CommodityId: commodityCustomer.CommodityId = itemData.GetIdValue(column); break; + case SbmCommodityCustomer.Column.AssocIdCustomer: commodityCustomer.AssocIdCustomer = itemData.GetIdValue(column); break; + case SbmCommodityCustomer.Column.ProductCode: commodityCustomer.ProductCode = value; break; + case SbmCommodityCustomer.Column.AmountRetail: commodityCustomer.AmountRetail = itemData.GetDecimalValue(column); break; + case SbmCommodityCustomer.Column.CurrencyIdRetail: commodityCustomer.CurrencyIdRetail = itemData.GetIdValue(column); break; + case SbmCommodityCustomer.Column.PromotionCode: commodityCustomer.PromotionCode = value; break; + case SbmCommodityCustomer.Column.Notes: commodityCustomer.Notes = value; break; + case SbmCommodityCustomer.Column.Status: commodityCustomer.Status = SacsSystem.GetStatusForCode(value); break; + } + } + commodityCustomers.Add(commodityCustomer); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " Customers: " + commodityCustomers.Count); + return commodityCustomers; + } + + + //------------------------------------------------------------------- + // CommodityCustomer query execution. + public override DbResultSet ExecuteCommodityCustomerQuery (List columns, SbmCommodityCustomer.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecuteCommodityCustomerQuery_Mobile (List commodityColumns, SbmCommodityCustomer.Params prmCommodityCustomer, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SbmCommodityCustomer.Column column in commodityColumns) + columns.Add(column.ToString()); + + SbmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetCommodityCustomerRequestConfig(SbmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetCommodityCustomerQueryFilter_Mobile(prmCommodityCustomer), columns, this.GetSortColumns_Mobile(prmCommodityCustomer), taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SbmWebServiceRequest.Config GetCommodityCustomerRequestConfig (SbmWebServiceRequest.RequestType requestType, bool debug = false) + { + SbmWebServiceRequest.Config configRequest = new SbmWebServiceRequest.Config(); + configRequest.DataType = SbmWebServiceRequest.DataType.CommodityCustomer; + configRequest.RequestType = requestType; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Mgr/SbmCommodityMgr_Mobile-CommoditySuppliers.cs b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmCommodityMgr_Mobile-CommoditySuppliers.cs new file mode 100644 index 0000000..64bee92 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmCommodityMgr_Mobile-CommoditySuppliers.cs @@ -0,0 +1,278 @@ +using Sarand.Core.App; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Data; +using Sarand.Core.Dbas.Base; +using Sarand.Core.Tasks; +using Sarand.Core.Xml; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using System.Xml.Linq; +using Sarand.BusinessMgr.Mobile.Core.Bus; +using Sarand.BusinessMgr.Core.WebService; + +namespace Sarand.BusinessMgr.Mobile.Core.Mgr +{ + //======================================================================= + partial class SbmCommodityMgr_Mobile + { + //******************************************************************* + // C o m m o d i t y S u p p l i e r s + //******************************************************************* + // Create CommoditySupplier. + public override SbmCommoditySupplier CreateCommoditySupplier (SysId commoditySupplierId, SysId assocIdSupplier) + { + ClearErrorState(); + return new SbmCommoditySupplier_Mobile(UserContext, commoditySupplierId, assocIdSupplier, 0); + } + + //------------------------------------------------------------------- + // Get CommoditySupplier. + public override SbmCommoditySupplier GetCommoditySupplier (SbmCommoditySupplier.Params prmCommoditySupplier) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate CommoditySupplier. + public override bool IsValidCommoditySupplierData (SbmCommoditySupplier.Data data, SbmCommoditySupplier.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidCommoditySupplierData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert CommoditySupplier. + public override bool InsertCommoditySupplier (SbmCommoditySupplier commoditySupplier, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidCommoditySupplier(commoditySupplier)) return false; + if (SysId.IsValid(commoditySupplier.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update CommoditySupplier. + public override bool UpdateCommoditySupplier (SbmCommoditySupplier commoditySupplier, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidCommoditySupplier(commoditySupplier)) return false; + if (!SysId.IsValid(commoditySupplier.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete CommoditySupplier. + public override bool CommoditySupplierCanBeDeleted (SbmCommoditySupplier commoditySupplier) + { + ClearErrorState(); + if (!base.CommoditySupplierCanBeDeleted(commoditySupplier)) return false; + return true; + } + public override bool DeleteCommoditySupplier (SbmCommoditySupplier commoditySupplier, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!CommoditySupplierCanBeDeleted(commoditySupplier)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement commoditySupplierElement, SbmCommoditySupplier commoditySupplier, DbUpdateInfo dbUpdateInfo) + { + commoditySupplierElement.AppendElement(nameof(commoditySupplier.Id), SysId.ToString(commoditySupplier.Id)); + commoditySupplierElement.AppendElement(nameof(commoditySupplier.CommodityId), SysId.ToString(commoditySupplier.CommodityId)); + commoditySupplierElement.AppendElement(nameof(commoditySupplier.AssocIdSupplier), SysId.ToString(commoditySupplier.AssocIdSupplier)); + commoditySupplierElement.AppendElement(nameof(commoditySupplier.ProductCode), commoditySupplier.ProductCode); + commoditySupplierElement.AppendElement(nameof(commoditySupplier.AmountCost), commoditySupplier.AmountCost.ToString("N3")); + commoditySupplierElement.AppendElement(nameof(commoditySupplier.CurrencyIdCost), SysId.ToString(commoditySupplier.CurrencyIdCost)); + commoditySupplierElement.AppendElement(nameof(commoditySupplier.Notes), commoditySupplier.Notes); + commoditySupplierElement.AppendElement(nameof(commoditySupplier.Status), SacsSystem.GetStatusCode(commoditySupplier.Status)); + commoditySupplierElement.AppendElement(nameof(commoditySupplier.Flags), commoditySupplier.Flags.ToString()); + if (!SysId.IsValid(commoditySupplier.Id)) + { + commoditySupplierElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + commoditySupplierElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + commoditySupplierElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + commoditySupplierElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + commoditySupplierElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + commoditySupplierElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement commoditySupplierElement, SbmCommoditySupplier commoditySupplier) + { + commoditySupplier.Id = new SysId(StringUtil.ToInt(commoditySupplierElement.GetChildText("Id"))); + commoditySupplier.CommodityId = new SysId(StringUtil.ToInt(commoditySupplierElement.GetChildText(nameof(commoditySupplier.CommodityId)))); + commoditySupplier.AssocIdSupplier = new SysId(StringUtil.ToInt(commoditySupplierElement.GetChildText(nameof(commoditySupplier.AssocIdSupplier)))); + commoditySupplier.ProductCode = commoditySupplierElement.GetChildText(nameof(commoditySupplier.ProductCode)); + commoditySupplier.AmountCost = StringUtil.ToDecimal(commoditySupplierElement.GetChildText(nameof(commoditySupplier.AmountCost))); + commoditySupplier.CurrencyIdCost = new SysId(StringUtil.ToInt(commoditySupplierElement.GetChildText(nameof(commoditySupplier.CurrencyIdCost)))); + commoditySupplier.Notes = commoditySupplierElement.GetChildText(nameof(commoditySupplier.Notes)); + commoditySupplier.Status = SacsSystem.GetStatusForCode(commoditySupplierElement.GetChildText(nameof(commoditySupplier.Status))); + commoditySupplier.SetCreateStamp(DateUtil.ParseXmlDateTime(commoditySupplierElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(commoditySupplierElement.GetChildText("CreateBy"))), commoditySupplierElement.GetChildText("CreateHost")); + commoditySupplier.SetUpdateStamp(DateUtil.ParseXmlDateTime(commoditySupplierElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(commoditySupplierElement.GetChildText("UpdateBy"))), commoditySupplierElement.GetChildText("UpdateHost")); + commoditySupplier.AcceptChanges(); + } + + //------------------------------------------------------------------- + // CommoditySupplier column definitions. + public override ColumnDfn GetCommoditySupplierColumnDfn (SbmCommoditySupplier.Column columnId, string caption = "", int width = 0) + { + ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width); + if (!String.IsNullOrEmpty(caption)) + columnDfn.Caption = caption; + if (width > 0) + columnDfn.Width = width; + columnDfn.DataName = columnId.ToString(); + return columnDfn; + } + + //------------------------------------------------------------------- + // CommoditySupplier query filter. + public override List GetCommoditySupplierQueryFilter (SbmCommoditySupplier.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetCommoditySupplierQueryFilter_Mobile (SbmCommoditySupplier.Params prm) + { + Dictionary filter = new Dictionary(); + + // CommoditySupplier Id. + if (prm.IncludedIds.Count > 0) filter.Add(nameof(prm.IncludedIds), prm.IncludedIds.Concat(",")); + if (prm.ExcludedIds.Count > 0) filter.Add(nameof(prm.ExcludedIds), prm.ExcludedIds.Concat(",")); + + // Commodity Id. + if (SysId.IsValid(prm.CommodityId)) filter.Add(nameof(prm.CommodityId), SysId.ToString(prm.CommodityId)); + + // Assoc Id Supplier. + if (SysId.IsValid(prm.AssocIdSupplier)) filter.Add(nameof(prm.AssocIdSupplier), SysId.ToString(prm.AssocIdSupplier)); + + // Product code. + if (!StringUtil.IsEmpty(prm.ProductCode)) filter.Add(nameof(prm.ProductCode), prm.ProductCode); + + // Amount cost. + if (prm.AmountCost > 0) filter.Add(nameof(prm.AmountCost), prm.AmountCost.ToString("N3")); + + // Currency Id Cost. + if (SysId.IsValid(prm.CurrencyIdCost)) filter.Add(nameof(prm.CurrencyIdCost), SysId.ToString(prm.CurrencyIdCost)); + + // Restrict to active. + if (prm.RestrictToActive != false) filter.Add(nameof(prm.RestrictToActive), prm.RestrictToActive.ToString()); + + // Status. + filter.Add(nameof(prm.StatusCat), prm.StatusCat.ToString()); + + // Paging. + if (prm.ResultsPaging.Paged) + { + filter.Add(nameof(prm.ResultsPaging.PageNo), prm.ResultsPaging.PageNo.ToString()); + filter.Add(nameof(prm.ResultsPaging.PageLength), prm.ResultsPaging.PageLength.ToString()); + } + + return filter; + } + // CommoditySupplier sort columns. + public List GetCommoditySupplierSortColumns (SbmCommoditySupplier.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // CommoditySupplier count. + public override long GetCommoditySupplierCount (SbmCommoditySupplier.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // CommoditySupplier list. + public override List GetCommoditySupplierList (SbmCommoditySupplier.Params prm) + { + List companies = new List(); + throw new NotImplementedException(); + } + public async Task> GetCommoditySupplierList_Mobile (SbmCommoditySupplier.Params prmCommoditySupplier, SacsTaskData taskData) + { + ClearErrorState(); + List commoditySuppliers = new List(); + String fn = GetType().Name + ".GetCommoditySupplierList_Mobile"; + + // CommoditySupplier columns. + List columns = new List(EnumUtil.GetValues()); + + List itemDataList = await ExecuteCommoditySupplierQuery_Mobile(columns, prmCommoditySupplier, taskData); + foreach (SbmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId commodityId = itemData.GetIdValue(SbmCommodityCustomer.Column.Commodity_Id); + SysId assocIdSupplier = new SysId(); + SysId id = itemData.GetIdValue(SbmCommoditySupplier.Column.Id); + ushort flags = (ushort)itemData.GetIntValue(SbmCommoditySupplier.Column.Flag); + // Create item. + SbmCommoditySupplier_Mobile commoditySupplier = new SbmCommoditySupplier_Mobile(UserContext, commodityId, assocIdSupplier, flags); + // Populate item properties. + foreach (SbmCommoditySupplier.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + case SbmCommoditySupplier.Column.Commodity_Id: commoditySupplier.CommodityId = itemData.GetIdValue(column); break; + case SbmCommoditySupplier.Column.AssocIdSupplier: commoditySupplier.AssocIdSupplier = itemData.GetIdValue(column); break; + case SbmCommoditySupplier.Column.ProductCode: commoditySupplier.ProductCode = value; break; + case SbmCommoditySupplier.Column.CostAmount: commoditySupplier.AmountCost = itemData.GetDecimalValue(column); break; + case SbmCommoditySupplier.Column.CurrencyIdCost: commoditySupplier.CurrencyIdCost = itemData.GetIdValue(column); break; + case SbmCommoditySupplier.Column.Notes: commoditySupplier.Notes = value; break; + case SbmCommoditySupplier.Column.Status: commoditySupplier.Status = SacsSystem.GetStatusForCode(value); break; + } + } + commoditySuppliers.Add(commoditySupplier); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " CommoditySuppliers: " + commoditySuppliers.Count); + return commoditySuppliers; + } + + + //------------------------------------------------------------------- + // CommoditySupplier query execution. + public override DbResultSet ExecuteCommoditySupplierQuery (List columns, SbmCommoditySupplier.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecuteCommoditySupplierQuery_Mobile (List commoditySupplierColumns, SbmCommoditySupplier.Params prmCommoditySupplier, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SbmCommoditySupplier.Column column in commoditySupplierColumns) + columns.Add(column.ToString()); + + SbmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetCommoditySupplierRequestConfig(SbmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetCommoditySupplierQueryFilter_Mobile(prmCommoditySupplier), columns, this.GetSortColumns_Mobile(prmCommoditySupplier), taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SbmWebServiceRequest.Config GetCommoditySupplierRequestConfig (SbmWebServiceRequest.RequestType requestType, bool debug = false) + { + SbmWebServiceRequest.Config configRequest = new SbmWebServiceRequest.Config(); + configRequest.DataType = SbmWebServiceRequest.DataType.CommoditySupplier; + configRequest.RequestType = requestType; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} + diff --git a/SaBusMgrMobCore/Mobile/Core/Mgr/SbmCommodityMgr_Mobile-ContainerItems.cs b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmCommodityMgr_Mobile-ContainerItems.cs new file mode 100644 index 0000000..2a738ca --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmCommodityMgr_Mobile-ContainerItems.cs @@ -0,0 +1,294 @@ +using Sarand.Core.App; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Data; +using Sarand.Core.Dbas.Base; +using Sarand.Core.Tasks; +using Sarand.Core.Xml; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using System.Xml.Linq; +using Sarand.BusinessMgr.Mobile.Core.Bus; +using Sarand.BusinessMgr.Core.WebService; + +namespace Sarand.BusinessMgr.Mobile.Core.Mgr +{ + //======================================================================= + partial class SbmCommodityMgr_Mobile + { + public override bool PortfolioDatabaseIsValid => throw new NotImplementedException(); + + //******************************************************************* + // C o n t a i n e r I t e m s + //******************************************************************* + // Create ContainerItem. + public override SbmContainerItem CreateContainerItem (SysId containerId, Sbm.ItemType itemType, SysId itemId) + { + ClearErrorState(); + return new SbmContainerItem_Mobile(UserContext, containerId, itemType, itemId, 0); + } + + //------------------------------------------------------------------- + // Get ContainerItem. + public override SbmContainerItem GetContainerItem (SbmContainerItem.Params prmContainerItem) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate ContainerItem. + public override bool IsValidContainerItemData (SbmContainerItem.Data data, SbmContainerItem.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidContainerItemData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert ContainerItem. + public override bool InsertContainerItem (SbmContainerItem containerItem, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidContainerItem(containerItem)) return false; + if (SysId.IsValid(containerItem.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update ContainerItem. + public override bool UpdateContainerItem (SbmContainerItem containerItem, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidContainerItem(containerItem)) return false; + if (!SysId.IsValid(containerItem.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete ContainerItem. + public override bool ContainerItemCanBeDeleted (SbmContainerItem containerItem) + { + ClearErrorState(); + if (!base.ContainerItemCanBeDeleted(containerItem)) return false; + return true; + } + public override bool DeleteContainerItem (SbmContainerItem containerItem, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!ContainerItemCanBeDeleted(containerItem)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement containerItemElement, SbmContainerItem containerItem, DbUpdateInfo dbUpdateInfo) + { + containerItemElement.AppendElement(nameof(containerItem.Id), SysId.ToString(containerItem.Id)); + containerItemElement.AppendElement(nameof(containerItem.ContainerItemId), SysId.ToString(containerItem.ContainerItemId)); + containerItemElement.AppendElement(nameof(containerItem.ContainerId), SysId.ToString(containerItem.ContainerId)); + containerItemElement.AppendElement(nameof(containerItem.ItemType), containerItem.ItemType.ToString()); + containerItemElement.AppendElement(nameof(containerItem.ItemId), SysId.ToString(containerItem.ItemId)); + containerItemElement.AppendElement(nameof(containerItem.ItemSeq), containerItem.ItemSeq.ToString("N3")); + containerItemElement.AppendElement(nameof(containerItem.ItemTypeSource), containerItem.ItemTypeSource.ToString()); + containerItemElement.AppendElement(nameof(containerItem.ItemIdSource), SysId.ToString(containerItem.ItemIdSource)); + containerItemElement.AppendElement(nameof(containerItem.Quantity), containerItem.Quantity.ToString("N3")); + containerItemElement.AppendElement(nameof(containerItem.Notes), containerItem.Notes); + containerItemElement.AppendElement(nameof(containerItem.Status), SacsSystem.GetStatusCode(containerItem.Status)); + containerItemElement.AppendElement(nameof(containerItem.Flags), containerItem.Flags.ToString()); + if (!SysId.IsValid(containerItem.Id)) + { + containerItemElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + containerItemElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + containerItemElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + containerItemElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + containerItemElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + containerItemElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement containerItemElement, SbmContainerItem containerItem) + { + containerItem.Id = new SysId(StringUtil.ToInt(containerItemElement.GetChildText("Id"))); + containerItem.ContainerItemId = new SysId(StringUtil.ToInt(containerItemElement.GetChildText(nameof(containerItem.ContainerItemId)))); + containerItem.ContainerId = new SysId(StringUtil.ToInt(containerItemElement.GetChildText(nameof(containerItem.ContainerId)))); + containerItem.ItemType = EnumUtil.ParseEnum(containerItemElement.GetChildText(nameof(containerItem.ItemType)), Sbm.ItemType.Unknown); + containerItem.ItemId = new SysId(StringUtil.ToInt(containerItemElement.GetChildText(nameof(containerItem.ItemId)))); + containerItem.ItemSeq = StringUtil.ToShort(containerItemElement.GetChildText(nameof(containerItem.ItemSeq))); + containerItem.ItemTypeSource = EnumUtil.ParseEnum(containerItemElement.GetChildText(nameof(containerItem.ItemTypeSource)), Sbm.ItemType.Unknown); + containerItem.ItemIdSource = new SysId(StringUtil.ToInt(containerItemElement.GetChildText(nameof(containerItem.ItemIdSource)))); + containerItem.Quantity = StringUtil.ToDecimal(containerItemElement.GetChildText(nameof(containerItem.Quantity))); + containerItem.Notes = containerItemElement.GetChildText(nameof(containerItem.Notes)); + containerItem.Status = SacsSystem.GetStatusForCode(containerItemElement.GetChildText(nameof(containerItem.Status))); + containerItem.SetCreateStamp(DateUtil.ParseXmlDateTime(containerItemElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(containerItemElement.GetChildText("CreateBy"))), containerItemElement.GetChildText("CreateHost")); + containerItem.SetUpdateStamp(DateUtil.ParseXmlDateTime(containerItemElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(containerItemElement.GetChildText("UpdateBy"))), containerItemElement.GetChildText("UpdateHost")); + containerItem.AcceptChanges(); + } + + //------------------------------------------------------------------- + // ContainerItem column definitions. + public override ColumnDfn GetContainerItemColumnDfn (SbmContainerItem.Column columnId, string caption = "", int width = 0) + { + ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width); + if (!String.IsNullOrEmpty(caption)) + columnDfn.Caption = caption; + if (width > 0) + columnDfn.Width = width; + columnDfn.DataName = columnId.ToString(); + return columnDfn; + } + + //------------------------------------------------------------------- + // ContainerItem query filter. + public override List GetContainerItemQueryFilter (SbmContainerItem.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetContainerItemQueryFilter_Mobile (SbmContainerItem.Params prm) + { + Dictionary filter = new Dictionary(); + + // ContainerItem Id. + if (prm.IncludedIds.Count > 0) filter.Add(nameof(prm.IncludedIds), prm.IncludedIds.Concat(",")); + if (prm.ExcludedIds.Count > 0) filter.Add(nameof(prm.ExcludedIds), prm.ExcludedIds.Concat(",")); + + // Item properties. + if (SysId.IsValid(prm.ContainerId)) filter.Add(nameof(prm.ContainerId), SysId.ToString(prm.ContainerId)); + if (prm.ItemSeq > 0) filter.Add(nameof(prm.ItemSeq), prm.ItemSeq.ToString("N3")); + if ((int)prm.ItemType > 0) filter.Add(nameof(prm.ItemType), ((int)prm.ItemType).ToString()); + if (prm.ItemIds.Count > 0) filter.Add(nameof(prm.ItemIds), prm.ItemIds.Concat(",")); + if ((int)prm.ItemTypeSource > 0) filter.Add(nameof(prm.ItemTypeSource), ((int)prm.ItemTypeSource).ToString()); + if (prm.ItemIdsSource.Count > 0) filter.Add(nameof(prm.ItemIdsSource), prm.ItemIdsSource.Concat(",")); + if (prm.Quantity > 0) filter.Add(nameof(prm.Quantity), prm.Quantity.ToString("N3")); + + // Container. + if (!StringUtil.IsEmpty(prm.TableAlias_Container)) filter.Add(nameof(prm.TableAlias_Container), prm.TableAlias_Container); + if ((int)prm.ContainerCategory > 0) filter.Add(nameof(prm.ContainerCategory), ((int)prm.ContainerCategory).ToString()); + if ((int)prm.ContainerType > 0) filter.Add(nameof(prm.ContainerType), ((int)prm.ContainerType).ToString()); + if (!StringUtil.IsEmpty(prm.ContainerReference)) filter.Add(nameof(prm.ContainerReference), prm.ContainerReference); + if (!StringUtil.IsEmpty(prm.ContainerTagId)) filter.Add(nameof(prm.ContainerTagId), prm.ContainerTagId); + if (!StringUtil.IsEmpty(prm.ContainerReferencePartial)) filter.Add(nameof(prm.ContainerReferencePartial), prm.ContainerReferencePartial); + if (!StringUtil.IsEmpty(prm.ContainerTagIdPartial)) filter.Add(nameof(prm.ContainerTagIdPartial), prm.ContainerTagIdPartial); + if (!StringUtil.IsEmpty(prm.ProductCode)) filter.Add(nameof(prm.ProductCode), prm.ProductCode); + if (!StringUtil.IsEmpty(prm.ProductCodePartial)) filter.Add(nameof(prm.ProductCodePartial), prm.ProductCodePartial); + if (DateUtil.IsValid(prm.ContainerExpectedFrom)) filter.Add(nameof(prm.ContainerExpectedFrom), DateUtil.FormatXmlDate(prm.ContainerExpectedFrom)); + if (DateUtil.IsValid(prm.ContainerExpectedTo)) filter.Add(nameof(prm.ContainerExpectedTo), DateUtil.FormatXmlDate(prm.ContainerExpectedTo)); + if ((int)prm.ContainerStatus > 0) filter.Add(nameof(prm.ContainerStatus), ((int)prm.ContainerStatus).ToString()); + if (prm.ContainerHasItems != false) filter.Add(nameof(prm.ContainerHasItems), prm.ContainerHasItems.ToString()); + + // Status. + filter.Add(nameof(prm.StatusCat), prm.StatusCat.ToString()); + + // Paging. + if (prm.ResultsPaging.Paged) + { + filter.Add(nameof(prm.ResultsPaging.PageNo), prm.ResultsPaging.PageNo.ToString()); + filter.Add(nameof(prm.ResultsPaging.PageLength), prm.ResultsPaging.PageLength.ToString()); + } + + return filter; + } + // ContainerItem sort columns. + public List GetContainerItemSortColumns (SbmContainerItem.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // ContainerItem count. + public override long GetContainerItemCount (SbmContainerItem.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // ContainerItem list. + public override List GetContainerItemList (SbmContainerItem.Params prm) + { + List containerItems = new List(); + throw new NotImplementedException(); + } + public async Task> GetContainerItemList_Mobile (SbmContainerItem.Params prmContainerItem, SacsTaskData taskData) + { + ClearErrorState(); + List containerItems = new List(); + String fn = GetType().Name + ".GetContainerItemList_Mobile"; + + // ContainerItem columns. + List columns = new List(EnumUtil.GetValues()); + + List itemDataList = await ExecuteContainerItemQuery_Mobile(columns, prmContainerItem, taskData); + foreach (SbmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId containerId = new SysId(); + Sbm.ItemType itemType = EnumUtil.ParseEnum(itemData.GetValue(SbmContainerItem.Column.ItemType), Sbm.ItemType.Unknown); + SysId itemId = itemData.GetIdValue(SbmContainerItem.Column.ItemId); + //ushort flags = (ushort)itemData.GetIntValue(SbmContainerItem.Column.Flag); + // Create item. + SbmContainerItem_Mobile containerItem = new SbmContainerItem_Mobile(UserContext, containerId, itemType, itemId, 0); + // Populate item properties. + foreach (SbmContainerItem.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + //case SbmContainerItem.Column.ContainerItemId: containerItem.ContainerItemId = itemData.GetIdValue(column); break; + //case SbmContainerItem.Column.ContainerId: containerItem.ContainerId = itemData.GetIdValue(column); break; + case SbmContainerItem.Column.ItemType: containerItem.ItemType = EnumUtil.ParseEnum(itemData.GetValue(column), Sbm.ItemType.Unknown); break; + case SbmContainerItem.Column.ItemId: containerItem.ItemId = itemData.GetIdValue(column); break; + case SbmContainerItem.Column.ItemSeq: containerItem.ItemSeq = StringUtil.ToShort(itemData.GetDecimalValue(column)); break; + case SbmContainerItem.Column.SourceItemType: containerItem.ItemTypeSource = EnumUtil.ParseEnum(itemData.GetValue(column), Sbm.ItemType.Unknown); break; + case SbmContainerItem.Column.SourceItemId: containerItem.ItemIdSource = itemData.GetIdValue(column); break; + case SbmContainerItem.Column.Quantity: containerItem.Quantity = itemData.GetDecimalValue(column); break; + case SbmContainerItem.Column.Notes: containerItem.Notes = value; break; + case SbmContainerItem.Column.Status: containerItem.Status = SacsSystem.GetStatusForCode(value); break; + } + } + containerItems.Add(containerItem); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " ContainerItems: " + containerItems.Count); + return containerItems; + } + + + //------------------------------------------------------------------- + // ContainerItem query execution. + public override DbResultSet ExecuteContainerItemQuery (List columns, SbmContainerItem.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecuteContainerItemQuery_Mobile (List containerItemColumns, SbmContainerItem.Params prmContainerItem, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SbmContainerItem.Column column in containerItemColumns) + columns.Add(column.ToString()); + + SbmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetContainerItemRequestConfig(SbmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetContainerItemQueryFilter_Mobile(prmContainerItem), columns, this.GetSortColumns_Mobile(prmContainerItem), taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SbmWebServiceRequest.Config GetContainerItemRequestConfig (SbmWebServiceRequest.RequestType requestType, bool debug = false) + { + SbmWebServiceRequest.Config configRequest = new SbmWebServiceRequest.Config(); + configRequest.DataType = SbmWebServiceRequest.DataType.ContainerItem; + configRequest.RequestType = requestType; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} \ No newline at end of file diff --git a/SaBusMgrMobCore/Mobile/Core/Mgr/SbmCommodityMgr_Mobile-Containers.cs b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmCommodityMgr_Mobile-Containers.cs new file mode 100644 index 0000000..576b377 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmCommodityMgr_Mobile-Containers.cs @@ -0,0 +1,312 @@ +using Sarand.Core.App; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Data; +using Sarand.Core.Dbas.Base; +using Sarand.Core.Tasks; +using Sarand.Core.Xml; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using System.Xml.Linq; +using Sarand.BusinessMgr.Mobile.Core.Bus; +using Sarand.BusinessMgr.Core.WebService; + +namespace Sarand.BusinessMgr.Mobile.Core.Mgr +{ + //======================================================================= + partial class SbmCommodityMgr_Mobile + { + //******************************************************************* + // C o n t a i n e r s + //******************************************************************* + // Create Container. + public override SbmContainer CreateContainer (Sbm.ContainerCategory containerCategory, Sbm.ContainerType containerType) + { + ClearErrorState(); + return new SbmContainer_Mobile(UserContext, null, null, containerCategory, containerType, 0); + } + + //------------------------------------------------------------------- + // Get Container. + public override SbmContainer GetContainer (SbmContainer.Params prmContainer) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate Container. + public override bool IsValidContainerData (SbmContainer.Data data, SbmContainer.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidContainerData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert Container. + public override bool InsertContainer (SbmContainer container, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidContainer(container)) return false; + if (SysId.IsValid(container.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update Container. + public override bool UpdateContainer (SbmContainer container, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidContainer(container)) return false; + if (!SysId.IsValid(container.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete Container. + public override bool ContainerCanBeDeleted (SbmContainer container) + { + ClearErrorState(); + if (!base.ContainerCanBeDeleted(container)) return false; + return true; + } + public override bool DeleteContainer (SbmContainer container, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!ContainerCanBeDeleted(container)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement containerElement, SbmContainer container, DbUpdateInfo dbUpdateInfo) + { + containerElement.AppendElement(nameof(container.Id), SysId.ToString(container.Id)); + containerElement.AppendElement(nameof(container.AffiliateIdOwner), SysId.ToString(container.AffiliateIdOwner)); + containerElement.AppendElement(nameof(container.ContainerCategory), container.ContainerCategory.ToString()); + containerElement.AppendElement(nameof(container.ContainerType), container.ContainerType.ToString()); + containerElement.AppendElement(nameof(container.Reference), container.Reference); + containerElement.AppendElement(nameof(container.DescBrief), container.DescBrief); + containerElement.AppendElement(nameof(container.TagId), container.TagId); + containerElement.AppendElement(nameof(container.AssIdSupplier), SysId.ToString(container.AssIdSupplier)); + containerElement.AppendElement(nameof(container.AssIdCustomer), SysId.ToString(container.AssIdCustomer)); + containerElement.AppendElement(nameof(container.Expected), DateUtil.FormatXmlDateTime(container.Expected)); + containerElement.AppendElement(nameof(container.Notes), container.Notes); + containerElement.AppendElement(nameof(container.Status), SacsSystem.GetStatusCode(container.Status)); + containerElement.AppendElement(nameof(container.Flags), container.Flags.ToString()); + if (!SysId.IsValid(container.Id)) + { + containerElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + containerElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + containerElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + containerElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + containerElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + containerElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement containerElement, SbmContainer container) + { + container.Id = new SysId(StringUtil.ToInt(containerElement.GetChildText(nameof(container.Id)))); + container.AffiliateIdOwner = new SysId(StringUtil.ToInt(containerElement.GetChildText(nameof(container.AffiliateIdOwner)))); + container.ContainerCategory = EnumUtil.ParseEnum(containerElement.GetChildText(nameof(container.ContainerCategory)), Sbm.ContainerCategory.Unknown); + container.ContainerType = EnumUtil.ParseEnum(containerElement.GetChildText(nameof(container.ContainerType)), Sbm.ContainerType.Unknown); + container.Reference = containerElement.GetChildText(nameof(container.Reference)); + container.DescBrief = containerElement.GetChildText(nameof(container.DescBrief)); + container.TagId = containerElement.GetChildText(nameof(container.TagId)); + container.AssIdSupplier = new SysId(StringUtil.ToInt(containerElement.GetChildText(nameof(container.AssIdSupplier)))); + container.AssIdCustomer = new SysId(StringUtil.ToInt(containerElement.GetChildText(nameof(container.AssIdCustomer)))); + container.Expected = DateUtil.ParseXmlDateTime(containerElement.GetChildText(nameof(container.Expected))); + container.Notes = containerElement.GetChildText(nameof(container.Notes)); + container.Status = SacsSystem.GetStatusForCode(containerElement.GetChildText(nameof(container.Status))); + container.SetCreateStamp(DateUtil.ParseXmlDateTime(containerElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(containerElement.GetChildText("CreateBy"))), containerElement.GetChildText("CreateHost")); + container.SetUpdateStamp(DateUtil.ParseXmlDateTime(containerElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(containerElement.GetChildText("UpdateBy"))), containerElement.GetChildText("UpdateHost")); + container.AcceptChanges(); + } + + //------------------------------------------------------------------- + // Container column definitions. + public override ColumnDfn GetContainerColumnDfn (SbmContainer.Column columnId, string caption = "", int width = 0) + { + ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width); + if (!String.IsNullOrEmpty(caption)) + columnDfn.Caption = caption; + if (width > 0) + columnDfn.Width = width; + columnDfn.DataName = columnId.ToString(); + return columnDfn; + } + + //------------------------------------------------------------------- + // Container query filter. + public override List GetContainerQueryFilter (SbmContainer.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetContainerQueryFilter_Mobile (SbmContainer.Params prm) + { + Dictionary filter = new Dictionary(); + + // Container Id. + if (prm.IncludedIds.Count > 0) filter.Add(nameof(prm.IncludedIds), prm.IncludedIds.Concat(",")); + if (prm.ExcludedIds.Count > 0) filter.Add(nameof(prm.ExcludedIds), prm.ExcludedIds.Concat(",")); + + // Container category. + if ((int)prm.ContainerCategory> 0) filter.Add(nameof(prm.ContainerCategory), ((int)prm.ContainerCategory).ToString()); + + // Container type. + if ((int)prm.ContainerType > 0) filter.Add(nameof(prm.ContainerType), ((int)prm.ContainerType).ToString()); + + // Reference. + if (!StringUtil.IsEmpty(prm.Reference)) filter.Add(nameof(prm.Reference), prm.Reference); + if (!StringUtil.IsEmpty(prm.ReferencePartial)) filter.Add(nameof(prm.ReferencePartial), prm.ReferencePartial); + + // Tag Id. + if (!StringUtil.IsEmpty(prm.TagId)) filter.Add(nameof(prm.TagId), prm.TagId); + if (!StringUtil.IsEmpty(prm.TagIdPartial)) filter.Add(nameof(prm.TagIdPartial), prm.TagIdPartial); + + // AssId supplier. + if (SysId.IsValid(prm.AssIdSupplier)) filter.Add(nameof(prm.AssIdSupplier), SysId.ToString(prm.AssIdSupplier)); + + // Supplier name. + if (!StringUtil.IsEmpty(prm.SupplierName)) filter.Add(nameof(prm.SupplierName), prm.SupplierName); + + // AssId customer. + if (SysId.IsValid(prm.AssIdCustomer)) filter.Add(nameof(prm.AssIdCustomer), SysId.ToString(prm.AssIdCustomer)); + + // Customer name. + if (!StringUtil.IsEmpty(prm.CustomerName)) filter.Add(nameof(prm.CustomerName), prm.CustomerName); + + // Product code. + if (!StringUtil.IsEmpty(prm.ProductCode)) filter.Add(nameof(prm.ProductCode), prm.ProductCode); + if (!StringUtil.IsEmpty(prm.ProductCodePartial)) filter.Add(nameof(prm.ProductCodePartial), prm.ProductCodePartial); + + // Expected. + if (DateUtil.IsValid(prm.ExpectedFrom)) filter.Add(nameof(prm.ExpectedFrom), DateUtil.FormatXmlDate(prm.ExpectedFrom)); + if (DateUtil.IsValid(prm.ExpectedTo)) filter.Add(nameof(prm.ExpectedTo), DateUtil.FormatXmlDate(prm.ExpectedTo)); + + // Has items. + if (prm.HasItems!= false) filter.Add(nameof(prm.HasItems), prm.HasItems.ToString()); + + // Status. + filter.Add(nameof(prm.ContainerStatus), prm.ContainerStatus.ToString()); + + // Status. + if ((int)prm.ContainerStatus > 0) filter.Add(nameof(prm.ContainerStatus), ((int)prm.ContainerStatus).ToString()); + + // Paging. + if (prm.ResultsPaging.Paged) + { + filter.Add(nameof(prm.ResultsPaging.PageNo), prm.ResultsPaging.PageNo.ToString()); + filter.Add(nameof(prm.ResultsPaging.PageLength), prm.ResultsPaging.PageLength.ToString()); + } + + return filter; + } + // Container sort columns. + public List GetContainerSortColumns (SbmContainer.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Container count. + public override long GetContainerCount (SbmContainer.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Container list. + public override List GetContainerList (SbmContainer.Params prm) + { + List containers = new List(); + throw new NotImplementedException(); + } + public async Task> GetContainerList_Mobile (SbmContainer.Params prmContainer, SacsTaskData taskData) + { + ClearErrorState(); + List containers = new List(); + String fn = GetType().Name + ".GetContainerList_Mobile"; + + // Container columns. + List columns = new List(EnumUtil.GetValues()); + + List itemDataList = await ExecuteContainerQuery_Mobile(columns, prmContainer, taskData); + foreach (SbmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId id = itemData.GetIdValue(SbmContainer.Column.Id); + SysId affiliateIdOwner = new SysId(); + //Sbm.ContainerCategory containerCategory = EnumUtil.ParseEnum(itemData.GetValue(SbmContainer.Column.ContainerCategory), Sbm.ContainerCategory.Unknown); + //Sbm.ContainerType containerType = EnumUtil.ParseEnum(itemData.GetValue(SbmContainer.Column.ContainerType), Sbm.ContainerType.Unknown); + ushort flags = (ushort)itemData.GetIntValue(SbmContainer.Column.Flags); + // Create item. + SbmContainer_Mobile container = new SbmContainer_Mobile(UserContext, id, affiliateIdOwner, Sbm.ContainerCategory.Unknown, Sbm.ContainerType.Unknown, flags); + // Populate item properties. + foreach (SbmContainer.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + //case SbmContainer.Column.AffiliateIdOwner: container.AffiliateIdOwner = itemData.GetIdValue(column); break; + //case SbmContainer.Column.ContainerCategory: container.ContainerCategory = EnumUtil.ParseEnum(itemData.GetValue(column), Sbm.ContainerCategory.Unknown); break; + //case SbmContainer.Column.ContainerType: container.ContainerType = EnumUtil.ParseEnum(itemData.GetValue(column), Sbm.ContainerType.Any); break; + case SbmContainer.Column.Reference: container.Reference = value; break; + case SbmContainer.Column.DescBrief: container.DescBrief = value; break; + case SbmContainer.Column.TagId: container.TagId = value; break; + case SbmContainer.Column.AssIdSupplier: container.AssIdSupplier = itemData.GetIdValue(column); break; + case SbmContainer.Column.AssIdCustomer: container.AssIdCustomer = itemData.GetIdValue(column); break; + case SbmContainer.Column.Expected: container.Expected = itemData.GetDateTimeValue(column); break; + case SbmContainer.Column.Notes: container.Notes = value; break; + case SbmContainer.Column.Status: container.Status = SacsSystem.GetStatusForCode(value); break; + } + } + containers.Add(container); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " Containers: " + containers.Count); + return containers; + } + + + //------------------------------------------------------------------- + // Container query execution. + public override DbResultSet ExecuteContainerQuery (List columns, SbmContainer.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecuteContainerQuery_Mobile (List containerColumns, SbmContainer.Params prmContainer, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SbmContainer.Column column in containerColumns) + columns.Add(column.ToString()); + + SbmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetContainerRequestConfig(SbmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetContainerQueryFilter_Mobile(prmContainer), columns, this.GetSortColumns_Mobile(prmContainer), taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SbmWebServiceRequest.Config GetContainerRequestConfig (SbmWebServiceRequest.RequestType requestType, bool debug = false) + { + SbmWebServiceRequest.Config configRequest = new SbmWebServiceRequest.Config(); + configRequest.DataType = SbmWebServiceRequest.DataType.Container; + configRequest.RequestType = requestType; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} \ No newline at end of file diff --git a/SaBusMgrMobCore/Mobile/Core/Mgr/SbmCommodityMgr_Mobile-PortfolioItem.cs b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmCommodityMgr_Mobile-PortfolioItem.cs new file mode 100644 index 0000000..8f5695b --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmCommodityMgr_Mobile-PortfolioItem.cs @@ -0,0 +1,294 @@ +using Sarand.Core.App; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Data; +using Sarand.Core.Dbas.Base; +using Sarand.Core.Tasks; +using Sarand.Core.Xml; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using System.Xml.Linq; +using Sarand.BusinessMgr.Mobile.Core.Bus; +using Sarand.BusinessMgr.Core.WebService; + +namespace Sarand.BusinessMgr.Mobile.Core.Mgr +{ + //======================================================================= + partial class SbmCommodityMgr_Mobile + { + //******************************************************************* + // C o n t a i n e r s + //******************************************************************* + // Create PortfolioItem. + public override SbmPortfolioItem CreatePortfolioItem (SysId affiliateIdOwner, Sbm.PortfolioItemType portfolioItemType) + { + ClearErrorState(); + return new SbmPortfolioItem_Mobile(UserContext, null, affiliateIdOwner, portfolioItemType, 0); + } + + //------------------------------------------------------------------- + // Get PortfolioItem. + public override SbmPortfolioItem GetPortfolioItem (SbmPortfolioItem.Params prmPortfolioItem) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate PortfolioItem. + public override bool IsValidPortfolioItemData (SbmPortfolioItem.Data data, SbmPortfolioItem.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidPortfolioItemData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert PortfolioItem. + public override bool InsertPortfolioItem (SbmPortfolioItem portfolioItem, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidPortfolioItem(portfolioItem)) return false; + if (SysId.IsValid(portfolioItem.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update PortfolioItem. + public override bool UpdatePortfolioItem (SbmPortfolioItem portfolioItem, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidPortfolioItem(portfolioItem)) return false; + if (!SysId.IsValid(portfolioItem.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete PortfolioItem. + public override bool PortfolioItemCanBeDeleted (SbmPortfolioItem portfolioItem) + { + ClearErrorState(); + if (!base.PortfolioItemCanBeDeleted(portfolioItem)) return false; + return true; + } + public override bool DeletePortfolioItem (SbmPortfolioItem portfolioItem, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!PortfolioItemCanBeDeleted(portfolioItem)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement portfolioItemElement, SbmPortfolioItem portfolioItem, DbUpdateInfo dbUpdateInfo) + { + portfolioItemElement.AppendElement(nameof(portfolioItem.Id), SysId.ToString(portfolioItem.Id)); + portfolioItemElement.AppendElement(nameof(portfolioItem.AffiliateIdOwner), SysId.ToString(portfolioItem.AffiliateIdOwner)); + portfolioItemElement.AppendElement(nameof(portfolioItem.ItemIdParent), SysId.ToString(portfolioItem.ItemIdParent)); + portfolioItemElement.AppendElement(nameof(portfolioItem.Sequence), portfolioItem.Sequence.ToString("N3")); + portfolioItemElement.AppendElement(nameof(portfolioItem.Type), portfolioItem.Type.ToString()); + portfolioItemElement.AppendElement(nameof(portfolioItem.ItemIdRef), SysId.ToString(portfolioItem.ItemIdRef)); + portfolioItemElement.AppendElement(nameof(portfolioItem.Code), portfolioItem.Code); + portfolioItemElement.AppendElement(nameof(portfolioItem.ShortCut), portfolioItem.ShortCut); + portfolioItemElement.AppendElement(nameof(portfolioItem.Caption), portfolioItem.Caption); + portfolioItemElement.AppendElement(nameof(portfolioItem.DescBrief), portfolioItem.DescBrief); + portfolioItemElement.AppendElement(nameof(portfolioItem.DescDetail), portfolioItem.DescDetail); + portfolioItemElement.AppendElement(nameof(portfolioItem.CommodityId), SysId.ToString(portfolioItem.CommodityId)); + portfolioItemElement.AppendElement(nameof(portfolioItem.Notes), portfolioItem.Notes); + portfolioItemElement.AppendElement(nameof(portfolioItem.Status), SacsSystem.GetStatusCode(portfolioItem.Status)); + portfolioItemElement.AppendElement(nameof(portfolioItem.Flags), portfolioItem.Flags.ToString()); + if (!SysId.IsValid(portfolioItem.Id)) + { + portfolioItemElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + portfolioItemElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + portfolioItemElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + portfolioItemElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + portfolioItemElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + portfolioItemElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement portfolioItemElement, SbmPortfolioItem portfolioItem) + { + portfolioItem.Id = new SysId(StringUtil.ToInt(portfolioItemElement.GetChildText(nameof(portfolioItem.Id)))); + //portfolioItem.AffiliateIdOwner = new SysId(StringUtil.ToInt(portfolioItemElement.GetChildText(nameof(portfolioItem.AffiliateIdOwner)))); + portfolioItem.ItemIdParent= new SysId(StringUtil.ToInt(portfolioItemElement.GetChildText(nameof(portfolioItem.ItemIdParent)))); + //portfolioItem.Sequence = StringUtil.to(portfolioItemElement.GetChildText(nameof(portfolioItem.Sequence))); + //portfolioItem.Type = EnumUtil.ParseEnum(portfolioItemElement.GetChildText(nameof(portfolioItem.Type)), Sbm.PortfolioItemType.Unknown); + portfolioItem.ItemIdRef = new SysId(StringUtil.ToInt(portfolioItemElement.GetChildText(nameof(portfolioItem.ItemIdRef)))); + portfolioItem.Code = portfolioItemElement.GetChildText(nameof(portfolioItem.Code)); + portfolioItem.ShortCut = portfolioItemElement.GetChildText(nameof(portfolioItem.ShortCut)); + portfolioItem.Caption = portfolioItemElement.GetChildText(nameof(portfolioItem.Caption)); + portfolioItem.DescBrief = portfolioItemElement.GetChildText(nameof(portfolioItem.DescBrief)); + portfolioItem.DescDetail = portfolioItemElement.GetChildText(nameof(portfolioItem.DescDetail)); + portfolioItem.CommodityId = new SysId(StringUtil.ToInt(portfolioItemElement.GetChildText(nameof(portfolioItem.CommodityId)))); + portfolioItem.Notes = portfolioItemElement.GetChildText(nameof(portfolioItem.Notes)); + portfolioItem.Status = SacsSystem.GetStatusForCode(portfolioItemElement.GetChildText(nameof(portfolioItem.Status))); + portfolioItem.SetCreateStamp(DateUtil.ParseXmlDateTime(portfolioItemElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(portfolioItemElement.GetChildText("CreateBy"))), portfolioItemElement.GetChildText("CreateHost")); + portfolioItem.SetUpdateStamp(DateUtil.ParseXmlDateTime(portfolioItemElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(portfolioItemElement.GetChildText("UpdateBy"))), portfolioItemElement.GetChildText("UpdateHost")); + portfolioItem.AcceptChanges(); + } + + //------------------------------------------------------------------- + // PortfolioItem column definitions. + public override ColumnDfn GetPortfolioItemColumnDfn (SbmPortfolioItem.Column columnId, string caption = "", int width = 0) + { + ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width); + if (!String.IsNullOrEmpty(caption)) + columnDfn.Caption = caption; + if (width > 0) + columnDfn.Width = width; + columnDfn.DataName = columnId.ToString(); + return columnDfn; + } + + //------------------------------------------------------------------- + // PortfolioItem query filter. + public override List GetPortfolioItemQueryFilter (SbmPortfolioItem.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetPortfolioItemQueryFilter_Mobile (SbmPortfolioItem.Params prm) + { + Dictionary filter = new Dictionary(); + + // PortfolioItem Id. + if (prm.IncludedIds.Count > 0) filter.Add(nameof(prm.IncludedIds), prm.IncludedIds.Concat(",")); + if (prm.ExcludedIds.Count > 0) filter.Add(nameof(prm.ExcludedIds), prm.ExcludedIds.Concat(",")); + + // Hierarchy. + if (SysId.IsValid(prm.ParentItemId)) filter.Add(nameof(prm.ParentItemId), SysId.ToString(prm.ParentItemId)); + if (SysId.IsValid(prm.AncestorItemId)) filter.Add(nameof(prm.AncestorItemId), SysId.ToString(prm.AncestorItemId)); + + // Commodity. + if (prm.IncludedCommodityIds.Count > 0) filter.Add(nameof(prm.IncludedCommodityIds), prm.IncludedCommodityIds.Concat(",")); + if (prm.ExcludedCommodityIds.Count > 0) filter.Add(nameof(prm.ExcludedCommodityIds), prm.ExcludedCommodityIds.Concat(",")); + if (!StringUtil.IsEmpty(prm.CommodityCodeFull)) filter.Add(nameof(prm.CommodityCodeFull), prm.CommodityCodeFull); + if (!StringUtil.IsEmpty(prm.CommodityCodePartial)) filter.Add(nameof(prm.CommodityCodePartial), prm.CommodityCodePartial); + + // Portfolio item. + if ((int)prm.PortfolioItemType > 0) filter.Add(nameof(prm.PortfolioItemType), ((int)prm.PortfolioItemType).ToString()); + //if (!StringUtil.IsEmpty(prm.Sequence)) filter.Add(nameof(prm.Sequence), prm.Sequence); + if (!StringUtil.IsEmpty(prm.CodeFull)) filter.Add(nameof(prm.CodeFull), prm.CodeFull); + if (!StringUtil.IsEmpty(prm.CodePartial)) filter.Add(nameof(prm.CodePartial), prm.CodePartial); + if (!StringUtil.IsEmpty(prm.ShortCut)) filter.Add(nameof(prm.ShortCut), prm.ShortCut); + + // Status. + if ((int)prm.StatusCat > 0) filter.Add(nameof(prm.StatusCat), ((int)prm.StatusCat).ToString()); + + // Paging. + if (prm.ResultsPaging.Paged) + { + filter.Add(nameof(prm.ResultsPaging.PageNo), prm.ResultsPaging.PageNo.ToString()); + filter.Add(nameof(prm.ResultsPaging.PageLength), prm.ResultsPaging.PageLength.ToString()); + } + + return filter; + } + // PortfolioItem sort columns. + public List GetPortfolioItemSortColumns (SbmPortfolioItem.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // PortfolioItem count. + public override long GetPortfolioItemCount (SbmPortfolioItem.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // PortfolioItem list. + public override List GetPortfolioItemList (SbmPortfolioItem.Params prm) + { + List portfolioItems = new List(); + throw new NotImplementedException(); + } + public async Task> GetPortfolioItemList_Mobile (SbmPortfolioItem.Params prmPortfolioItem, SacsTaskData taskData) + { + ClearErrorState(); + List portfolioItems = new List(); + String fn = GetType().Name + ".GetPortfolioItemList_Mobile"; + + // PortfolioItem columns. + List columns = new List(EnumUtil.GetValues()); + + List itemDataList = await ExecutePortfolioItemQuery_Mobile(columns, prmPortfolioItem, taskData); + foreach (SbmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId id = itemData.GetIdValue(SbmPortfolioItem.Column.Id); + SysId affiliateIdOwner = new SysId(); + Sbm.PortfolioItemType portfolioItemType = EnumUtil.ParseEnum(itemData.GetValue(SbmPortfolioItem.Column.Type), Sbm.PortfolioItemType.Unknown); + //ushort flags = (ushort)itemData.GetIntValue(SbmPortfolioItem.Column.Flags); + // Create item. + SbmPortfolioItem_Mobile portfolioItem = new SbmPortfolioItem_Mobile(UserContext, id, affiliateIdOwner, Sbm.PortfolioItemType.Unknown, 0); + // Populate item properties. + foreach (SbmPortfolioItem.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + //case SbmPortfolioItem.Column.AffiliateIdOwner: portfolioItem.AffiliateIdOwner = itemData.GetIdValue(column); break; + case SbmPortfolioItem.Column.ItemIdParent: portfolioItem.ItemIdParent = itemData.GetIdValue(column); break; + //case SbmPortfolioItem.Column.Sequence: portfolioItem.Sequence = itemData.GetDecimalValue(column); break; + //case SbmPortfolioItem.Column.Type: portfolioItem.Type = EnumUtil.ParseEnum(itemData.GetValue(column), Sbm.PortfolioItemType.Any); break; + case SbmPortfolioItem.Column.ItemIdRef: portfolioItem.ItemIdRef = itemData.GetIdValue(column); break; + case SbmPortfolioItem.Column.Code: portfolioItem.Code = value; break; + case SbmPortfolioItem.Column.ShortCut: portfolioItem.ShortCut = value; break; + case SbmPortfolioItem.Column.Caption: portfolioItem.Caption = value; break; + case SbmPortfolioItem.Column.DescBrief: portfolioItem.DescBrief = value; break; + case SbmPortfolioItem.Column.DescDetail: portfolioItem.DescDetail = value; break; + case SbmPortfolioItem.Column.CommodityId: portfolioItem.CommodityId = itemData.GetIdValue(column); break; + case SbmPortfolioItem.Column.Notes: portfolioItem.Notes = value; break; + case SbmPortfolioItem.Column.Status: portfolioItem.Status = SacsSystem.GetStatusForCode(value); break; + } + } + portfolioItems.Add(portfolioItem); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " PortfolioItems: " + portfolioItems.Count); + return portfolioItems; + } + + + //------------------------------------------------------------------- + // PortfolioItem query execution. + public override DbResultSet ExecutePortfolioItemQuery (List columns, SbmPortfolioItem.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecutePortfolioItemQuery_Mobile (List portfolioItemColumns, SbmPortfolioItem.Params prmPortfolioItem, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SbmPortfolioItem.Column column in portfolioItemColumns) + columns.Add(column.ToString()); + + SbmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetPortfolioItemRequestConfig(SbmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetPortfolioItemQueryFilter_Mobile(prmPortfolioItem), columns, this.GetSortColumns_Mobile(prmPortfolioItem), taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SbmWebServiceRequest.Config GetPortfolioItemRequestConfig (SbmWebServiceRequest.RequestType requestType, bool debug = false) + { + SbmWebServiceRequest.Config configRequest = new SbmWebServiceRequest.Config(); + configRequest.DataType = SbmWebServiceRequest.DataType.PortfolioItem; + configRequest.RequestType = requestType; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} \ No newline at end of file diff --git a/SaBusMgrMobCore/Mobile/Core/Mgr/SbmCommodityMgr_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmCommodityMgr_Mobile.cs new file mode 100644 index 0000000..d85be1f --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmCommodityMgr_Mobile.cs @@ -0,0 +1,217 @@ +using Sarand.BusinessMgr.Mobile.Core.App; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.BusinessMgr.Core.Mgr; +using Sarand.BusinessMgr.Core.WebService; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Dbas.Base; +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; + +namespace Sarand.BusinessMgr.Mobile.Core.Mgr +{ + //======================================================================= + public partial class SbmCommodityMgr_Mobile : SbmCommodityMgr, ISbmItemMgr_Mobile + { + //------------------------------------------------------------------- + // Definitions. + + //------------------------------------------------------------------- + // Data members. + private SbmWebServiceClient webServiceClient = new SbmWebServiceClient(); + + //------------------------------------------------------------------- + // Construction. + public SbmCommodityMgr_Mobile (SbmUserContext userContext) : + base(userContext) + { + } + + //------------------------------------------------------------------- + // Properties. + public SbmSessionProfile_Mobile SessionProfile { get { return SbmGlobals_Mobile.SessionProfile; } } + public String UserCode { get; } + public String EmailAddress { get; } + + //------------------------------------------------------------------- + // A s s o c i a t e d D a t a + //------------------------------------------------------------------- + public override bool ContainerDatabaseIsValid => throw new NotImplementedException(); + + public override List GetCommodityTypesInUse () + { + throw new NotImplementedException(); + } + + public override Task ExecuteCommodityQueryAsync (List columns, SbmCommodity.Params prm) + { + throw new NotImplementedException(); + } + + public override List GetPortfolioItemTypesInUse () + { + throw new NotImplementedException(); + } + + public override ushort GetMinSeqForParent (SysId parentItemId, Sbm.PortfolioItemType portfolioItemType) + { + throw new NotImplementedException(); + } + + public override ushort GetMaxSeqForParent (SysId parentItemId, Sbm.PortfolioItemType portfolioItemType) + { + throw new NotImplementedException(); + } + + public override List GetCategoryItemIds (SysId parentItemId) + { + throw new NotImplementedException(); + } + + public override List GetCommodityItemIds (SysId parentItemId, ref List commodityIds, bool includeSubCategories = false) + { + throw new NotImplementedException(); + } + + public override bool ResequenceChildren (SysId parentItemId) + { + throw new NotImplementedException(); + } + + public override bool CanMoveItemUp (SbmPortfolioItem portfolioItem) + { + throw new NotImplementedException(); + } + + public override bool CanMoveItemDown (SbmPortfolioItem portfolioItem) + { + throw new NotImplementedException(); + } + + public override bool MoveItemUp (SbmPortfolioItem portfolioItem, DbUpdateInfo dbUpdateInfo) + { + throw new NotImplementedException(); + } + + public override bool MoveItemDown (SbmPortfolioItem portfolioItem, DbUpdateInfo dbUpdateInfo) + { + throw new NotImplementedException(); + } + + public override string BuildAllocatedStockQuery (List locIds) + { + throw new NotImplementedException(); + } + + public override string BuildCurrentStockQuery (List locIds) + { + throw new NotImplementedException(); + } + + public override string BuildPlannedStockMovementsQuery (DateTime earliest, DateTime latest, SbmCommodity.Params prmCmd, bool intoStock, bool provisional, string tableAliasCommodity) + { + throw new NotImplementedException(); + } + + public override string BuildSalesQuantityQuery (DateTime earliest, DateTime latest, bool completeOrders, string tableAliasCommodity) + { + throw new NotImplementedException(); + } + + public override bool CanManageCommodityCustomers () + { + throw new NotImplementedException(); + } + + public override bool CanManageCommoditySuppliers () + { + throw new NotImplementedException(); + } + + public override bool ClearCommoditiesForCustomer (SysId assocCustomerId) + { + throw new NotImplementedException(); + } + + public override bool ClearCustomersForCommodity (SysId commodityId) + { + throw new NotImplementedException(); + } + + public override double GetCostPriceForCommodityId (SysId commodityId) + { + throw new NotImplementedException(); + } + + public override string GetItemSource (Sbm.ItemType itemType, SysId itemId, bool brief = false) + { + throw new NotImplementedException(); + } + + public override ushort GetMaxItemSeq (SysId containerId, Sbm.ItemType itemType, SysId itemId) + { + throw new NotImplementedException(); + } + + public override List GetSalesTemplateCommmodities () + { + throw new NotImplementedException(); + } + + public override Sbm.CommodityType GetTypeForCommodityId (SysId commodityId) + { + throw new NotImplementedException(); + } + + //public override List GetTypesInUse () + //{ + // throw new NotImplementedException(); + //} + + public override void PopulateLocationIdLists () + { + throw new NotImplementedException(); + } + + public override bool Store (SbmCommodityCustomer commodityCustomer) + { + throw new NotImplementedException(); + } + + public override bool Store (SbmCommoditySupplier commoditySupplier) + { + throw new NotImplementedException(); + } + + public override bool StoreCommodityCustomers (List commodityCustomers) + { + throw new NotImplementedException(); + } + + public override bool StoreCommodityCustomersForCommodity (SysId commodityId, List commodityCustomers) + { + throw new NotImplementedException(); + } + + public override bool StoreCommodityCustomersForCustomer (SysId assocCustomerId, List commodityCustomers) + { + throw new NotImplementedException(); + } + + public override bool StoreCommoditySuppliers (List commoditySuppliers) + { + throw new NotImplementedException(); + } + + public override bool UpdateReferencesToSalesTemplate (SbmCommodity commodity) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Mgr/SbmDataItemMgr_Mobile-ItemBatches.cs b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmDataItemMgr_Mobile-ItemBatches.cs new file mode 100644 index 0000000..6287b80 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmDataItemMgr_Mobile-ItemBatches.cs @@ -0,0 +1,273 @@ +using Sarand.Core.App; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Data; +using Sarand.Core.Dbas.Base; +using Sarand.Core.Tasks; +using Sarand.Core.Xml; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.BusinessMgr.Core.WebService; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using System.Xml.Linq; +using Sarand.BusinessMgr.Mobile.Core.Bus; + +namespace Sarand.BusinessMgr.Mobile.Core.Mgr +{ + //======================================================================= + partial class SbmDataItemMgr_Mobile + { + //******************************************************************* + // B e r t h i n g s + //******************************************************************* + // Create ItemBatch. + public override SbmItemBatch CreateItemBatch (Sbm.ItemBatchType itemBatchType, string refs) + { + ClearErrorState(); + return new SbmItemBatch_Mobile(UserContext, null, null, itemBatchType, refs, 0); + } + + //------------------------------------------------------------------- + // Get ItemBatch. + public override SbmItemBatch GetItemBatch (SbmItemBatch.Params prmItemBatch) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate ItemBatch. + public override bool IsValidItemBatchData (SbmItemBatch.Data data, SbmItemBatch.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidItemBatchData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert ItemBatch. + public override bool InsertItemBatch (SbmItemBatch itemBatch, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidItemBatch(itemBatch)) return false; + if (SysId.IsValid(itemBatch.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update ItemBatch. + public override bool UpdateItemBatch (SbmItemBatch itemBatch, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidItemBatch(itemBatch)) return false; + if (!SysId.IsValid(itemBatch.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete ItemBatch. + public override bool ItemBatchCanBeDeleted (SbmItemBatch itemBatch) + { + ClearErrorState(); + if (!base.ItemBatchCanBeDeleted(itemBatch)) return false; + return true; + } + public override bool DeleteItemBatch (SbmItemBatch itemBatch, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!ItemBatchCanBeDeleted(itemBatch)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement itemBatchElement, SbmItemBatch itemBatch, DbUpdateInfo dbUpdateInfo) + { + itemBatchElement.AppendElement(nameof(itemBatch.Id), SysId.ToString(itemBatch.Id)); + itemBatchElement.AppendElement(nameof(itemBatch.AffiliateIdOwner), SysId.ToString(itemBatch.AffiliateIdOwner)); + itemBatchElement.AppendElement(nameof(itemBatch.ItemBatchType), itemBatch.ItemBatchType.ToString()); + itemBatchElement.AppendElement(nameof(itemBatch.Ref), itemBatch.Ref); + itemBatchElement.AppendElement(nameof(itemBatch.DescBrief), itemBatch.DescBrief); + itemBatchElement.AppendElement(nameof(itemBatch.ProcessType), itemBatch.ProcessType); + itemBatchElement.AppendElement(nameof(itemBatch.Notes), itemBatch.Notes); + itemBatchElement.AppendElement(nameof(itemBatch.Status), SacsSystem.GetStatusCode(itemBatch.Status)); + itemBatchElement.AppendElement(nameof(itemBatch.Flags), itemBatch.Flags.ToString()); + if (!SysId.IsValid(itemBatch.Id)) + { + itemBatchElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + itemBatchElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + itemBatchElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + itemBatchElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + itemBatchElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + itemBatchElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement itemBatchElement, SbmItemBatch itemBatch) + { + itemBatch.Id = new SysId(StringUtil.ToInt(itemBatchElement.GetChildText("Id"))); + itemBatch.AffiliateIdOwner = new SysId(StringUtil.ToInt(itemBatchElement.GetChildText(nameof(itemBatch.AffiliateIdOwner)))); + itemBatch.ItemBatchType = EnumUtil.ParseEnum(itemBatchElement.GetChildText(nameof(itemBatch.ItemBatchType)), Sbm.ItemBatchType.Unknown); + itemBatch.Ref = itemBatchElement.GetChildText(nameof(itemBatch.Ref)); + itemBatch.DescBrief = itemBatchElement.GetChildText(nameof(itemBatch.DescBrief)); + itemBatch.ProcessType = itemBatchElement.GetChildText(nameof(itemBatch.ProcessType)); + itemBatch.Notes = itemBatchElement.GetChildText(nameof(itemBatch.Notes)); + itemBatch.Status = SacsSystem.GetStatusForCode(itemBatchElement.GetChildText(nameof(itemBatch.Status))); + itemBatch.SetCreateStamp(DateUtil.ParseXmlDateTime(itemBatchElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(itemBatchElement.GetChildText("CreateBy"))), itemBatchElement.GetChildText("CreateHost")); + itemBatch.SetUpdateStamp(DateUtil.ParseXmlDateTime(itemBatchElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(itemBatchElement.GetChildText("UpdateBy"))), itemBatchElement.GetChildText("UpdateHost")); + itemBatch.AcceptChanges(); + } + + //------------------------------------------------------------------- + // ItemBatch column definitions. + public override ColumnDfn GetItemBatchColumnDfn (SbmItemBatch.Column columnId, string caption = "", int width = 0) + { + ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width); + if (!String.IsNullOrEmpty(caption)) + columnDfn.Caption = caption; + if (width > 0) + columnDfn.Width = width; + columnDfn.DataName = columnId.ToString(); + return columnDfn; + } + + //------------------------------------------------------------------- + // ItemBatch query filter. + public override List GetItemBatchQueryFilter (SbmItemBatch.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetItemBatchQueryFilter_Mobile (SbmItemBatch.Params prm) + { + Dictionary filter = new Dictionary(); + + // ItemBatch Id. + if (prm.IncludedIds.Count > 0) filter.Add(nameof(prm.IncludedIds), prm.IncludedIds.Concat(",")); + if (prm.ExcludedIds.Count > 0) filter.Add(nameof(prm.ExcludedIds), prm.ExcludedIds.Concat(",")); + + // Item batch type. + if ((int)prm.ItemBatchType > 0) filter.Add(nameof(prm.ItemBatchType), ((int)prm.ItemBatchType).ToString()); + + // Ref. + if (!StringUtil.IsEmpty(prm.Ref)) filter.Add(nameof(prm.Ref), prm.Ref); + if (!StringUtil.IsEmpty(prm.RefPartial)) filter.Add(nameof(prm.RefPartial), prm.RefPartial); + + // Desc brief. + if (!StringUtil.IsEmpty(prm.DescBrief)) filter.Add(nameof(prm.DescBrief), prm.DescBrief); + + // Not completed. + if (prm.NotCompleted != false) filter.Add(nameof(prm.NotCompleted), prm.NotCompleted.ToString()); + + // Status. + filter.Add(nameof(prm.StatusCat), prm.StatusCat.ToString()); + + // Paging. + if (prm.ResultsPaging.Paged) + { + filter.Add(nameof(prm.ResultsPaging.PageNo), prm.ResultsPaging.PageNo.ToString()); + filter.Add(nameof(prm.ResultsPaging.PageLength), prm.ResultsPaging.PageLength.ToString()); + } + + return filter; + } + // ItemBatch sort columns. + public List GetItemBatchSortColumns (SbmItemBatch.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // ItemBatch count. + public override long GetItemBatchCount (SbmItemBatch.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // ItemBatch list. + public override List GetItemBatchList (SbmItemBatch.Params prm) + { + List itemBatches = new List(); + throw new NotImplementedException(); + } + public async Task> GetItemBatchList_Mobile (SbmItemBatch.Params prmItemBatch, SacsTaskData taskData) + { + ClearErrorState(); + List itemBatches = new List(); + String fn = GetType().Name + ".GetItemBatchList_Mobile"; + + // ItemBatch columns. + List columns = new List(EnumUtil.GetValues()); + + List itemDataList = await ExecuteItemBatchQuery_Mobile(columns, prmItemBatch, taskData); + foreach (SbmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId id = itemData.GetIdValue(SbmItemBatch.Column.Id); + SysId affiliateIdOwner = itemData.GetIdValue(SbmItemBatch.Column.AffIdOwner); + Sbm.ItemBatchType itemBatchType = EnumUtil.ParseEnum(itemData.GetValue(SbmItemBatch.Column.Type), Sbm.ItemBatchType.Unknown); + string refs = itemData.GetValue(SbmItemBatch.Column.Ref); + ushort flags = (ushort)itemData.GetIntValue(SbmItemBatch.Column.Flag); + // Create item. + SbmItemBatch_Mobile itemBatch = new SbmItemBatch_Mobile(UserContext, id, affiliateIdOwner, itemBatchType, refs, flags); + // Populate item properties. + foreach (SbmItemBatch.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + case SbmItemBatch.Column.AffIdOwner: itemBatch.AffiliateIdOwner = itemData.GetIdValue(column); break; + case SbmItemBatch.Column.Type: itemBatch.ItemBatchType = EnumUtil.ParseEnum(itemData.GetValue(column), Sbm.ItemBatchType.Unknown); break; + case SbmItemBatch.Column.Ref: itemBatch.Ref = value; break; + case SbmItemBatch.Column.DescBrief: itemBatch.DescBrief = value; break; + case SbmItemBatch.Column.ProcessType: itemBatch.ProcessType = value; break; + case SbmItemBatch.Column.Notes: itemBatch.Notes = value; break; + case SbmItemBatch.Column.Status: itemBatch.Status = SacsSystem.GetStatusForCode(value); break; + } + } + itemBatches.Add(itemBatch); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " ItemBatches: " + itemBatches.Count); + return itemBatches; + } + + + //------------------------------------------------------------------- + // ItemBatch query execution. + public override DbResultSet ExecuteItemBatchQuery (List columns, SbmItemBatch.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecuteItemBatchQuery_Mobile (List itemBatchColumns, SbmItemBatch.Params prmItemBatch, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SbmItemBatch.Column column in itemBatchColumns) + columns.Add(column.ToString()); + + SbmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetItemBatchRequestConfig(SbmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetItemBatchQueryFilter_Mobile(prmItemBatch), columns, this.GetSortColumns_Mobile(prmItemBatch), taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SbmWebServiceRequest.Config GetItemBatchRequestConfig (SbmWebServiceRequest.RequestType requestType, bool debug = false) + { + SbmWebServiceRequest.Config configRequest = new SbmWebServiceRequest.Config(); + configRequest.DataType = SbmWebServiceRequest.DataType.ItemBatch; + configRequest.RequestType = requestType; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} \ No newline at end of file diff --git a/SaBusMgrMobCore/Mobile/Core/Mgr/SbmDataItemMgr_Mobile-ItemLinks.cs b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmDataItemMgr_Mobile-ItemLinks.cs new file mode 100644 index 0000000..df5bab9 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmDataItemMgr_Mobile-ItemLinks.cs @@ -0,0 +1,298 @@ +using Sarand.Core.App; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Data; +using Sarand.Core.Dbas.Base; +using Sarand.Core.Tasks; +using Sarand.Core.Xml; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.BusinessMgr.Core.WebService; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using System.Xml.Linq; +using Sarand.BusinessMgr.Mobile.Core.Bus; + +namespace Sarand.BusinessMgr.Mobile.Core.Mgr +{ + //======================================================================= + partial class SbmDataItemMgr_Mobile + { + //******************************************************************* + // I t e m L i n k s + //******************************************************************* + // Create ItemLink. + public override SbmItemLink CreateItemLink (Sbm.ItemLinkType itemLinkType, Sbm.ItemType itemTypeFrom, SysId itemIdFrom, Sbm.ItemType itemTypeTo, SysId itemIdTo) + { + ClearErrorState(); + return new SbmItemLink_Mobile(UserContext, null, itemLinkType, itemTypeFrom, itemIdFrom, itemTypeTo, itemIdTo, 0); + } + + //------------------------------------------------------------------- + // Get ItemLink. + public override SbmItemLink GetItemLink (SbmItemLink.Params prmItemLink) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate ItemLink. + public override bool IsValidItemLinkData (SbmItemLink.Data data, SbmItemLink.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidItemLinkData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert ItemLink. + public override bool InsertItemLink (SbmItemLink itemLink, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidItemLink(itemLink)) return false; + if (SysId.IsValid(itemLink.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update ItemLink. + public override bool UpdateItemLink (SbmItemLink itemLink, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidItemLink(itemLink)) return false; + if (!SysId.IsValid(itemLink.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete ItemLink. + public override bool ItemLinkCanBeDeleted (SbmItemLink itemLink) + { + ClearErrorState(); + if (!base.ItemLinkCanBeDeleted(itemLink)) return false; + return true; + } + public override bool DeleteItemLink (SbmItemLink itemLink, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!ItemLinkCanBeDeleted(itemLink)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement itemLinkElement, SbmItemLink itemLink, DbUpdateInfo dbUpdateInfo) + { + itemLinkElement.AppendElement(nameof(itemLink.Id), SysId.ToString(itemLink.Id)); + itemLinkElement.AppendElement(nameof(itemLink.ItemLinkType), itemLink.ItemLinkType.ToString()); + itemLinkElement.AppendElement(nameof(itemLink.ItemTypeFrom), itemLink.ItemTypeFrom.ToString()); + itemLinkElement.AppendElement(nameof(itemLink.ItemIdFrom), SysId.ToString(itemLink.ItemIdFrom)); + itemLinkElement.AppendElement(nameof(itemLink.ItemTypeTo), itemLink.ItemTypeTo.ToString()); + itemLinkElement.AppendElement(nameof(itemLink.ItemIdTo), SysId.ToString(itemLink.ItemIdTo)); + itemLinkElement.AppendElement(nameof(itemLink.SortValue), itemLink.SortValue); + itemLinkElement.AppendElement(nameof(itemLink.Seq), itemLink.Seq.ToString("N3")); + itemLinkElement.AppendElement(nameof(itemLink.Completed), DateUtil.FormatXmlDateTime(itemLink.Completed)); + itemLinkElement.AppendElement(nameof(itemLink.DataContent), itemLink.DataContent); + itemLinkElement.AppendElement(nameof(itemLink.Notes), itemLink.Notes); + itemLinkElement.AppendElement(nameof(itemLink.Status), SacsSystem.GetStatusCode(itemLink.Status)); + itemLinkElement.AppendElement(nameof(itemLink.Flags), itemLink.Flags.ToString()); + if (!SysId.IsValid(itemLink.Id)) + { + itemLinkElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + itemLinkElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + itemLinkElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + itemLinkElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + itemLinkElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + itemLinkElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement itemLinkElement, SbmItemLink itemLink) + { + itemLink.Id = new SysId(StringUtil.ToInt(itemLinkElement.GetChildText("Id"))); + itemLink.ItemLinkType = EnumUtil.ParseEnum(itemLinkElement.GetChildText(nameof(itemLink.ItemLinkType)), Sbm.ItemLinkType.Unknown); + itemLink.ItemTypeFrom = EnumUtil.ParseEnum(itemLinkElement.GetChildText(nameof(itemLink.ItemTypeFrom)), Sbm.ItemType.Unknown); + itemLink.ItemIdFrom = new SysId(StringUtil.ToInt(itemLinkElement.GetChildText(nameof(itemLink.ItemIdFrom)))); + itemLink.ItemTypeTo = EnumUtil.ParseEnum(itemLinkElement.GetChildText(nameof(itemLink.ItemTypeTo)), Sbm.ItemType.Unknown); + itemLink.ItemIdTo = new SysId(StringUtil.ToInt(itemLinkElement.GetChildText(nameof(itemLink.ItemIdTo)))); + itemLink.SortValue = itemLinkElement.GetChildText(nameof(itemLink.SortValue)); + itemLink.Seq = StringUtil.ToShort(itemLinkElement.GetChildText(nameof(itemLink.Seq))); + itemLink.Completed = DateUtil.ParseXmlDateTime(itemLinkElement.GetChildText(nameof(itemLink.Completed))); + itemLink.DataContent = itemLinkElement.GetChildText(nameof(itemLink.DataContent)); + itemLink.Notes = itemLinkElement.GetChildText(nameof(itemLink.Notes)); + itemLink.Status = SacsSystem.GetStatusForCode(itemLinkElement.GetChildText(nameof(itemLink.Status))); + itemLink.SetCreateStamp(DateUtil.ParseXmlDateTime(itemLinkElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(itemLinkElement.GetChildText("CreateBy"))), itemLinkElement.GetChildText("CreateHost")); + itemLink.SetUpdateStamp(DateUtil.ParseXmlDateTime(itemLinkElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(itemLinkElement.GetChildText("UpdateBy"))), itemLinkElement.GetChildText("UpdateHost")); + itemLink.AcceptChanges(); + } + + //------------------------------------------------------------------- + // ItemLink column definitions. + public override ColumnDfn GetItemLinkColumnDfn (SbmItemLink.Column columnId, string caption = "", int width = 0) + { + ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width); + if (!String.IsNullOrEmpty(caption)) + columnDfn.Caption = caption; + if (width > 0) + columnDfn.Width = width; + columnDfn.DataName = columnId.ToString(); + return columnDfn; + } + + //------------------------------------------------------------------- + // ItemLink query filter. + public override List GetItemLinkQueryFilter (SbmItemLink.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetItemLinkQueryFilter_Mobile (SbmItemLink.Params prm) + { + Dictionary filter = new Dictionary(); + + // ItemLink Id. + if (prm.IncludedIds.Count > 0) filter.Add(nameof(prm.IncludedIds), prm.IncludedIds.Concat(",")); + if (prm.ExcludedIds.Count > 0) filter.Add(nameof(prm.ExcludedIds), prm.ExcludedIds.Concat(",")); + + // Item link type. + if ((int)prm.ItemLinkType > 0) filter.Add(nameof(prm.ItemLinkType), ((int)prm.ItemLinkType).ToString()); + + // Item type from. + if ((int)prm.ItemTypeFrom > 0) filter.Add(nameof(prm.ItemTypeFrom), ((int)prm.ItemTypeFrom).ToString()); + + // Item Id from. + if (SysId.IsValid(prm.ItemIdFrom)) filter.Add(nameof(prm.ItemIdFrom), SysId.ToString(prm.ItemIdFrom)); + + // Item type to. + if ((int)prm.ItemTypeTo> 0) filter.Add(nameof(prm.ItemTypeTo), ((int)prm.ItemTypeTo).ToString()); + + // Item Id to. + if (SysId.IsValid(prm.ItemIdTo)) filter.Add(nameof(prm.ItemIdTo), SysId.ToString(prm.ItemIdTo)); + + // Seq. + if (prm.Seq > 0) filter.Add(nameof(prm.Seq), prm.Seq.ToString("N3")); + + // Completed. + if (DateUtil.IsValid(prm.Completed)) filter.Add(nameof(prm.Completed), DateUtil.FormatXmlDate(prm.Completed)); + + // Data content. + if (!StringUtil.IsEmpty(prm.DataContent)) filter.Add(nameof(prm.DataContent), prm.DataContent); + + // Status. + filter.Add(nameof(prm.StatusCat), prm.StatusCat.ToString()); + + // Paging. + if (prm.ResultsPaging.Paged) + { + filter.Add(nameof(prm.ResultsPaging.PageNo), prm.ResultsPaging.PageNo.ToString()); + filter.Add(nameof(prm.ResultsPaging.PageLength), prm.ResultsPaging.PageLength.ToString()); + } + + return filter; + } + // ItemLink sort columns. + public List GetItemLinkSortColumns (SbmItemLink.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // ItemLink count. + public override long GetItemLinkCount (SbmItemLink.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // ItemLink list. + public override List GetItemLinkList (SbmItemLink.Params prm) + { + List itemLinks = new List(); + throw new NotImplementedException(); + } + public async Task> GetItemLinkList_Mobile (SbmItemLink.Params prmItemLink, SacsTaskData taskData) + { + ClearErrorState(); + List itemLinks = new List(); + String fn = GetType().Name + ".GetItemLinkList_Mobile"; + + // ItemLink columns. + List columns = new List(EnumUtil.GetValues()); + + List itemDataList = await ExecuteItemLinkQuery_Mobile(columns, prmItemLink, taskData); + foreach (SbmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId id = null; + Sbm.ItemLinkType itemLinkType = EnumUtil.ParseEnum(itemData.GetValue(SbmItemLink.Column.Type), Sbm.ItemLinkType.Unknown); + Sbm.ItemType itemTypeFrom = EnumUtil.ParseEnum(itemData.GetValue(SbmItemLink.Column.ItemTypeFrom), Sbm.ItemType.Unknown); + SysId itemIdFrom = itemData.GetIdValue(SbmItemLink.Column.ItemIdFrom); + Sbm.ItemType itemTypeTo = EnumUtil.ParseEnum(itemData.GetValue(SbmItemLink.Column.ItemTypeTo), Sbm.ItemType.Unknown); + SysId itemIdTo = itemData.GetIdValue(SbmItemLink.Column.ItemIdTo); + ushort flags = (ushort)itemData.GetIntValue(SbmItemLink.Column.Flag); + // Create item. + SbmItemLink_Mobile itemLink = new SbmItemLink_Mobile(UserContext, id, itemLinkType, itemTypeFrom, itemIdFrom, itemTypeTo, itemIdTo, flags); + // Populate item properties. + foreach (SbmItemLink.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + case SbmItemLink.Column.Type: itemLink.ItemLinkType = EnumUtil.ParseEnum(itemData.GetValue(column), Sbm.ItemLinkType.Unknown); break; + case SbmItemLink.Column.ItemTypeFrom: itemLink.ItemTypeFrom = EnumUtil.ParseEnum(itemData.GetValue(column), Sbm.ItemType.Unknown); break; + case SbmItemLink.Column.ItemIdFrom: itemLink.ItemIdFrom = itemData.GetIdValue(column); break; + case SbmItemLink.Column.ItemTypeTo: itemLink.ItemTypeTo = EnumUtil.ParseEnum(itemData.GetValue(column), Sbm.ItemType.Unknown); break; + case SbmItemLink.Column.ItemIdTo: itemLink.ItemIdTo = itemData.GetIdValue(column); break; + //case SbmItemLink.Column.SortValue: itemLink.SortValue = value; break; + case SbmItemLink.Column.Seq: itemLink.Seq = StringUtil.ToShort(itemData.GetDecimalValue(column)); break; + case SbmItemLink.Column.Completed: itemLink.Completed = itemData.GetDateTimeValue(column); break; + case SbmItemLink.Column.DataContent: itemLink.DataContent = value; break; + case SbmItemLink.Column.Notes: itemLink.Notes = value; break; + case SbmItemLink.Column.Status: itemLink.Status = SacsSystem.GetStatusForCode(value); break; + } + } + itemLinks.Add(itemLink); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " ItemLinks: " + itemLinks.Count); + return itemLinks; + } + + + //------------------------------------------------------------------- + // ItemLink query execution. + public override DbResultSet ExecuteItemLinkQuery (List columns, SbmItemLink.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecuteItemLinkQuery_Mobile (List itemLinkColumns, SbmItemLink.Params prmItemLink, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SbmItemLink.Column column in itemLinkColumns) + columns.Add(column.ToString()); + + SbmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetItemLinkRequestConfig(SbmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetItemLinkQueryFilter_Mobile(prmItemLink), columns, this.GetSortColumns_Mobile(prmItemLink), taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SbmWebServiceRequest.Config GetItemLinkRequestConfig (SbmWebServiceRequest.RequestType requestType, bool debug = false) + { + SbmWebServiceRequest.Config configRequest = new SbmWebServiceRequest.Config(); + configRequest.DataType = SbmWebServiceRequest.DataType.ItemLink; + configRequest.RequestType = requestType; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} \ No newline at end of file diff --git a/SaBusMgrMobCore/Mobile/Core/Mgr/SbmDataItemMgr_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmDataItemMgr_Mobile.cs new file mode 100644 index 0000000..e9f64bd --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmDataItemMgr_Mobile.cs @@ -0,0 +1,69 @@ +using Sarand.BusinessMgr.Mobile.Core.App; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.BusinessMgr.Core.Mgr; +using Sarand.BusinessMgr.Core.WebService; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Dbas.Base; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.Mgr +{ + //======================================================================= + public partial class SbmDataItemMgr_Mobile : SbmDataItemMgr, ISbmItemMgr_Mobile + { + //------------------------------------------------------------------- + // Definitions. + + //------------------------------------------------------------------- + // Data members. + private SbmWebServiceClient webServiceClient = new SbmWebServiceClient(); + + //------------------------------------------------------------------- + // Construction. + public SbmDataItemMgr_Mobile (SbmUserContext userContext) : + base(userContext) + { + } + + //------------------------------------------------------------------- + // Properties. + public SbmSessionProfile_Mobile SessionProfile { get { return SbmGlobals_Mobile.SessionProfile; } } + public String UserCode { get; } + public String EmailAddress { get; } + + //------------------------------------------------------------------- + // A s s o c i a t e d D a t a + //------------------------------------------------------------------- + public override bool ClearDataItem (Sbm.ItemType itemType, SysId itemId) + { + throw new NotImplementedException(); + } + + public override bool DoDbCleanup () + { + throw new NotImplementedException(); + } + + public override bool HasItemLinks (Sbm.ItemType itemType, SysId itemId) + { + throw new NotImplementedException(); + } + + public override bool StoreFromItemLinks (Sbm.ItemLinkType itemLinkType, Sbm.ItemType itemTypeFrom, SysId itemIdFrom, List itemLinks, DbUpdateInfo dbUpdateInfo) + { + throw new NotImplementedException(); + } + + public override bool StoreToItemLinks (Sbm.ItemLinkType itemLinkType, Sbm.ItemType itemTypeTo, SysId itemIdTo, List itemLinks, DbUpdateInfo dbUpdateInfo) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Mgr/SbmItemMgr_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmItemMgr_Mobile.cs new file mode 100644 index 0000000..7484f39 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmItemMgr_Mobile.cs @@ -0,0 +1,88 @@ +using Sarand.Core.App; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Dbas.Base; +using Sarand.Core.Xml; +using Sarand.BusinessMgr.Core.Mgr; +using Sarand.BusinessMgr.Core.WebService; +using Sarand.BusinessMgr.Mobile.Core.App; +using System; +using System.Collections.Generic; +using System.Text; +using System.Xml.Linq; +using Xamarin.Essentials; + +namespace Sarand.BusinessMgr.Mobile.Core.Mgr +{ + //======================================================================= + public interface ISbmItemMgr_Mobile + { + String UserCode { get; } + String EmailAddress { get; } + } + + //======================================================================= + public static class SbmMobileMgrUtil + { + //------------------------------------------------------------------- + /// Populate common properties from business object to XML element. + public static void PopulateCommonPropertiesTo (this ISbmItemMgr_Mobile mgr, XElement itemElement, SacsHierarchyItem item, List excludedProperties, DbUpdateInfo dbUpdateInfo) + { + if (!excludedProperties.ContainsCI(nameof(item.Notes))) + itemElement.AppendElement(nameof(item.Notes), item.Notes); + if (!excludedProperties.ContainsCI(nameof(item.Status))) + itemElement.AppendElement(nameof(item.Status), SacsSystem.GetStatusCode(item.Status)); + if (!excludedProperties.ContainsCI(nameof(item.Flags))) + itemElement.AppendElement(nameof(item.Flags), item.Flags.ToString()); + if (!SysId.IsValid(item.Id) && !excludedProperties.ContainsCI("CreateStamp")) + { + itemElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + itemElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + itemElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + if (!excludedProperties.ContainsCI("UpdateStamp")) + { + itemElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + itemElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + itemElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + } + /// Populate common properties from Service Response Item to business object. + public static void PopulateCommonPropertiesFrom (this ISbmItemMgr_Mobile mgr, SbmWebServiceItemData itemData, SacsHierarchyItem item) + { + item.Notes = itemData.GetValue(nameof(item.Notes)); + item.Status = SacsSystem.GetStatusForCode(itemData.GetValue(nameof(item.Status))); + item.SetCreateStamp(itemData.GetDateTimeValue("CreateOn"), itemData.GetIdValue("CreateBy"), itemData.GetValue("CreateHost")); + item.SetUpdateStamp(itemData.GetDateTimeValue("UpdateOn"), itemData.GetIdValue("UpdateBy"), itemData.GetValue("UpdateHost")); + } + + //------------------------------------------------------------------- + public static SbmWebServiceRequest.Config GetRequestConfig (this ISbmItemMgr_Mobile mgr, SbmWebServiceRequest.DataType dataType, SbmWebServiceRequest.RequestType requestType, bool debug) + { + SbmWebServiceRequest.Config configRequest = new SbmWebServiceRequest.Config(); + configRequest.DataType = dataType; + configRequest.RequestType = requestType; + //configRequest.Context.Host = StringUtil.EmptyOnNull(DeviceInfo.Name).Left(64); + configRequest.Context.User = mgr.UserCode; + configRequest.Context.Email = mgr.EmailAddress; + configRequest.Context.Debug = debug; + configRequest.SoapEnvelope = SacsSystem.DebugMode ? (SbmMobile.Random.Next(2) == 1) : false; + if (configRequest.SoapEnvelope) + configRequest.SoapPrefix = new List() { "", "SOAP", "soap", "S", "s" }[SbmMobile.Random.Next(5)]; + return configRequest; + } + + //------------------------------------------------------------------- + /// Convert columns to list of sort columns for population of XML request. + public static List GetSortColumns_Mobile (this ISbmItemMgr_Mobile mgr, SacsHierarchyItem.Params prmCompany) where TColumn : struct, IConvertible + { + List sortColumns = new List(); + foreach (ColumnDfn sortColumn in prmCompany.SortColumns) + sortColumns.Add(EnumUtil.ParseEnum(sortColumn.Id.ToString(), EnumUtil.ParseEnum("0")).ToString() + (!sortColumn.SortAscending ? " DESC" : "")); + return sortColumns; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} \ No newline at end of file diff --git a/SaBusMgrMobCore/Mobile/Core/Mgr/SbmPriceMgr_Mobile-PriceSets.cs b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmPriceMgr_Mobile-PriceSets.cs new file mode 100644 index 0000000..992b983 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmPriceMgr_Mobile-PriceSets.cs @@ -0,0 +1,273 @@ +using Sarand.Core.App; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Dbas.Base; +using Sarand.Core.Tasks; +using Sarand.Core.Xml; +using Sarand.BusinessMgr.Core.Bus; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using System.Xml.Linq; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Mobile.Core.Bus; +using Sarand.BusinessMgr.Core.WebService; + +namespace Sarand.BusinessMgr.Mobile.Core.Mgr +{ + //======================================================================= + partial class SbmPriceMgr_Mobile + { + //******************************************************************* + // P r i c e S e t s + //******************************************************************* + // Create PriceSet. + public override SbmPriceSet CreatePriceSet (string reference, Sbm.PriceType priceType) + { + ClearErrorState(); + return new SbmPriceSet_Mobile(UserContext, null, null, reference, priceType, 0); + } + + //------------------------------------------------------------------- + // Get PriceSet. + public override SbmPriceSet GetPriceSet (SbmPriceSet.Params prmPriceSet) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate PriceSet. + public override bool IsValidPriceSetData (SbmPriceSet.Data data, SbmPriceSet.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidPriceSetData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert PriceSet. + public override bool InsertPriceSet (SbmPriceSet priceSet, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidPriceSet(priceSet)) return false; + if (SysId.IsValid(priceSet.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update PriceSet. + public override bool UpdatePriceSet (SbmPriceSet priceSet, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidPriceSet(priceSet)) return false; + if (!SysId.IsValid(priceSet.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete PriceSet. + public override bool PriceSetCanBeDeleted (SbmPriceSet priceSet) + { + ClearErrorState(); + if (!base.PriceSetCanBeDeleted(priceSet)) return false; + return true; + } + public override bool DeletePriceSet (SbmPriceSet priceSet, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!PriceSetCanBeDeleted(priceSet)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement priceSetElement, SbmPriceSet priceSet, DbUpdateInfo dbUpdateInfo) + { + priceSetElement.AppendElement(nameof(priceSet.Id), SysId.ToString(priceSet.Id)); + // PriceSet. + priceSetElement.AppendElement(nameof(priceSet.AffiliateIdOwner), SysId.ToString(priceSet.AffiliateIdOwner)); + priceSetElement.AppendElement(nameof(priceSet.Reference), priceSet.Reference); + priceSetElement.AppendElement(nameof(priceSet.PriceType), priceSet.PriceType.ToString()); + priceSetElement.AppendElement(nameof(priceSet.Name), priceSet.Name); + priceSetElement.AppendElement(nameof(priceSet.CurrencyId), SysId.ToString(priceSet.CurrencyId)); + priceSetElement.AppendElement(nameof(priceSet.Notes), priceSet.Notes); + priceSetElement.AppendElement(nameof(priceSet.Status), SacsSystem.GetStatusCode(priceSet.Status)); + priceSetElement.AppendElement(nameof(priceSet.Flags), priceSet.Flags.ToString()); + if (!SysId.IsValid(priceSet.Id)) + { + priceSetElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + priceSetElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + priceSetElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + priceSetElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + priceSetElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + priceSetElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement priceSetElement, SbmPriceSet priceSet) + { + priceSet.Id = new SysId(StringUtil.ToInt(priceSetElement.GetChildText("Id"))); + // PriceSet. + //priceSet.AffiliateIdOwner = new SysId(StringUtil.ToInt(priceSetElement.GetChildText(nameof(priceSet.AffiliateIdOwner)))); + //priceSet.Reference = priceSetElement.GetChildText(nameof(priceSet.Reference)); + priceSet.PriceType = EnumUtil.ParseEnum(priceSetElement.GetChildText(nameof(priceSet.PriceType)), Sbm.PriceType.Unknown); + priceSet.Name = priceSetElement.GetChildText(nameof(priceSet.Name)); + priceSet.CurrencyId = new SysId(StringUtil.ToInt(priceSetElement.GetChildText(nameof(priceSet.CurrencyId)))); + priceSet.Notes = priceSetElement.GetChildText(nameof(priceSet.Notes)); + priceSet.Status = SacsSystem.GetStatusForCode(priceSetElement.GetChildText(nameof(priceSet.Status))); + priceSet.SetCreateStamp(DateUtil.ParseXmlDateTime(priceSetElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(priceSetElement.GetChildText("CreateBy"))), priceSetElement.GetChildText("CreateHost")); + priceSet.SetUpdateStamp(DateUtil.ParseXmlDateTime(priceSetElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(priceSetElement.GetChildText("UpdateBy"))), priceSetElement.GetChildText("UpdateHost")); + priceSet.AcceptChanges(); + } + + //------------------------------------------------------------------- + // PriceSet column definitions. + public override ColumnDfn GetPriceSetColumnDfn (SbmPriceSet.Column columnId, string caption = "", int width = 0) + { + ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width); + if (!String.IsNullOrEmpty(caption)) + columnDfn.Caption = caption; + if (width > 0) + columnDfn.Width = width; + columnDfn.DataName = columnId.ToString(); + return columnDfn; + } + + //------------------------------------------------------------------- + // PriceSet query filter. + public override List GetPriceSetQueryFilter (SbmPriceSet.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetPriceSetQueryFilter_Mobile (SbmPriceSet.Params prm) + { + Dictionary filter = new Dictionary(); + + // PriceSet Id. + if (prm.IncludedIds.Count > 0) filter.Add(nameof(prm.IncludedIds), prm.IncludedIds.Concat(",")); + if (prm.ExcludedIds.Count > 0) filter.Add(nameof(prm.ExcludedIds), prm.ExcludedIds.Concat(",")); + + // Price type. + if ((int)prm.PriceType > 0) filter.Add(nameof(prm.PriceType), ((int)prm.PriceType).ToString()); + + // Reference. + if (!StringUtil.IsEmpty(prm.Reference)) filter.Add(nameof(prm.Reference), prm.Reference); + if (!StringUtil.IsEmpty(prm.ReferencePartial)) filter.Add(nameof(prm.ReferencePartial), prm.ReferencePartial); + + // Name. + if (!StringUtil.IsEmpty(prm.Name)) filter.Add(nameof(prm.Name), prm.Name); + if (!StringUtil.IsEmpty(prm.NamePartial)) filter.Add(nameof(prm.NamePartial), prm.NamePartial); + + // Status. + filter.Add(nameof(prm.StatusCat), prm.StatusCat.ToString()); + + // Paging. + if (prm.ResultsPaging.Paged) + { + filter.Add(nameof(prm.ResultsPaging.PageNo), prm.ResultsPaging.PageNo.ToString()); + filter.Add(nameof(prm.ResultsPaging.PageLength), prm.ResultsPaging.PageLength.ToString()); + } + + return filter; + } + // PriceSet sort columns. + public List GetPriceSetSortColumns (SbmPriceSet.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // PriceSet count. + public override long GetPriceSetCount (SbmPriceSet.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // PriceSet list. + public override List GetPriceSetList (SbmPriceSet.Params prm) + { + List commodities = new List(); + throw new NotImplementedException(); + } + public async Task> GetPriceSetList_Mobile (SbmPriceSet.Params prmPriceSet, SacsTaskData taskData) + { + ClearErrorState(); + List commodities = new List(); + String fn = GetType().Name + ".GetPriceSetList_Mobile"; + + // PriceSet columns. + List columns = new List(EnumUtil.GetValues()); + + List itemDataList = await ExecutePriceSetQuery_Mobile(columns, prmPriceSet, taskData); + foreach (SbmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId id = itemData.GetIdValue(SbmPriceSet.Column.Id); + SysId affiliateIdOwner = new SysId(); + String reference = itemData.GetValue(SbmPriceSet.Column.Reference); + Sbm.PriceType priceType = EnumUtil.ParseEnum(itemData.GetValue(SbmPriceSet.Column.PriceType), Sbm.PriceType.Unknown); + //ushort flags = (ushort)itemData.GetIntValue(SbmPriceSet.Column.Flag); + // Create item. + SbmPriceSet_Mobile priceSet = new SbmPriceSet_Mobile(UserContext, id, affiliateIdOwner, reference, priceType, 0); + // Populate item properties. + foreach (SbmPriceSet.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + // PriceSet. + //case SbmPriceSet.Column.AffiliateIdOwner: priceSet.AffiliateIdOwner = itemData.GetIdValue(column); break; + //case SbmPriceSet.Column.Reference: priceSet.Reference = value; break; + case SbmPriceSet.Column.PriceType: priceSet.PriceType = EnumUtil.ParseEnum(itemData.GetValue(column), Sbm.PriceType.Unknown); break; + case SbmPriceSet.Column.Name: priceSet.Name = value; break; + case SbmPriceSet.Column.CurrencyId: priceSet.CurrencyId = itemData.GetIdValue(column); break; + case SbmPriceSet.Column.Notes: priceSet.Notes = value; break; + case SbmPriceSet.Column.Status: priceSet.Status = SacsSystem.GetStatusForCode(value); break; + } + } + commodities.Add(priceSet); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " Commodities: " + commodities.Count); + return commodities; + } + + + //------------------------------------------------------------------- + // PriceSet query execution. + public override DbResultSet ExecutePriceSetQuery (List columns, SbmPriceSet.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecutePriceSetQuery_Mobile (List priceSetColumns, SbmPriceSet.Params prmPriceSet, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SbmPriceSet.Column column in priceSetColumns) + columns.Add(column.ToString()); + + SbmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetPriceSetRequestConfig(SbmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetPriceSetQueryFilter_Mobile(prmPriceSet), columns, this.GetSortColumns_Mobile(prmPriceSet), taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SbmWebServiceRequest.Config GetPriceSetRequestConfig (SbmWebServiceRequest.RequestType requestType, bool debug = false) + { + SbmWebServiceRequest.Config configRequest = new SbmWebServiceRequest.Config(); + configRequest.DataType = SbmWebServiceRequest.DataType.PriceSet; + configRequest.RequestType = requestType; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} \ No newline at end of file diff --git a/SaBusMgrMobCore/Mobile/Core/Mgr/SbmPriceMgr_Mobile-Prices.cs b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmPriceMgr_Mobile-Prices.cs new file mode 100644 index 0000000..7421fcb --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmPriceMgr_Mobile-Prices.cs @@ -0,0 +1,288 @@ +using Sarand.Core.App; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Data; +using Sarand.Core.Dbas.Base; +using Sarand.Core.Tasks; +using Sarand.Core.Xml; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using System.Xml.Linq; +using Sarand.BusinessMgr.Mobile.Core.Bus; +using Sarand.BusinessMgr.Core.WebService; + +namespace Sarand.BusinessMgr.Mobile.Core.Mgr +{ + //======================================================================= + partial class SbmPriceMgr_Mobile + { + //******************************************************************* + // P r i c e s + //******************************************************************* + // Create Price. + public override SbmPrice CreatePrice (SysId priceSetId, SysId commodityId, Sbm.PriceType priceType) + { + ClearErrorState(); + return new SbmPrice_Mobile(UserContext, priceSetId, commodityId, priceType, 0); + } + + //------------------------------------------------------------------- + // Get Price. + public override SbmPrice GetPrice (SbmPrice.Params prmPrice) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate Price. + public override bool IsValidPriceData (SbmPrice.Data data, SbmPrice.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidPriceData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert Price. + public override bool InsertPrice (SbmPrice price, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidPrice(price)) return false; + if (SysId.IsValid(price.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update Price. + public override bool UpdatePrice (SbmPrice price, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidPrice(price)) return false; + if (!SysId.IsValid(price.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete Price. + public override bool PriceCanBeDeleted (SbmPrice price) + { + ClearErrorState(); + if (!base.PriceCanBeDeleted(price)) return false; + return true; + } + public override bool DeletePrice (SbmPrice price, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!PriceCanBeDeleted(price)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement priceElement, SbmPrice price, DbUpdateInfo dbUpdateInfo) + { + priceElement.AppendElement(nameof(price.Id), SysId.ToString(price.Id)); + priceElement.AppendElement(nameof(price.PriceSetId), SysId.ToString(price.PriceSetId)); + priceElement.AppendElement(nameof(price.CommodityId), SysId.ToString(price.CommodityId)); + priceElement.AppendElement(nameof(price.PriceType), price.PriceType.ToString()); + priceElement.AppendElement(nameof(price.CalculationMethod), price.CalculationMethod.ToString()); + priceElement.AppendElement(nameof(price.CalculationValue), price.CalculationValue.ToString("N3")); + priceElement.AppendElement(nameof(price.RounderMethod), price.RounderMethod.ToString()); + priceElement.AppendElement(nameof(price.RounderDirection), price.RounderDirection.ToString()); + priceElement.AppendElement(nameof(price.RounderMultipleOf), price.RounderMultipleOf.ToString("N3")); + priceElement.AppendElement(nameof(price.RounderAdjustment), price.RounderAdjustment.ToString("N3")); + priceElement.AppendElement(nameof(price.Notes), price.Notes); + priceElement.AppendElement(nameof(price.Status), SacsSystem.GetStatusCode(price.Status)); + priceElement.AppendElement(nameof(price.Flags), price.Flags.ToString()); + if (!SysId.IsValid(price.Id)) + { + priceElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + priceElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + priceElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + priceElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + priceElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + priceElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement priceElement, SbmPrice price) + { + price.Id = new SysId(StringUtil.ToInt(priceElement.GetChildText(nameof(price.Id)))); + //price.PriceSetId = new SysId(StringUtil.ToInt(priceElement.GetChildText(nameof(price.PriceSetId)))); + //price.CommodityId = new SysId(StringUtil.ToInt(priceElement.GetChildText(nameof(price.CommodityId)))); + //price.PriceType = EnumUtil.ParseEnum(priceElement.GetChildText(nameof(price.PriceType)), Sbm.PriceType.Unknown); + price.CalculationMethod = EnumUtil.ParseEnum(priceElement.GetChildText(nameof(price.CalculationMethod)), Sbm.PriceCalcMethod.Unknown); + price.CalculationValue = StringUtil.ToDecimal(priceElement.GetChildText(nameof(price.CalculationValue))); + price.RounderMethod = EnumUtil.ParseEnum(priceElement.GetChildText(nameof(price.RounderMethod)), Sbm.PriceRounderMethod.Unknown); + price.RounderDirection = EnumUtil.ParseEnum(priceElement.GetChildText(nameof(price.RounderDirection)), Sbm.PriceRounderDirection.Unknown); + price.RounderMultipleOf = StringUtil.ToDecimal(priceElement.GetChildText(nameof(price.RounderMultipleOf))); + price.RounderAdjustment = StringUtil.ToDecimal(priceElement.GetChildText(nameof(price.RounderAdjustment))); + price.Notes = priceElement.GetChildText(nameof(price.Notes)); + price.Status = SacsSystem.GetStatusForCode(priceElement.GetChildText(nameof(price.Status))); + price.SetCreateStamp(DateUtil.ParseXmlDateTime(priceElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(priceElement.GetChildText("CreateBy"))), priceElement.GetChildText("CreateHost")); + price.SetUpdateStamp(DateUtil.ParseXmlDateTime(priceElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(priceElement.GetChildText("UpdateBy"))), priceElement.GetChildText("UpdateHost")); + price.AcceptChanges(); + } + + //------------------------------------------------------------------- + // Price column definitions. + public override ColumnDfn GetPriceColumnDfn (SbmPrice.Column columnId, string caption = "", int width = 0) + { + ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width); + if (!String.IsNullOrEmpty(caption)) + columnDfn.Caption = caption; + if (width > 0) + columnDfn.Width = width; + columnDfn.DataName = columnId.ToString(); + return columnDfn; + } + + //------------------------------------------------------------------- + // Price query filter. + public override List GetPriceQueryFilter (SbmPrice.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetPriceQueryFilter_Mobile (SbmPrice.Params prm) + { + Dictionary filter = new Dictionary(); + + // Price set Id. + if (SysId.IsValid(prm.PriceSetId)) filter.Add(nameof(prm.PriceSetId), SysId.ToString(prm.PriceSetId)); + + // Commodity Id. + if (SysId.IsValid(prm.CommodityId)) filter.Add(nameof(prm.CommodityId), SysId.ToString(prm.CommodityId)); + + // Price type. + if ((int)prm.PriceType > 0) filter.Add(nameof(prm.PriceType), ((int)prm.PriceType).ToString()); + + // Calculation method. + if ((int)prm.CalculationMethod > 0) filter.Add(nameof(prm.CalculationMethod), ((int)prm.CalculationMethod).ToString()); + + // Calculation value. + if (prm.CalculationValue > 0) filter.Add(nameof(prm.CalculationValue), prm.CalculationValue.ToString("N3")); + + // Rounder method. + if ((int)prm.RounderMethod > 0) filter.Add(nameof(prm.RounderMethod), ((int)prm.RounderMethod).ToString()); + + // Rounder direction. + if ((int)prm.RounderDirection > 0) filter.Add(nameof(prm.RounderDirection), ((int)prm.RounderDirection).ToString()); + + // Status. + filter.Add(nameof(prm.StatusCat), prm.StatusCat.ToString()); + + // Paging. + if (prm.ResultsPaging.Paged) + { + filter.Add(nameof(prm.ResultsPaging.PageNo), prm.ResultsPaging.PageNo.ToString()); + filter.Add(nameof(prm.ResultsPaging.PageLength), prm.ResultsPaging.PageLength.ToString()); + } + + return filter; + } + // Price sort columns. + public List GetPriceSortColumns (SbmPrice.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Price count. + public override long GetPriceCount (SbmPrice.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Price list. + public override List GetPriceList (SbmPrice.Params prm) + { + List prices = new List(); + throw new NotImplementedException(); + } + public async Task> GetPriceList_Mobile (SbmPrice.Params prmPrice, SacsTaskData taskData) + { + ClearErrorState(); + List prices = new List(); + String fn = GetType().Name + ".GetPriceList_Mobile"; + + // Price columns. + List columns = new List(EnumUtil.GetValues()); + + List itemDataList = await ExecutePriceQuery_Mobile(columns, prmPrice, taskData); + foreach (SbmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId priceSetId = itemData.GetIdValue(SbmPrice.Column.PriceSetId); + SysId commodityId = itemData.GetIdValue(SbmPrice.Column.CommodityId); + Sbm.PriceType priceType = EnumUtil.ParseEnum(itemData.GetValue(SbmPrice.Column.PriceType), Sbm.PriceType.Unknown); + //ushort flags = (ushort)itemData.GetIntValue(SbmPrice.Column.Flags); + // Create item. + SbmPrice_Mobile price = new SbmPrice_Mobile(UserContext, priceSetId, commodityId, priceType, 0); + // Populate item properties. + foreach (SbmPrice.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + //case SbmPrice.Column.PriceSetId: price.PriceSetId = itemData.GetIdValue(column); break; + //case SbmPrice.Column.CommodityId: price.CommodityId = itemData.GetIdValue(column); break; + //case SbmPrice.Column.PriceType: price.PriceType = EnumUtil.ParseEnum(itemData.GetValue(column), Sbm.PriceType.Any); break; + case SbmPrice.Column.CalculationMethod: price.CalculationMethod = EnumUtil.ParseEnum(itemData.GetValue(column), Sbm.PriceCalcMethod.Unknown); break; + case SbmPrice.Column.CalculationValue: price.CalculationValue = itemData.GetDecimalValue(column); break; + case SbmPrice.Column.RounderMethod: price.RounderMethod = EnumUtil.ParseEnum(itemData.GetValue(column), Sbm.PriceRounderMethod.Unknown); break; + case SbmPrice.Column.RounderDirection: price.RounderDirection = EnumUtil.ParseEnum(itemData.GetValue(column), Sbm.PriceRounderDirection.Unknown); break; + case SbmPrice.Column.RounderMultipleOf: price.RounderMultipleOf = itemData.GetDecimalValue(column); break; + case SbmPrice.Column.RounderAdjustment: price.RounderAdjustment = itemData.GetDecimalValue(column); break; + case SbmPrice.Column.Notes: price.Notes = value; break; + case SbmPrice.Column.Status: price.Status = SacsSystem.GetStatusForCode(value); break; + } + } + prices.Add(price); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " Prices: " + prices.Count); + return prices; + } + + + //------------------------------------------------------------------- + // Price query execution. + public override DbResultSet ExecutePriceQuery (List columns, SbmPrice.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecutePriceQuery_Mobile (List priceColumns, SbmPrice.Params prmPrice, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SbmPrice.Column column in priceColumns) + columns.Add(column.ToString()); + + SbmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetPriceRequestConfig(SbmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetPriceQueryFilter_Mobile(prmPrice), columns, this.GetSortColumns_Mobile(prmPrice), taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SbmWebServiceRequest.Config GetPriceRequestConfig (SbmWebServiceRequest.RequestType requestType, bool debug = false) + { + SbmWebServiceRequest.Config configRequest = new SbmWebServiceRequest.Config(); + configRequest.DataType = SbmWebServiceRequest.DataType.Price; + configRequest.RequestType = requestType; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} \ No newline at end of file diff --git a/SaBusMgrMobCore/Mobile/Core/Mgr/SbmPriceMgr_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmPriceMgr_Mobile.cs new file mode 100644 index 0000000..44bbcec --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmPriceMgr_Mobile.cs @@ -0,0 +1,47 @@ +using Sarand.BusinessMgr.Mobile.Core.App; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.BusinessMgr.Core.Mgr; +using Sarand.BusinessMgr.Core.WebService; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Dbas.Base; +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; + +namespace Sarand.BusinessMgr.Mobile.Core.Mgr +{ + //======================================================================= + public partial class SbmPriceMgr_Mobile : SbmPriceMgr, ISbmItemMgr_Mobile + { + //------------------------------------------------------------------- + // Definitions. + + //------------------------------------------------------------------- + // Data members. + private SbmWebServiceClient webServiceClient = new SbmWebServiceClient(); + + //------------------------------------------------------------------- + // Construction. + public SbmPriceMgr_Mobile (SbmUserContext userContext) : + base(userContext) + { + } + + //------------------------------------------------------------------- + // Properties. + public SbmSessionProfile_Mobile SessionProfile { get { return SbmGlobals_Mobile.SessionProfile; } } + public String UserCode { get; } + public String EmailAddress { get; } + + //------------------------------------------------------------------- + // A s s o c i a t e d D a t a + //------------------------------------------------------------------- + public override bool PriceDatabaseIsValid => throw new NotImplementedException(); + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Mgr/SbmProcessMgr_Mobile-ItemProcesses.cs b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmProcessMgr_Mobile-ItemProcesses.cs new file mode 100644 index 0000000..a28029b --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmProcessMgr_Mobile-ItemProcesses.cs @@ -0,0 +1,217 @@ +using Sarand.Core.App; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Data; +using Sarand.Core.Dbas.Base; +using Sarand.Core.Tasks; +using Sarand.Core.Xml; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.BusinessMgr.Core.WebService; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using System.Xml.Linq; +using Sarand.BusinessMgr.Mobile.Core.Bus; + +namespace Sarand.BusinessMgr.Mobile.Core.Mgr +{ + //======================================================================= + partial class SbmProcessMgr_Mobile + { + //******************************************************************* + // I t e m P r o c e s s + //******************************************************************* + // Create ItemProcess. + public override SbmItemProcess CreateItemProcess (Sbm.ItemType itemType, SysId itemId, SysId processId) + { + ClearErrorState(); + return new SbmItemProcess_Mobile(UserContext, itemType, itemId, processId, 0); + } + + //------------------------------------------------------------------- + // Get ItemProcess. + public override List GetProcessesForItem (SbmItemProcess.Params prmItemProcess) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate ItemProcess. + public override bool IsValidItemProcessData (SbmItemProcess.Data data, SbmItemProcess.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidItemProcessData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Update ItemProcess. + public override bool UpdateProcessesForItem (Sbm.ItemType itemType, SysId itemId, List itemProcesses) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement itemProcessElement, SbmItemProcess itemProcess, DbUpdateInfo dbUpdateInfo) + { + itemProcessElement.AppendElement(nameof(itemProcess.Id), SysId.ToString(itemProcess.Id)); + itemProcessElement.AppendElement(nameof(itemProcess.ItemType), itemProcess.ItemType.ToString()); + itemProcessElement.AppendElement(nameof(itemProcess.ItemId), SysId.ToString(itemProcess.ItemId)); + itemProcessElement.AppendElement(nameof(itemProcess.ProcessId), SysId.ToString(itemProcess.ProcessId)); + itemProcessElement.AppendElement(nameof(itemProcess.Seq), itemProcess.Seq.ToString("N3")); + itemProcessElement.AppendElement(nameof(itemProcess.AmountNet), itemProcess.AmountNet.ToString("N3")); + itemProcessElement.AppendElement(nameof(itemProcess.Completed), DateUtil.FormatXmlDateTime(itemProcess.Completed)); + itemProcessElement.AppendElement(nameof(itemProcess.AssocIdContractor), SysId.ToString(itemProcess.AssocIdContractor)); + itemProcessElement.AppendElement(nameof(itemProcess.Notes), itemProcess.Notes); + itemProcessElement.AppendElement(nameof(itemProcess.Status), SacsSystem.GetStatusCode(itemProcess.Status)); + itemProcessElement.AppendElement(nameof(itemProcess.Flags), itemProcess.Flags.ToString()); + if (!SysId.IsValid(itemProcess.Id)) + { + itemProcessElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + itemProcessElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + itemProcessElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + itemProcessElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + itemProcessElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + itemProcessElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement itemProcessElement, SbmItemProcess itemProcess) + { + itemProcess.Id = new SysId(StringUtil.ToInt(itemProcessElement.GetChildText("Id"))); + itemProcess.ItemType = EnumUtil.ParseEnum(itemProcessElement.GetChildText(nameof(itemProcess.ItemType)), Sbm.ItemType.Unknown); + itemProcess.ItemId = new SysId(StringUtil.ToInt(itemProcessElement.GetChildText(nameof(itemProcess.ItemId)))); + itemProcess.ProcessId = new SysId(StringUtil.ToInt(itemProcessElement.GetChildText(nameof(itemProcess.ProcessId)))); + itemProcess.Seq = StringUtil.ToShort(itemProcessElement.GetChildText(nameof(itemProcess.Seq))); + itemProcess.AmountNet = StringUtil.ToDecimal(itemProcessElement.GetChildText(nameof(itemProcess.AmountNet))); + itemProcess.Completed = DateUtil.ParseXmlDateTime(itemProcessElement.GetChildText(nameof(itemProcess.Completed))); + itemProcess.AssocIdContractor = new SysId(StringUtil.ToInt(itemProcessElement.GetChildText(nameof(itemProcess.AssocIdContractor)))); + itemProcess.Notes = itemProcessElement.GetChildText(nameof(itemProcess.Notes)); + itemProcess.Status = SacsSystem.GetStatusForCode(itemProcessElement.GetChildText(nameof(itemProcess.Status))); + itemProcess.SetCreateStamp(DateUtil.ParseXmlDateTime(itemProcessElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(itemProcessElement.GetChildText("CreateBy"))), itemProcessElement.GetChildText("CreateHost")); + itemProcess.SetUpdateStamp(DateUtil.ParseXmlDateTime(itemProcessElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(itemProcessElement.GetChildText("UpdateBy"))), itemProcessElement.GetChildText("UpdateHost")); + itemProcess.AcceptChanges(); + } + + //------------------------------------------------------------------- + // ItemProcess query filter. + public Dictionary GetItemProcessQueryFilter_Mobile (SbmItemProcess.Params prm) + { + Dictionary filter = new Dictionary(); + + // ItemProcess Id. + if (prm.IncludedIds.Count > 0) filter.Add(nameof(prm.IncludedIds), prm.IncludedIds.Concat(",")); + if (prm.ExcludedIds.Count > 0) filter.Add(nameof(prm.ExcludedIds), prm.ExcludedIds.Concat(",")); + + // Item type. + if ((int)prm.ItemType > 0) filter.Add(nameof(prm.ItemType), ((int)prm.ItemType).ToString()); + + // Item Id. + if (SysId.IsValid(prm.ItemId)) filter.Add(nameof(prm.ItemId), SysId.ToString(prm.ItemId)); + + // Process Id. + if (SysId.IsValid(prm.ProcessId)) filter.Add(nameof(prm.ProcessId), SysId.ToString(prm.ProcessId)); + + // Primary only. + if (prm.RestrictToActive != false) filter.Add(nameof(prm.RestrictToActive), prm.RestrictToActive.ToString()); + + // Status. + filter.Add(nameof(prm.StatusCat), prm.StatusCat.ToString()); + + // Paging. + if (prm.ResultsPaging.Paged) + { + filter.Add(nameof(prm.ResultsPaging.PageNo), prm.ResultsPaging.PageNo.ToString()); + filter.Add(nameof(prm.ResultsPaging.PageLength), prm.ResultsPaging.PageLength.ToString()); + } + + return filter; + } + // ItemProcess sort columns. + public List GetItemProcessSortColumns (SbmItemProcess.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // ItemProcess list. + public async Task> GetItemProcessList_Mobile (SbmItemProcess.Params prmItemProcess, SacsTaskData taskData) + { + ClearErrorState(); + List itemProcesses = new List(); + String fn = GetType().Name + ".GetItemProcessList_Mobile"; + + // ItemProcess columns. + List columns = new List(EnumUtil.GetValues()); + + List itemDataList = await ExecuteItemProcessQuery_Mobile(columns, prmItemProcess, taskData); + foreach (SbmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + //Sbm.ItemType itemType = EnumUtil.ParseEnum(itemData.GetValue(SbmItemProcess.Column.itemType), Sbm.ItemType.Unknown); + //SysId itemId = itemData.GetIdValue(SbmItemProcess.Column.ItemId); + SysId itemId = new SysId(); + //SysId processId = itemData.GetIdValue(SbmItemProcess.Column.ProcessId); + SysId processId = new SysId(); + ushort flags = (ushort)itemData.GetIntValue(SbmItemProcess.Column.Flag); + // Create item. + SbmItemProcess_Mobile itemProcess = new SbmItemProcess_Mobile(UserContext, Sbm.ItemType.Unknown, itemId, processId, flags); + // Populate item properties. + foreach (SbmItemProcess.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + //case SbmItemProcess.Column.ItemType: itemProcess.ItemType = EnumUtil.ParseEnum(itemData.GetValue(column), Sbm.ItemType.Unknown); break; + //case SbmItemProcess.Column.ItemId: itemProcess.ItemId = itemData.GetIdValue(column); break; + //case SbmItemProcess.Column.ProcessId: itemProcess.ProcessId = itemData.GetIdValue(column); break; + //case SbmItemProcess.Column.Seq: itemProcess.Seq = StringUtil.ToShort(itemData.GetDecimalValue(column)); break; + //case SbmItemProcess.Column.AmountNet: itemProcess.AmountNet = itemData.GetDecimalValue(column); break; + //case SbmItemProcess.Column.Completed: itemProcess.Completed = itemData.GetDateTimeValue(column); break; + //case SbmItemProcess.Column.AssocIdContractor: itemProcess.AssocIdContractor = itemData.GetIdValue(column); break; + case SbmItemProcess.Column.Notes: itemProcess.Notes = value; break; + case SbmItemProcess.Column.Status: itemProcess.Status = SacsSystem.GetStatusForCode(value); break; + } + } + itemProcesses.Add(itemProcess); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " ItemProcesses: " + itemProcesses.Count); + return itemProcesses; + } + + + //------------------------------------------------------------------- + // ItemProcess query execution. + public async Task> ExecuteItemProcessQuery_Mobile (List itemProcessColumns, SbmItemProcess.Params prmItemProcess, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SbmItemProcess.Column column in itemProcessColumns) + columns.Add(column.ToString()); + + SbmWebServiceClient.ItemListResponseData responseData = await webServiceClient.RequestItemList(GetItemProcessRequestConfig(SbmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetItemProcessQueryFilter_Mobile(prmItemProcess), this.GetSortColumns_Mobile(prmItemProcess), taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SbmWebServiceRequest.Config GetItemProcessRequestConfig (SbmWebServiceRequest.RequestType requestType, bool debug = false) + { + SbmWebServiceRequest.Config configRequest = new SbmWebServiceRequest.Config(); + configRequest.DataType = SbmWebServiceRequest.DataType.ItemProcess; + configRequest.RequestType = requestType; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} \ No newline at end of file diff --git a/SaBusMgrMobCore/Mobile/Core/Mgr/SbmProcessMgr_Mobile-Processes.cs b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmProcessMgr_Mobile-Processes.cs new file mode 100644 index 0000000..cecbfe0 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmProcessMgr_Mobile-Processes.cs @@ -0,0 +1,283 @@ +using Sarand.Core.App; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Data; +using Sarand.Core.Dbas.Base; +using Sarand.Core.Tasks; +using Sarand.Core.Xml; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.BusinessMgr.Core.WebService; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using System.Xml.Linq; +using Sarand.BusinessMgr.Mobile.Core.Bus; + +namespace Sarand.BusinessMgr.Mobile.Core.Mgr +{ + //======================================================================= + partial class SbmProcessMgr_Mobile + { + //******************************************************************* + // P r o c e s s e s + //******************************************************************* + // Create Process. + public override SbmProcess CreateProcess (Sbm.ProcessCategory processCategory) + { + ClearErrorState(); + return new SbmProcess_Mobile(UserContext, null, null, processCategory, 0); + } + + //------------------------------------------------------------------- + // Get Process. + public override SbmProcess GetProcess (SbmProcess.Params prmProcess) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate Process. + public override bool IsValidProcessData (SbmProcess.Data data, SbmProcess.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidProcessData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert Process. + public override bool InsertProcess (SbmProcess process, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidProcess(process)) return false; + if (SysId.IsValid(process.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update Process. + public override bool UpdateProcess (SbmProcess process, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidProcess(process)) return false; + if (!SysId.IsValid(process.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete Process. + public override bool ProcessCanBeDeleted (SbmProcess process) + { + ClearErrorState(); + if (!base.ProcessCanBeDeleted(process)) return false; + return true; + } + public override bool DeleteProcess (SbmProcess process, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!ProcessCanBeDeleted(process)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement processElement, SbmProcess process, DbUpdateInfo dbUpdateInfo) + { + processElement.AppendElement(nameof(process.Id), SysId.ToString(process.Id)); + processElement.AppendElement(nameof(process.AffiliateIdOwner), SysId.ToString(process.AffiliateIdOwner)); + processElement.AppendElement(nameof(process.ProcessCategory), process.ProcessCategory.ToString()); + processElement.AppendElement(nameof(process.ProcessType), process.ProcessType.ToString()); + processElement.AppendElement(nameof(process.Seq), process.Seq.ToString("N3")); + processElement.AppendElement(nameof(process.DescBrief), process.DescBrief); + processElement.AppendElement(nameof(process.DescOutline), process.DescOutline); + processElement.AppendElement(nameof(process.Notes), process.Notes); + processElement.AppendElement(nameof(process.Status), SacsSystem.GetStatusCode(process.Status)); + processElement.AppendElement(nameof(process.Flags), process.Flags.ToString()); + if (!SysId.IsValid(process.Id)) + { + processElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + processElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + processElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + processElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + processElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + processElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement processElement, SbmProcess process) + { + process.Id = new SysId(StringUtil.ToInt(processElement.GetChildText("Id"))); + process.AffiliateIdOwner = new SysId(StringUtil.ToInt(processElement.GetChildText(nameof(process.AffiliateIdOwner)))); + process.ProcessCategory = EnumUtil.ParseEnum(processElement.GetChildText(nameof(process.ProcessCategory)), Sbm.ProcessCategory.Unknown); + process.ProcessType = EnumUtil.ParseEnum(processElement.GetChildText(nameof(process.ProcessType)), Sbm.ProcessType.Unknown); + process.Seq = StringUtil.ToShort(processElement.GetChildText(nameof(process.Seq))); + process.DescBrief = processElement.GetChildText(nameof(process.DescBrief)); + process.DescOutline = processElement.GetChildText(nameof(process.DescOutline)); + process.Notes = processElement.GetChildText(nameof(process.Notes)); + process.Status = SacsSystem.GetStatusForCode(processElement.GetChildText(nameof(process.Status))); + process.SetCreateStamp(DateUtil.ParseXmlDateTime(processElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(processElement.GetChildText("CreateBy"))), processElement.GetChildText("CreateHost")); + process.SetUpdateStamp(DateUtil.ParseXmlDateTime(processElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(processElement.GetChildText("UpdateBy"))), processElement.GetChildText("UpdateHost")); + process.AcceptChanges(); + } + + //------------------------------------------------------------------- + // Process column definitions. + public override ColumnDfn GetProcessColumnDfn (SbmProcess.Column columnId, string caption = "", int width = 0) + { + ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width); + if (!String.IsNullOrEmpty(caption)) + columnDfn.Caption = caption; + if (width > 0) + columnDfn.Width = width; + columnDfn.DataName = columnId.ToString(); + return columnDfn; + } + + //------------------------------------------------------------------- + // Process query filter. + public override List GetProcessQueryFilter (SbmProcess.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetProcessQueryFilter_Mobile (SbmProcess.Params prm) + { + Dictionary filter = new Dictionary(); + + // Process Id. + if (prm.IncludedIds.Count > 0) filter.Add(nameof(prm.IncludedIds), prm.IncludedIds.Concat(",")); + if (prm.ExcludedIds.Count > 0) filter.Add(nameof(prm.ExcludedIds), prm.ExcludedIds.Concat(",")); + + // Process category. + if ((int)prm.ProcessCategory > 0) filter.Add(nameof(prm.ProcessCategory), ((int)prm.ProcessCategory).ToString()); + + // Process type. + if ((int)prm.ProcessType > 0) filter.Add(nameof(prm.ProcessType), ((int)prm.ProcessType).ToString()); + + // Seq. + if (prm.Seq > 0) filter.Add(nameof(prm.Seq), prm.Seq.ToString("N3")); + + // Desc brief. + if (!StringUtil.IsEmpty(prm.DescBrief)) filter.Add(nameof(prm.DescBrief), prm.DescBrief); + + // Restrict to active. + if (prm.RestrictToActive != false) filter.Add(nameof(prm.RestrictToActive), prm.RestrictToActive.ToString()); + + // Restrict to defaults. + if (prm.RestrictToDefaults != false) filter.Add(nameof(prm.RestrictToDefaults), prm.RestrictToDefaults.ToString()); + + // Status. + filter.Add(nameof(prm.StatusCat), prm.StatusCat.ToString()); + + // Paging. + if (prm.ResultsPaging.Paged) + { + filter.Add(nameof(prm.ResultsPaging.PageNo), prm.ResultsPaging.PageNo.ToString()); + filter.Add(nameof(prm.ResultsPaging.PageLength), prm.ResultsPaging.PageLength.ToString()); + } + + return filter; + } + // Process sort columns. + public List GetProcessSortColumns (SbmProcess.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Process count. + public override long GetProcessCount (SbmProcess.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Process list. + public override List GetProcessList (SbmProcess.Params prm) + { + List processes = new List(); + throw new NotImplementedException(); + } + public async Task> GetProcessList_Mobile (SbmProcess.Params prmProcess, SacsTaskData taskData) + { + ClearErrorState(); + List processes = new List(); + String fn = GetType().Name + ".GetProcessList_Mobile"; + + // Process columns. + List columns = new List(EnumUtil.GetValues()); + + List itemDataList = await ExecuteProcessQuery_Mobile(columns, prmProcess, taskData); + foreach (SbmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + //SysId id = itemData.GetIdValue(SbmProcess.Column.Id); + SysId id = new SysId(); + //SysId affIdOwner = itemData.GetIdValue(SbmProcess.Column.affIdOwner); + SysId affIdOwner = new SysId(); + Sbm.ProcessCategory processCategory = EnumUtil.ParseEnum(itemData.GetValue(SbmProcess.Column.Category), Sbm.ProcessCategory.Unknown); + ushort flags = (ushort)itemData.GetIntValue(SbmProcess.Column.Flag); + // Create item. + SbmProcess_Mobile process = new SbmProcess_Mobile(UserContext, id, affIdOwner, processCategory, flags); + // Populate item properties. + foreach (SbmProcess.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + //case SbmProcess.Column.AffIdOwner: process.AffIdOwner = itemData.GetIdValue(column); break; + case SbmProcess.Column.Category: process.ProcessCategory = EnumUtil.ParseEnum(itemData.GetValue(column), Sbm.ProcessCategory.Unknown); break; + case SbmProcess.Column.Type: process.ProcessType = EnumUtil.ParseEnum(itemData.GetValue(column), Sbm.ProcessType.Unknown); break; + case SbmProcess.Column.Seq: process.Seq = StringUtil.ToShort(itemData.GetDecimalValue(column)); break; + case SbmProcess.Column.DescBrief: process.DescBrief = value; break; + case SbmProcess.Column.DescOutline: process.DescOutline = value; break; + case SbmProcess.Column.Notes: process.Notes = value; break; + case SbmProcess.Column.Status: process.Status = SacsSystem.GetStatusForCode(value); break; + } + } + processes.Add(process); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " Processes: " + processes.Count); + return processes; + } + + + //------------------------------------------------------------------- + // Process query execution. + public override DbResultSet ExecuteProcessQuery (List columns, SbmProcess.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecuteProcessQuery_Mobile (List processColumns, SbmProcess.Params prmProcess, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SbmProcess.Column column in processColumns) + columns.Add(column.ToString()); + + SbmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetProcessRequestConfig(SbmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetProcessQueryFilter_Mobile(prmProcess), columns, this.GetSortColumns_Mobile(prmProcess), taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SbmWebServiceRequest.Config GetProcessRequestConfig (SbmWebServiceRequest.RequestType requestType, bool debug = false) + { + SbmWebServiceRequest.Config configRequest = new SbmWebServiceRequest.Config(); + configRequest.DataType = SbmWebServiceRequest.DataType.Process; + configRequest.RequestType = requestType; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} + diff --git a/SaBusMgrMobCore/Mobile/Core/Mgr/SbmProcessMgr_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmProcessMgr_Mobile.cs new file mode 100644 index 0000000..52dada2 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmProcessMgr_Mobile.cs @@ -0,0 +1,81 @@ +using Sarand.BusinessMgr.Mobile.Core.App; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.BusinessMgr.Core.Mgr; +using Sarand.BusinessMgr.Core.WebService; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Dbas.Base; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.Mgr +{ + //======================================================================= + public partial class SbmProcessMgr_Mobile : SbmProcessMgr, ISbmItemMgr_Mobile + { + //------------------------------------------------------------------- + // Definitions. + + //------------------------------------------------------------------- + // Data members. + private SbmWebServiceClient webServiceClient = new SbmWebServiceClient(); + + //------------------------------------------------------------------- + // Construction. + public SbmProcessMgr_Mobile (SbmUserContext userContext) : + base(userContext) + { + } + + //------------------------------------------------------------------- + // Properties. + public SbmSessionProfile_Mobile SessionProfile { get { return SbmGlobals_Mobile.SessionProfile; } } + public String UserCode { get; } + public String EmailAddress { get; } + + //------------------------------------------------------------------- + // A s s o c i a t e d D a t a + //------------------------------------------------------------------- + public override bool ProcessDatabaseIsValid => throw new NotImplementedException(); + + public override SbmItemProcess CreateItemProcessForConstituent (SbmConstituent constituent) + { + throw new NotImplementedException(); + } + + public override List GetProcessesForItem (Sbm.ItemType itemType, SysId itemId, bool activeOnly) + { + throw new NotImplementedException(); + } + + public override SbmItemProcess GetProcessForItem (Sbm.ItemType itemType, SysId itemId, SysId processId) + { + throw new NotImplementedException(); + } + + public override short GetProcessSeqMax () + { + throw new NotImplementedException(); + } + + public override bool HasItemProcesses (Sbm.ItemType itemType, SysId itemId) + { + throw new NotImplementedException(); + } + + public override bool HasProcesses (Sbm.ProcessCategory processCategory) + { + throw new NotImplementedException(); + } + + public override bool StoreItemProcesses (Sbm.ItemType itemType, SysId itemId, List itemProcesses, DbUpdateInfo dbUpdateInfo) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Mgr/SbmStockMgr_Mobile-Locations.cs b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmStockMgr_Mobile-Locations.cs new file mode 100644 index 0000000..74aa0d5 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmStockMgr_Mobile-Locations.cs @@ -0,0 +1,279 @@ +using Sarand.Core.App; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Data; +using Sarand.Core.Dbas.Base; +using Sarand.Core.Tasks; +using Sarand.Core.Xml; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using System.Xml.Linq; +using Sarand.BusinessMgr.Mobile.Core.Bus; +using Sarand.BusinessMgr.Core.WebService; + +namespace Sarand.BusinessMgr.Mobile.Core.Mgr +{ + //======================================================================= + partial class SbmStockMgr_Mobile + { + //******************************************************************* + // L o c a t i o n s + //******************************************************************* + // Create Location. + public override SbmLocation CreateLocation (Sbm.LocationCategory locationCategory) + { + ClearErrorState(); + return new SbmLocation_Mobile(UserContext, null, null,locationCategory, 0); + } + + //------------------------------------------------------------------- + // Get Location. + public override SbmLocation GetLocation (SbmLocation.Params prmLocation) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate Location. + public override bool IsValidLocationData (SbmLocation.Data data, SbmLocation.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidLocationData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert Location. + public override bool InsertLocation (SbmLocation location, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidLocation(location)) return false; + if (SysId.IsValid(location.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update Location. + public override bool UpdateLocation (SbmLocation location, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidLocation(location)) return false; + if (!SysId.IsValid(location.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete Location. + public override bool LocationCanBeDeleted (SbmLocation location) + { + ClearErrorState(); + if (!base.LocationCanBeDeleted(location)) return false; + return true; + } + public override bool DeleteLocation (SbmLocation location, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!LocationCanBeDeleted(location)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement locationElement, SbmLocation location, DbUpdateInfo dbUpdateInfo) + { + locationElement.AppendElement(nameof(location.Id), SysId.ToString(location.Id)); + locationElement.AppendElement(nameof(location.AffiliateIdOwner), SysId.ToString(location.AffiliateIdOwner)); + locationElement.AppendElement(nameof(location.LocationCategory), location.LocationCategory.ToString()); + locationElement.AppendElement(nameof(location.Code), location.Code); + locationElement.AppendElement(nameof(location.Name), location.Name); + locationElement.AppendElement(nameof(location.Notes), location.Notes); + locationElement.AppendElement(nameof(location.Status), SacsSystem.GetStatusCode(location.Status)); + locationElement.AppendElement(nameof(location.Flags), location.Flags.ToString()); + if (!SysId.IsValid(location.Id)) + { + locationElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + locationElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + locationElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + locationElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + locationElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + locationElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement locationElement, SbmLocation location) + { + location.Id = new SysId(StringUtil.ToInt(locationElement.GetChildText("Id"))); + location.AffiliateIdOwner = new SysId(StringUtil.ToInt(locationElement.GetChildText(nameof(location.AffiliateIdOwner)))); + location.LocationCategory = EnumUtil.ParseEnum(locationElement.GetChildText(nameof(location.LocationCategory)), Sbm.LocationCategory.Unknown); + location.Code = locationElement.GetChildText(nameof(location.Code)); + location.Name = locationElement.GetChildText(nameof(location.Name)); + location.Notes = locationElement.GetChildText(nameof(location.Notes)); + location.Status = SacsSystem.GetStatusForCode(locationElement.GetChildText(nameof(location.Status))); + location.SetCreateStamp(DateUtil.ParseXmlDateTime(locationElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(locationElement.GetChildText("CreateBy"))), locationElement.GetChildText("CreateHost")); + location.SetUpdateStamp(DateUtil.ParseXmlDateTime(locationElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(locationElement.GetChildText("UpdateBy"))), locationElement.GetChildText("UpdateHost")); + location.AcceptChanges(); + } + + //------------------------------------------------------------------- + // Location column definitions. + public override ColumnDfn GetLocationColumnDfn (SbmLocation.Column columnId, string caption = "", int width = 0) + { + ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width); + if (!String.IsNullOrEmpty(caption)) + columnDfn.Caption = caption; + if (width > 0) + columnDfn.Width = width; + columnDfn.DataName = columnId.ToString(); + return columnDfn; + } + + //------------------------------------------------------------------- + // Location query filter. + public override List GetLocationQueryFilter (SbmLocation.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetLocationQueryFilter_Mobile (SbmLocation.Params prm) + { + Dictionary filter = new Dictionary(); + + // Location Id. + if (prm.IncludedIds.Count > 0) filter.Add(nameof(prm.IncludedIds), prm.IncludedIds.Concat(",")); + if (prm.ExcludedIds.Count > 0) filter.Add(nameof(prm.ExcludedIds), prm.ExcludedIds.Concat(",")); + + // Vessel Id. + if (SysId.IsValid(prm.AffiliateIdOwner)) filter.Add(nameof(prm.AffiliateIdOwner), SysId.ToString(prm.AffiliateIdOwner)); + + // Location category. + if ((int)prm.LocationCategory > 0) filter.Add(nameof(prm.LocationCategory), ((int)prm.LocationCategory).ToString()); + + // Code. + if (!StringUtil.IsEmpty(prm.Code)) filter.Add(nameof(prm.Code), prm.Code); + if (!StringUtil.IsEmpty(prm.CodePartial)) filter.Add(nameof(prm.CodePartial), prm.CodePartial); + + // Name. + if (!StringUtil.IsEmpty(prm.Name)) filter.Add(nameof(prm.Name), prm.Name); + if (!StringUtil.IsEmpty(prm.NamePartial)) filter.Add(nameof(prm.NamePartial), prm.NamePartial); + + // Restrict to sales stock. + if (prm.RestrictToSalesStock != false) filter.Add(nameof(prm.RestrictToSalesStock), prm.RestrictToSalesStock.ToString()); + + // Restrict to calculate stock. + if (prm.RestrictToCalculateStock != false) filter.Add(nameof(prm.RestrictToCalculateStock), prm.RestrictToCalculateStock.ToString()); + + // Restrict to active. + //if (prm.RestrictToActive != false) filter.Add(nameof(prm.RestrictToActive), prm.RestrictToActive.ToString()); + + // Status. + filter.Add(nameof(prm.StatusCat), prm.StatusCat.ToString()); + + // Paging. + if (prm.ResultsPaging.Paged) + { + filter.Add(nameof(prm.ResultsPaging.PageNo), prm.ResultsPaging.PageNo.ToString()); + filter.Add(nameof(prm.ResultsPaging.PageLength), prm.ResultsPaging.PageLength.ToString()); + } + + return filter; + } + // Location sort columns. + public List GetLocationSortColumns (SbmLocation.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Location count. + public override long GetLocationCount (SbmLocation.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Location list. + public override List GetLocationList (SbmLocation.Params prm) + { + List locations = new List(); + throw new NotImplementedException(); + } + public async Task> GetLocationList_Mobile (SbmLocation.Params prmLocation, SacsTaskData taskData) + { + ClearErrorState(); + List locations = new List(); + String fn = GetType().Name + ".GetLocationList_Mobile"; + + // Location columns. + List columns = new List(EnumUtil.GetValues()); + + List itemDataList = await ExecuteLocationQuery_Mobile(columns, prmLocation, taskData); + foreach (SbmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId id = itemData.GetIdValue(SbmLocation.Column.Id); + SysId affiliateIdOwner = new SysId(); + //Sbm.LocationCategory locationCategory = EnumUtil.ParseEnum(itemData.GetValue(SbmLocation.Column.LocationCategory), Sbm.LocationCategory.Unknown); + ushort flags = (ushort)itemData.GetIntValue(SbmLocation.Column.Flags); + // Create item. + SbmLocation_Mobile location = new SbmLocation_Mobile(UserContext, id, affiliateIdOwner, Sbm.LocationCategory.Unknown, flags); + // Populate item properties. + foreach (SbmLocation.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + //case SbmLocation.Column.AffiliateIdOwner: location.AffiliateIdOwner = itemData.GetIdValue(column); break; + //case SbmAddress.Column.LocationCategory: location.LocationCategory = EnumUtil.ParseEnum(itemData.GetValue(column), Sbm.LocationCategory.Unknown); break; + case SbmLocation.Column.Code: location.Code = value; break; + case SbmLocation.Column.Name: location.Name = value; break; + case SbmLocation.Column.Notes: location.Notes = value; break; + case SbmLocation.Column.Status: location.Status = SacsSystem.GetStatusForCode(value); break; + } + } + locations.Add(location); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " Locations: " + locations.Count); + return locations; + } + + + //------------------------------------------------------------------- + // Location query execution. + public override DbResultSet ExecuteLocationQuery (List columns, SbmLocation.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecuteLocationQuery_Mobile (List locationColumns, SbmLocation.Params prmLocation, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SbmLocation.Column column in locationColumns) + columns.Add(column.ToString()); + + SbmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetLocationRequestConfig(SbmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetLocationQueryFilter_Mobile(prmLocation), columns, this.GetSortColumns_Mobile(prmLocation), taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SbmWebServiceRequest.Config GetLocationRequestConfig (SbmWebServiceRequest.RequestType requestType, bool debug = false) + { + SbmWebServiceRequest.Config configRequest = new SbmWebServiceRequest.Config(); + configRequest.DataType = SbmWebServiceRequest.DataType.Location; + configRequest.RequestType = requestType; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} \ No newline at end of file diff --git a/SaBusMgrMobCore/Mobile/Core/Mgr/SbmStockMgr_Mobile-Movements.cs b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmStockMgr_Mobile-Movements.cs new file mode 100644 index 0000000..4d276ca --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmStockMgr_Mobile-Movements.cs @@ -0,0 +1,324 @@ +using Sarand.Core.App; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Data; +using Sarand.Core.Dbas.Base; +using Sarand.Core.Tasks; +using Sarand.Core.Xml; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.BusinessMgr.Core.WebService; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using System.Xml.Linq; +using Sarand.BusinessMgr.Mobile.Core.Bus; + +namespace Sarand.BusinessMgr.Mobile.Core.Mgr +{ + //======================================================================= + partial class SbmStockMgr_Mobile + { + //******************************************************************* + // M o v e m e n t s + //******************************************************************* + // Create Movement. + public override SbmMovement CreateMovement (Sbm.ItemType itemType, SysId itemId, Sbm.MovementType movementType) + { + ClearErrorState(); + return new SbmMovement_Mobile(UserContext, null, itemType, itemId, movementType, 0); + } + + //------------------------------------------------------------------- + // Get Movement. + public override SbmMovement GetMovement (SbmMovement.Params prmMovement) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate Movement. + public override bool IsValidMovementData (SbmMovement.Data data, SbmMovement.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidMovementData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert Movement. + public override bool InsertMovement (SbmMovement movement, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidMovement(movement)) return false; + if (SysId.IsValid(movement.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update Movement. + public override bool UpdateMovement (SbmMovement movement, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidMovement(movement)) return false; + if (!SysId.IsValid(movement.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete Movement. + public override bool MovementCanBeDeleted (SbmMovement movement) + { + ClearErrorState(); + if (!base.MovementCanBeDeleted(movement)) return false; + return true; + } + public override bool DeleteMovement (SbmMovement movement, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!MovementCanBeDeleted(movement)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement movementElement, SbmMovement movement, DbUpdateInfo dbUpdateInfo) + { + movementElement.AppendElement(nameof(movement.Id), SysId.ToString(movement.Id)); + movementElement.AppendElement(nameof(movement.ItemType), movement.ItemType.ToString()); + movementElement.AppendElement(nameof(movement.ItemId), SysId.ToString(movement.ItemId)); + movementElement.AppendElement(nameof(movement.MovementType), movement.MovementType.ToString()); + movementElement.AppendElement(nameof(movement.Movement), DateUtil.FormatXmlDateTime(movement.Movement)); + movementElement.AppendElement(nameof(movement.LocationIdFrom), SysId.ToString(movement.LocationIdFrom)); + movementElement.AppendElement(nameof(movement.LocationIdTo), SysId.ToString(movement.LocationIdTo)); + movementElement.AppendElement(nameof(movement.Quantity), movement.Quantity.ToString("N3")); + movementElement.AppendElement(nameof(movement.MovementIdSource), SysId.ToString(movement.MovementIdSource)); + movementElement.AppendElement(nameof(movement.ItemTypeSource), movement.ItemTypeSource.ToString()); + movementElement.AppendElement(nameof(movement.ItemIdSource), SysId.ToString(movement.ItemIdSource)); + movementElement.AppendElement(nameof(movement.Notes), movement.Notes); + movementElement.AppendElement(nameof(movement.Status), SacsSystem.GetStatusCode(movement.Status)); + movementElement.AppendElement(nameof(movement.Flags), movement.Flags.ToString()); + if (!SysId.IsValid(movement.Id)) + { + movementElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + movementElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + movementElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + movementElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + movementElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + movementElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement movementElement, SbmMovement movement) + { + movement.Id = new SysId(StringUtil.ToInt(movementElement.GetChildText("Id"))); + movement.ItemType = EnumUtil.ParseEnum(movementElement.GetChildText(nameof(movement.ItemType)), Sbm.ItemType.Unknown); + movement.ItemId = new SysId(StringUtil.ToInt(movementElement.GetChildText(nameof(movement.ItemId)))); + movement.MovementType = EnumUtil.ParseEnum(movementElement.GetChildText(nameof(movement.MovementType)), Sbm.MovementType.Unknown); + movement.Movement = DateUtil.ParseXmlDateTime(movementElement.GetChildText(nameof(movement.Movement))); + movement.LocationIdFrom = new SysId(StringUtil.ToInt(movementElement.GetChildText(nameof(movement.LocationIdFrom)))); + movement.LocationIdTo = new SysId(StringUtil.ToInt(movementElement.GetChildText(nameof(movement.LocationIdTo)))); + movement.Quantity = StringUtil.ToDecimal(movementElement.GetChildText(nameof(movement.Quantity))); + movement.MovementIdSource = new SysId(StringUtil.ToInt(movementElement.GetChildText(nameof(movement.MovementIdSource)))); + movement.ItemTypeSource = EnumUtil.ParseEnum(movementElement.GetChildText(nameof(movement.ItemTypeSource)), Sbm.ItemType.Unknown); + movement.ItemIdSource = new SysId(StringUtil.ToInt(movementElement.GetChildText(nameof(movement.ItemIdSource)))); + movement.Notes = movementElement.GetChildText(nameof(movement.Notes)); + movement.Status = SacsSystem.GetStatusForCode(movementElement.GetChildText(nameof(movement.Status))); + movement.SetCreateStamp(DateUtil.ParseXmlDateTime(movementElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(movementElement.GetChildText("CreateBy"))), movementElement.GetChildText("CreateHost")); + movement.SetUpdateStamp(DateUtil.ParseXmlDateTime(movementElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(movementElement.GetChildText("UpdateBy"))), movementElement.GetChildText("UpdateHost")); + movement.AcceptChanges(); + } + + //------------------------------------------------------------------- + // Movement column definitions. + public override ColumnDfn GetMovementColumnDfn (SbmMovement.Column columnId, string caption = "", int width = 0) + { + ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width); + if (!String.IsNullOrEmpty(caption)) + columnDfn.Caption = caption; + if (width > 0) + columnDfn.Width = width; + columnDfn.DataName = columnId.ToString(); + return columnDfn; + } + + //------------------------------------------------------------------- + // Movement query filter. + public override List GetMovementQueryFilter (SbmMovement.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetMovementQueryFilter_Mobile (SbmMovement.Params prm) + { + Dictionary filter = new Dictionary(); + + // Movement Id. + if (prm.IncludedIds.Count > 0) filter.Add(nameof(prm.IncludedIds), prm.IncludedIds.Concat(",")); + if (prm.ExcludedIds.Count > 0) filter.Add(nameof(prm.ExcludedIds), prm.ExcludedIds.Concat(",")); + + // Item type. + if ((int)prm.ItemType > 0) filter.Add(nameof(prm.ItemType), ((int)prm.ItemType).ToString()); + + // Item type source. + if ((int)prm.ItemTypeSource > 0) filter.Add(nameof(prm.ItemTypeSource), ((int)prm.ItemTypeSource).ToString()); + + // ItemIds. + if (prm.ItemIds.Count > 0) filter.Add(nameof(prm.ItemIds), prm.ItemIds.Concat(",")); + if (prm.ItemIdsSource.Count > 0) filter.Add(nameof(prm.ItemIdsSource), prm.ItemIdsSource.Concat(",")); + + // Container item type. + if ((int)prm.ContainerItemType > 0) filter.Add(nameof(prm.ContainerItemType), ((int)prm.ContainerItemType).ToString()); + + // Container item Id. + if (SysId.IsValid(prm.ContainerItemId)) filter.Add(nameof(prm.ContainerItemId), SysId.ToString(prm.ContainerItemId)); + + // Item Id source. + if (prm.ItemIdSource.Count > 0) filter.Add(nameof(prm.ItemIdSource), prm.ItemIdSource.Concat(",")); + + // Exclude provisional containers. + if (prm.ExcludeProvisionalContainers != false) filter.Add(nameof(prm.ExcludeProvisionalContainers), prm.ExcludeProvisionalContainers.ToString()); + + // Movement type. + if ((int)prm.MovementType > 0) filter.Add(nameof(prm.MovementType), ((int)prm.MovementType).ToString()); + + // Movement. + if (DateUtil.IsValid(prm.MovementFrom)) filter.Add(nameof(prm.MovementFrom), DateUtil.FormatXmlDate(prm.MovementFrom)); + if (DateUtil.IsValid(prm.MovementTo)) filter.Add(nameof(prm.MovementTo), DateUtil.FormatXmlDate(prm.MovementTo)); + + // Location Id. + if (SysId.IsValid(prm.LocationId)) filter.Add(nameof(prm.LocationId), SysId.ToString(prm.LocationId)); + if (SysId.IsValid(prm.LocationIdFrom)) filter.Add(nameof(prm.LocationIdFrom), SysId.ToString(prm.LocationIdFrom)); + if (SysId.IsValid(prm.LocationIdTo)) filter.Add(nameof(prm.LocationIdTo), SysId.ToString(prm.LocationIdTo)); + + // Restrict to sales stock locations. + if (prm.RestrictToSalesStockLocations != false) filter.Add(nameof(prm.RestrictToSalesStockLocations), prm.RestrictToSalesStockLocations.ToString()); + + // Restrict to calculate stock locations. + if (prm.RestrictToCalculateStockLocations != false) filter.Add(nameof(prm.RestrictToCalculateStockLocations), prm.RestrictToCalculateStockLocations.ToString()); + + // Include requirements for transactions. + if (prm.IncludeRequirementsForTransactions != false) filter.Add(nameof(prm.IncludeRequirementsForTransactions), prm.IncludeRequirementsForTransactions.ToString()); + + // Movement Id source. + if (SysId.IsValid(prm.MovementIdSource)) filter.Add(nameof(prm.MovementIdSource), SysId.ToString(prm.MovementIdSource)); + + // Status. + if ((int)prm.Status > 0) filter.Add(nameof(prm.Status), ((int)prm.Status).ToString()); + + // Status. + filter.Add(nameof(prm.StatusCat), prm.StatusCat.ToString()); + + // Paging. + if (prm.ResultsPaging.Paged) + { + filter.Add(nameof(prm.ResultsPaging.PageNo), prm.ResultsPaging.PageNo.ToString()); + filter.Add(nameof(prm.ResultsPaging.PageLength), prm.ResultsPaging.PageLength.ToString()); + } + + return filter; + } + // Movement sort columns. + public List GetMovementSortColumns (SbmMovement.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Movement count. + public override long GetMovementCount (SbmMovement.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Movement list. + public override List GetMovementList (SbmMovement.Params prm) + { + List movements = new List(); + throw new NotImplementedException(); + } + public async Task> GetMovementList_Mobile (SbmMovement.Params prmMovement, SacsTaskData taskData) + { + ClearErrorState(); + List movements = new List(); + String fn = GetType().Name + ".GetMovementList_Mobile"; + + // Movement columns. + List columns = new List(EnumUtil.GetValues()); + + List itemDataList = await ExecuteMovementQuery_Mobile(columns, prmMovement, taskData); + foreach (SbmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId id = itemData.GetIdValue(SbmMovement.Column.Id); + Sbm.ItemType itemType = EnumUtil.ParseEnum(itemData.GetValue(SbmMovement.Column.ItemType), Sbm.ItemType.Unknown); + SysId itemId = itemData.GetIdValue(SbmMovement.Column.ItemId); + Sbm.MovementType movementType = EnumUtil.ParseEnum(itemData.GetValue(SbmMovement.Column.Type_Desc), Sbm.MovementType.Unknown); + ushort flags = (ushort)itemData.GetIntValue(SbmMovement.Column.Flag); + // Create item. + SbmMovement_Mobile movement = new SbmMovement_Mobile(UserContext, id, itemType, itemId, movementType, flags); + // Populate item properties. + foreach (SbmMovement.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + case SbmMovement.Column.ItemType: movement.ItemType = EnumUtil.ParseEnum(itemData.GetValue(column), Sbm.ItemType.Unknown); break; + case SbmMovement.Column.ItemId: movement.ItemId = itemData.GetIdValue(column); break; + case SbmMovement.Column.Type_Desc: movement.MovementType = EnumUtil.ParseEnum(itemData.GetValue(column), Sbm.MovementType.Unknown); break; + case SbmMovement.Column.Movement: movement.Movement = itemData.GetDateTimeValue(column); break; + case SbmMovement.Column.LocationIdFrom: movement.LocationIdFrom = itemData.GetIdValue(column); break; + case SbmMovement.Column.LocationIdTo: movement.LocationIdTo = itemData.GetIdValue(column); break; + case SbmMovement.Column.Quantity: movement.Quantity = itemData.GetDecimalValue(column); break; + case SbmMovement.Column.MovementIdSource: movement.MovementIdSource = itemData.GetIdValue(column); break; + case SbmMovement.Column.SourceItemType: movement.ItemTypeSource= EnumUtil.ParseEnum(itemData.GetValue(column), Sbm.ItemType.Unknown); break; + case SbmMovement.Column.SourceItemId: movement.ItemIdSource = itemData.GetIdValue(column); break; + case SbmMovement.Column.Notes: movement.Notes = value; break; + case SbmMovement.Column.Status: movement.Status = SacsSystem.GetStatusForCode(value); break; + } + } + movements.Add(movement); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " Movements: " + movements.Count); + return movements; + } + + + //------------------------------------------------------------------- + // Movement query execution. + public override DbResultSet ExecuteMovementQuery (List columns, SbmMovement.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecuteMovementQuery_Mobile (List movementColumns, SbmMovement.Params prmMovement, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SbmMovement.Column column in movementColumns) + columns.Add(column.ToString()); + + SbmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetMovementRequestConfig(SbmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetMovementQueryFilter_Mobile(prmMovement), columns, this.GetSortColumns_Mobile(prmMovement), taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SbmWebServiceRequest.Config GetMovementRequestConfig (SbmWebServiceRequest.RequestType requestType, bool debug = false) + { + SbmWebServiceRequest.Config configRequest = new SbmWebServiceRequest.Config(); + configRequest.DataType = SbmWebServiceRequest.DataType.Movement; + configRequest.RequestType = requestType; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} \ No newline at end of file diff --git a/SaBusMgrMobCore/Mobile/Core/Mgr/SbmStockMgr_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmStockMgr_Mobile.cs new file mode 100644 index 0000000..f4d38cd --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmStockMgr_Mobile.cs @@ -0,0 +1,74 @@ +using Sarand.BusinessMgr.Mobile.Core.App; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.BusinessMgr.Core.Mgr; +using Sarand.BusinessMgr.Core.WebService; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Dbas.Base; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.Mgr +{ + //======================================================================= + public partial class SbmStockMgr_Mobile : SbmStockMgr, ISbmItemMgr_Mobile + { + //------------------------------------------------------------------- + // Definitions. + + //------------------------------------------------------------------- + // Data members. + private SbmWebServiceClient webServiceClient = new SbmWebServiceClient(); + + //------------------------------------------------------------------- + // Construction. + public SbmStockMgr_Mobile (SbmUserContext userContext) : + base(userContext) + { + } + + //------------------------------------------------------------------- + // Properties. + public SbmSessionProfile_Mobile SessionProfile { get { return SbmGlobals_Mobile.SessionProfile; } } + public String UserCode { get; } + public String EmailAddress { get; } + + //------------------------------------------------------------------- + // A s s o c i a t e d D a t a + //------------------------------------------------------------------- + public override bool CancelMovementsForSourceItem (Sbm.ItemType itemType, SysId itemId) + { + throw new NotImplementedException(); + } + + public override bool ClearMovementsForSourceItem (Sbm.ItemType itemType, SysId itemId) + { + throw new NotImplementedException(); + } + + public override bool DatabaseIsValid () + { + throw new NotImplementedException(); + } + + public override string GetItemSource (Sbm.ItemType itemType, SysId id, bool brief = false) + { + throw new NotImplementedException(); + } + + public override bool PopulateLocationIds () + { + throw new NotImplementedException(); + } + + public override bool SourceItemHasMovements (Sbm.ItemType itemType, SysId itemId) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/Mgr/SbmTransactionMgr_Mobile-Constituents.cs b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmTransactionMgr_Mobile-Constituents.cs new file mode 100644 index 0000000..ff50eb9 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmTransactionMgr_Mobile-Constituents.cs @@ -0,0 +1,389 @@ +using Sarand.Core.App; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Data; +using Sarand.Core.Dbas.Base; +using Sarand.Core.Tasks; +using Sarand.Core.Xml; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.BusinessMgr.Core.WebService; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using System.Xml.Linq; +using Sarand.BusinessMgr.Mobile.Core.Bus; + +namespace Sarand.BusinessMgr.Mobile.Core.Mgr +{ + //======================================================================= + partial class SbmTransactionMgr_Mobile + { + //******************************************************************* + // C o n s t i t u e n t s + //******************************************************************* + // Create Constituent. + public override SbmConstituent CreateConstituent (SysId assocId, Sbm.ConstituentType constituentType) + { + ClearErrorState(); + return new SbmConstituent_Mobile(UserContext, null, null, assocId, constituentType, 0); + } + + //------------------------------------------------------------------- + // Get Constituent. + public override SbmConstituent GetConstituent (SbmConstituent.Params prmConstituent) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate Constituent. + public override bool IsValidConstituentData (SbmConstituent.Data data, SbmConstituent.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidConstituentData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert Constituent. + public override bool InsertConstituent (SbmConstituent constituent, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidConstituent(constituent)) return false; + if (SysId.IsValid(constituent.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update Constituent. + public override bool UpdateConstituent (SbmConstituent constituent, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidConstituent(constituent)) return false; + if (!SysId.IsValid(constituent.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete Constituent. + public override bool ConstituentCanBeDeleted (SbmConstituent constituent) + { + ClearErrorState(); + if (!base.ConstituentCanBeDeleted(constituent)) return false; + return true; + } + public override bool DeleteConstituent (SbmConstituent constituent, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!ConstituentCanBeDeleted(constituent)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement constituentElement, SbmConstituent constituent, DbUpdateInfo dbUpdateInfo) + { + constituentElement.AppendElement(nameof(constituent.Id), SysId.ToString(constituent.Id)); + constituentElement.AppendElement(nameof(constituent.AffiliateIdOwner), SysId.ToString(constituent.AffiliateIdOwner)); + constituentElement.AppendElement(nameof(constituent.AffiliateIdTarget), SysId.ToString(constituent.AffiliateIdTarget)); + constituentElement.AppendElement(nameof(constituent.AssociationId), SysId.ToString(constituent.AssociationId)); + constituentElement.AppendElement(nameof(constituent.TransactionId), SysId.ToString(constituent.TransactionId)); + constituentElement.AppendElement(nameof(constituent.RequirementId), SysId.ToString(constituent.RequirementId)); + constituentElement.AppendElement(nameof(constituent.ConstituentId), SysId.ToString(constituent.ConstituentId)); + constituentElement.AppendElement(nameof(constituent.AssetId), SysId.ToString(constituent.AssetId)); + constituentElement.AppendElement(nameof(constituent.ProcessId), SysId.ToString(constituent.ProcessId)); + constituentElement.AppendElement(nameof(constituent.AssociationIdContractor), SysId.ToString(constituent.AssociationIdContractor)); + constituentElement.AppendElement(nameof(constituent.ConstituentType), constituent.ConstituentType.ToString()); + //constituentElement.AppendElement(nameof(constituent.Ref), constituent.Ref); + constituentElement.AppendElement(nameof(constituent.Seq), constituent.Seq.ToString("N3")); + constituentElement.AppendElement(nameof(constituent.Effective), DateUtil.FormatXmlDateTime(constituent.Effective)); + constituentElement.AppendElement(nameof(constituent.Required), DateUtil.FormatXmlDateTime(constituent.Required)); + constituentElement.AppendElement(nameof(constituent.Started), DateUtil.FormatXmlDateTime(constituent.Started)); + constituentElement.AppendElement(nameof(constituent.Completed), DateUtil.FormatXmlDateTime(constituent.Completed)); + constituentElement.AppendElement(nameof(constituent.DescBrief), constituent.DescBrief); + constituentElement.AppendElement(nameof(constituent.DescOutline), constituent.DescOutline); + constituentElement.AppendElement(nameof(constituent.DescDetail), constituent.DescDetail); + constituentElement.AppendElement(nameof(constituent.TaskNumber), constituent.TaskNumber); + constituentElement.AppendElement(nameof(constituent.Priority), constituent.Priority.ToString("N3")); + constituentElement.AppendElement(nameof(constituent.Category), constituent.Category); + constituentElement.AppendElement(nameof(constituent.Reference), constituent.Reference); + constituentElement.AppendElement(nameof(constituent.Quantity), constituent.Quantity.ToString("N3")); + constituentElement.AppendElement(nameof(constituent.UomId), SysId.ToString(constituent.UomId)); + constituentElement.AppendElement(nameof(constituent.UnitCost), constituent.UnitCost.ToString("N3")); + constituentElement.AppendElement(nameof(constituent.AmountEst), constituent.AmountEst.ToString("N3")); + constituentElement.AppendElement(nameof(constituent.AmountNet), constituent.AmountNet.ToString("N3")); + constituentElement.AppendElement(nameof(constituent.TaxCodeId), SysId.ToString(constituent.TaxCodeId)); + constituentElement.AppendElement(nameof(constituent.TaxRate), constituent.TaxRate.ToString("N3")); + constituentElement.AppendElement(nameof(constituent.AmountTax), constituent.AmountTax.ToString("N3")); + constituentElement.AppendElement(nameof(constituent.AmountTot), constituent.AmountTot.ToString("N3")); + constituentElement.AppendElement(nameof(constituent.TaxRateRebate), constituent.TaxRateRebate.ToString("N3")); + constituentElement.AppendElement(nameof(constituent.AmountTaxRebate), constituent.AmountTaxRebate.ToString("N3")); + constituentElement.AppendElement(nameof(constituent.Notes), constituent.Notes); + constituentElement.AppendElement(nameof(constituent.Status), SacsSystem.GetStatusCode(constituent.Status)); + constituentElement.AppendElement(nameof(constituent.Flags), constituent.Flags.ToString()); + if (!SysId.IsValid(constituent.Id)) + { + constituentElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + constituentElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + constituentElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + constituentElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + constituentElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + constituentElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement constituentElement, SbmConstituent constituent) + { + constituent.Id = new SysId(StringUtil.ToInt(constituentElement.GetChildText("Id"))); + constituent.AffiliateIdOwner = new SysId(StringUtil.ToInt(constituentElement.GetChildText(nameof(constituent.AffiliateIdOwner)))); + constituent.AffiliateIdTarget = new SysId(StringUtil.ToInt(constituentElement.GetChildText(nameof(constituent.AffiliateIdTarget)))); + constituent.AssociationId = new SysId(StringUtil.ToInt(constituentElement.GetChildText(nameof(constituent.AssociationId)))); + constituent.TransactionId = new SysId(StringUtil.ToInt(constituentElement.GetChildText(nameof(constituent.TransactionId)))); + constituent.RequirementId = new SysId(StringUtil.ToInt(constituentElement.GetChildText(nameof(constituent.RequirementId)))); + constituent.ConstituentId = new SysId(StringUtil.ToInt(constituentElement.GetChildText(nameof(constituent.ConstituentId)))); + constituent.AssetId = new SysId(StringUtil.ToInt(constituentElement.GetChildText(nameof(constituent.AssetId)))); + constituent.ProcessId = new SysId(StringUtil.ToInt(constituentElement.GetChildText(nameof(constituent.ProcessId)))); + constituent.AssociationIdContractor = new SysId(StringUtil.ToInt(constituentElement.GetChildText(nameof(constituent.AssociationIdContractor)))); + constituent.ConstituentType = EnumUtil.ParseEnum(constituentElement.GetChildText(nameof(constituent.ConstituentType)), Sbm.ConstituentType.Unknown); + //constituent.Ref = constituentElement.GetChildText(nameof(constituent.Ref)); + constituent.Seq = StringUtil.ToShort(constituentElement.GetChildText(nameof(constituent.Seq))); + constituent.Effective = DateUtil.ParseXmlDateTime(constituentElement.GetChildText(nameof(constituent.Effective))); + constituent.Required = DateUtil.ParseXmlDateTime(constituentElement.GetChildText(nameof(constituent.Required))); + constituent.Started = DateUtil.ParseXmlDateTime(constituentElement.GetChildText(nameof(constituent.Started))); + constituent.Completed = DateUtil.ParseXmlDateTime(constituentElement.GetChildText(nameof(constituent.Completed))); + constituent.DescBrief = constituentElement.GetChildText(nameof(constituent.DescBrief)); + constituent.DescOutline = constituentElement.GetChildText(nameof(constituent.DescOutline)); + constituent.DescDetail = constituentElement.GetChildText(nameof(constituent.DescDetail)); + constituent.TaskNumber = constituentElement.GetChildText(nameof(constituent.TaskNumber)); + constituent.Priority = StringUtil.ToShort(constituentElement.GetChildText(nameof(constituent.Priority))); + constituent.Category = constituentElement.GetChildText(nameof(constituent.Category)); + constituent.Reference = constituentElement.GetChildText(nameof(constituent.Reference)); + constituent.Quantity = StringUtil.ToDecimal(constituentElement.GetChildText(nameof(constituent.Quantity))); + constituent.UomId = new SysId(StringUtil.ToInt(constituentElement.GetChildText(nameof(constituent.UomId)))); + constituent.UnitCost = StringUtil.ToDecimal(constituentElement.GetChildText(nameof(constituent.UnitCost))); + constituent.AmountEst = StringUtil.ToDecimal(constituentElement.GetChildText(nameof(constituent.AmountEst))); + constituent.AmountNet = StringUtil.ToDecimal(constituentElement.GetChildText(nameof(constituent.AmountNet))); + constituent.TaxCodeId = new SysId(StringUtil.ToInt(constituentElement.GetChildText(nameof(constituent.TaxCodeId)))); + constituent.TaxRate = StringUtil.ToDecimal(constituentElement.GetChildText(nameof(constituent.TaxRate))); + constituent.AmountTax = StringUtil.ToDecimal(constituentElement.GetChildText(nameof(constituent.AmountTax))); + constituent.AmountTot = StringUtil.ToDecimal(constituentElement.GetChildText(nameof(constituent.AmountTot))); + constituent.TaxRateRebate = StringUtil.ToDecimal(constituentElement.GetChildText(nameof(constituent.TaxRateRebate))); + constituent.AmountTaxRebate = StringUtil.ToDecimal(constituentElement.GetChildText(nameof(constituent.AmountTaxRebate))); + constituent.Notes = constituentElement.GetChildText(nameof(constituent.Notes)); + constituent.Status = SacsSystem.GetStatusForCode(constituentElement.GetChildText(nameof(constituent.Status))); + constituent.SetCreateStamp(DateUtil.ParseXmlDateTime(constituentElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(constituentElement.GetChildText("CreateBy"))), constituentElement.GetChildText("CreateHost")); + constituent.SetUpdateStamp(DateUtil.ParseXmlDateTime(constituentElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(constituentElement.GetChildText("UpdateBy"))), constituentElement.GetChildText("UpdateHost")); + constituent.AcceptChanges(); + } + + //------------------------------------------------------------------- + // Constituent column definitions. + public override ColumnDfn GetConstituentColumnDfn (SbmConstituent.Column columnId, string caption = "", int width = 0) + { + ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width); + if (!String.IsNullOrEmpty(caption)) + columnDfn.Caption = caption; + if (width > 0) + columnDfn.Width = width; + columnDfn.DataName = columnId.ToString(); + return columnDfn; + } + + //------------------------------------------------------------------- + // Constituent query filter. + public override List GetConstituentQueryFilter (SbmConstituent.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetConstituentQueryFilter_Mobile (SbmConstituent.Params prm) + { + Dictionary filter = new Dictionary(); + + // Constituent Id. + if (prm.IncludedIds.Count > 0) filter.Add(nameof(prm.IncludedIds), prm.IncludedIds.Concat(",")); + if (prm.ExcludedIds.Count > 0) filter.Add(nameof(prm.ExcludedIds), prm.ExcludedIds.Concat(",")); + + // Address type. + if ((int)prm.ConstituentType > 0) filter.Add(nameof(prm.ConstituentType), ((int)prm.ConstituentType).ToString()); + + // Aff Id target. + if (SysId.IsValid(prm.AffIdTarget)) filter.Add(nameof(prm.AffIdTarget), SysId.ToString(prm.AffIdTarget)); + + // Assoc Id. + if (SysId.IsValid(prm.AssocId)) filter.Add(nameof(prm.AssocId), SysId.ToString(prm.AssocId)); + + // Trans Id. + if (SysId.IsValid(prm.TransId)) filter.Add(nameof(prm.TransId), SysId.ToString(prm.TransId)); + + // Reqnt Id. + if (SysId.IsValid(prm.ReqntId)) filter.Add(nameof(prm.ReqntId), SysId.ToString(prm.ReqntId)); + + // Const Id. + if (SysId.IsValid(prm.ConstId)) filter.Add(nameof(prm.ConstId), SysId.ToString(prm.ConstId)); + + // Asset Id. + if (SysId.IsValid(prm.AssetId)) filter.Add(nameof(prm.AssetId), SysId.ToString(prm.AssetId)); + + // Asset serial. + if (!StringUtil.IsEmpty(prm.AssetSerialFull)) filter.Add(nameof(prm.AssetSerialFull), prm.AssetSerialFull); + if (!StringUtil.IsEmpty(prm.AssetSerialPartial)) filter.Add(nameof(prm.AssetSerialPartial), prm.AssetSerialPartial); + + // Ref. + if (!StringUtil.IsEmpty(prm.Ref)) filter.Add(nameof(prm.Ref), prm.Ref); + + // Desc Brief. + if (!StringUtil.IsEmpty(prm.DescBrief)) filter.Add(nameof(prm.DescBrief), prm.DescBrief); + if (!StringUtil.IsEmpty(prm.DescBriefPartial)) filter.Add(nameof(prm.DescBriefPartial), prm.DescBriefPartial); + + // Effective. + if (DateUtil.IsValid(prm.EffectiveFrom)) filter.Add(nameof(prm.EffectiveFrom), DateUtil.FormatXmlDate(prm.EffectiveFrom)); + if (DateUtil.IsValid(prm.EffectiveTo)) filter.Add(nameof(prm.EffectiveTo), DateUtil.FormatXmlDate(prm.EffectiveTo)); + + // Updated since. + if (DateUtil.IsValid(prm.UpdatedSince)) filter.Add(nameof(prm.UpdatedSince), DateUtil.FormatXmlDate(prm.UpdatedSince)); + + // Use job number. + if (prm.UseJobNumber != false) filter.Add(nameof(prm.UseJobNumber), prm.UseJobNumber.ToString()); + + // Status. + filter.Add(nameof(prm.StatusCat), prm.StatusCat.ToString()); + + // Paging. + if (prm.ResultsPaging.Paged) + { + filter.Add(nameof(prm.ResultsPaging.PageNo), prm.ResultsPaging.PageNo.ToString()); + filter.Add(nameof(prm.ResultsPaging.PageLength), prm.ResultsPaging.PageLength.ToString()); + } + + return filter; + } + // Constituent sort columns. + public List GetConstituentSortColumns (SbmConstituent.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Constituent count. + public override long GetConstituentCount (SbmConstituent.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Constituent list. + public override List GetConstituentList (SbmConstituent.Params prm) + { + List constituents = new List(); + throw new NotImplementedException(); + } + public async Task> GetConstituentList_Mobile (SbmConstituent.Params prmConstituent, SacsTaskData taskData) + { + ClearErrorState(); + List constituents = new List(); + String fn = GetType().Name + ".GetConstituentList_Mobile"; + + // Constituent columns. + List columns = new List(EnumUtil.GetValues()); + + List itemDataList = await ExecuteConstituentQuery_Mobile(columns, prmConstituent, taskData); + foreach (SbmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId id = itemData.GetIdValue(SbmConstituent.Column.Id); + SysId affIdOwner = itemData.GetIdValue(SbmConstituent.Column.AffIdOwner); + SysId assocId = itemData.GetIdValue(SbmConstituent.Column.AssocId); + Sbm.ConstituentType constituentType = EnumUtil.ParseEnum(itemData.GetValue(SbmConstituent.Column.Type), Sbm.ConstituentType.Unknown); + ushort flags = (ushort)itemData.GetIntValue(SbmConstituent.Column.Flag); + // Create item. + SbmConstituent_Mobile constituent = new SbmConstituent_Mobile(UserContext, id, affIdOwner, assocId, constituentType, flags); + // Populate item properties. + foreach (SbmConstituent.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + case SbmConstituent.Column.AffIdOwner: constituent.AffiliateIdOwner = itemData.GetIdValue(column); break; + case SbmConstituent.Column.AffIdTarget: constituent.AffiliateIdTarget = itemData.GetIdValue(column); break; + case SbmConstituent.Column.AssocId: constituent.AssociationId = itemData.GetIdValue(column); break; + case SbmConstituent.Column.TransId: constituent.TransactionId = itemData.GetIdValue(column); break; + case SbmConstituent.Column.ReqntId: constituent.RequirementId = itemData.GetIdValue(column); break; + case SbmConstituent.Column.ConstId: constituent.ConstituentId= itemData.GetIdValue(column); break; + case SbmConstituent.Column.AssetId: constituent.AssetId = itemData.GetIdValue(column); break; + case SbmConstituent.Column.ProcessId: constituent.ProcessId = itemData.GetIdValue(column); break; + //case SbmConstituent.Column.AssocIdContractor: constituent.AssociationIdContractor = itemData.GetIdValue(column); break; + case SbmConstituent.Column.Type: constituent.ConstituentType = EnumUtil.ParseEnum(itemData.GetValue(column), Sbm.ConstituentType.Any); break; + //case SbmConstituent.Column.Ref: constituent.Ref = value; break; + //case SbmConstituent.Column.Seq: constituent.Seq = StringUtil.ToShort(itemData.GetDecimalValue(column)); break; + case SbmConstituent.Column.Effective_Date: constituent.Effective = itemData.GetDateTimeValue(column); break; + case SbmConstituent.Column.Required_Date: constituent.Required = itemData.GetDateTimeValue(column); break; + case SbmConstituent.Column.Started_Date: constituent.Started = itemData.GetDateTimeValue(column); break; + case SbmConstituent.Column.Completed_Date: constituent.Completed = itemData.GetDateTimeValue(column); break; + case SbmConstituent.Column.DescBrief: constituent.DescBrief = value; break; + case SbmConstituent.Column.DescOutline: constituent.DescOutline = value; break; + case SbmConstituent.Column.DescDetail: constituent.DescDetail = value; break; + case SbmConstituent.Column.TaskNumber: constituent.TaskNumber = value; break; + case SbmConstituent.Column.Priority: constituent.Priority = StringUtil.ToShort(itemData.GetDecimalValue(column)); break; + case SbmConstituent.Column.Category: constituent.Category = value; break; + case SbmConstituent.Column.Reference: constituent.Reference = value; break; + case SbmConstituent.Column.Quantity: constituent.Quantity = itemData.GetDecimalValue(column); break; + //case SbmConstituent.Column.UomId: constituent.UomId= itemData.GetIdValue(column); break; + case SbmConstituent.Column.UnitCost: constituent.UnitCost = itemData.GetDecimalValue(column); break; + case SbmConstituent.Column.AmountEst: constituent.AmountEst = itemData.GetDecimalValue(column); break; + case SbmConstituent.Column.AmountNet: constituent.AmountNet = itemData.GetDecimalValue(column); break; + //case SbmConstituent.Column.TaxCodeId: constituent.TaxCodeId = itemData.GetIdValue(column); break; + case SbmConstituent.Column.TaxRate: constituent.TaxRate = itemData.GetDecimalValue(column); break; + case SbmConstituent.Column.AmountTax: constituent.AmountTax = itemData.GetDecimalValue(column); break; + case SbmConstituent.Column.AmountTot: constituent.AmountTot = itemData.GetDecimalValue(column); break; + //case SbmConstituent.Column.TaxRateRebate: constituent.TaxRateRebate = itemData.GetDecimalValue(column); break; + //case SbmConstituent.Column.AmountTaxRebate: constituent.AmountTaxRebate = itemData.GetDecimalValue(column); break; + case SbmConstituent.Column.Notes: constituent.Notes = value; break; + case SbmConstituent.Column.Status: constituent.Status = SacsSystem.GetStatusForCode(value); break; + } + } + constituents.Add(constituent); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " Constituents: " + constituents.Count); + return constituents; + } + + + //------------------------------------------------------------------- + // Constituent query execution. + public override DbResultSet ExecuteConstituentQuery (List columns, SbmConstituent.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecuteConstituentQuery_Mobile (List constituentColumns, SbmConstituent.Params prmConstituent, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SbmConstituent.Column column in constituentColumns) + columns.Add(column.ToString()); + + SbmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetConstituentRequestConfig(SbmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetConstituentQueryFilter_Mobile(prmConstituent), columns, this.GetSortColumns_Mobile(prmConstituent), taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SbmWebServiceRequest.Config GetConstituentRequestConfig (SbmWebServiceRequest.RequestType requestType, bool debug = false) + { + SbmWebServiceRequest.Config configRequest = new SbmWebServiceRequest.Config(); + configRequest.DataType = SbmWebServiceRequest.DataType.Constituent; + configRequest.RequestType = requestType; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} \ No newline at end of file diff --git a/SaBusMgrMobCore/Mobile/Core/Mgr/SbmTransactionMgr_Mobile-Requirements.cs b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmTransactionMgr_Mobile-Requirements.cs new file mode 100644 index 0000000..bbd9b28 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmTransactionMgr_Mobile-Requirements.cs @@ -0,0 +1,509 @@ +using Sarand.Core.App; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Data; +using Sarand.Core.Dbas.Base; +using Sarand.Core.Tasks; +using Sarand.Core.Xml; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.BusinessMgr.Core.WebService; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using System.Xml.Linq; +using Sarand.BusinessMgr.Mobile.Core.Bus; + +namespace Sarand.BusinessMgr.Mobile.Core.Mgr +{ + //======================================================================= + partial class SbmTransactionMgr_Mobile + { + //******************************************************************* + // R e q u i r e m e n t s + //******************************************************************* + // Create Requirement. + public override SbmRequirement CreateRequirement (SysId assocId, SysId transId, Sbm.RequirementType requirementType) + { + ClearErrorState(); + return new SbmRequirement_Mobile(UserContext, null, null, assocId, transId, requirementType, 0); + } + + //------------------------------------------------------------------- + // Get Requirement. + public override SbmRequirement GetRequirement (SbmRequirement.Params prmRequirement) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate Requirement. + public override bool IsValidRequirementData (SbmRequirement.Data data, SbmRequirement.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidRequirementData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert Requirement. + public override bool InsertRequirement (SbmRequirement requirement, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidRequirement(requirement)) return false; + if (SysId.IsValid(requirement.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update Requirement. + public override bool UpdateRequirement (SbmRequirement requirement, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidRequirement(requirement)) return false; + if (!SysId.IsValid(requirement.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete Requirement. + public override bool RequirementCanBeDeleted (SbmRequirement.Data requirement, Sbm.TransactionType transactionType) + { + ClearErrorState(); + if (!base.RequirementCanBeDeleted(requirement, transactionType)) return false; + return true; + } + public override bool DeleteRequirement (SbmRequirement requirement, Sbm.TransactionType transactionType, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!RequirementCanBeDeleted(requirement, transactionType)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement requirementElement, SbmRequirement requirement, DbUpdateInfo dbUpdateInfo) + { + requirementElement.AppendElement(nameof(requirement.Id), SysId.ToString(requirement.Id)); + requirementElement.AppendElement(nameof(requirement.AffiliateIdOwner), SysId.ToString(requirement.AffiliateIdOwner)); + requirementElement.AppendElement(nameof(requirement.AssociationId), SysId.ToString(requirement.AssociationId)); + requirementElement.AppendElement(nameof(requirement.TransactionId), SysId.ToString(requirement.TransactionId)); + requirementElement.AppendElement(nameof(requirement.RequirementType), requirement.RequirementType.ToString()); + requirementElement.AppendElement(nameof(requirement.Seq), requirement.Seq.ToString("N3")); + requirementElement.AppendElement(nameof(requirement.RequirementIdSource), SysId.ToString(requirement.RequirementIdSource)); + requirementElement.AppendElement(nameof(requirement.Required), DateUtil.FormatXmlDateTime(requirement.Required)); + requirementElement.AppendElement(nameof(requirement.Started), DateUtil.FormatXmlDateTime(requirement.Started)); + requirementElement.AppendElement(nameof(requirement.Completed), DateUtil.FormatXmlDateTime(requirement.Completed)); + requirementElement.AppendElement(nameof(requirement.JobNumber), requirement.JobNumber); + requirementElement.AppendElement(nameof(requirement.AssociationIdSubContract), SysId.ToString(requirement.AssociationIdSubContract)); + requirementElement.AppendElement(nameof(requirement.CommodityId), SysId.ToString(requirement.CommodityId)); + requirementElement.AppendElement(nameof(requirement.ProductCode), requirement.ProductCode); + requirementElement.AppendElement(nameof(requirement.AssetId), SysId.ToString(requirement.AssetId)); + requirementElement.AppendElement(nameof(requirement.DescBrief), requirement.DescBrief); + requirementElement.AppendElement(nameof(requirement.DescIntro), requirement.DescIntro); + requirementElement.AppendElement(nameof(requirement.DescOutline), requirement.DescOutline); + requirementElement.AppendElement(nameof(requirement.DescDetail), requirement.DescDetail); + requirementElement.AppendElement(nameof(requirement.PromotionCode), requirement.PromotionCode); + requirementElement.AppendElement(nameof(requirement.NominalCode), requirement.NominalCode); + requirementElement.AppendElement(nameof(requirement.Quantity), requirement.Quantity.ToString("N3")); + requirementElement.AppendElement(nameof(requirement.QuantityProd), requirement.QuantityProd.ToString("N3")); + requirementElement.AppendElement(nameof(requirement.UomId), SysId.ToString(requirement.UomId)); + requirementElement.AppendElement(nameof(requirement.Weight), requirement.Weight.ToString("N3")); + requirementElement.AppendElement(nameof(requirement.UomIdWeight), SysId.ToString(requirement.UomIdWeight)); + requirementElement.AppendElement(nameof(requirement.MaterialSourceCode), requirement.MaterialSourceCode); + requirementElement.AppendElement(nameof(requirement.AmountUnit), requirement.AmountUnit.ToString("N3")); + requirementElement.AppendElement(nameof(requirement.AmountAct), requirement.AmountAct.ToString("N3")); + requirementElement.AppendElement(nameof(requirement.AmountDisc), requirement.AmountDisc.ToString("N3")); + requirementElement.AppendElement(nameof(requirement.AmountNet), requirement.AmountNet.ToString("N3")); + requirementElement.AppendElement(nameof(requirement.TaxCodeId), SysId.ToString(requirement.TaxCodeId)); + requirementElement.AppendElement(nameof(requirement.TaxRate), requirement.TaxRate.ToString("N3")); + requirementElement.AppendElement(nameof(requirement.AmountTax), requirement.AmountTax.ToString("N3")); + requirementElement.AppendElement(nameof(requirement.AmountTot), requirement.AmountTot.ToString("N3")); + requirementElement.AppendElement(nameof(requirement.TimeEst), requirement.TimeEst.ToString("N3")); + //requirementElement.AppendElement(nameof(requirement.TimeEst), requirement.TimeEstChunks; + requirementElement.AppendElement(nameof(requirement.TimeAct), requirement.TimeAct.ToString("N3")); + //requirementElement.AppendElement(nameof(requirement.TimeEst), requirement.TimeActChunks; + requirementElement.AppendElement(nameof(requirement.TimeTot), requirement.TimeTot.ToString("N3")); + requirementElement.AppendElement(nameof(requirement.LocationIdStock), SysId.ToString(requirement.LocationIdStock)); + requirementElement.AppendElement(nameof(requirement.CostLabourHours), requirement.CostLabourHours.ToString("N3")); + requirementElement.AppendElement(nameof(requirement.CostLabourRateHour), requirement.CostLabourRateHour.ToString("N3")); + requirementElement.AppendElement(nameof(requirement.CostLabour), requirement.CostLabour.ToString("N3")); + requirementElement.AppendElement(nameof(requirement.CostCommodity), requirement.CostCommodity.ToString("N3")); + requirementElement.AppendElement(nameof(requirement.CostPurchase), requirement.CostPurchase.ToString("N3")); + requirementElement.AppendElement(nameof(requirement.CostProcess), requirement.CostProcess.ToString("N3")); + requirementElement.AppendElement(nameof(requirement.CostAdditional), requirement.CostAdditional.ToString("N3")); + requirementElement.AppendElement(nameof(requirement.CostTotal), requirement.CostTotal.ToString("N3")); + requirementElement.AppendElement(nameof(requirement.CostCalculated), DateUtil.FormatXmlDateTime(requirement.CostCalculated)); + requirementElement.AppendElement(nameof(requirement.Notes), requirement.Notes); + requirementElement.AppendElement(nameof(requirement.Status), SacsSystem.GetStatusCode(requirement.Status)); + requirementElement.AppendElement(nameof(requirement.Flags), requirement.Flags.ToString()); + if (!SysId.IsValid(requirement.Id)) + { + requirementElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + requirementElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + requirementElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + requirementElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + requirementElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + requirementElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement requirementElement, SbmRequirement requirement) + { + requirement.Id = new SysId(StringUtil.ToInt(requirementElement.GetChildText("Id"))); + requirement.AffiliateIdOwner = new SysId(StringUtil.ToInt(requirementElement.GetChildText(nameof(requirement.AffiliateIdOwner)))); + requirement.AssociationId = new SysId(StringUtil.ToInt(requirementElement.GetChildText(nameof(requirement.AssociationId)))); + requirement.TransactionId = new SysId(StringUtil.ToInt(requirementElement.GetChildText(nameof(requirement.TransactionId)))); + requirement.RequirementType = EnumUtil.ParseEnum(requirementElement.GetChildText(nameof(requirement.RequirementType)), Sbm.RequirementType.Any); + requirement.Seq = StringUtil.ToShort(requirementElement.GetChildText(nameof(requirement.Seq))); + requirement.RequirementIdSource = new SysId(StringUtil.ToInt(requirementElement.GetChildText(nameof(requirement.RequirementIdSource)))); + requirement.Required = DateUtil.ParseXmlDateTime(requirementElement.GetChildText(nameof(requirement.Required))); + requirement.Started = DateUtil.ParseXmlDateTime(requirementElement.GetChildText(nameof(requirement.Started))); + requirement.Completed = DateUtil.ParseXmlDateTime(requirementElement.GetChildText(nameof(requirement.Completed))); + requirement.JobNumber = requirementElement.GetChildText(nameof(requirement.JobNumber)); + requirement.AssociationIdSubContract = new SysId(StringUtil.ToInt(requirementElement.GetChildText(nameof(requirement.AssociationIdSubContract)))); + requirement.CommodityId = new SysId(StringUtil.ToInt(requirementElement.GetChildText(nameof(requirement.CommodityId)))); + requirement.ProductCode = requirementElement.GetChildText(nameof(requirement.ProductCode)); + requirement.AssetId = new SysId(StringUtil.ToInt(requirementElement.GetChildText(nameof(requirement.AssetId)))); + requirement.DescBrief = requirementElement.GetChildText(nameof(requirement.DescBrief)); + requirement.DescIntro = requirementElement.GetChildText(nameof(requirement.DescIntro)); + requirement.DescOutline = requirementElement.GetChildText(nameof(requirement.DescOutline)); + requirement.DescDetail = requirementElement.GetChildText(nameof(requirement.DescDetail)); + requirement.PromotionCode = requirementElement.GetChildText(nameof(requirement.PromotionCode)); + requirement.NominalCode= requirementElement.GetChildText(nameof(requirement.NominalCode)); + requirement.Quantity = StringUtil.ToDecimal(requirementElement.GetChildText(nameof(requirement.Quantity))); + requirement.QuantityProd = StringUtil.ToDecimal(requirementElement.GetChildText(nameof(requirement.QuantityProd))); + requirement.UomId = new SysId(StringUtil.ToInt(requirementElement.GetChildText(nameof(requirement.UomId)))); + requirement.Weight = StringUtil.ToDecimal(requirementElement.GetChildText(nameof(requirement.Weight))); + requirement.UomIdWeight = new SysId(StringUtil.ToInt(requirementElement.GetChildText(nameof(requirement.UomIdWeight)))); + requirement.MaterialSourceCode = requirementElement.GetChildText(nameof(requirement.MaterialSourceCode)); + requirement.AmountUnit = StringUtil.ToDecimal(requirementElement.GetChildText(nameof(requirement.AmountUnit))); + requirement.AmountAct = StringUtil.ToDecimal(requirementElement.GetChildText(nameof(requirement.AmountAct))); + requirement.AmountDisc = StringUtil.ToDecimal(requirementElement.GetChildText(nameof(requirement.AmountDisc))); + requirement.AmountNet = StringUtil.ToDecimal(requirementElement.GetChildText(nameof(requirement.AmountNet))); + requirement.TaxCodeId = new SysId(StringUtil.ToInt(requirementElement.GetChildText(nameof(requirement.TaxCodeId)))); + requirement.TaxRate = StringUtil.ToDecimal(requirementElement.GetChildText(nameof(requirement.TaxRate))); + requirement.AmountTax = StringUtil.ToDecimal(requirementElement.GetChildText(nameof(requirement.AmountTax))); + requirement.AmountTot= StringUtil.ToDecimal(requirementElement.GetChildText(nameof(requirement.AmountTot))); + requirement.TimeEst = StringUtil.ToDecimal(requirementElement.GetChildText(nameof(requirement.TimeEst))); + //requirement.TimeEstChunks = requirementElement.GetChildText(nameof(requirement.TimeEstChunks)); + requirement.TimeAct = StringUtil.ToDecimal(requirementElement.GetChildText(nameof(requirement.TimeAct))); + //requirement.TimeActChunks = requirementElement.GetChildText(nameof(requirement.TimeActChunks)); + requirement.TimeTot = StringUtil.ToDecimal(requirementElement.GetChildText(nameof(requirement.TimeTot))); + requirement.LocationIdStock = new SysId(StringUtil.ToInt(requirementElement.GetChildText(nameof(requirement.LocationIdStock)))); + requirement.CostLabourHours = StringUtil.ToDecimal(requirementElement.GetChildText(nameof(requirement.CostLabourHours))); + requirement.CostLabourRateHour = StringUtil.ToDecimal(requirementElement.GetChildText(nameof(requirement.CostLabourRateHour))); + requirement.CostLabour = StringUtil.ToDecimal(requirementElement.GetChildText(nameof(requirement.CostLabour))); + requirement.CostCommodity = StringUtil.ToDecimal(requirementElement.GetChildText(nameof(requirement.CostCommodity))); + requirement.CostPurchase = StringUtil.ToDecimal(requirementElement.GetChildText(nameof(requirement.CostPurchase))); + requirement.CostProcess = StringUtil.ToDecimal(requirementElement.GetChildText(nameof(requirement.CostProcess))); + requirement.CostAdditional= StringUtil.ToDecimal(requirementElement.GetChildText(nameof(requirement.CostAdditional))); + requirement.CostTotal = StringUtil.ToDecimal(requirementElement.GetChildText(nameof(requirement.CostTotal))); + requirement.CostCalculated = DateUtil.ParseXmlDateTime(requirementElement.GetChildText(nameof(requirement.CostCalculated))); + requirement.Notes = requirementElement.GetChildText(nameof(requirement.Notes)); + requirement.Status = SacsSystem.GetStatusForCode(requirementElement.GetChildText(nameof(requirement.Status))); + requirement.SetCreateStamp(DateUtil.ParseXmlDateTime(requirementElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(requirementElement.GetChildText("CreateBy"))), requirementElement.GetChildText("CreateHost")); + requirement.SetUpdateStamp(DateUtil.ParseXmlDateTime(requirementElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(requirementElement.GetChildText("UpdateBy"))), requirementElement.GetChildText("UpdateHost")); + requirement.AcceptChanges(); + } + + //------------------------------------------------------------------- + // Requirement column definitions. + public override ColumnDfn GetRequirementColumnDfn (SbmRequirement.Column columnId, string caption = "", int width = 0) + { + ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width); + if (!String.IsNullOrEmpty(caption)) + columnDfn.Caption = caption; + if (width > 0) + columnDfn.Width = width; + columnDfn.DataName = columnId.ToString(); + return columnDfn; + } + + //------------------------------------------------------------------- + // Requirement query filter. + public override List GetRequirementQueryFilter (SbmRequirement.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetRequirementQueryFilter_Mobile (SbmRequirement.Params prm) + { + Dictionary filter = new Dictionary(); + + // Requirement Id. + //if (prm.IncludedIds.Count > 0) filter.Add(nameof(prm.IncludedIds), prm.IncludedIds.Concat(",")); + //if (prm.ExcludedIds.Count > 0) filter.Add(nameof(prm.ExcludedIds), prm.ExcludedIds.Concat(",")); + + // Association Id. + if (SysId.IsValid(prm.AssociationId)) filter.Add(nameof(prm.AssociationId), SysId.ToString(prm.AssociationId)); + + // Commodity Id. + if (SysId.IsValid(prm.CommodityId)) filter.Add(nameof(prm.CommodityId), SysId.ToString(prm.CommodityId)); + + // Asset Id. + if (SysId.IsValid(prm.AssetId)) filter.Add(nameof(prm.AssetId), SysId.ToString(prm.AssetId)); + + // Requirement Id. + if (prm.ReqntIncludedIds.Count > 0) filter.Add(nameof(prm.ReqntIncludedIds), prm.ReqntIncludedIds.Concat(",")); + if (prm.ReqntExcludedIds.Count > 0) filter.Add(nameof(prm.ReqntExcludedIds), prm.ReqntExcludedIds.Concat(",")); + if (prm.ReqntIdsSource.Count > 0) filter.Add(nameof(prm.ReqntIdsSource), prm.ReqntIdsSource.Concat(",")); + + // Reqnt product code. + if (!StringUtil.IsEmpty(prm.ReqntProductCodeFull)) filter.Add(nameof(prm.ReqntProductCodeFull), prm.ReqntProductCodeFull); + if (!StringUtil.IsEmpty(prm.ReqntProductCodePartial)) filter.Add(nameof(prm.ReqntProductCodePartial), prm.ReqntProductCodePartial); + + // Reqnt project task code. + if (!StringUtil.IsEmpty(prm.ReqntProjectTaskCodeFull)) filter.Add(nameof(prm.ReqntProjectTaskCodeFull), prm.ReqntProjectTaskCodeFull); + if (!StringUtil.IsEmpty(prm.ReqntProjectTaskCodePartial)) filter.Add(nameof(prm.ReqntProjectTaskCodePartial), prm.ReqntProjectTaskCodePartial); + + // Reqnt job number. + if (!StringUtil.IsEmpty(prm.ReqntJobNumberFull)) filter.Add(nameof(prm.ReqntJobNumberFull), prm.ReqntJobNumberFull); + if (!StringUtil.IsEmpty(prm.ReqntJobNumberPartial)) filter.Add(nameof(prm.ReqntJobNumberPartial), prm.ReqntJobNumberPartial); + + // Reqnt asset serial. + if (!StringUtil.IsEmpty(prm.ReqntAssetSerialFull)) filter.Add(nameof(prm.ReqntAssetSerialFull), prm.ReqntAssetSerialFull); + if (!StringUtil.IsEmpty(prm.ReqntAssetSerialPartial)) filter.Add(nameof(prm.ReqntAssetSerialPartial), prm.ReqntAssetSerialPartial); + + // Reqnt desc brief. + if (!StringUtil.IsEmpty(prm.ReqntDescBrief)) filter.Add(nameof(prm.ReqntDescBrief), prm.ReqntDescBrief); + + // Reqnt promotion code. + if (!StringUtil.IsEmpty(prm.ReqntPromotionCode)) filter.Add(nameof(prm.ReqntPromotionCode), prm.ReqntPromotionCode); + + // Alias transaction. + if (!StringUtil.IsEmpty(prm.AliasTransaction)) filter.Add(nameof(prm.AliasTransaction), prm.AliasTransaction); + + // Trans Id. + if (prm.TransIncludedIds.Count > 0) filter.Add(nameof(prm.TransIncludedIds), prm.TransIncludedIds.Concat(",")); + if (prm.TransExcludedIds.Count > 0) filter.Add(nameof(prm.TransExcludedIds), prm.TransExcludedIds.Concat(",")); + + // Agent Id. + if (SysId.IsValid(prm.TransReqntSourceId)) filter.Add(nameof(prm.TransReqntSourceId), SysId.ToString(prm.TransReqntSourceId)); + + // Transaction type. + if ((int)prm.TransactionType > 0) filter.Add(nameof(prm.TransactionType), ((int)prm.TransactionType).ToString()); + + // Trans location Id stock. + if (SysId.IsValid(prm.TransLocationIdStock)) filter.Add(nameof(prm.TransLocationIdStock), SysId.ToString(prm.TransLocationIdStock)); + + // Transaction status cat. + if ((int)prm.TransactionStatusCat > 0) filter.Add(nameof(prm.TransactionStatusCat), ((int)prm.TransactionStatusCat).ToString()); + + // Trans ref. + if (!StringUtil.IsEmpty(prm.TransRefPartial)) filter.Add(nameof(prm.TransRefPartial), prm.TransRefPartial); + if (!StringUtil.IsEmpty(prm.TransRefExtPartial)) filter.Add(nameof(prm.TransRefExtPartial), prm.TransRefExtPartial); + + // Trans desc brief. + if (!StringUtil.IsEmpty(prm.TransDescBriefPartial)) filter.Add(nameof(prm.TransDescBriefPartial), prm.TransDescBriefPartial); + + // Assoc partial. + if (!StringUtil.IsEmpty(prm.AssocPartial)) filter.Add(nameof(prm.AssocPartial), prm.AssocPartial); + + // Account manager code. + if (!StringUtil.IsEmpty(prm.AccountManagerCode)) filter.Add(nameof(prm.AccountManagerCode), prm.AccountManagerCode); + + // Account handler code. + if (!StringUtil.IsEmpty(prm.AccountHandlerCode)) filter.Add(nameof(prm.AccountHandlerCode), prm.AccountHandlerCode); + + // Trans raised. + if (DateUtil.IsValid(prm.TransRaisedFrom)) filter.Add(nameof(prm.TransRaisedFrom), DateUtil.FormatXmlDate(prm.TransRaisedFrom)); + if (DateUtil.IsValid(prm.TransRaisedTo)) filter.Add(nameof(prm.TransRaisedTo), DateUtil.FormatXmlDate(prm.TransRaisedTo)); + + // Trans required. + if (DateUtil.IsValid(prm.TransRequiredFrom)) filter.Add(nameof(prm.TransRequiredFrom), DateUtil.FormatXmlDate(prm.TransRequiredFrom)); + if (DateUtil.IsValid(prm.TransRequiredTo)) filter.Add(nameof(prm.TransRequiredTo), DateUtil.FormatXmlDate(prm.TransRequiredTo)); + + // Trans amount. + if (prm.TransAmountNetLt > 0) filter.Add(nameof(prm.TransAmountNetLt), prm.TransAmountNetLt.ToString("N3")); + if (prm.TransAmountNetGt > 0) filter.Add(nameof(prm.TransAmountNetGt), prm.TransAmountNetGt.ToString("N3")); + + // Trans active on. + if (DateUtil.IsValid(prm.TransActiveOn)) filter.Add(nameof(prm.TransActiveOn), DateUtil.FormatXmlDate(prm.TransActiveOn)); + + // Trans active. + if (DateUtil.IsValid(prm.TransActiveFrom)) filter.Add(nameof(prm.TransActiveFrom), DateUtil.FormatXmlDate(prm.TransActiveFrom)); + if (DateUtil.IsValid(prm.TransActiveTo)) filter.Add(nameof(prm.TransActiveTo), DateUtil.FormatXmlDate(prm.TransActiveTo)); + + // Active any day during period. + if (DateUtil.IsValid(prm.ActiveAnyDayDuringPeriod)) filter.Add(nameof(prm.ActiveAnyDayDuringPeriod), DateUtil.FormatXmlDate(prm.ActiveAnyDayDuringPeriod)); + + // Commodity against associated item Id. + if (SysId.IsValid(prm.CmdIdAssocItem)) filter.Add(nameof(prm.CmdIdAssocItem), SysId.ToString(prm.CmdIdAssocItem)); + + // Assoc item product code. + if (!StringUtil.IsEmpty(prm.AssocItemProductCodeFull)) filter.Add(nameof(prm.AssocItemProductCodeFull), prm.AssocItemProductCodeFull); + + // Sales location Id stock. + if (SysId.IsValid(prm.SalesLocationIdStock01)) filter.Add(nameof(prm.SalesLocationIdStock01), SysId.ToString(prm.SalesLocationIdStock01)); + if (SysId.IsValid(prm.SalesLocationIdStock02)) filter.Add(nameof(prm.SalesLocationIdStock02), SysId.ToString(prm.SalesLocationIdStock02)); + if (SysId.IsValid(prm.SalesLocationIdStock03)) filter.Add(nameof(prm.SalesLocationIdStock03), SysId.ToString(prm.SalesLocationIdStock03)); + + // Required date. + if (DateUtil.IsValid(prm.ReqntRequiredFrom)) filter.Add(nameof(prm.ReqntRequiredFrom), DateUtil.FormatXmlDate(prm.ReqntRequiredFrom)); + if (DateUtil.IsValid(prm.ReqntRequiredTo)) filter.Add(nameof(prm.ReqntRequiredTo), DateUtil.FormatXmlDate(prm.ReqntRequiredTo)); + + // Material code. + if (!StringUtil.IsEmpty(prm.CmdMaterialCode)) filter.Add(nameof(prm.CmdMaterialCode), prm.CmdMaterialCode); + + // Finish code. + if (!StringUtil.IsEmpty(prm.CmdFinishCode)) filter.Add(nameof(prm.CmdFinishCode), prm.CmdFinishCode); + + // Status. + filter.Add(nameof(prm.StatusCat), prm.StatusCat.ToString()); + + // Paging. + if (prm.ResultsPaging.Paged) + { + filter.Add(nameof(prm.ResultsPaging.PageNo), prm.ResultsPaging.PageNo.ToString()); + filter.Add(nameof(prm.ResultsPaging.PageLength), prm.ResultsPaging.PageLength.ToString()); + } + + return filter; + } + // Requirement sort columns. + public List GetRequirementSortColumns (SbmRequirement.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Requirement count. + public override long GetRequirementCount (SbmRequirement.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Requirement list. + public override List GetRequirementList (SbmRequirement.Params prm) + { + List requirements = new List(); + throw new NotImplementedException(); + } + public async Task> GetRequirementList_Mobile (SbmRequirement.Params prmRequirement, SacsTaskData taskData) + { + ClearErrorState(); + List requirements = new List(); + String fn = GetType().Name + ".GetRequirementList_Mobile"; + + // Requirement columns. + List columns = new List(EnumUtil.GetValues()); + + List itemDataList = await ExecuteRequirementQuery_Mobile(columns, prmRequirement, taskData); + foreach (SbmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId id = itemData.GetIdValue(SbmRequirement.Column.Id); + //SysId affIdOwner = itemData.GetIdValue(SbmRequirement.Column.AffIdOwner); + SysId affIdOwner = new SysId(); + //SysId assocId = itemData.GetIdValue(SbmRequirement.Column.assocId); + SysId assocId = new SysId(); + SysId transId = itemData.GetIdValue(SbmRequirement.Column.TransId); + //Sbm.RequirementType requirementType = EnumUtil.ParseEnum(itemData.GetValue(SbmRequirement.Column.RequirementType), Sbm.RequirementType.Any); + ushort flags = (ushort)itemData.GetIntValue(SbmRequirement.Column.Flag); + // Create item. + SbmRequirement_Mobile requirement = new SbmRequirement_Mobile(UserContext, id, affIdOwner, assocId, transId, Sbm.RequirementType.Any, flags); + // Populate item properties. + foreach (SbmRequirement.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + //case SbmRequirement.Column.AffIdOwner: requirement.AffIdOwner = itemData.GetIdValue(column); break; + //case SbmRequirement.Column.AssocId: requirement.AssocId = itemData.GetIdValue(column); break; + case SbmRequirement.Column.TransId: requirement.TransactionId = itemData.GetIdValue(column); break; + //case SbmRequirement.Column.RequirementType: requirement.RequirementType = EnumUtil.ParseEnum(itemData.GetValue(column), Sbm.RequirementType.Any); break; + case SbmRequirement.Column.Seq: requirement.Seq = StringUtil.ToShort(itemData.GetDecimalValue(column)); break; + //case SbmRequirement.Column.ReqntIdSource: requirement.ReqntIdSource= itemData.GetIdValue(column); break; + case SbmRequirement.Column.Required: requirement.Required = itemData.GetDateTimeValue(column); break; + case SbmRequirement.Column.Started: requirement.Started = itemData.GetDateTimeValue(column); break; + case SbmRequirement.Column.Completed: requirement.Completed = itemData.GetDateTimeValue(column); break; + case SbmRequirement.Column.JobNumber: requirement.JobNumber = value; break; + //case SbmRequirement.Column.AssIdSubContract: requirement.AssIdSubContract = itemData.GetIdValue(column); break; + case SbmRequirement.Column.CommodityId: requirement.CommodityId = itemData.GetIdValue(column); break; + case SbmRequirement.Column.ProductCode: requirement.ProductCode= value; break; + //case SbmRequirement.Column.AssetId: requirement.AssetId = itemData.GetIdValue(column); break; + case SbmRequirement.Column.DescBrief: requirement.DescBrief = value; break; + //case SbmRequirement.Column.DescIntro: requirement.DescIntro= value; break; + case SbmRequirement.Column.DescOutline: requirement.DescOutline = value; break; + case SbmRequirement.Column.DescDetail: requirement.DescDetail = value; break; + case SbmRequirement.Column.PromotionCode: requirement.PromotionCode = value; break; + case SbmRequirement.Column.NominalCode: requirement.NominalCode = value; break; + case SbmRequirement.Column.Quantity: requirement.Quantity = itemData.GetDecimalValue(column); break; + case SbmRequirement.Column.QuantityProd: requirement.QuantityProd = itemData.GetDecimalValue(column); break; + //case SbmRequirement.Column.UomId: requirement.UomId = itemData.GetDecimalValue(column); break; + case SbmRequirement.Column.Cmd_Weight: requirement.Weight= itemData.GetDecimalValue(column); break; + //case SbmRequirement.Column.UomIdWeight: requirement.UomIdWeight= itemData.GetIdValue(column); break; + case SbmRequirement.Column.Cmd_MaterialCode: requirement.MaterialSourceCode= value; break; + case SbmRequirement.Column.AmountUnit: requirement.AmountUnit = itemData.GetDecimalValue(column); break; + case SbmRequirement.Column.AmountAct: requirement.AmountAct = itemData.GetDecimalValue(column); break; + //case SbmRequirement.Column.AmountDisc: requirement.AmountDisc = itemData.GetDecimalValue(column); break; + case SbmRequirement.Column.AmountNet: requirement.AmountNet = itemData.GetDecimalValue(column); break; + case SbmRequirement.Column.TaxCodeId: requirement.TaxCodeId = itemData.GetIdValue(column); break; + case SbmRequirement.Column.TaxRate: requirement.TaxRate = itemData.GetDecimalValue(column); break; + case SbmRequirement.Column.AmountTax: requirement.AmountTax = itemData.GetDecimalValue(column); break; + case SbmRequirement.Column.AmountTot: requirement.AmountTot = itemData.GetDecimalValue(column); break; + case SbmRequirement.Column.TimeEst: requirement.TimeEst = itemData.GetDecimalValue(column); break; + //case SbmRequirement.Column.TimeEstChunks: requirement.TimeEstChunks = value; break; + case SbmRequirement.Column.TimeAct: requirement.TimeAct = itemData.GetDecimalValue(column); break; + //case SbmRequirement.Column.TimeActChunks: requirement.TimeActChunks = value; break; + case SbmRequirement.Column.TimeTot: requirement.TimeTot = itemData.GetDecimalValue(column); break; + //case SbmRequirement.Column.LocationIdStock: requirement.LocationIdStock = itemData.GetIdValue(column); break; + //case SbmRequirement.Column.CostLabourHours: requirement.CostLabourHours = itemData.GetDecimalValue(column); break; + case SbmRequirement.Column.Trans_CostLabourRateHour: requirement.CostLabourRateHour = itemData.GetDecimalValue(column); break; + //case SbmRequirement.Column.CostLabour: requirement.CostLabour = itemData.GetDecimalValue(column); break; + //case SbmRequirement.Column.CostCommodity: requirement.CostCommodity = itemData.GetDecimalValue(column); break; + //case SbmRequirement.Column.CostPurchase: requirement.CostPurchase = itemData.GetDecimalValue(column); break; + //case SbmRequirement.Column.CostProcess: requirement.CostProcess = itemData.GetDecimalValue(column); break; + //case SbmRequirement.Column.CostAdditional: requirement.CostAdditional = itemData.GetDecimalValue(column); break; + case SbmRequirement.Column.CostTotal: requirement.CostTotal = itemData.GetDecimalValue(column); break; + case SbmRequirement.Column.CostCalculated: requirement.CostCalculated = itemData.GetDateTimeValue(column); break; + case SbmRequirement.Column.Notes: requirement.Notes = value; break; + case SbmRequirement.Column.Status: requirement.Status = SacsSystem.GetStatusForCode(value); break; + } + } + requirements.Add(requirement); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " Requirements: " + requirements.Count); + return requirements; + } + + + //------------------------------------------------------------------- + // Requirement query execution. + public override DbResultSet ExecuteRequirementQuery (List columns, SbmRequirement.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecuteRequirementQuery_Mobile (List requirementColumns, SbmRequirement.Params prmRequirement, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SbmRequirement.Column column in requirementColumns) + columns.Add(column.ToString()); + + SbmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetRequirementRequestConfig(SbmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetRequirementQueryFilter_Mobile(prmRequirement), columns, this.GetSortColumns_Mobile(prmRequirement), taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SbmWebServiceRequest.Config GetRequirementRequestConfig (SbmWebServiceRequest.RequestType requestType, bool debug = false) + { + SbmWebServiceRequest.Config configRequest = new SbmWebServiceRequest.Config(); + configRequest.DataType = SbmWebServiceRequest.DataType.Requirement; + configRequest.RequestType = requestType; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} \ No newline at end of file diff --git a/SaBusMgrMobCore/Mobile/Core/Mgr/SbmTransactionMgr_Mobile-Transactions.cs b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmTransactionMgr_Mobile-Transactions.cs new file mode 100644 index 0000000..b61340e --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmTransactionMgr_Mobile-Transactions.cs @@ -0,0 +1,551 @@ +using Sarand.Core.App; +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Data; +using Sarand.Core.Dbas.Base; +using Sarand.Core.Tasks; +using Sarand.Core.Xml; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.BusinessMgr.Core.WebService; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using System.Xml.Linq; +using Sarand.BusinessMgr.Mobile.Core.Bus; + +namespace Sarand.BusinessMgr.Mobile.Core.Mgr +{ + //======================================================================= + partial class SbmTransactionMgr_Mobile + { + //******************************************************************* + // T r a n s a c t i o n s + //******************************************************************* + // Create Transaction. + public override SbmTransaction CreateTransaction (SysId id, Sbm.TransactionType transactionType) + { + ClearErrorState(); + return new SbmTransaction_Mobile(UserContext, id, null, null, transactionType, 0); + } + + //------------------------------------------------------------------- + // Get Transaction. + public override SbmTransaction GetTransaction (SbmTransaction.Params prmTransaction) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate Transaction. + public override bool IsValidTransactionData (SbmTransaction.Data data, SbmTransaction.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidTransactionData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert Transaction. + public override bool InsertTransaction (SbmTransaction transaction, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidTransaction(transaction)) return false; + if (SysId.IsValid(transaction.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update Transaction. + public override bool UpdateTransaction (SbmTransaction transaction, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidTransaction(transaction)) return false; + if (!SysId.IsValid(transaction.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete Transaction. + public override bool TransactionCanBeDeleted (SbmTransaction transaction) + { + ClearErrorState(); + if (!base.TransactionCanBeDeleted(transaction)) return false; + return true; + } + public override bool DeleteTransaction (SbmTransaction transaction, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!TransactionCanBeDeleted(transaction)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement transactionElement, SbmTransaction transaction, DbUpdateInfo dbUpdateInfo) + { + transactionElement.AppendElement(nameof(transaction.Id), SysId.ToString(transaction.Id)); + transactionElement.AppendElement(nameof(transaction.AffiliateIdOwner), SysId.ToString(transaction.AffiliateIdOwner)); + transactionElement.AppendElement(nameof(transaction.AssociationId), SysId.ToString(transaction.AssociationId)); + transactionElement.AppendElement(nameof(transaction.TransactionType), transaction.TransactionType.ToString()); + transactionElement.AppendElement(nameof(transaction.Ref), transaction.Ref); + transactionElement.AppendElement(nameof(transaction.RefInt), transaction.RefInt.ToString("N3")); + transactionElement.AppendElement(nameof(transaction.RefExt), transaction.RefExt); + transactionElement.AppendElement(nameof(transaction.RaisedBy), transaction.RaisedBy); + transactionElement.AppendElement(nameof(transaction.AffiliateIdRaise), SysId.ToString(transaction.AffiliateIdRaise)); + transactionElement.AppendElement(nameof(transaction.AssociationIdOffice), SysId.ToString(transaction.AssociationIdOffice)); + transactionElement.AppendElement(nameof(transaction.ContactName), transaction.ContactName); + transactionElement.AppendElement(nameof(transaction.Likelihood), transaction.Likelihood); + transactionElement.AppendElement(nameof(transaction.TransactionIdSource), SysId.ToString(transaction.TransactionIdSource)); + transactionElement.AppendElement(nameof(transaction.ReferCode), transaction.ReferCode); + transactionElement.AppendElement(nameof(transaction.ReferSource), transaction.ReferSource); + transactionElement.AppendElement(nameof(transaction.AffiliateIdRefer), SysId.ToString(transaction.AffiliateIdRefer)); + transactionElement.AppendElement(nameof(transaction.AssociationIdContract), SysId.ToString(transaction.AssociationIdContract)); + transactionElement.AppendElement(nameof(transaction.AssociationIdDelivery), SysId.ToString(transaction.AssociationIdDelivery)); + transactionElement.AppendElement(nameof(transaction.Raised), DateUtil.FormatXmlDateTime(transaction.Raised)); + transactionElement.AppendElement(nameof(transaction.Required), DateUtil.FormatXmlDateTime(transaction.Required)); + transactionElement.AppendElement(nameof(transaction.InProgress), DateUtil.FormatXmlDateTime(transaction.InProgress)); + transactionElement.AppendElement(nameof(transaction.DeliveredEst), DateUtil.FormatXmlDateTime(transaction.DeliveredEst)); + transactionElement.AppendElement(nameof(transaction.DeliveredAct), DateUtil.FormatXmlDateTime(transaction.DeliveredAct)); + transactionElement.AppendElement(nameof(transaction.Closed), DateUtil.FormatXmlDateTime(transaction.Closed)); + transactionElement.AppendElement(nameof(transaction.Department), transaction.Department); + transactionElement.AppendElement(nameof(transaction.DescBrief), transaction.DescBrief); + transactionElement.AppendElement(nameof(transaction.DescIntro), transaction.DescIntro); + transactionElement.AppendElement(nameof(transaction.DescOutline), transaction.DescOutline); + transactionElement.AppendElement(nameof(transaction.DescDetail), transaction.DescDetail); + transactionElement.AppendElement(nameof(transaction.ResponseCode), transaction.ResponseCode); + transactionElement.AppendElement(nameof(transaction.ContactAreaCode), transaction.ContactAreaCode); + transactionElement.AppendElement(nameof(transaction.Postcode), transaction.Postcode); + transactionElement.AppendElement(nameof(transaction.CurrencyId), SysId.ToString(transaction.CurrencyId)); + transactionElement.AppendElement(nameof(transaction.TaxCodeId), SysId.ToString(transaction.TaxCodeId)); + transactionElement.AppendElement(nameof(transaction.AmountEst), transaction.AmountEst.ToString("N3")); + transactionElement.AppendElement(nameof(transaction.AmountMax), transaction.AmountMax.ToString("N3")); + transactionElement.AppendElement(nameof(transaction.AmountNet), transaction.AmountNet.ToString("N3")); + transactionElement.AppendElement(nameof(transaction.AmountTax), transaction.AmountTax.ToString("N3")); + transactionElement.AppendElement(nameof(transaction.AmountTot), transaction.AmountTot.ToString("N3")); + transactionElement.AppendElement(nameof(transaction.TimeEst), transaction.TimeEst.ToString("N3")); + transactionElement.AppendElement(nameof(transaction.TimeAct), transaction.TimeAct.ToString("N3")); + transactionElement.AppendElement(nameof(transaction.TimeTot), transaction.TimeTot.ToString("N3")); + transactionElement.AppendElement(nameof(transaction.LocationIdStock), SysId.ToString(transaction.LocationIdStock)); + transactionElement.AppendElement(nameof(transaction.Weight), transaction.Weight.ToString("N3")); + transactionElement.AppendElement(nameof(transaction.UomIdWeight), SysId.ToString(transaction.UomIdWeight)); + transactionElement.AppendElement(nameof(transaction.BoxCount), transaction.BoxCount); + transactionElement.AppendElement(nameof(transaction.DeliveryStatusCode), transaction.DeliveryStatusCode); + transactionElement.AppendElement(nameof(transaction.DeliveryTypeCode), transaction.DeliveryTypeCode); + transactionElement.AppendElement(nameof(transaction.DeliveryMethodCode), transaction.DeliveryMethodCode); + transactionElement.AppendElement(nameof(transaction.DeliveryCourierCode), transaction.DeliveryCourierCode); + transactionElement.AppendElement(nameof(transaction.DeliveryBookInCode), transaction.DeliveryBookInCode); + transactionElement.AppendElement(nameof(transaction.StockPickerCode), transaction.StockPickerCode); + transactionElement.AppendElement(nameof(transaction.DeliveryRef), transaction.DeliveryRef); + transactionElement.AppendElement(nameof(transaction.DeliveryComment), transaction.DeliveryComment); + transactionElement.AppendElement(nameof(transaction.DeliveryAmountNet), transaction.DeliveryAmountNet.ToString("N3")); + transactionElement.AppendElement(nameof(transaction.TaxCodeIdDelivery), SysId.ToString(transaction.TaxCodeIdDelivery)); + transactionElement.AppendElement(nameof(transaction.DeliveryAmountTax), transaction.DeliveryAmountTax.ToString("N3")); + transactionElement.AppendElement(nameof(transaction.DeliveryAmountTot), transaction.DeliveryAmountTot.ToString("N3")); + transactionElement.AppendElement(nameof(transaction.CostLabourRateHour), transaction.CostLabourRateHour.ToString("N3")); + transactionElement.AppendElement(nameof(transaction.DeliveryDepartment), transaction.DeliveryDepartment); + transactionElement.AppendElement(nameof(transaction.DeliveryNominalCode), transaction.DeliveryNominalCode); + transactionElement.AppendElement(nameof(transaction.Notes), transaction.Notes); + transactionElement.AppendElement(nameof(transaction.Status), SacsSystem.GetStatusCode(transaction.Status)); + transactionElement.AppendElement(nameof(transaction.Flags), transaction.Flags.ToString()); + if (!SysId.IsValid(transaction.Id)) + { + transactionElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + transactionElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + transactionElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + transactionElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + transactionElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + transactionElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement transactionElement, SbmTransaction transaction) + { + transaction.Id = new SysId(StringUtil.ToInt(transactionElement.GetChildText("Id"))); + transaction.AffiliateIdOwner = new SysId(StringUtil.ToInt(transactionElement.GetChildText(nameof(transaction.AffiliateIdOwner)))); + transaction.AssociationId = new SysId(StringUtil.ToInt(transactionElement.GetChildText(nameof(transaction.AssociationId)))); + transaction.TransactionType = EnumUtil.ParseEnum(transactionElement.GetChildText(nameof(transaction.TransactionType)), Sbm.TransactionType.Unknown); + transaction.Ref = transactionElement.GetChildText(nameof(transaction.Ref)); + transaction.RefInt = StringUtil.ToInt(transactionElement.GetChildText(nameof(transaction.RefInt))); + transaction.RefExt = transactionElement.GetChildText(nameof(transaction.RefExt)); + transaction.RaisedBy = transactionElement.GetChildText(nameof(transaction.RaisedBy)); + transaction.AffiliateIdRaise = new SysId(StringUtil.ToInt(transactionElement.GetChildText(nameof(transaction.AffiliateIdRaise)))); + transaction.AssociationIdOffice = new SysId(StringUtil.ToInt(transactionElement.GetChildText(nameof(transaction.AssociationIdOffice)))); + transaction.ContactName = transactionElement.GetChildText(nameof(transaction.ContactName)); + transaction.Likelihood = transactionElement.GetChildText(nameof(transaction.Likelihood)); + transaction.TransactionIdSource = new SysId(StringUtil.ToInt(transactionElement.GetChildText(nameof(transaction.TransactionIdSource)))); + transaction.ReferCode = transactionElement.GetChildText(nameof(transaction.ReferCode)); + transaction.ReferSource = transactionElement.GetChildText(nameof(transaction.ReferSource)); + transaction.AffiliateIdRefer = new SysId(StringUtil.ToInt(transactionElement.GetChildText(nameof(transaction.AffiliateIdRefer)))); + transaction.AssociationIdContract = new SysId(StringUtil.ToInt(transactionElement.GetChildText(nameof(transaction.AssociationIdContract)))); + transaction.AssociationIdDelivery = new SysId(StringUtil.ToInt(transactionElement.GetChildText(nameof(transaction.AssociationIdDelivery)))); + transaction.Raised = DateUtil.ParseXmlDateTime(transactionElement.GetChildText(nameof(transaction.Raised))); + transaction.Required = DateUtil.ParseXmlDateTime(transactionElement.GetChildText(nameof(transaction.Required))); + transaction.InProgress = DateUtil.ParseXmlDateTime(transactionElement.GetChildText(nameof(transaction.InProgress))); + transaction.DeliveredEst = DateUtil.ParseXmlDateTime(transactionElement.GetChildText(nameof(transaction.DeliveredEst))); + transaction.DeliveredAct = DateUtil.ParseXmlDateTime(transactionElement.GetChildText(nameof(transaction.DeliveredAct))); + transaction.Closed = DateUtil.ParseXmlDateTime(transactionElement.GetChildText(nameof(transaction.Closed))); + transaction.Department = transactionElement.GetChildText(nameof(transaction.Department)); + transaction.DescBrief = transactionElement.GetChildText(nameof(transaction.DescBrief)); + transaction.DescIntro = transactionElement.GetChildText(nameof(transaction.DescIntro)); + transaction.DescOutline = transactionElement.GetChildText(nameof(transaction.DescOutline)); + transaction.DescDetail = transactionElement.GetChildText(nameof(transaction.DescDetail)); + transaction.ResponseCode = transactionElement.GetChildText(nameof(transaction.ResponseCode)); + transaction.ContactAreaCode = transactionElement.GetChildText(nameof(transaction.ContactAreaCode)); + transaction.Postcode = transactionElement.GetChildText(nameof(transaction.Postcode)); + transaction.CurrencyId = new SysId(StringUtil.ToInt(transactionElement.GetChildText(nameof(transaction.CurrencyId)))); + transaction.TaxCodeId = new SysId(StringUtil.ToInt(transactionElement.GetChildText(nameof(transaction.TaxCodeId)))); + transaction.AmountEst = StringUtil.ToDecimal(transactionElement.GetChildText(nameof(transaction.AmountEst))); + transaction.AmountMax = StringUtil.ToDecimal(transactionElement.GetChildText(nameof(transaction.AmountMax))); + transaction.AmountNet = StringUtil.ToDecimal(transactionElement.GetChildText(nameof(transaction.AmountNet))); + transaction.AmountTax = StringUtil.ToDecimal(transactionElement.GetChildText(nameof(transaction.AmountTax))); + transaction.AmountTot = StringUtil.ToDecimal(transactionElement.GetChildText(nameof(transaction.AmountTot))); + transaction.TimeEst = StringUtil.ToDecimal(transactionElement.GetChildText(nameof(transaction.TimeEst))); + transaction.TimeAct = StringUtil.ToDecimal(transactionElement.GetChildText(nameof(transaction.TimeAct))); + transaction.TimeTot = StringUtil.ToDecimal(transactionElement.GetChildText(nameof(transaction.TimeTot))); + transaction.LocationIdStock = new SysId(StringUtil.ToInt(transactionElement.GetChildText(nameof(transaction.LocationIdStock)))); + transaction.Weight = StringUtil.ToDecimal(transactionElement.GetChildText(nameof(transaction.Weight))); + transaction.UomIdWeight = new SysId(StringUtil.ToInt(transactionElement.GetChildText(nameof(transaction.UomIdWeight)))); + transaction.BoxCount = transactionElement.GetChildText(nameof(transaction.BoxCount)); + transaction.DeliveryStatusCode = transactionElement.GetChildText(nameof(transaction.DeliveryStatusCode)); + transaction.DeliveryTypeCode = transactionElement.GetChildText(nameof(transaction.DeliveryTypeCode)); + transaction.DeliveryMethodCode = transactionElement.GetChildText(nameof(transaction.DeliveryMethodCode)); + transaction.DeliveryCourierCode = transactionElement.GetChildText(nameof(transaction.DeliveryCourierCode)); + transaction.DeliveryBookInCode = transactionElement.GetChildText(nameof(transaction.DeliveryBookInCode)); + transaction.StockPickerCode = transactionElement.GetChildText(nameof(transaction.StockPickerCode)); + transaction.DeliveryRef = transactionElement.GetChildText(nameof(transaction.DeliveryRef)); + transaction.DeliveryComment = transactionElement.GetChildText(nameof(transaction.DeliveryComment)); + transaction.DeliveryAmountNet = StringUtil.ToDecimal(transactionElement.GetChildText(nameof(transaction.DeliveryAmountNet))); + transaction.TaxCodeIdDelivery = new SysId(StringUtil.ToInt(transactionElement.GetChildText(nameof(transaction.TaxCodeIdDelivery)))); + transaction.DeliveryAmountTax = StringUtil.ToDecimal(transactionElement.GetChildText(nameof(transaction.DeliveryAmountTax))); + transaction.DeliveryAmountTot = StringUtil.ToDecimal(transactionElement.GetChildText(nameof(transaction.DeliveryAmountTot))); + transaction.CostLabourRateHour = StringUtil.ToDecimal(transactionElement.GetChildText(nameof(transaction.CostLabourRateHour))); + transaction.DeliveryDepartment = transactionElement.GetChildText(nameof(transaction.DeliveryDepartment)); + transaction.DeliveryNominalCode = transactionElement.GetChildText(nameof(transaction.DeliveryNominalCode)); + transaction.Notes = transactionElement.GetChildText(nameof(transaction.Notes)); + transaction.Status = SacsSystem.GetStatusForCode(transactionElement.GetChildText(nameof(transaction.Status))); + transaction.SetCreateStamp(DateUtil.ParseXmlDateTime(transactionElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(transactionElement.GetChildText("CreateBy"))), transactionElement.GetChildText("CreateHost")); + transaction.SetUpdateStamp(DateUtil.ParseXmlDateTime(transactionElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(transactionElement.GetChildText("UpdateBy"))), transactionElement.GetChildText("UpdateHost")); + transaction.AcceptChanges(); + } + + //------------------------------------------------------------------- + // Transaction column definitions. + public override ColumnDfn GetTransactionColumnDfn (SbmTransaction.Column columnId, string caption = "", int width = 0) + { + ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width); + if (!String.IsNullOrEmpty(caption)) + columnDfn.Caption = caption; + if (width > 0) + columnDfn.Width = width; + columnDfn.DataName = columnId.ToString(); + return columnDfn; + } + + //------------------------------------------------------------------- + // Transaction query filter. + public override List GetTransactionQueryFilter (SbmTransaction.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetTransactionQueryFilter_Mobile (SbmTransaction.Params prm) + { + Dictionary filter = new Dictionary(); + + // Transaction Id. + if (prm.IncludedIds.Count > 0) filter.Add(nameof(prm.IncludedIds), prm.IncludedIds.Concat(",")); + if (prm.ExcludedIds.Count > 0) filter.Add(nameof(prm.ExcludedIds), prm.ExcludedIds.Concat(",")); + + // Association Id. + if (SysId.IsValid(prm.AssocId)) filter.Add(nameof(prm.AssocId), SysId.ToString(prm.AssocId)); + + // Trans Id source. + if (SysId.IsValid(prm.TransIdSource)) filter.Add(nameof(prm.TransIdSource), SysId.ToString(prm.TransIdSource)); + + // Transaction type. + if ((int)prm.TransactionType > 0) filter.Add(nameof(prm.TransactionType), ((int)prm.TransactionType).ToString()); + + // Location Id stock. + if (SysId.IsValid(prm.LocationIdStock)) filter.Add(nameof(prm.LocationIdStock), SysId.ToString(prm.LocationIdStock)); + + // Association. + if (!StringUtil.IsEmpty(prm.AssocPartial)) filter.Add(nameof(prm.AssocPartial), prm.AssocPartial); + + // Address. + if (!StringUtil.IsEmpty(prm.AddressPartial)) filter.Add(nameof(prm.AddressPartial), prm.AddressPartial); + + // Postcode. + if (!StringUtil.IsEmpty(prm.PostcodePartial)) filter.Add(nameof(prm.PostcodePartial), prm.PostcodePartial); + + // Trans ref. + if (!StringUtil.IsEmpty(prm.TransRefFull)) filter.Add(nameof(prm.TransRefFull), prm.TransRefFull); + if (!StringUtil.IsEmpty(prm.TransRefPartial)) filter.Add(nameof(prm.TransRefPartial), prm.TransRefPartial); + + // Trans ref ext. + if (!StringUtil.IsEmpty(prm.TransRefExtFull)) filter.Add(nameof(prm.TransRefExtFull), prm.TransRefExtFull); + if (!StringUtil.IsEmpty(prm.TransRefExtPartial)) filter.Add(nameof(prm.TransRefExtPartial), prm.TransRefExtPartial); + + // Trans desc brief. + if (!StringUtil.IsEmpty(prm.TransDescBriefPartial)) filter.Add(nameof(prm.TransDescBriefPartial), prm.TransDescBriefPartial); + + // Default nominal code. + if (!StringUtil.IsEmpty(prm.DefaultNominalCodeFull)) filter.Add(nameof(prm.DefaultNominalCodeFull), prm.DefaultNominalCodeFull); + if (!StringUtil.IsEmpty(prm.DefaultNominalCodePartial)) filter.Add(nameof(prm.DefaultNominalCodePartial), prm.DefaultNominalCodePartial); + + // Contact area code. + if (!StringUtil.IsEmpty(prm.ContactAreaCode)) filter.Add(nameof(prm.ContactAreaCode), prm.ContactAreaCode); + + // Account manager code. + if (!StringUtil.IsEmpty(prm.AccountManagerCode)) filter.Add(nameof(prm.AccountManagerCode), prm.AccountManagerCode); + + // Account handler code. + if (!StringUtil.IsEmpty(prm.AccountHandlerCode)) filter.Add(nameof(prm.AccountHandlerCode), prm.AccountHandlerCode); + + // Delivery status code. + if (!StringUtil.IsEmpty(prm.DeliveryStatusCode)) filter.Add(nameof(prm.DeliveryStatusCode), prm.DeliveryStatusCode); + + // Delivery type code. + if (!StringUtil.IsEmpty(prm.DeliveryTypeCode)) filter.Add(nameof(prm.DeliveryTypeCode), prm.DeliveryTypeCode); + + // Delivery method code. + if (!StringUtil.IsEmpty(prm.DeliveryMethodCode)) filter.Add(nameof(prm.DeliveryMethodCode), prm.DeliveryMethodCode); + + // Delivery courier code. + if (!StringUtil.IsEmpty(prm.DeliveryCourierCode)) filter.Add(nameof(prm.DeliveryCourierCode), prm.DeliveryCourierCode); + + // Delivery book in code. + if (!StringUtil.IsEmpty(prm.DeliveryBookInCode)) filter.Add(nameof(prm.DeliveryBookInCode), prm.DeliveryBookInCode); + + // Raised. + if (DateUtil.IsValid(prm.RaisedFrom)) filter.Add(nameof(prm.RaisedFrom), DateUtil.FormatXmlDate(prm.RaisedFrom)); + if (DateUtil.IsValid(prm.RaisedTo)) filter.Add(nameof(prm.RaisedTo), DateUtil.FormatXmlDate(prm.RaisedTo)); + + // Required. + if (DateUtil.IsValid(prm.RequiredFrom)) filter.Add(nameof(prm.RequiredFrom), DateUtil.FormatXmlDate(prm.RequiredFrom)); + if (DateUtil.IsValid(prm.RequiredTo)) filter.Add(nameof(prm.RequiredTo), DateUtil.FormatXmlDate(prm.RequiredTo)); + + // Closed. + if (DateUtil.IsValid(prm.ClosedFrom)) filter.Add(nameof(prm.ClosedFrom), DateUtil.FormatXmlDate(prm.ClosedFrom)); + if (DateUtil.IsValid(prm.ClosedTo)) filter.Add(nameof(prm.ClosedTo), DateUtil.FormatXmlDate(prm.ClosedTo)); + + // Ammount Net. + if (prm.AmountNetLt > 0) filter.Add(nameof(prm.AmountNetLt), prm.AmountNetLt.ToString("N3")); + if (prm.AmountNetGt > 0) filter.Add(nameof(prm.AmountNetGt), prm.AmountNetGt.ToString("N3")); + + // Notes. + if (!StringUtil.IsEmpty(prm.NotesPartial)) filter.Add(nameof(prm.NotesPartial), prm.NotesPartial); + + // Active. + if (DateUtil.IsValid(prm.ActiveOn)) filter.Add(nameof(prm.ActiveOn), DateUtil.FormatXmlDate(prm.ActiveOn)); + if (DateUtil.IsValid(prm.ActiveFrom)) filter.Add(nameof(prm.ActiveFrom), DateUtil.FormatXmlDate(prm.ActiveFrom)); + if (DateUtil.IsValid(prm.ActiveTo)) filter.Add(nameof(prm.ActiveTo), DateUtil.FormatXmlDate(prm.ActiveTo)); + + // Active any day during period. + if (prm.ActiveAnyDayDuringPeriod != false) filter.Add(nameof(prm.ActiveAnyDayDuringPeriod), prm.ActiveAnyDayDuringPeriod.ToString()); + + // Reqnt commodity Id. + if (SysId.IsValid(prm.ReqntCommodityId)) filter.Add(nameof(prm.ReqntCommodityId), SysId.ToString(prm.ReqntCommodityId)); + + // Reqnt asset Id. + if (SysId.IsValid(prm.ReqntAssetId)) filter.Add(nameof(prm.TransIdSource), SysId.ToString(prm.TransIdSource)); + + // Reqnt product code. + if (!StringUtil.IsEmpty(prm.ReqntProductCodeFull)) filter.Add(nameof(prm.ReqntProductCodeFull), prm.ReqntProductCodeFull); + if (!StringUtil.IsEmpty(prm.ReqntProductCodePartial)) filter.Add(nameof(prm.ReqntProductCodePartial), prm.ReqntProductCodePartial); + + // Reqnt project task code. + if (!StringUtil.IsEmpty(prm.ReqntProjectTaskCodeFull)) filter.Add(nameof(prm.ReqntProjectTaskCodeFull), prm.ReqntProjectTaskCodeFull); + if (!StringUtil.IsEmpty(prm.ReqntProjectTaskCodePartial)) filter.Add(nameof(prm.ReqntProjectTaskCodePartial), prm.ReqntProjectTaskCodePartial); + + // Reqnt job number. + if (!StringUtil.IsEmpty(prm.ReqntJobNumberFull)) filter.Add(nameof(prm.ReqntJobNumberFull), prm.ReqntJobNumberFull); + if (!StringUtil.IsEmpty(prm.ReqntJobNumberPartial)) filter.Add(nameof(prm.ReqntJobNumberPartial), prm.ReqntJobNumberPartial); + + // Reqnt asset serial. + if (!StringUtil.IsEmpty(prm.ReqntAssetSerialFull)) filter.Add(nameof(prm.ReqntAssetSerialFull), prm.ReqntAssetSerialFull); + if (!StringUtil.IsEmpty(prm.ReqntAssetSerialPartial)) filter.Add(nameof(prm.ReqntAssetSerialPartial), prm.ReqntAssetSerialPartial); + + // Reqnt desc detail. + if (!StringUtil.IsEmpty(prm.ReqntDescDetailPartial)) filter.Add(nameof(prm.ReqntDescDetailPartial), prm.ReqntDescDetailPartial); + + // Reqnt notes. + if (!StringUtil.IsEmpty(prm.ReqntNotesPartial)) filter.Add(nameof(prm.ReqntNotesPartial), prm.ReqntNotesPartial); + + // Source reqnt trans ref. + if (!StringUtil.IsEmpty(prm.SourceReqntTransRef)) filter.Add(nameof(prm.SourceReqntTransRef), prm.SourceReqntTransRef); + + // Force full results. + if (prm.ForceFullResults != false) filter.Add(nameof(prm.ForceFullResults), prm.ForceFullResults.ToString()); + + // Notes. + if (!StringUtil.IsEmpty(prm.NotesPartial)) filter.Add(nameof(prm.NotesPartial), prm.NotesPartial); + + // Status. + filter.Add(nameof(prm.StatusCat), prm.StatusCat.ToString()); + + // Paging. + if (prm.ResultsPaging.Paged) + { + filter.Add(nameof(prm.ResultsPaging.PageNo), prm.ResultsPaging.PageNo.ToString()); + filter.Add(nameof(prm.ResultsPaging.PageLength), prm.ResultsPaging.PageLength.ToString()); + } + + return filter; + } + // Transaction sort columns. + public List GetTransactionSortColumns (SbmTransaction.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Transaction count. + public override long GetTransactionCount (SbmTransaction.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Transaction list. + public override List GetTransactionList (SbmTransaction.Params prm) + { + List transactions = new List(); + throw new NotImplementedException(); + } + public async Task> GetTransactionList_Mobile (SbmTransaction.Params prmTransaction, SacsTaskData taskData) + { + ClearErrorState(); + List transactions = new List(); + String fn = GetType().Name + ".GetTransactionList_Mobile"; + + // Transaction columns. + List columns = new List(EnumUtil.GetValues()); + + List itemDataList = await ExecuteTransactionQuery_Mobile(columns, prmTransaction, taskData); + foreach (SbmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId id = itemData.GetIdValue(SbmTransaction.Column.Id); + //SysId affIdOwner = itemData.GetIdValue(SbmTransaction.Column.AffIdOwner); + SysId affIdOwner = new SysId(); + //SysId assocId = itemData.GetIdValue(SbmTransaction.Column.AssocId); + SysId assocId = new SysId(); + //Sbm.TransactionType transactionType = EnumUtil.ParseEnum(itemData.GetValue(SbmTransaction.Column.TransactionType), Sbm.TransactionType.Unknown); + ushort flags = (ushort)itemData.GetIntValue(SbmTransaction.Column.Flags); + // Create item. + SbmTransaction_Mobile transaction = new SbmTransaction_Mobile(UserContext, id, affIdOwner, assocId, Sbm.TransactionType.Unknown, flags); + // Populate item properties. + foreach (SbmTransaction.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + //case SbmTransaction.Column.AffIdOwner: transaction.AffiliateIdOwner = itemData.GetIdValue(column); break; + //case SbmTransaction.Column.AssocId: transaction.AssociationId= itemData.GetIdValue(column); break; + //case SbmTransaction.Column.TransactionType: transaction.TransactionType = EnumUtil.ParseEnum(itemData.GetValue(column), Sbm.TransactionType.Unknown); break; + case SbmTransaction.Column.Ref: transaction.Ref= value; break; + //case SbmTransaction.Column.RefInt: transaction.RefInt = itemData.GetIntValue(column); break; + case SbmTransaction.Column.RefExt: transaction.RefExt = value; break; + //case SbmTransaction.Column.RaisedBy: transaction.RaisedBy = value; break; + //case SbmTransaction.Column.AffIdRaise: transaction.AffiliateIdRaise = itemData.GetIdValue(column); break; + //case SbmTransaction.Column.AssocIdOffice: transaction.AssociationIdOffice = itemData.GetIdValue(column); break; + case SbmTransaction.Column.ContactName: transaction.ContactName = value; break; + case SbmTransaction.Column.Likelihood: transaction.Likelihood = value; break; + //case SbmTransaction.Column.TransIdSource: transaction.TransactionIdSource = itemData.GetIdValue(column); break; + //case SbmTransaction.Column.ReferCode: transaction.ReferCode = value; break; + //case SbmTransaction.Column.ReferSource: transaction.ReferSource = value; break; + //case SbmTransaction.Column.AffIdRefer: transaction.AffiliateIdRefer = itemData.GetIdValue(column); break; + //case SbmTransaction.Column.AssocIdContract: transaction.AssociationIdContract= itemData.GetIdValue(column); break; + //case SbmTransaction.Column.AssocIdDelivery: transaction.AssociationIdDeliver= itemData.GetIdValue(column); break; + case SbmTransaction.Column.RaisedOn: transaction.Raised= itemData.GetDateTimeValue(column); break; + case SbmTransaction.Column.RequiredOn: transaction.Required= itemData.GetDateTimeValue(column); break; + case SbmTransaction.Column.InProgressOn: transaction.InProgress = itemData.GetDateTimeValue(column); break; + //case SbmTransaction.Column.DeliveredEst: transaction.DeliveredEst = itemData.GetDateTimeValue(column); break; + //case SbmTransaction.Column.DeliveredAct: transaction.DeliveredAct = itemData.GetDateTimeValue(column); break; + case SbmTransaction.Column.ClosedOn: transaction.Closed = itemData.GetDateTimeValue(column); break; + //case SbmTransaction.Column.Department: transaction.Department = value; break; + case SbmTransaction.Column.DescBrief: transaction.DescBrief = value; break; + //case SbmTransaction.Column.DescIntro: transaction.DescIntro = value; break; + //case SbmTransaction.Column.DescOutline: transaction.DescOutline = value; break; + //case SbmTransaction.Column.DescDetail: transaction.DescDetail = value; break; + //case SbmTransaction.Column.ResponseCode: transaction.ResponseCode= value; break; + case SbmTransaction.Column.ContactAreaCode: transaction.ContactAreaCode = value; break; + //case SbmTransaction.Column.Postcode: transaction.Postcode= value; break; + case SbmTransaction.Column.CurrencyId: transaction.CurrencyId = itemData.GetIdValue(column); break; + case SbmTransaction.Column.TaxCodeId: transaction.TaxCodeId = itemData.GetIdValue(column); break; + case SbmTransaction.Column.AmountEst: transaction.AmountEst = itemData.GetDecimalValue(column); break; + case SbmTransaction.Column.AmountMax: transaction.AmountMax = itemData.GetDecimalValue(column); break; + case SbmTransaction.Column.AmountNet: transaction.AmountNet= itemData.GetDecimalValue(column); break; + case SbmTransaction.Column.AmountTax: transaction.AmountTax= itemData.GetDecimalValue(column); break; + case SbmTransaction.Column.AmountTot: transaction.AmountTot = itemData.GetDecimalValue(column); break; + case SbmTransaction.Column.TimeEst: transaction.TimeEst = itemData.GetDecimalValue(column); break; + case SbmTransaction.Column.TimeAct: transaction.TimeAct = itemData.GetDecimalValue(column); break; + case SbmTransaction.Column.TimeTot: transaction.TimeTot= itemData.GetDecimalValue(column); break; + //case SbmTransaction.Column.LocationIdStock: transaction.LocationIdStock = itemData.GetIdValue(column); break; + case SbmTransaction.Column.Weight: transaction.Weight = itemData.GetDecimalValue(column); break; + //case SbmTransaction.Column.UomIdWeight: transaction.UomIdWeight = itemData.GetIdValue(column); break; + case SbmTransaction.Column.BoxCount: transaction.BoxCount = value; break; + case SbmTransaction.Column.DeliveryStatusCode: transaction.DeliveryStatusCode = value; break; + case SbmTransaction.Column.DeliveryTypeCode: transaction.DeliveryTypeCode = value; break; + case SbmTransaction.Column.DeliveryMethodCode: transaction.DeliveryMethodCode = value; break; + case SbmTransaction.Column.DeliveryCourierCode: transaction.DeliveryCourierCode = value; break; + case SbmTransaction.Column.DeliveryBookInCode: transaction.DeliveryBookInCode = value; break; + case SbmTransaction.Column.StockPickerCode: transaction.StockPickerCode = value; break; + //case SbmTransaction.Column.DeliveryRef: transaction.DeliveryRef= value; break; + //case SbmTransaction.Column.DeliveryComment: transaction.DeliveryComment= value; break; + case SbmTransaction.Column.DeliveryAmountNet: transaction.DeliveryAmountNet = itemData.GetDecimalValue(column); break; + //case SbmTransaction.Column.TaxCodeIdDelivery: transaction.TaxCodeIdDelivery= itemData.GetIdValue(column); break; + case SbmTransaction.Column.DeliveryAmountTax: transaction.DeliveryAmountTax = itemData.GetDecimalValue(column); break; + case SbmTransaction.Column.DeliveryAmountTot: transaction.DeliveryAmountTot= itemData.GetDecimalValue(column); break; + case SbmTransaction.Column.CostLabourRateHour: transaction.CostLabourRateHour = itemData.GetDecimalValue(column); break; + case SbmTransaction.Column.DeliveryDepartment: transaction.DeliveryDepartment = value; break; + case SbmTransaction.Column.DeliveryNominalCode: transaction.DeliveryNominalCode = value; break; + case SbmTransaction.Column.Notes: transaction.Notes = value; break; + case SbmTransaction.Column.Status: transaction.Status = SacsSystem.GetStatusForCode(value); break; + } + } + transactions.Add(transaction); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " Transactions: " + transactions.Count); + return transactions; + } + + + //------------------------------------------------------------------- + // Transaction query execution. + public override DbResultSet ExecuteTransactionQuery (List columns, SbmTransaction.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecuteTransactionQuery_Mobile (List transactionColumns, SbmTransaction.Params prmTransaction, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SbmTransaction.Column column in transactionColumns) + columns.Add(column.ToString()); + + SbmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetTransactionRequestConfig(SbmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetTransactionQueryFilter_Mobile(prmTransaction), columns, this.GetSortColumns_Mobile(prmTransaction), taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SbmWebServiceRequest.Config GetTransactionRequestConfig (SbmWebServiceRequest.RequestType requestType, bool debug = false) + { + SbmWebServiceRequest.Config configRequest = new SbmWebServiceRequest.Config(); + configRequest.DataType = SbmWebServiceRequest.DataType.Transaction; + configRequest.RequestType = requestType; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} \ No newline at end of file diff --git a/SaBusMgrMobCore/Mobile/Core/Mgr/SbmTransactionMgr_Mobile.cs b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmTransactionMgr_Mobile.cs new file mode 100644 index 0000000..ab664c0 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/Mgr/SbmTransactionMgr_Mobile.cs @@ -0,0 +1,207 @@ +using Sarand.BusinessMgr.Mobile.Core.App; +using Sarand.BusinessMgr.Core.App; +using Sarand.BusinessMgr.Core.Bus; +using Sarand.BusinessMgr.Core.Mgr; +using Sarand.BusinessMgr.Core.WebService; +using Sarand.Core.Bus; +using Sarand.Core.ReferenceData; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.Mgr +{ + //======================================================================= + public partial class SbmTransactionMgr_Mobile : SbmTransactionMgr, ISbmItemMgr_Mobile + { + //------------------------------------------------------------------- + // Definitions. + + //------------------------------------------------------------------- + // Data members. + private SbmWebServiceClient webServiceClient = new SbmWebServiceClient(); + + //------------------------------------------------------------------- + // Construction. + public SbmTransactionMgr_Mobile (SbmUserContext userContext) : + base(userContext) + { + } + + //------------------------------------------------------------------- + // Properties. + public SbmSessionProfile_Mobile SessionProfile { get { return SbmGlobals_Mobile.SessionProfile; } } + public String UserCode { get; } + public String EmailAddress { get; } + + //------------------------------------------------------------------- + // A s s o c i a t e d D a t a + //------------------------------------------------------------------- + public override bool CalculateTotal (SbmRequirement.Data requirementData) + { + throw new NotImplementedException(); + } + + public override bool ChangeTransactionsAssociation (SbmTransaction transaction, SysId assocId) + { + throw new NotImplementedException(); + } + + public override SbmRequirement CloneRequirement (SbmRequirement reqntSource, bool copyAddDescs) + { + throw new NotImplementedException(); + } + + public override bool CostColumnsAreAvailable () + { + throw new NotImplementedException(); + } + + public override bool DeliveryFinancialsAreAvailable () + { + throw new NotImplementedException(); + } + + public override List GetRequirementByIds (SbmTransaction.Params prmTrans) + { + throw new NotImplementedException(); + } + + public override List GetRequirementsForTransaction (SysId transactionId) + { + throw new NotImplementedException(); + } + + public override SaUomType GetTimeTypeForUom (SysId idUom) + { + throw new NotImplementedException(); + } + + public override List GetTransactionTypesForCommodity (SysId commodityId, SbmTransaction.StatusCat statusCat = SbmTransaction.StatusCat.NotCancelled) + { + throw new NotImplementedException(); + } + + public override decimal GetTransCostLabourRateHour (SysId transactionId) + { + throw new NotImplementedException(); + } + + public override decimal GetTransCostLabourRateHourDefault () + { + throw new NotImplementedException(); + } + + public override void PopulateLocationIdLists () + { + throw new NotImplementedException(); + } + + public override bool RefreshAllTotalTimes () + { + throw new NotImplementedException(); + } + + public override bool RefreshReqntTotalTime (SysId Reqnt) + { + throw new NotImplementedException(); + } + + public override bool RefreshTotalTimes (SbmConstituent constituent, SysId TransIdPrevious, SysId ReqntIdPrevious) + { + throw new NotImplementedException(); + } + + public override bool RefreshTransTotalTime (SysId Trans) + { + throw new NotImplementedException(); + } + + public override bool RequirementsExistByParams (SbmRequirement.Params prmRequirement) + { + throw new NotImplementedException(); + } + + public override bool SetTaxCode (SbmRequirement requirement, DateTime effective) + { + throw new NotImplementedException(); + } + + public override bool TransactionHasConstituents (SysId transId, SbmConstituent.StatusCat constituentStatusCat) + { + throw new NotImplementedException(); + } + + public override bool TransactionHasContainerItems (SysId transactionId) + { + throw new NotImplementedException(); + } + + public override bool TransactionHasPendingStockMovements (SysId transactionId) + { + throw new NotImplementedException(); + } + + public override bool TransactionHasRequirements (SysId transId, SbmRequirement.StatusCat requirementStatusCat) + { + throw new NotImplementedException(); + } + + public override bool TransactionHasStockMovements (SysId transactionId) + { + throw new NotImplementedException(); + } + + public override bool TransactionIsReferencedByOtherTransactions (SysId transactionId) + { + throw new NotImplementedException(); + } + public override bool RefreshAssociatedData (SbmTransaction transaction, List requirements = null) + { + throw new NotImplementedException(); + } + + public override bool RefreshAssociatedTransactions (SbmTransaction transaction, List requirements = null) + { + throw new NotImplementedException(); + } + + public override SbmRequirement.Data CloneRequirement (SbmRequirement.Data requirementSource, bool copyAddDescs) + { + throw new NotImplementedException(); + } + + public override List GetRequirementCostEstimates (SbmRequirement.Data requirement) + { + throw new NotImplementedException(); + } + + public override List GetRequirementItemProcesses (SbmRequirement.Data requirement) + { + throw new NotImplementedException(); + } + + public override bool RequirementHasAssociatedRequirements (SysId requirementId) + { + throw new NotImplementedException(); + } + + public override bool RequirementHasConstituents (SysId requirementId, Sbm.ConstituentType constituentType) + { + throw new NotImplementedException(); + } + + public override bool ClearRequirementDependentData (SysId requirementId, SysId commodityId) + { + throw new NotImplementedException(); + } + + public override bool ClearRequirementAssociatedRequirements (SysId requirementId) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/Mobile/Core/WebService/SbmWebServiceStoreItemHelper.cs b/SaBusMgrMobCore/Mobile/Core/WebService/SbmWebServiceStoreItemHelper.cs new file mode 100644 index 0000000..5113232 --- /dev/null +++ b/SaBusMgrMobCore/Mobile/Core/WebService/SbmWebServiceStoreItemHelper.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.BusinessMgr.Mobile.Core.WebService +{ + //======================================================================= + public static class SbmWebServiceStoreItemHelper + { + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrMobCore/SaBusMgrMobCore.csproj b/SaBusMgrMobCore/SaBusMgrMobCore.csproj new file mode 100644 index 0000000..4ac6a6a --- /dev/null +++ b/SaBusMgrMobCore/SaBusMgrMobCore.csproj @@ -0,0 +1,14 @@ + + + + netstandard1.3 + Sarand.BusinessMgr + + + + + + + + +