From be67db9ed15d0a1dadd56ab065a05a5d7ba38863 Mon Sep 17 00:00:00 2001 From: tonybingo-stack Date: Mon, 3 Jul 2023 15:36:14 +0300 Subject: [PATCH] Completed assessment --- UndoAssessment.sln | 108 ++++++++++-------- .../Assets/AboutAssets.txt | 3 +- .../UndoAssessment.Android/MainActivity.cs | 2 +- .../Properties/AndroidManifest.xml | 12 +- .../Properties/AssemblyInfo.cs | 1 - .../Resources/AboutResources.txt | 3 +- .../Resources/Resource.designer.cs | 3 +- .../Resources/mipmap-anydpi-v26/icon.xml | 4 +- .../mipmap-anydpi-v26/icon_round.xml | 4 +- .../Resources/values/colors.xml | 3 +- .../Resources/values/styles.xml | 4 +- .../UndoAssessment.Android.csproj | 9 +- .../UndoAssessment.iOS/AppDelegate.cs | 1 - .../AppIcon.appiconset/Contents.json | 4 +- UndoAssessment/UndoAssessment.iOS/Info.plist | 2 +- UndoAssessment/UndoAssessment.iOS/Main.cs | 1 - .../Properties/AssemblyInfo.cs | 1 - .../Resources/LaunchScreen.storyboard | 3 +- .../UndoAssessment.iOS.csproj | 8 +- UndoAssessment/UndoAssessment/App.xaml | 1 - UndoAssessment/UndoAssessment/App.xaml.cs | 13 +-- UndoAssessment/UndoAssessment/AppShell.xaml | 106 +++++++++++++++-- .../UndoAssessment/AppShell.xaml.cs | 8 +- UndoAssessment/UndoAssessment/AssemblyInfo.cs | 4 +- .../UndoAssessment/GettingStarted.txt | 3 +- UndoAssessment/UndoAssessment/Image/check.png | Bin 0 -> 14092 bytes .../UndoAssessment/Image/cross.jpeg | Bin 0 -> 13593 bytes .../UndoAssessment/Models/GetResult.cs | 13 +++ UndoAssessment/UndoAssessment/Models/Item.cs | 2 +- .../UndoAssessment/Services/IDataStore.cs | 1 - .../UndoAssessment/Services/MockDataStore.cs | 2 +- .../UndoAssessment/UndoAssessment.csproj | 29 ++++- .../ViewModels/AboutViewModel.cs | 2 +- .../ViewModels/AssesmentResultViewModel.cs | 40 +++++++ .../ViewModels/AssesmentViewModel.cs | 86 ++++++++++++++ .../ViewModels/BaseViewModel.cs | 7 +- .../ViewModels/ItemDetailViewModel.cs | 3 +- .../ViewModels/ItemsViewModel.cs | 8 +- .../ViewModels/LoginViewModel.cs | 5 +- .../ViewModels/NewItemViewModel.cs | 5 +- .../ViewModels/NewUserViewModel.cs | 56 +++++++++ .../UndoAssessment/Views/AboutPage.xaml | 1 - .../UndoAssessment/Views/AboutPage.xaml.cs | 2 +- .../UndoAssessment/Views/AssesmentPage.xaml | 52 +++++++++ .../Views/AssesmentPage.xaml.cs | 37 ++++++ .../Views/AssesmentResultPage.xaml | 18 +++ .../Views/AssesmentResultPage.xaml.cs | 24 ++++ .../UndoAssessment/Views/ItemDetailPage.xaml | 2 +- .../Views/ItemDetailPage.xaml.cs | 4 +- .../UndoAssessment/Views/ItemsPage.xaml | 1 - .../UndoAssessment/Views/ItemsPage.xaml.cs | 11 +- .../UndoAssessment/Views/LoginPage.xaml | 2 +- .../UndoAssessment/Views/LoginPage.xaml.cs | 2 +- .../UndoAssessment/Views/NewItemPage.xaml | 1 - .../UndoAssessment/Views/NewItemPage.xaml.cs | 7 +- .../UndoAssessment/Views/NewUserPage.xaml | 25 ++++ .../UndoAssessment/Views/NewUserPage.xaml.cs | 24 ++++ 57 files changed, 637 insertions(+), 146 deletions(-) create mode 100644 UndoAssessment/UndoAssessment/Image/check.png create mode 100644 UndoAssessment/UndoAssessment/Image/cross.jpeg create mode 100644 UndoAssessment/UndoAssessment/Models/GetResult.cs create mode 100644 UndoAssessment/UndoAssessment/ViewModels/AssesmentResultViewModel.cs create mode 100644 UndoAssessment/UndoAssessment/ViewModels/AssesmentViewModel.cs create mode 100644 UndoAssessment/UndoAssessment/ViewModels/NewUserViewModel.cs create mode 100644 UndoAssessment/UndoAssessment/Views/AssesmentPage.xaml create mode 100644 UndoAssessment/UndoAssessment/Views/AssesmentPage.xaml.cs create mode 100644 UndoAssessment/UndoAssessment/Views/AssesmentResultPage.xaml create mode 100644 UndoAssessment/UndoAssessment/Views/AssesmentResultPage.xaml.cs create mode 100644 UndoAssessment/UndoAssessment/Views/NewUserPage.xaml create mode 100644 UndoAssessment/UndoAssessment/Views/NewUserPage.xaml.cs diff --git a/UndoAssessment.sln b/UndoAssessment.sln index 35ed5ae..44c6f8f 100644 --- a/UndoAssessment.sln +++ b/UndoAssessment.sln @@ -1,65 +1,83 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 25.0.1705.6 +# Visual Studio Version 17 +VisualStudioVersion = 17.6.33815.320 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UndoAssessment.Android", "UndoAssessment\UndoAssessment.Android\UndoAssessment.Android.csproj", "{B08F8340-7FAF-4AB2-A9DA-BA5B14FE5FDE}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UndoAssessment.Android", "UndoAssessment\UndoAssessment.Android\UndoAssessment.Android.csproj", "{7471E318-A3D7-4C5B-ADAA-0F491EA3A05E}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UndoAssessment.iOS", "UndoAssessment\UndoAssessment.iOS\UndoAssessment.iOS.csproj", "{4F77CCCB-68DC-4CC7-A528-DB6FF48741D0}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UndoAssessment.iOS", "UndoAssessment\UndoAssessment.iOS\UndoAssessment.iOS.csproj", "{F1D8255B-1170-437E-B342-D6AB3E79A3F3}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UndoAssessment", "UndoAssessment\UndoAssessment\UndoAssessment.csproj", "{7ED4972A-D279-4E63-B4F5-3D15590D4AA1}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UndoAssessment", "UndoAssessment\UndoAssessment\UndoAssessment.csproj", "{A6783E71-B94D-4DE0-86BE-EC6F74C80FEB}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - Debug|iPhoneSimulator = Debug|iPhoneSimulator - Release|iPhoneSimulator = Release|iPhoneSimulator Debug|iPhone = Debug|iPhone + Debug|iPhoneSimulator = Debug|iPhoneSimulator + Release|Any CPU = Release|Any CPU Release|iPhone = Release|iPhone + Release|iPhoneSimulator = Release|iPhoneSimulator EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B08F8340-7FAF-4AB2-A9DA-BA5B14FE5FDE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B08F8340-7FAF-4AB2-A9DA-BA5B14FE5FDE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B08F8340-7FAF-4AB2-A9DA-BA5B14FE5FDE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B08F8340-7FAF-4AB2-A9DA-BA5B14FE5FDE}.Release|Any CPU.Build.0 = Release|Any CPU - {B08F8340-7FAF-4AB2-A9DA-BA5B14FE5FDE}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {B08F8340-7FAF-4AB2-A9DA-BA5B14FE5FDE}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {B08F8340-7FAF-4AB2-A9DA-BA5B14FE5FDE}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {B08F8340-7FAF-4AB2-A9DA-BA5B14FE5FDE}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {B08F8340-7FAF-4AB2-A9DA-BA5B14FE5FDE}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {B08F8340-7FAF-4AB2-A9DA-BA5B14FE5FDE}.Debug|iPhone.Build.0 = Debug|Any CPU - {B08F8340-7FAF-4AB2-A9DA-BA5B14FE5FDE}.Release|iPhone.ActiveCfg = Release|Any CPU - {B08F8340-7FAF-4AB2-A9DA-BA5B14FE5FDE}.Release|iPhone.Build.0 = Release|Any CPU - {4F77CCCB-68DC-4CC7-A528-DB6FF48741D0}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator - {4F77CCCB-68DC-4CC7-A528-DB6FF48741D0}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator - {4F77CCCB-68DC-4CC7-A528-DB6FF48741D0}.Release|Any CPU.ActiveCfg = Release|iPhoneSimulator - {4F77CCCB-68DC-4CC7-A528-DB6FF48741D0}.Release|Any CPU.Build.0 = Release|iPhoneSimulator - {4F77CCCB-68DC-4CC7-A528-DB6FF48741D0}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator - {4F77CCCB-68DC-4CC7-A528-DB6FF48741D0}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator - {4F77CCCB-68DC-4CC7-A528-DB6FF48741D0}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator - {4F77CCCB-68DC-4CC7-A528-DB6FF48741D0}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator - {4F77CCCB-68DC-4CC7-A528-DB6FF48741D0}.Debug|iPhone.ActiveCfg = Debug|iPhone - {4F77CCCB-68DC-4CC7-A528-DB6FF48741D0}.Debug|iPhone.Build.0 = Debug|iPhone - {4F77CCCB-68DC-4CC7-A528-DB6FF48741D0}.Release|iPhone.ActiveCfg = Release|iPhone - {4F77CCCB-68DC-4CC7-A528-DB6FF48741D0}.Release|iPhone.Build.0 = Release|iPhone - {7ED4972A-D279-4E63-B4F5-3D15590D4AA1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7ED4972A-D279-4E63-B4F5-3D15590D4AA1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7ED4972A-D279-4E63-B4F5-3D15590D4AA1}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7ED4972A-D279-4E63-B4F5-3D15590D4AA1}.Release|Any CPU.Build.0 = Release|Any CPU - {7ED4972A-D279-4E63-B4F5-3D15590D4AA1}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {7ED4972A-D279-4E63-B4F5-3D15590D4AA1}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {7ED4972A-D279-4E63-B4F5-3D15590D4AA1}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {7ED4972A-D279-4E63-B4F5-3D15590D4AA1}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {7ED4972A-D279-4E63-B4F5-3D15590D4AA1}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {7ED4972A-D279-4E63-B4F5-3D15590D4AA1}.Debug|iPhone.Build.0 = Debug|Any CPU - {7ED4972A-D279-4E63-B4F5-3D15590D4AA1}.Release|iPhone.ActiveCfg = Release|Any CPU - {7ED4972A-D279-4E63-B4F5-3D15590D4AA1}.Release|iPhone.Build.0 = Release|Any CPU + {7471E318-A3D7-4C5B-ADAA-0F491EA3A05E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7471E318-A3D7-4C5B-ADAA-0F491EA3A05E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7471E318-A3D7-4C5B-ADAA-0F491EA3A05E}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {7471E318-A3D7-4C5B-ADAA-0F491EA3A05E}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {7471E318-A3D7-4C5B-ADAA-0F491EA3A05E}.Debug|iPhone.Build.0 = Debug|Any CPU + {7471E318-A3D7-4C5B-ADAA-0F491EA3A05E}.Debug|iPhone.Deploy.0 = Debug|Any CPU + {7471E318-A3D7-4C5B-ADAA-0F491EA3A05E}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {7471E318-A3D7-4C5B-ADAA-0F491EA3A05E}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {7471E318-A3D7-4C5B-ADAA-0F491EA3A05E}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU + {7471E318-A3D7-4C5B-ADAA-0F491EA3A05E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7471E318-A3D7-4C5B-ADAA-0F491EA3A05E}.Release|Any CPU.Build.0 = Release|Any CPU + {7471E318-A3D7-4C5B-ADAA-0F491EA3A05E}.Release|Any CPU.Deploy.0 = Release|Any CPU + {7471E318-A3D7-4C5B-ADAA-0F491EA3A05E}.Release|iPhone.ActiveCfg = Release|Any CPU + {7471E318-A3D7-4C5B-ADAA-0F491EA3A05E}.Release|iPhone.Build.0 = Release|Any CPU + {7471E318-A3D7-4C5B-ADAA-0F491EA3A05E}.Release|iPhone.Deploy.0 = Release|Any CPU + {7471E318-A3D7-4C5B-ADAA-0F491EA3A05E}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {7471E318-A3D7-4C5B-ADAA-0F491EA3A05E}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {7471E318-A3D7-4C5B-ADAA-0F491EA3A05E}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU + {F1D8255B-1170-437E-B342-D6AB3E79A3F3}.Debug|Any CPU.ActiveCfg = Debug|iPhone + {F1D8255B-1170-437E-B342-D6AB3E79A3F3}.Debug|Any CPU.Build.0 = Debug|iPhone + {F1D8255B-1170-437E-B342-D6AB3E79A3F3}.Debug|Any CPU.Deploy.0 = Debug|iPhone + {F1D8255B-1170-437E-B342-D6AB3E79A3F3}.Debug|iPhone.ActiveCfg = Debug|iPhone + {F1D8255B-1170-437E-B342-D6AB3E79A3F3}.Debug|iPhone.Build.0 = Debug|iPhone + {F1D8255B-1170-437E-B342-D6AB3E79A3F3}.Debug|iPhone.Deploy.0 = Debug|iPhone + {F1D8255B-1170-437E-B342-D6AB3E79A3F3}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator + {F1D8255B-1170-437E-B342-D6AB3E79A3F3}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator + {F1D8255B-1170-437E-B342-D6AB3E79A3F3}.Debug|iPhoneSimulator.Deploy.0 = Debug|iPhoneSimulator + {F1D8255B-1170-437E-B342-D6AB3E79A3F3}.Release|Any CPU.ActiveCfg = Release|iPhoneSimulator + {F1D8255B-1170-437E-B342-D6AB3E79A3F3}.Release|Any CPU.Build.0 = Release|iPhoneSimulator + {F1D8255B-1170-437E-B342-D6AB3E79A3F3}.Release|Any CPU.Deploy.0 = Release|iPhoneSimulator + {F1D8255B-1170-437E-B342-D6AB3E79A3F3}.Release|iPhone.ActiveCfg = Release|iPhone + {F1D8255B-1170-437E-B342-D6AB3E79A3F3}.Release|iPhone.Build.0 = Release|iPhone + {F1D8255B-1170-437E-B342-D6AB3E79A3F3}.Release|iPhone.Deploy.0 = Release|iPhone + {F1D8255B-1170-437E-B342-D6AB3E79A3F3}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator + {F1D8255B-1170-437E-B342-D6AB3E79A3F3}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator + {F1D8255B-1170-437E-B342-D6AB3E79A3F3}.Release|iPhoneSimulator.Deploy.0 = Release|iPhoneSimulator + {A6783E71-B94D-4DE0-86BE-EC6F74C80FEB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A6783E71-B94D-4DE0-86BE-EC6F74C80FEB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A6783E71-B94D-4DE0-86BE-EC6F74C80FEB}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {A6783E71-B94D-4DE0-86BE-EC6F74C80FEB}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {A6783E71-B94D-4DE0-86BE-EC6F74C80FEB}.Debug|iPhone.Build.0 = Debug|Any CPU + {A6783E71-B94D-4DE0-86BE-EC6F74C80FEB}.Debug|iPhone.Deploy.0 = Debug|Any CPU + {A6783E71-B94D-4DE0-86BE-EC6F74C80FEB}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {A6783E71-B94D-4DE0-86BE-EC6F74C80FEB}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {A6783E71-B94D-4DE0-86BE-EC6F74C80FEB}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU + {A6783E71-B94D-4DE0-86BE-EC6F74C80FEB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A6783E71-B94D-4DE0-86BE-EC6F74C80FEB}.Release|Any CPU.Build.0 = Release|Any CPU + {A6783E71-B94D-4DE0-86BE-EC6F74C80FEB}.Release|Any CPU.Deploy.0 = Release|Any CPU + {A6783E71-B94D-4DE0-86BE-EC6F74C80FEB}.Release|iPhone.ActiveCfg = Release|Any CPU + {A6783E71-B94D-4DE0-86BE-EC6F74C80FEB}.Release|iPhone.Build.0 = Release|Any CPU + {A6783E71-B94D-4DE0-86BE-EC6F74C80FEB}.Release|iPhone.Deploy.0 = Release|Any CPU + {A6783E71-B94D-4DE0-86BE-EC6F74C80FEB}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {A6783E71-B94D-4DE0-86BE-EC6F74C80FEB}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {A6783E71-B94D-4DE0-86BE-EC6F74C80FEB}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {CE885A8A-A7E6-4B1F-B67D-4F92FA75BBE7} + SolutionGuid = {01C4309C-DFAC-4B64-8F32-BFF99D469CC0} EndGlobalSection EndGlobal diff --git a/UndoAssessment/UndoAssessment.Android/Assets/AboutAssets.txt b/UndoAssessment/UndoAssessment.Android/Assets/AboutAssets.txt index 8760f7c..072563f 100644 --- a/UndoAssessment/UndoAssessment.Android/Assets/AboutAssets.txt +++ b/UndoAssessment/UndoAssessment.Android/Assets/AboutAssets.txt @@ -1,4 +1,4 @@ -Any raw assets you want to be deployed with your application can be placed in +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 your package and will be accessible using Android's @@ -17,4 +17,3 @@ public class ReadAsset : Activity Additionally, some Android functions will automatically load asset files: Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf"); - diff --git a/UndoAssessment/UndoAssessment.Android/MainActivity.cs b/UndoAssessment/UndoAssessment.Android/MainActivity.cs index ef6fa6e..172e801 100644 --- a/UndoAssessment/UndoAssessment.Android/MainActivity.cs +++ b/UndoAssessment/UndoAssessment.Android/MainActivity.cs @@ -25,4 +25,4 @@ public override void OnRequestPermissionsResult(int requestCode, string[] permis base.OnRequestPermissionsResult(requestCode, permissions, grantResults); } } -} +} \ No newline at end of file diff --git a/UndoAssessment/UndoAssessment.Android/Properties/AndroidManifest.xml b/UndoAssessment/UndoAssessment.Android/Properties/AndroidManifest.xml index 29e5082..c4ec87a 100644 --- a/UndoAssessment/UndoAssessment.Android/Properties/AndroidManifest.xml +++ b/UndoAssessment/UndoAssessment.Android/Properties/AndroidManifest.xml @@ -1,6 +1,6 @@ - - - - - - \ No newline at end of file + + + + + + diff --git a/UndoAssessment/UndoAssessment.Android/Properties/AssemblyInfo.cs b/UndoAssessment/UndoAssessment.Android/Properties/AssemblyInfo.cs index ee16a14..92e44ac 100644 --- a/UndoAssessment/UndoAssessment.Android/Properties/AssemblyInfo.cs +++ b/UndoAssessment/UndoAssessment.Android/Properties/AssemblyInfo.cs @@ -28,4 +28,3 @@ // 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/UndoAssessment/UndoAssessment.Android/Resources/AboutResources.txt b/UndoAssessment/UndoAssessment.Android/Resources/AboutResources.txt index 88b21f3..cb30f20 100644 --- a/UndoAssessment/UndoAssessment.Android/Resources/AboutResources.txt +++ b/UndoAssessment/UndoAssessment.Android/Resources/AboutResources.txt @@ -1,4 +1,4 @@ -Images, layout descriptions, binary blobs and string dictionaries can be included +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. @@ -48,4 +48,3 @@ public class Resource { 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/UndoAssessment/UndoAssessment.Android/Resources/Resource.designer.cs b/UndoAssessment/UndoAssessment.Android/Resources/Resource.designer.cs index ca95bb7..7e264ee 100644 --- a/UndoAssessment/UndoAssessment.Android/Resources/Resource.designer.cs +++ b/UndoAssessment/UndoAssessment.Android/Resources/Resource.designer.cs @@ -2,7 +2,6 @@ //------------------------------------------------------------------------------ // // 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. @@ -15,7 +14,7 @@ namespace UndoAssessment.Droid { - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "13.2.0.93")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "13.2.0.99")] public partial class Resource { diff --git a/UndoAssessment/UndoAssessment.Android/Resources/mipmap-anydpi-v26/icon.xml b/UndoAssessment/UndoAssessment.Android/Resources/mipmap-anydpi-v26/icon.xml index eb2bd3c..88d1d0a 100644 --- a/UndoAssessment/UndoAssessment.Android/Resources/mipmap-anydpi-v26/icon.xml +++ b/UndoAssessment/UndoAssessment.Android/Resources/mipmap-anydpi-v26/icon.xml @@ -1,5 +1,5 @@ - + - + \ No newline at end of file diff --git a/UndoAssessment/UndoAssessment.Android/Resources/mipmap-anydpi-v26/icon_round.xml b/UndoAssessment/UndoAssessment.Android/Resources/mipmap-anydpi-v26/icon_round.xml index eb2bd3c..88d1d0a 100644 --- a/UndoAssessment/UndoAssessment.Android/Resources/mipmap-anydpi-v26/icon_round.xml +++ b/UndoAssessment/UndoAssessment.Android/Resources/mipmap-anydpi-v26/icon_round.xml @@ -1,5 +1,5 @@ - + - + \ No newline at end of file diff --git a/UndoAssessment/UndoAssessment.Android/Resources/values/colors.xml b/UndoAssessment/UndoAssessment.Android/Resources/values/colors.xml index a858e62..d9f6e0b 100644 --- a/UndoAssessment/UndoAssessment.Android/Resources/values/colors.xml +++ b/UndoAssessment/UndoAssessment.Android/Resources/values/colors.xml @@ -1,8 +1,7 @@ - + #FFFFFF #3F51B5 #303F9F #FF4081 - diff --git a/UndoAssessment/UndoAssessment.Android/Resources/values/styles.xml b/UndoAssessment/UndoAssessment.Android/Resources/values/styles.xml index a6cdf31..4b9805f 100644 --- a/UndoAssessment/UndoAssessment.Android/Resources/values/styles.xml +++ b/UndoAssessment/UndoAssessment.Android/Resources/values/styles.xml @@ -1,4 +1,4 @@ - + - + \ No newline at end of file diff --git a/UndoAssessment/UndoAssessment.Android/UndoAssessment.Android.csproj b/UndoAssessment/UndoAssessment.Android/UndoAssessment.Android.csproj index 5c6316d..31d43d5 100644 --- a/UndoAssessment/UndoAssessment.Android/UndoAssessment.Android.csproj +++ b/UndoAssessment/UndoAssessment.Android/UndoAssessment.Android.csproj @@ -3,7 +3,7 @@ Debug AnyCPU - {B08F8340-7FAF-4AB2-A9DA-BA5B14FE5FDE} + {7471E318-A3D7-4C5B-ADAA-0F491EA3A05E} {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} {6968b3a4-1835-46a3-ac5c-1ae33b475983} Library @@ -16,6 +16,7 @@ Properties\AndroidManifest.xml Resources Assets + false v13.0 true true @@ -54,8 +55,8 @@ - - + + @@ -88,7 +89,7 @@ - {7ED4972A-D279-4E63-B4F5-3D15590D4AA1} + {67736D58-A34D-4AA9-8C1D-DA25B8909E81} UndoAssessment diff --git a/UndoAssessment/UndoAssessment.iOS/AppDelegate.cs b/UndoAssessment/UndoAssessment.iOS/AppDelegate.cs index 1c9af5a..69aa663 100644 --- a/UndoAssessment/UndoAssessment.iOS/AppDelegate.cs +++ b/UndoAssessment/UndoAssessment.iOS/AppDelegate.cs @@ -29,4 +29,3 @@ public override bool FinishedLaunching(UIApplication app, NSDictionary options) } } } - diff --git a/UndoAssessment/UndoAssessment.iOS/Assets.xcassets/AppIcon.appiconset/Contents.json b/UndoAssessment/UndoAssessment.iOS/Assets.xcassets/AppIcon.appiconset/Contents.json index fc9d330..98f4d03 100644 --- a/UndoAssessment/UndoAssessment.iOS/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/UndoAssessment/UndoAssessment.iOS/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,4 +1,4 @@ -{ +{ "images": [ { "scale": "2x", @@ -114,4 +114,4 @@ "version": 1, "author": "xcode" } -} +} \ No newline at end of file diff --git a/UndoAssessment/UndoAssessment.iOS/Info.plist b/UndoAssessment/UndoAssessment.iOS/Info.plist index 3dee8c8..6f49d71 100644 --- a/UndoAssessment/UndoAssessment.iOS/Info.plist +++ b/UndoAssessment/UndoAssessment.iOS/Info.plist @@ -25,7 +25,7 @@ CFBundleDisplayName UndoAssessment CFBundleIdentifier - com.undo.assessment.UndoAssessment + com.companyname.UndoAssessment CFBundleVersion 1.0 UILaunchStoryboardName diff --git a/UndoAssessment/UndoAssessment.iOS/Main.cs b/UndoAssessment/UndoAssessment.iOS/Main.cs index 7f19cb5..9a28b29 100644 --- a/UndoAssessment/UndoAssessment.iOS/Main.cs +++ b/UndoAssessment/UndoAssessment.iOS/Main.cs @@ -18,4 +18,3 @@ static void Main(string[] args) } } } - diff --git a/UndoAssessment/UndoAssessment.iOS/Properties/AssemblyInfo.cs b/UndoAssessment/UndoAssessment.iOS/Properties/AssemblyInfo.cs index fb65566..14c016c 100644 --- a/UndoAssessment/UndoAssessment.iOS/Properties/AssemblyInfo.cs +++ b/UndoAssessment/UndoAssessment.iOS/Properties/AssemblyInfo.cs @@ -34,4 +34,3 @@ // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")] - diff --git a/UndoAssessment/UndoAssessment.iOS/Resources/LaunchScreen.storyboard b/UndoAssessment/UndoAssessment.iOS/Resources/LaunchScreen.storyboard index 54c419f..00260f3 100644 --- a/UndoAssessment/UndoAssessment.iOS/Resources/LaunchScreen.storyboard +++ b/UndoAssessment/UndoAssessment.iOS/Resources/LaunchScreen.storyboard @@ -1,4 +1,4 @@ - + @@ -37,4 +37,3 @@ - diff --git a/UndoAssessment/UndoAssessment.iOS/UndoAssessment.iOS.csproj b/UndoAssessment/UndoAssessment.iOS/UndoAssessment.iOS.csproj index b77f609..6be0bfe 100644 --- a/UndoAssessment/UndoAssessment.iOS/UndoAssessment.iOS.csproj +++ b/UndoAssessment/UndoAssessment.iOS/UndoAssessment.iOS.csproj @@ -5,7 +5,7 @@ iPhoneSimulator 8.0.30703 2.0 - {4F77CCCB-68DC-4CC7-A528-DB6FF48741D0} + {F1D8255B-1170-437E-B342-D6AB3E79A3F3} {FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} {89a4fe7c-635d-49c9-8d8c-5cd363c0d68d} Exe @@ -132,13 +132,13 @@ - - + + - {7ED4972A-D279-4E63-B4F5-3D15590D4AA1} + {67736D58-A34D-4AA9-8C1D-DA25B8909E81} UndoAssessment diff --git a/UndoAssessment/UndoAssessment/App.xaml b/UndoAssessment/UndoAssessment/App.xaml index 2bba078..8d088cf 100644 --- a/UndoAssessment/UndoAssessment/App.xaml +++ b/UndoAssessment/UndoAssessment/App.xaml @@ -30,4 +30,3 @@ - diff --git a/UndoAssessment/UndoAssessment/App.xaml.cs b/UndoAssessment/UndoAssessment/App.xaml.cs index 254aae8..1ed35ba 100644 --- a/UndoAssessment/UndoAssessment/App.xaml.cs +++ b/UndoAssessment/UndoAssessment/App.xaml.cs @@ -1,15 +1,15 @@ using System; -using Xamarin.Forms; -using Xamarin.Forms.Xaml; using UndoAssessment.Services; using UndoAssessment.Views; +using Xamarin.Forms; +using Xamarin.Forms.Xaml; namespace UndoAssessment { public partial class App : Application { - public App () + public App() { InitializeComponent(); @@ -17,17 +17,16 @@ public App () MainPage = new AppShell(); } - protected override void OnStart () + protected override void OnStart() { } - protected override void OnSleep () + protected override void OnSleep() { } - protected override void OnResume () + protected override void OnResume() { } } } - diff --git a/UndoAssessment/UndoAssessment/AppShell.xaml b/UndoAssessment/UndoAssessment/AppShell.xaml index 9b3603b..048bc05 100644 --- a/UndoAssessment/UndoAssessment/AppShell.xaml +++ b/UndoAssessment/UndoAssessment/AppShell.xaml @@ -1,4 +1,4 @@ - + + + + + - - - - + + + + + + + + + + + + + + + + + diff --git a/UndoAssessment/UndoAssessment/AppShell.xaml.cs b/UndoAssessment/UndoAssessment/AppShell.xaml.cs index abbe3ed..ef75d2e 100644 --- a/UndoAssessment/UndoAssessment/AppShell.xaml.cs +++ b/UndoAssessment/UndoAssessment/AppShell.xaml.cs @@ -13,8 +13,14 @@ public AppShell() InitializeComponent(); Routing.RegisterRoute(nameof(ItemDetailPage), typeof(ItemDetailPage)); Routing.RegisterRoute(nameof(NewItemPage), typeof(NewItemPage)); + Routing.RegisterRoute(nameof(AssesmentPage), typeof(AssesmentPage)); + Routing.RegisterRoute(nameof(AssesmentResultPage), typeof(AssesmentResultPage)); + Routing.RegisterRoute(nameof(NewUserPage), typeof(NewUserPage)); } + private async void OnMenuItemClicked(object sender, EventArgs e) + { + await Shell.Current.GoToAsync("//LoginPage"); + } } } - diff --git a/UndoAssessment/UndoAssessment/AssemblyInfo.cs b/UndoAssessment/UndoAssessment/AssemblyInfo.cs index 8d603ed..c859952 100644 --- a/UndoAssessment/UndoAssessment/AssemblyInfo.cs +++ b/UndoAssessment/UndoAssessment/AssemblyInfo.cs @@ -1,3 +1,3 @@ -using Xamarin.Forms.Xaml; +using Xamarin.Forms.Xaml; -[assembly: XamlCompilation(XamlCompilationOptions.Compile)] +[assembly: XamlCompilation(XamlCompilationOptions.Compile)] \ No newline at end of file diff --git a/UndoAssessment/UndoAssessment/GettingStarted.txt b/UndoAssessment/UndoAssessment/GettingStarted.txt index 39e3d59..411f64b 100644 --- a/UndoAssessment/UndoAssessment/GettingStarted.txt +++ b/UndoAssessment/UndoAssessment/GettingStarted.txt @@ -1,4 +1,4 @@ -Welcome to Xamarin.Forms! Here are some tips to get started building your app. +Welcome to Xamarin.Forms! Here are some tips to get started building your app. Building Your App UI -------------------- @@ -32,4 +32,3 @@ This template uses Shell, an app container that reduces the complexity of your a - An integrated search handler. Open AppShell.xaml to begin exploring. To learn more about Shell visit: https://docs.microsoft.com/xamarin/xamarin-forms/app-fundamentals/shell/introduction - diff --git a/UndoAssessment/UndoAssessment/Image/check.png b/UndoAssessment/UndoAssessment/Image/check.png new file mode 100644 index 0000000000000000000000000000000000000000..eb97f92c7f8da452ef4ed4660d4c7699007a9340 GIT binary patch literal 14092 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 C@)_;` literal 0 HcmV?d00001 diff --git a/UndoAssessment/UndoAssessment/Image/cross.jpeg b/UndoAssessment/UndoAssessment/Image/cross.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..c3668c6c29193bb9f765094798dac6e5a11b3363 GIT binary patch literal 13593 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 F{|mtAM{EE9 literal 0 HcmV?d00001 diff --git a/UndoAssessment/UndoAssessment/Models/GetResult.cs b/UndoAssessment/UndoAssessment/Models/GetResult.cs new file mode 100644 index 0000000..37d63d5 --- /dev/null +++ b/UndoAssessment/UndoAssessment/Models/GetResult.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace UndoAssessment.Models +{ + public class GetResult + { + public string errorCode { get; set; } + public string message { get; set; } + public string date { get; set; } + } +} diff --git a/UndoAssessment/UndoAssessment/Models/Item.cs b/UndoAssessment/UndoAssessment/Models/Item.cs index e0c317a..2ea29e3 100644 --- a/UndoAssessment/UndoAssessment/Models/Item.cs +++ b/UndoAssessment/UndoAssessment/Models/Item.cs @@ -8,4 +8,4 @@ public class Item public string Text { get; set; } public string Description { get; set; } } -} +} \ No newline at end of file diff --git a/UndoAssessment/UndoAssessment/Services/IDataStore.cs b/UndoAssessment/UndoAssessment/Services/IDataStore.cs index ca75e0e..70df84f 100644 --- a/UndoAssessment/UndoAssessment/Services/IDataStore.cs +++ b/UndoAssessment/UndoAssessment/Services/IDataStore.cs @@ -13,4 +13,3 @@ public interface IDataStore Task> GetItemsAsync(bool forceRefresh = false); } } - diff --git a/UndoAssessment/UndoAssessment/Services/MockDataStore.cs b/UndoAssessment/UndoAssessment/Services/MockDataStore.cs index f4a318a..6eff564 100644 --- a/UndoAssessment/UndoAssessment/Services/MockDataStore.cs +++ b/UndoAssessment/UndoAssessment/Services/MockDataStore.cs @@ -57,4 +57,4 @@ public async Task> GetItemsAsync(bool forceRefresh = false) return await Task.FromResult(items); } } -} +} \ No newline at end of file diff --git a/UndoAssessment/UndoAssessment/UndoAssessment.csproj b/UndoAssessment/UndoAssessment/UndoAssessment.csproj index 95a3587..e86078b 100644 --- a/UndoAssessment/UndoAssessment/UndoAssessment.csproj +++ b/UndoAssessment/UndoAssessment/UndoAssessment.csproj @@ -3,10 +3,35 @@ netstandard2.0 true + true - - + + + + + + + + + + + + + + + + + + + MSBuild:UpdateDesignTimeXaml + + + MSBuild:UpdateDesignTimeXaml + + + MSBuild:UpdateDesignTimeXaml + \ No newline at end of file diff --git a/UndoAssessment/UndoAssessment/ViewModels/AboutViewModel.cs b/UndoAssessment/UndoAssessment/ViewModels/AboutViewModel.cs index bc178e5..63906c9 100644 --- a/UndoAssessment/UndoAssessment/ViewModels/AboutViewModel.cs +++ b/UndoAssessment/UndoAssessment/ViewModels/AboutViewModel.cs @@ -15,4 +15,4 @@ public AboutViewModel() public ICommand OpenWebCommand { get; } } -} +} \ No newline at end of file diff --git a/UndoAssessment/UndoAssessment/ViewModels/AssesmentResultViewModel.cs b/UndoAssessment/UndoAssessment/ViewModels/AssesmentResultViewModel.cs new file mode 100644 index 0000000..c6d6e68 --- /dev/null +++ b/UndoAssessment/UndoAssessment/ViewModels/AssesmentResultViewModel.cs @@ -0,0 +1,40 @@ +using System; +using System.Collections.Generic; +using System.Text; +using UndoAssessment.ViewModels; +using Xamarin.Forms; + +namespace Assesment1.ViewModels +{ + [QueryProperty(nameof(User), nameof(User))] + public class AssesmentResultViewModel: BaseViewModel + { + public Command BackToComm { get; } + public AssesmentResultViewModel() + { + Title = "Assesment Result"; + + BackToComm = new Command(BackToCmd); + } + + private async void BackToCmd() + { + await Shell.Current.GoToAsync("//AssesmentPage"); + } + + public string User + { + set + { + UserName = value; + } + } + + private string userName; + public string UserName + { + get => userName; + set => SetProperty(ref userName, value); + } + } +} diff --git a/UndoAssessment/UndoAssessment/ViewModels/AssesmentViewModel.cs b/UndoAssessment/UndoAssessment/ViewModels/AssesmentViewModel.cs new file mode 100644 index 0000000..621798b --- /dev/null +++ b/UndoAssessment/UndoAssessment/ViewModels/AssesmentViewModel.cs @@ -0,0 +1,86 @@ +using Newtonsoft.Json; +using System; +using System.Net.Http; +using UndoAssessment; +using UndoAssessment.Models; +using UndoAssessment.ViewModels; +using UndoAssessment.Views; +using Xamarin.Forms; + +namespace Assesment1.ViewModels +{ + public class AssesmentViewModel: BaseViewModel + { + public Command SuccessComm { get; } + public Command FailComm { get; } + public Command AddCommand { get; } + HttpClient client; + public AssesmentViewModel() + { + Title = "Assesment"; + SuccessComm = new Command(SuccessCmd); + FailComm = new Command(FailCmd); + AddCommand = new Command(OnAdd); + } + public async void SuccessCmd() + { + client = new HttpClient(); + Uri uri = new Uri(string.Format("https://malkarakundostagingpublicapi.azurewebsites.net/success")); + + try + { + HttpResponseMessage response = await client.GetAsync(uri); + if (response.IsSuccessStatusCode) + { + string responseContent = response.Content.ReadAsStringAsync().Result; + var result = JsonConvert.DeserializeObject(responseContent); + + await App.Current.MainPage.DisplayAlert("Alert", "Result: " + result.message + "\ndate: " + result.date, "OK"); + } + else + { + string responseContent = response.Content.ReadAsStringAsync().Result; + await App.Current.MainPage.DisplayAlert("Alert", responseContent, "OK"); + } + } + catch(Exception ex) + { + await App.Current.MainPage.DisplayAlert("Alert", ex.Message, "OK"); + } + } + + public async void FailCmd() + { + client = new HttpClient(); + Uri uri = new Uri(string.Format("https://malkarakundostagingpublicapi.azurewebsites.net/fail")); + + try + { + HttpResponseMessage response = await client.GetAsync(uri); + if (response.IsSuccessStatusCode) + { + string responseContent = response.Content.ReadAsStringAsync().Result; + var result = JsonConvert.DeserializeObject(responseContent); + + await App.Current.MainPage.DisplayAlert("Alert", "Result: " + result.message + "\ndate: " + result.date, "OK"); + } + else + { + string responseContent = response.Content.ReadAsStringAsync().Result; + var result = JsonConvert.DeserializeObject(responseContent); + + await App.Current.MainPage.DisplayAlert("Alert", "Error Code: " + result.errorCode + "\nResult: " + result.message + "\ndate: " + result.date, "OK"); + } + } + catch (Exception ex) + { + await App.Current.MainPage.DisplayAlert("Alert", ex.Message, "OK"); + } + } + + private async void OnAdd() + { + await Shell.Current.GoToAsync(nameof(NewUserPage)); + } + } +} diff --git a/UndoAssessment/UndoAssessment/ViewModels/BaseViewModel.cs b/UndoAssessment/UndoAssessment/ViewModels/BaseViewModel.cs index e4ee974..76b2098 100644 --- a/UndoAssessment/UndoAssessment/ViewModels/BaseViewModel.cs +++ b/UndoAssessment/UndoAssessment/ViewModels/BaseViewModel.cs @@ -2,11 +2,9 @@ using System.Collections.Generic; using System.ComponentModel; using System.Runtime.CompilerServices; - -using Xamarin.Forms; - using UndoAssessment.Models; using UndoAssessment.Services; +using Xamarin.Forms; namespace UndoAssessment.ViewModels { @@ -29,7 +27,7 @@ public string Title } protected bool SetProperty(ref T backingStore, T value, - [CallerMemberName]string propertyName = "", + [CallerMemberName] string propertyName = "", Action onChanged = null) { if (EqualityComparer.Default.Equals(backingStore, value)) @@ -54,4 +52,3 @@ protected void OnPropertyChanged([CallerMemberName] string propertyName = "") #endregion } } - diff --git a/UndoAssessment/UndoAssessment/ViewModels/ItemDetailViewModel.cs b/UndoAssessment/UndoAssessment/ViewModels/ItemDetailViewModel.cs index 46f210d..f9373bd 100644 --- a/UndoAssessment/UndoAssessment/ViewModels/ItemDetailViewModel.cs +++ b/UndoAssessment/UndoAssessment/ViewModels/ItemDetailViewModel.cs @@ -37,7 +37,7 @@ public string ItemId itemId = value; LoadItemId(value); } - } + } public async void LoadItemId(string itemId) { @@ -55,4 +55,3 @@ public async void LoadItemId(string itemId) } } } - diff --git a/UndoAssessment/UndoAssessment/ViewModels/ItemsViewModel.cs b/UndoAssessment/UndoAssessment/ViewModels/ItemsViewModel.cs index 73165fc..c88f7f9 100644 --- a/UndoAssessment/UndoAssessment/ViewModels/ItemsViewModel.cs +++ b/UndoAssessment/UndoAssessment/ViewModels/ItemsViewModel.cs @@ -2,11 +2,9 @@ using System.Collections.ObjectModel; using System.Diagnostics; using System.Threading.Tasks; - -using Xamarin.Forms; - using UndoAssessment.Models; using UndoAssessment.Views; +using Xamarin.Forms; namespace UndoAssessment.ViewModels { @@ -16,7 +14,7 @@ public class ItemsViewModel : BaseViewModel public ObservableCollection Items { get; } public Command LoadItemsCommand { get; } - public Command AddItemCommand { get; } + public Command AddItemCommand { get; } public Command ItemTapped { get; } public ItemsViewModel() @@ -83,4 +81,4 @@ async void OnItemSelected(Item item) await Shell.Current.GoToAsync($"{nameof(ItemDetailPage)}?{nameof(ItemDetailViewModel.ItemId)}={item.Id}"); } } -} +} \ No newline at end of file diff --git a/UndoAssessment/UndoAssessment/ViewModels/LoginViewModel.cs b/UndoAssessment/UndoAssessment/ViewModels/LoginViewModel.cs index 0497303..b8f1a0d 100644 --- a/UndoAssessment/UndoAssessment/ViewModels/LoginViewModel.cs +++ b/UndoAssessment/UndoAssessment/ViewModels/LoginViewModel.cs @@ -1,7 +1,7 @@ -using UndoAssessment.Views; -using System; +using System; using System.Collections.Generic; using System.Text; +using UndoAssessment.Views; using Xamarin.Forms; namespace UndoAssessment.ViewModels @@ -22,4 +22,3 @@ private async void OnLoginClicked(object obj) } } } - diff --git a/UndoAssessment/UndoAssessment/ViewModels/NewItemViewModel.cs b/UndoAssessment/UndoAssessment/ViewModels/NewItemViewModel.cs index 2365c77..b07a252 100644 --- a/UndoAssessment/UndoAssessment/ViewModels/NewItemViewModel.cs +++ b/UndoAssessment/UndoAssessment/ViewModels/NewItemViewModel.cs @@ -16,7 +16,7 @@ public NewItemViewModel() { SaveCommand = new Command(OnSave, ValidateSave); CancelCommand = new Command(OnCancel); - this.PropertyChanged += + this.PropertyChanged += (_, __) => SaveCommand.ChangeCanExecute(); } @@ -55,7 +55,7 @@ private async void OnSave() Text = Text, Description = Description }; - + await DataStore.AddItemAsync(newItem); // This will pop the current page off the navigation stack @@ -63,4 +63,3 @@ private async void OnSave() } } } - diff --git a/UndoAssessment/UndoAssessment/ViewModels/NewUserViewModel.cs b/UndoAssessment/UndoAssessment/ViewModels/NewUserViewModel.cs new file mode 100644 index 0000000..53d95c5 --- /dev/null +++ b/UndoAssessment/UndoAssessment/ViewModels/NewUserViewModel.cs @@ -0,0 +1,56 @@ +using System; +using UndoAssessment; +using UndoAssessment.ViewModels; +using UndoAssessment.Views; +using Xamarin.Forms; + +namespace Assesment1.ViewModels +{ + public class NewUserViewModel : BaseViewModel + { + public Command SubmitCommand { get; } + public Command CancelCommand { get; } + public NewUserViewModel() + { + Title = "New User"; + SubmitCommand = new Command(SubmitCmd); + CancelCommand = new Command(CancelCmd); + } + + private bool ValidateSave() + { + return !String.IsNullOrWhiteSpace(UserName) + && !String.IsNullOrWhiteSpace(UserAge); + } + + private async void SubmitCmd() + { + if (ValidateSave() == false) + { + await App.Current.MainPage.DisplayAlert("Alert", "Pelase fill all required field", "OK"); + return; + } + + await Shell.Current.GoToAsync($"{nameof(AssesmentResultPage)}?{nameof(AssesmentResultViewModel.User)}={UserName + " - " + UserAge }"); + } + + private async void CancelCmd() + { + await Shell.Current.GoToAsync("//AssesmentPage"); + } + + private string userName; + public string UserName + { + get => userName; + set => SetProperty(ref userName, value); + } + + private string userAge; + public string UserAge + { + get => userAge; + set => SetProperty(ref userAge, value); + } + } +} diff --git a/UndoAssessment/UndoAssessment/Views/AboutPage.xaml b/UndoAssessment/UndoAssessment/Views/AboutPage.xaml index df98269..f951c71 100644 --- a/UndoAssessment/UndoAssessment/Views/AboutPage.xaml +++ b/UndoAssessment/UndoAssessment/Views/AboutPage.xaml @@ -50,4 +50,3 @@ - diff --git a/UndoAssessment/UndoAssessment/Views/AboutPage.xaml.cs b/UndoAssessment/UndoAssessment/Views/AboutPage.xaml.cs index 4a425c8..ee6f5d0 100644 --- a/UndoAssessment/UndoAssessment/Views/AboutPage.xaml.cs +++ b/UndoAssessment/UndoAssessment/Views/AboutPage.xaml.cs @@ -12,4 +12,4 @@ public AboutPage() InitializeComponent(); } } -} +} \ No newline at end of file diff --git a/UndoAssessment/UndoAssessment/Views/AssesmentPage.xaml b/UndoAssessment/UndoAssessment/Views/AssesmentPage.xaml new file mode 100644 index 0000000..d561c9e --- /dev/null +++ b/UndoAssessment/UndoAssessment/Views/AssesmentPage.xaml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/UndoAssessment/UndoAssessment/Views/AssesmentPage.xaml.cs b/UndoAssessment/UndoAssessment/Views/AssesmentPage.xaml.cs new file mode 100644 index 0000000..eb7211f --- /dev/null +++ b/UndoAssessment/UndoAssessment/Views/AssesmentPage.xaml.cs @@ -0,0 +1,37 @@ +using Assesment1.ViewModels; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +using Xamarin.Forms; +using Xamarin.Forms.Xaml; + +namespace UndoAssessment.Views +{ + [XamlCompilation(XamlCompilationOptions.Compile)] + public partial class AssesmentPage : ContentPage + { + private AssesmentViewModel _assesmentViewModel; + public AssesmentPage() + { + InitializeComponent(); + _assesmentViewModel = new AssesmentViewModel(); + BindingContext = _assesmentViewModel; + + menuItem1.Source = ImageSource.FromResource("UndoAssessment.Image.check.png"); + menuItem2.Source = ImageSource.FromResource("UndoAssessment.Image.cross.jpeg"); + } + + public void GoSuccess(object sender, EventArgs args) + { + _assesmentViewModel.SuccessCmd(); + } + + public void GoFail(object sender, EventArgs args) + { + _assesmentViewModel.FailCmd(); + } + } +} \ No newline at end of file diff --git a/UndoAssessment/UndoAssessment/Views/AssesmentResultPage.xaml b/UndoAssessment/UndoAssessment/Views/AssesmentResultPage.xaml new file mode 100644 index 0000000..395b279 --- /dev/null +++ b/UndoAssessment/UndoAssessment/Views/AssesmentResultPage.xaml @@ -0,0 +1,18 @@ + + + + + + +