mirror of
https://github.com/danieleteti/delphimvcframework.git
synced 2024-11-15 07:45:54 +01:00
Improved MasterDetails sample
This commit is contained in:
parent
78d2532e98
commit
7d883cb677
@ -1,7 +1,7 @@
|
||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<ProjectGuid>{F8576ED6-649F-4E28-B364-1F60687C75F2}</ProjectGuid>
|
||||
<ProjectVersion>19.4</ProjectVersion>
|
||||
<ProjectVersion>19.5</ProjectVersion>
|
||||
<FrameworkType>VCL</FrameworkType>
|
||||
<MainSource>activerecord_showcase.dpr</MainSource>
|
||||
<Base>True</Base>
|
||||
@ -162,37 +162,12 @@
|
||||
<Excluded_Packages Name="$(BDSBIN)\dclofficexp260.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>
|
||||
</Excluded_Packages>
|
||||
</Delphi.Personality>
|
||||
<Deployment Version="3">
|
||||
<DeployFile LocalName="bin\activerecord_showcase.exe" Configuration="BUILD" Class="ProjectOutput">
|
||||
<Platform Name="Win32">
|
||||
<RemoteName>activerecord_showcase.exe</RemoteName>
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployFile LocalName="bin\activerecord_showcase.exe" Configuration="BULD" Class="ProjectOutput">
|
||||
<Platform Name="Win32">
|
||||
<RemoteName>activerecord_showcase.exe</RemoteName>
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployFile LocalName="bin\activerecord_showcase.exe" Configuration="Debug" Class="ProjectOutput">
|
||||
<Platform Name="Win32">
|
||||
<RemoteName>activerecord_showcase.exe</RemoteName>
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployFile LocalName="bin\activerecord_showcase.exe" Configuration="POSTGRESQL" Class="ProjectOutput">
|
||||
<Platform Name="Win32">
|
||||
<RemoteName>activerecord_showcase.exe</RemoteName>
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployFile LocalName="bin\activerecord_showcase.exe" Configuration="SQLITE" Class="ProjectOutput">
|
||||
<Platform Name="Win32">
|
||||
<RemoteName>activerecord_showcase.exe</RemoteName>
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<Deployment Version="4">
|
||||
<DeployFile LocalName="bin\activerecord_showcase.exe" Configuration="BUILD" Class="ProjectOutput"/>
|
||||
<DeployFile LocalName="bin\activerecord_showcase.exe" Configuration="BULD" Class="ProjectOutput"/>
|
||||
<DeployFile LocalName="bin\activerecord_showcase.exe" Configuration="Debug" Class="ProjectOutput"/>
|
||||
<DeployFile LocalName="bin\activerecord_showcase.exe" Configuration="POSTGRESQL" Class="ProjectOutput"/>
|
||||
<DeployFile LocalName="bin\activerecord_showcase.exe" Configuration="SQLITE" Class="ProjectOutput"/>
|
||||
<DeployClass Name="AdditionalDebugSymbols">
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
@ -215,16 +190,6 @@
|
||||
<Operation>64</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="AndroidClassesDexFile">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>classes</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>classes</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="AndroidFileProvider">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\xml</RemoteDir>
|
||||
@ -267,12 +232,6 @@
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="AndroidLibnativeX86File">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>library\lib\x86</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="AndroidServiceOutput">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
|
||||
@ -540,7 +499,7 @@
|
||||
<Operation>1</Operation>
|
||||
<Extensions>.dylib</Extensions>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<Operation>1</Operation>
|
||||
<Extensions>.dylib</Extensions>
|
||||
</Platform>
|
||||
@ -573,7 +532,7 @@
|
||||
<Operation>1</Operation>
|
||||
<Extensions>.dylib</Extensions>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<Operation>1</Operation>
|
||||
<Extensions>.dylib</Extensions>
|
||||
</Platform>
|
||||
@ -610,7 +569,7 @@
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>0</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<Operation>0</Operation>
|
||||
</Platform>
|
||||
<Platform Name="OSX32">
|
||||
@ -634,13 +593,17 @@
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iPad_AppIcon152">
|
||||
<Platform Name="iOSDevice64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
@ -650,181 +613,27 @@
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iPad_Launch1024">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iPad_Launch1024x768">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iPad_Launch1536">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iPad_Launch1536x2048">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iPad_Launch1668">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iPad_Launch1668x2388">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iPad_Launch2048">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iPad_Launch2048x1536">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iPad_Launch2048x2732">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iPad_Launch2224">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iPad_Launch2388x1668">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iPad_Launch2732x2048">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iPad_Launch2x">
|
||||
<Platform Name="iOSDevice64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iPad_Launch768">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iPad_Launch768x1024">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iPad_LaunchDark2x">
|
||||
<Platform Name="iOSDevice64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
@ -834,7 +643,7 @@
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
@ -844,7 +653,7 @@
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
@ -854,7 +663,7 @@
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
@ -864,7 +673,7 @@
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
@ -874,191 +683,37 @@
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iPhone_Launch1125">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iPhone_Launch1136x640">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iPhone_Launch1242">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iPhone_Launch1242x2688">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iPhone_Launch1334">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iPhone_Launch1792">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iPhone_Launch2208">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iPhone_Launch2436">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iPhone_Launch2688x1242">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iPhone_Launch2x">
|
||||
<Platform Name="iOSDevice64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iPhone_Launch320">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iPhone_Launch3x">
|
||||
<Platform Name="iOSDevice64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iPhone_Launch640">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iPhone_Launch640x1136">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iPhone_Launch750">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iPhone_Launch828">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iPhone_LaunchDark2x">
|
||||
<Platform Name="iOSDevice64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
@ -1068,7 +723,7 @@
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
@ -1078,7 +733,7 @@
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
@ -1088,7 +743,7 @@
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
@ -1098,7 +753,7 @@
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
@ -1108,7 +763,7 @@
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
@ -1118,7 +773,7 @@
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
@ -1128,7 +783,7 @@
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
@ -1150,12 +805,8 @@
|
||||
<RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="ProjectiOSDeviceResourceRules">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
@ -1168,6 +819,10 @@
|
||||
<RemoteDir>..\</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="ProjectiOSInfoPList">
|
||||
<Platform Name="iOSDevice32">
|
||||
@ -1176,7 +831,7 @@
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
@ -1185,7 +840,7 @@
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen</RemoteDir>
|
||||
<Operation>64</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen</RemoteDir>
|
||||
<Operation>64</Operation>
|
||||
</Platform>
|
||||
@ -1197,7 +852,7 @@
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
@ -1268,7 +923,7 @@
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Linux64">
|
||||
@ -1329,6 +984,7 @@
|
||||
<ProjectRoot Platform="iOSDevice" Name="$(PROJECTNAME).app"/>
|
||||
<ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/>
|
||||
<ProjectRoot Platform="iOSDevice64" Name="$(PROJECTNAME).app"/>
|
||||
<ProjectRoot Platform="iOSSimARM64" Name="$(PROJECTNAME).app"/>
|
||||
<ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/>
|
||||
<ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="OSX32" Name="$(PROJECTNAME).app"/>
|
||||
|
@ -30,6 +30,7 @@ uses
|
||||
MVCFramework.Serializer.Commons,
|
||||
MVCFramework.ActiveRecord,
|
||||
MVCFramework.Nullables,
|
||||
MVCFramework.Rtti.Utils,
|
||||
System.Generics.Collections,
|
||||
System.Classes;
|
||||
|
||||
@ -73,19 +74,27 @@ type
|
||||
fDescription: String;
|
||||
[MVCTableField('total')]
|
||||
fTotal: Currency;
|
||||
procedure SetDescription(const Value: String);
|
||||
procedure SetDiscount(const Value: Integer);
|
||||
procedure SetQuantity(const Value: Integer);
|
||||
procedure SetUnitPrice(const Value: Currency);
|
||||
protected
|
||||
procedure OnBeforeInsertOrUpdate; override;
|
||||
public
|
||||
constructor Create; override;
|
||||
destructor Destroy; override;
|
||||
procedure RecalcTotal;
|
||||
function Clone: TOrderDetail;
|
||||
procedure Assign(Value: TMVCActiveRecord); override;
|
||||
property ID: NullableInt64 read fID write fID;
|
||||
[MVCDoNotSerialize]
|
||||
property IDOrder: Int64 read fIDOrder write fIDOrder;
|
||||
property IDArticle: Int64 read fIDArticle write fIDArticle;
|
||||
property UnitPrice: Currency read fUnitPrice write fUnitPrice;
|
||||
property Discount: Integer read fDiscount write fDiscount;
|
||||
property Quantity: Integer read fQuantity write fQuantity;
|
||||
property Description: String read fDescription write fDescription;
|
||||
property Total: Currency read fTotal write fTotal;
|
||||
property UnitPrice: Currency read fUnitPrice write SetUnitPrice;
|
||||
property Discount: Integer read fDiscount write SetDiscount;
|
||||
property Quantity: Integer read fQuantity write SetQuantity;
|
||||
property Description: String read fDescription write SetDescription;
|
||||
property Total: Currency read fTotal;
|
||||
end;
|
||||
|
||||
[MVCNameCase(ncCamelCase)]
|
||||
@ -93,7 +102,7 @@ type
|
||||
TOrder = class(TMVCActiveRecord)
|
||||
private
|
||||
[MVCTableField('id', [foPrimaryKey, foAutoGenerated])]
|
||||
fID: Int64;
|
||||
fID: NullableUInt64;
|
||||
[MVCTableField('id_customer')]
|
||||
fIDCustomer: Integer;
|
||||
[MVCTableField('order_date')]
|
||||
@ -104,13 +113,16 @@ type
|
||||
fDetails: TObjectList<TOrderDetail>;
|
||||
protected
|
||||
procedure OnAfterLoad; override;
|
||||
procedure OnAfterUpdate; override;
|
||||
procedure OnAfterInsert; override;
|
||||
procedure OnAfterInsertOrUpdate; override;
|
||||
procedure OnBeforeInsertOrUpdate; override;
|
||||
procedure RecalcTotals;
|
||||
public
|
||||
constructor Create; override;
|
||||
destructor Destroy; override;
|
||||
procedure AddOrderItem(const OrderItem: TOrderDetail);
|
||||
procedure UpdateOrderItemByID(const OrderItemID: Integer; const OrderItem: TOrderDetail);
|
||||
function GetOrderDetailByID(const Value: Int64): TOrderDetail;
|
||||
property ID: Int64 read fID write fID;
|
||||
property ID: NullableUInt64 read fID write fID;
|
||||
[MVCNameAs('idCustomer')]
|
||||
property IDCustomer: Integer read fIDCustomer write fIDCustomer;
|
||||
property OrderDate: TDate read fOrderDate write fOrderDate;
|
||||
@ -147,7 +159,6 @@ begin
|
||||
self.Discount := lObj.Discount;
|
||||
self.Quantity := lObj.Quantity;
|
||||
self.Description := lObj.Description;
|
||||
self.Total := lObj.Total;
|
||||
end
|
||||
else
|
||||
begin
|
||||
@ -155,6 +166,12 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
function TOrderDetail.Clone: TOrderDetail;
|
||||
begin
|
||||
Result := TOrderDetail.Create;
|
||||
Result.Assign(Self);
|
||||
end;
|
||||
|
||||
constructor TOrderDetail.Create;
|
||||
begin
|
||||
inherited Create;
|
||||
@ -165,6 +182,46 @@ begin
|
||||
inherited;
|
||||
end;
|
||||
|
||||
procedure TOrderDetail.OnBeforeInsertOrUpdate;
|
||||
begin
|
||||
inherited;
|
||||
RecalcTotal;
|
||||
end;
|
||||
|
||||
procedure TOrderDetail.RecalcTotal;
|
||||
begin
|
||||
fTotal := fUnitPrice * fQuantity * (1 - fDiscount / 100);
|
||||
end;
|
||||
|
||||
procedure TOrderDetail.SetDescription(const Value: String);
|
||||
begin
|
||||
fDescription := Value;
|
||||
end;
|
||||
|
||||
procedure TOrderDetail.SetDiscount(const Value: Integer);
|
||||
begin
|
||||
fDiscount := Value;
|
||||
RecalcTotal;
|
||||
end;
|
||||
|
||||
procedure TOrderDetail.SetQuantity(const Value: Integer);
|
||||
begin
|
||||
fQuantity := Value;
|
||||
RecalcTotal;
|
||||
end;
|
||||
|
||||
procedure TOrderDetail.SetUnitPrice(const Value: Currency);
|
||||
begin
|
||||
fUnitPrice := Value;
|
||||
RecalcTotal;
|
||||
end;
|
||||
|
||||
procedure TOrder.AddOrderItem(const OrderItem: TOrderDetail);
|
||||
begin
|
||||
OrderItem.IDOrder := ID;
|
||||
OrderItems.Add(OrderItem);
|
||||
end;
|
||||
|
||||
constructor TOrder.Create;
|
||||
begin
|
||||
inherited Create;
|
||||
@ -192,46 +249,45 @@ begin
|
||||
raise EMVCActiveRecord.Create('Item not found');
|
||||
end;
|
||||
|
||||
procedure TOrder.OnAfterInsert;
|
||||
var
|
||||
lOrderDetail: TOrderDetail;
|
||||
procedure TOrder.OnAfterInsertOrUpdate;
|
||||
begin
|
||||
inherited;
|
||||
for lOrderDetail in fDetails do
|
||||
for var lOrderItem in OrderItems do
|
||||
begin
|
||||
lOrderDetail.IDOrder := ID;
|
||||
lOrderDetail.Insert;
|
||||
lOrderItem.IDOrder := ID;
|
||||
lOrderItem.Store;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TOrder.OnAfterUpdate;
|
||||
var
|
||||
lOrderItems: TObjectList<TOrderDetail>;
|
||||
procedure TOrder.OnBeforeInsertOrUpdate;
|
||||
begin
|
||||
inherited;
|
||||
lOrderItems := TMVCActiveRecord.SelectRQL<TOrderDetail>(Format('eq(idorder,%d)', [ID]), 100);
|
||||
try
|
||||
TMVCActiveRecord.Merge<TOrderDetail>(lOrderItems, fDetails)
|
||||
.Apply(
|
||||
procedure (const Obj: TOrderDetail; const EntityAction: TMVCEntityAction;
|
||||
var Handled: Boolean)
|
||||
begin
|
||||
if EntityAction in [eaCreate, eaUpdate] then
|
||||
begin
|
||||
Obj.IDOrder := ID;
|
||||
end;
|
||||
end);
|
||||
finally
|
||||
lOrderItems.Free;
|
||||
RecalcTotals;
|
||||
end;
|
||||
|
||||
procedure TOrder.RecalcTotals;
|
||||
begin
|
||||
fTotal := 0;
|
||||
for var lOrderItem in fDetails do
|
||||
begin
|
||||
fTotal := fTotal + lOrderItem.Total;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TOrder.UpdateOrderItemByID(const OrderItemID: Integer;
|
||||
const OrderItem: TOrderDetail);
|
||||
begin
|
||||
var lObj := GetOrderDetailByID(OrderItemID);
|
||||
lObj.Assign(OrderItem);
|
||||
lObj.IDOrder := ID;
|
||||
end;
|
||||
|
||||
procedure TOrder.OnAfterLoad;
|
||||
var
|
||||
lList: TObjectList<TOrderDetail>;
|
||||
begin
|
||||
inherited;
|
||||
lList := TMVCActiveRecord.SelectRQL<TOrderDetail>(Format('eq(idOrder,%d)',[ID]), 1000);
|
||||
lList := TMVCActiveRecord.SelectRQL<TOrderDetail>(Format('eq(idOrder,%d)',[ID.Value]), 1000);
|
||||
try
|
||||
fDetails.Clear;
|
||||
fDetails.AddRange(lList);
|
||||
@ -241,4 +297,5 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
end.
|
||||
|
@ -7,6 +7,7 @@ uses
|
||||
mvcframework.Commons,
|
||||
mvcframework.Serializer.Commons,
|
||||
mvcframework.DataSet.Utils,
|
||||
jsondataobjects,
|
||||
System.Generics.Collections,
|
||||
Controllers.Base, BusinessObjects;
|
||||
|
||||
@ -44,14 +45,16 @@ type
|
||||
[MVCDoc('Updates the Order and return "200: OK" - overwrites childs by default')]
|
||||
[MVCPath('/($id)')]
|
||||
[MVCHTTPMethod([httpPUT])]
|
||||
procedure UpdateOrderByID(const id: Integer);
|
||||
procedure UpdateOrderByID(
|
||||
const id: Integer;
|
||||
[MVCFromBody] OrderIn: TOrder
|
||||
);
|
||||
|
||||
[MVCDoc('Updates the Order and return "200: OK" - overwrites childs by default')]
|
||||
[MVCDoc('Updates the Order Items and return "200: OK" - merge childs')]
|
||||
[MVCPath('/($id)/details')]
|
||||
[MVCHTTPMethod([httpPATCH])]
|
||||
procedure MergeOrderDetailsByOrderID(const id: Integer; const [MVCFromBody] OrderDetails: TObjectList<TOrderDetail>);
|
||||
|
||||
|
||||
[MVCDoc('Creates a new Order and returns "201: Created - creates childs"')]
|
||||
[MVCPath]
|
||||
[MVCHTTPMethod([httpPOST])]
|
||||
@ -75,23 +78,23 @@ uses
|
||||
procedure TOrdersController.CreateOrder(const [MVCFromBody] Order: TOrder);
|
||||
begin
|
||||
Order.Insert;
|
||||
Render201Created('/orders/' + Order.id.ToString, 'Order Created');
|
||||
Render201Created('/orders/' + Order.ID.Value.ToString, 'Order Created');
|
||||
end;
|
||||
|
||||
procedure TOrdersController.CreateOrders(const OrderList: TObjectList<TOrder>);
|
||||
begin
|
||||
// GetOrdersService.StartTransaction;
|
||||
// try
|
||||
// for lOrder in OrderList do
|
||||
// begin
|
||||
// GetOrdersService.Add(lOrder);
|
||||
// end;
|
||||
// GetOrdersService.Commit;
|
||||
// except
|
||||
// GetOrdersService.Rollback;
|
||||
// raise;
|
||||
// end;
|
||||
Render(201, 'Orders Created');
|
||||
TMVCActiveRecord.CurrentConnection.StartTransaction;
|
||||
try
|
||||
for var lOrder in OrderList do
|
||||
begin
|
||||
lOrder.Store;
|
||||
end;
|
||||
TMVCActiveRecord.CurrentConnection.Commit;
|
||||
Render(ObjectDict(false).Add('data', OrderList));
|
||||
except
|
||||
TMVCActiveRecord.CurrentConnection.Rollback;
|
||||
raise;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TOrdersController.DeleteOrderByID(id: Integer);
|
||||
@ -144,61 +147,111 @@ procedure TOrdersController.MergeOrderDetailsByOrderID(const id: Integer;
|
||||
const OrderDetails: TObjectList<TOrderDetail>);
|
||||
var
|
||||
lCurrentOrder: TOrder;
|
||||
lResp: TJSONArray;
|
||||
begin
|
||||
ResponseStream.AppendLine('---');
|
||||
lCurrentOrder := TMVCActiveRecord.GetByPk<TOrder>(id);
|
||||
lResp := TJSONArray.Create;
|
||||
try
|
||||
TMVCActiveRecord
|
||||
.Merge<TOrderDetail>(lCurrentOrder.OrderItems, OrderDetails).Apply(
|
||||
procedure(
|
||||
const OrderDetail: TOrderDetail;
|
||||
const EntityAction: TMVCEntityAction;
|
||||
var Handled: Boolean)
|
||||
var
|
||||
lObj: TOrderDetail;
|
||||
begin
|
||||
case EntityAction of
|
||||
eaDelete:
|
||||
begin
|
||||
lObj := lCurrentOrder.OrderItems.Extract(OrderDetail);
|
||||
try
|
||||
lObj.Delete;
|
||||
finally
|
||||
lObj.Free;
|
||||
end;
|
||||
TMVCActiveRecord.CurrentConnection.StartTransaction;
|
||||
try
|
||||
lCurrentOrder := TMVCActiveRecord.GetByPk<TOrder>(id);
|
||||
try
|
||||
TMVCActiveRecord
|
||||
.Merge<TOrderDetail>(lCurrentOrder.OrderItems, OrderDetails).Apply(
|
||||
procedure(
|
||||
const OrderDetail: TOrderDetail;
|
||||
const EntityAction: TMVCEntityAction;
|
||||
var Handled: Boolean)
|
||||
begin
|
||||
case EntityAction of
|
||||
eaDelete:
|
||||
begin
|
||||
lResp.Add('deleted order item with id = ' + IntToStr(OrderDetail.ID));
|
||||
lCurrentOrder.OrderItems.Extract(OrderDetail); //remove the detail from the master
|
||||
Handled := False; //will be automatically deleted
|
||||
end;
|
||||
eaCreate:
|
||||
begin
|
||||
lCurrentOrder.AddOrderItem(OrderDetail.Clone); //add detail to master
|
||||
lResp.Add('added new order item');
|
||||
Handled := True; //will not be inserted yet
|
||||
end;
|
||||
eaUpdate:
|
||||
begin
|
||||
lCurrentOrder.UpdateOrderItemByID(OrderDetail.ID, OrderDetail); //update the detail
|
||||
lResp.Add('updated order item with id = ' + IntToStr(OrderDetail.ID));
|
||||
Handled := True; //will not be updated yet
|
||||
end;
|
||||
end;
|
||||
eaCreate:
|
||||
begin
|
||||
lCurrentOrder.OrderItems.Add(OrderDetail);
|
||||
end;
|
||||
eaUpdate:
|
||||
begin
|
||||
lObj := lCurrentOrder.GetOrderDetailByID(OrderDetail.ID.Value);
|
||||
lObj.Assign(OrderDetail);
|
||||
end;
|
||||
end;
|
||||
Handled := True;
|
||||
ResponseStream.AppendLine(GetEnumName(TypeInfo(TMVCEntityAction), Ord(EntityAction)));
|
||||
end);
|
||||
lCurrentOrder.Update();
|
||||
end);
|
||||
lCurrentOrder.Update(); // update the master, insert and update details
|
||||
finally
|
||||
lCurrentOrder.Free;
|
||||
end;
|
||||
TMVCActiveRecord.CurrentConnection.Commit;
|
||||
except
|
||||
TMVCActiveRecord.CurrentConnection.Rollback;
|
||||
raise;
|
||||
end;
|
||||
Render(lResp, False);
|
||||
finally
|
||||
lCurrentOrder.Free;
|
||||
lResp.Free;
|
||||
end;
|
||||
RenderResponseStream;
|
||||
end;
|
||||
|
||||
procedure TOrdersController.UpdateOrderByID(const id: Integer);
|
||||
procedure TOrdersController.UpdateOrderByID(
|
||||
const id: Integer;
|
||||
[MVCFromBody] OrderIn: TOrder);
|
||||
var
|
||||
lCurrentOrder: TOrder;
|
||||
lResp: TJSONArray;
|
||||
begin
|
||||
lCurrentOrder := TMVCActiveRecord.GetByPk<TOrder>(id);
|
||||
lResp := TJSONArray.Create;
|
||||
try
|
||||
Context.Request.BodyFor<TOrder>(lCurrentOrder);
|
||||
lCurrentOrder.Update();
|
||||
lCurrentOrder := TMVCActiveRecord.GetByPk<TOrder>(id);
|
||||
try
|
||||
lCurrentOrder.IDCustomer := OrderIn.IDCustomer;
|
||||
lCurrentOrder.OrderDate := OrderIn.OrderDate;
|
||||
lCurrentOrder.Total := OrderIn.Total;
|
||||
TMVCActiveRecord
|
||||
.Merge<TOrderDetail>(lCurrentOrder.OrderItems, OrderIn.OrderItems).Apply(
|
||||
procedure(
|
||||
const OrderDetail: TOrderDetail;
|
||||
const EntityAction: TMVCEntityAction;
|
||||
var Handled: Boolean)
|
||||
var
|
||||
lObj: TOrderDetail;
|
||||
begin
|
||||
case EntityAction of
|
||||
eaDelete:
|
||||
begin
|
||||
lResp.Add('deleted order item with id = ' + IntToStr(OrderDetail.ID));
|
||||
lCurrentOrder.OrderItems.Extract(OrderDetail);
|
||||
Handled := False;
|
||||
end;
|
||||
eaCreate:
|
||||
begin
|
||||
Handled := True;
|
||||
lObj := TOrderDetail.Create;
|
||||
lObj.Assign(OrderDetail);
|
||||
lCurrentOrder.AddOrderItem(lObj);
|
||||
lResp.Add('added new order item');
|
||||
end;
|
||||
eaUpdate:
|
||||
begin
|
||||
Handled := True;
|
||||
lCurrentOrder.UpdateOrderItemByID(OrderDetail.ID, OrderDetail);
|
||||
lResp.Add('updated order item with id = ' + IntToStr(OrderDetail.ID));
|
||||
end;
|
||||
end;
|
||||
end);
|
||||
lCurrentOrder.Update();
|
||||
finally
|
||||
lCurrentOrder.Free;
|
||||
end;
|
||||
Render(lResp, False);
|
||||
finally
|
||||
lCurrentOrder.Free;
|
||||
lResp.Free;
|
||||
end;
|
||||
Render(200, 'Order Updated');
|
||||
end;
|
||||
|
||||
procedure TOrdersController.GetOrderByID(id: Integer);
|
||||
|
@ -15,8 +15,6 @@ uses
|
||||
Controllers.Orders in 'Controllers.Orders.pas',
|
||||
BusinessObjects in 'BusinessObjects.pas',
|
||||
Commons in 'Commons.pas',
|
||||
MVCFramework.ActiveRecord in '..\..\sources\MVCFramework.ActiveRecord.pas',
|
||||
MVCFramework.Serializer.JsonDataObjects in '..\..\sources\MVCFramework.Serializer.JsonDataObjects.pas',
|
||||
FDConnectionConfigU in 'FDConnectionConfigU.pas';
|
||||
|
||||
{$R *.res}
|
||||
|
@ -7,7 +7,7 @@
|
||||
<TargetedPlatforms>129</TargetedPlatforms>
|
||||
<AppType>Console</AppType>
|
||||
<FrameworkType>None</FrameworkType>
|
||||
<ProjectVersion>19.4</ProjectVersion>
|
||||
<ProjectVersion>19.5</ProjectVersion>
|
||||
<Platform Condition="'$(Platform)'==''">Win32</Platform>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
|
||||
@ -173,8 +173,6 @@
|
||||
<DCCReference Include="Controllers.Orders.pas"/>
|
||||
<DCCReference Include="BusinessObjects.pas"/>
|
||||
<DCCReference Include="Commons.pas"/>
|
||||
<DCCReference Include="..\..\sources\MVCFramework.ActiveRecord.pas"/>
|
||||
<DCCReference Include="..\..\sources\MVCFramework.Serializer.JsonDataObjects.pas"/>
|
||||
<DCCReference Include="FDConnectionConfigU.pas"/>
|
||||
<BuildConfiguration Include="Base">
|
||||
<Key>Base</Key>
|
||||
@ -210,21 +208,9 @@
|
||||
<Platform value="Win32">True</Platform>
|
||||
<Platform value="Win64">False</Platform>
|
||||
</Platforms>
|
||||
<Deployment Version="3">
|
||||
<DeployFile LocalName="$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png" Configuration="Debug" Class="UWP_DelphiLogo150">
|
||||
<Platform Name="Win32">
|
||||
<RemoteDir>Assets\</RemoteDir>
|
||||
<RemoteName>Logo150x150.png</RemoteName>
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployFile LocalName="$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png" Configuration="Debug" Class="UWP_DelphiLogo44">
|
||||
<Platform Name="Win32">
|
||||
<RemoteDir>Assets\</RemoteDir>
|
||||
<RemoteName>Logo44x44.png</RemoteName>
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<Deployment Version="4">
|
||||
<DeployFile LocalName="$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png" Configuration="Debug" Class="UWP_DelphiLogo150"/>
|
||||
<DeployFile LocalName="$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png" Configuration="Debug" Class="UWP_DelphiLogo44"/>
|
||||
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libcgunwind.1.0.dylib" Class="DependencyModule">
|
||||
<Platform Name="iOSSimulator">
|
||||
<Overwrite>true</Overwrite>
|
||||
@ -240,6 +226,12 @@
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployFile LocalName="masterdetailssample.exe" Configuration="Debug" Class="ProjectOutput">
|
||||
<Platform Name="Win32">
|
||||
<RemoteName>masterdetailssample.exe</RemoteName>
|
||||
<Overwrite>true</Overwrite>
|
||||
</Platform>
|
||||
</DeployFile>
|
||||
<DeployClass Name="AdditionalDebugSymbols">
|
||||
<Platform Name="OSX32">
|
||||
<Operation>1</Operation>
|
||||
@ -581,7 +573,7 @@
|
||||
<Operation>1</Operation>
|
||||
<Extensions>.dylib</Extensions>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<Operation>1</Operation>
|
||||
<Extensions>.dylib</Extensions>
|
||||
</Platform>
|
||||
@ -615,7 +607,7 @@
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>0</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<Operation>0</Operation>
|
||||
</Platform>
|
||||
<Platform Name="OSX32">
|
||||
@ -636,13 +628,17 @@
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iPad_AppIcon152">
|
||||
<Platform Name="iOSDevice64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
@ -652,7 +648,7 @@
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
@ -662,7 +658,7 @@
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
@ -672,7 +668,7 @@
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
@ -682,7 +678,7 @@
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
@ -692,7 +688,7 @@
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
@ -702,7 +698,7 @@
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
@ -712,7 +708,7 @@
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
@ -722,7 +718,7 @@
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
@ -732,7 +728,7 @@
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
@ -742,7 +738,7 @@
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
@ -752,7 +748,7 @@
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
@ -762,7 +758,7 @@
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
@ -772,7 +768,7 @@
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
@ -782,7 +778,7 @@
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
@ -792,7 +788,7 @@
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
@ -802,7 +798,7 @@
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
@ -812,7 +808,7 @@
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
@ -822,7 +818,7 @@
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
@ -844,6 +840,10 @@
|
||||
<RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="ProjectiOSEntitlements"/>
|
||||
<DeployClass Name="ProjectiOSInfoPList"/>
|
||||
@ -855,7 +855,7 @@
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
@ -891,7 +891,7 @@
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimulator">
|
||||
<Platform Name="iOSSimARM64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Linux64">
|
||||
@ -948,6 +948,7 @@
|
||||
<ProjectRoot Platform="Android64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/>
|
||||
<ProjectRoot Platform="iOSDevice64" Name="$(PROJECTNAME).app"/>
|
||||
<ProjectRoot Platform="iOSSimARM64" Name="$(PROJECTNAME).app"/>
|
||||
<ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/>
|
||||
<ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="OSX32" Name="$(PROJECTNAME)"/>
|
||||
|
@ -831,84 +831,86 @@ end;
|
||||
class function TRttiUtils.Clone(AObject: TObject): TObject;
|
||||
var
|
||||
_ARttiType: TRttiType;
|
||||
Field: TRttiField;
|
||||
master, cloned: TObject;
|
||||
lField: TRttiField;
|
||||
lMaster, lCloned: TObject;
|
||||
Src: TObject;
|
||||
sourceStream: TStream;
|
||||
SavedPosition: Int64;
|
||||
targetStream: TStream;
|
||||
targetCollection: TObjectList<TObject>;
|
||||
sourceCollection: TObjectList<TObject>;
|
||||
lSourceStream: TStream;
|
||||
lSavedPosition: Int64;
|
||||
lTargetStream: TStream;
|
||||
lTargetCollection: TObjectList<TObject>;
|
||||
lSourceCollection: TObjectList<TObject>;
|
||||
I: Integer;
|
||||
sourceObject: TObject;
|
||||
targetObject: TObject;
|
||||
lSourceObject: TObject;
|
||||
lTargetObject: TObject;
|
||||
begin
|
||||
Result := nil;
|
||||
if not Assigned(AObject) then
|
||||
Exit;
|
||||
|
||||
_ARttiType := GlContext.GetType(AObject.ClassType);
|
||||
cloned := CreateObject(_ARttiType);
|
||||
master := AObject;
|
||||
for Field in _ARttiType.GetFields do
|
||||
lCloned := CreateObject(_ARttiType);
|
||||
lMaster := AObject;
|
||||
for lField in _ARttiType.GetFields do
|
||||
begin
|
||||
if not Field.FieldType.IsInstance then
|
||||
Field.SetValue(cloned, Field.GetValue(master))
|
||||
if not lField.FieldType.IsInstance then
|
||||
begin
|
||||
lField.SetValue(lCloned, lField.GetValue(lMaster))
|
||||
end
|
||||
else
|
||||
begin
|
||||
Src := Field.GetValue(AObject).AsObject;
|
||||
Src := lField.GetValue(AObject).AsObject;
|
||||
if Src is TStream then
|
||||
begin
|
||||
sourceStream := TStream(Src);
|
||||
SavedPosition := sourceStream.Position;
|
||||
sourceStream.Position := 0;
|
||||
if Field.GetValue(cloned).IsEmpty then
|
||||
lSourceStream := TStream(Src);
|
||||
lSavedPosition := lSourceStream.Position;
|
||||
lSourceStream.Position := 0;
|
||||
if lField.GetValue(lCloned).IsEmpty then
|
||||
begin
|
||||
targetStream := TMemoryStream.Create;
|
||||
Field.SetValue(cloned, targetStream);
|
||||
lTargetStream := TMemoryStream.Create;
|
||||
lField.SetValue(lCloned, lTargetStream);
|
||||
end
|
||||
else
|
||||
targetStream := Field.GetValue(cloned).AsObject as TStream;
|
||||
targetStream.Position := 0;
|
||||
targetStream.CopyFrom(sourceStream, sourceStream.Size);
|
||||
targetStream.Position := SavedPosition;
|
||||
sourceStream.Position := SavedPosition;
|
||||
lTargetStream := lField.GetValue(lCloned).AsObject as TStream;
|
||||
lTargetStream.Position := 0;
|
||||
lTargetStream.CopyFrom(lSourceStream, lSourceStream.Size);
|
||||
lTargetStream.Position := lSavedPosition;
|
||||
lSourceStream.Position := lSavedPosition;
|
||||
end
|
||||
else if Src is TObjectList<TObject> then
|
||||
begin
|
||||
sourceCollection := TObjectList<TObject>(Src);
|
||||
if Field.GetValue(cloned).IsEmpty then
|
||||
lSourceCollection := TObjectList<TObject>(Src);
|
||||
if lField.GetValue(lCloned).IsEmpty then
|
||||
begin
|
||||
targetCollection := TObjectList<TObject>.Create;
|
||||
Field.SetValue(cloned, targetCollection);
|
||||
lTargetCollection := TObjectList<TObject>.Create;
|
||||
lField.SetValue(lCloned, lTargetCollection);
|
||||
end
|
||||
else
|
||||
targetCollection := Field.GetValue(cloned).AsObject as TObjectList<TObject>;
|
||||
for I := 0 to sourceCollection.Count - 1 do
|
||||
lTargetCollection := lField.GetValue(lCloned).AsObject as TObjectList<TObject>;
|
||||
for I := 0 to lSourceCollection.Count - 1 do
|
||||
begin
|
||||
targetCollection.Add(TRttiUtils.Clone(sourceCollection[I]));
|
||||
lTargetCollection.Add(TRttiUtils.Clone(lSourceCollection[I]));
|
||||
end;
|
||||
end
|
||||
else
|
||||
begin
|
||||
sourceObject := Src;
|
||||
lSourceObject := Src;
|
||||
|
||||
if Field.GetValue(cloned).IsEmpty then
|
||||
if lField.GetValue(lCloned).IsEmpty then
|
||||
begin
|
||||
targetObject := TRttiUtils.Clone(sourceObject);
|
||||
Field.SetValue(cloned, targetObject);
|
||||
lTargetObject := TRttiUtils.Clone(lSourceObject);
|
||||
lField.SetValue(lCloned, lTargetObject);
|
||||
end
|
||||
else
|
||||
begin
|
||||
targetObject := Field.GetValue(cloned).AsObject;
|
||||
TRttiUtils.CopyObject(sourceObject, targetObject);
|
||||
lTargetObject := lField.GetValue(lCloned).AsObject;
|
||||
TRttiUtils.CopyObject(lSourceObject, lTargetObject);
|
||||
end;
|
||||
Field.SetValue(cloned, targetObject);
|
||||
lField.SetValue(lCloned, lTargetObject);
|
||||
end;
|
||||
end;
|
||||
|
||||
end;
|
||||
Result := cloned;
|
||||
Result := lCloned;
|
||||
end;
|
||||
|
||||
class function TRttiUtils.HasAttribute<T>(AObject: TObject; out AAttribute: T): Boolean;
|
||||
|
Loading…
Reference in New Issue
Block a user