From de95d78a23e60d52908f860bfe1750346fa4ece9 Mon Sep 17 00:00:00 2001 From: Andrey Shabarshov Date: Thu, 16 Dec 2021 17:19:25 +0000 Subject: [PATCH] Unnessary files removed. Login and Register pages created. RegistrationData added. --- QRBee.Core/ClientCardData.cs | 18 ++-- QRBee.Core/Data/ClientToMerchantResponse.cs | 18 ++-- QRBee.Core/Data/MerchantToClientRequest.cs | 18 ++-- QRBee.Core/Data/PaymentRequest.cs | 10 +-- QRBee.Core/Data/PaymentResponse.cs | 12 +-- QRBee.Core/QRBee.Core.csproj | 4 +- QRBee.Core/RegistrationData.cs | 31 +++++++ QRBee/QRBee/AppShell.xaml | 12 ++- QRBee/QRBee/AppShell.xaml.cs | 7 +- QRBee/QRBee/QRBee.csproj | 13 +++ QRBee/QRBee/ViewModels/AboutViewModel.cs | 18 ---- QRBee/QRBee/ViewModels/BaseViewModel.cs | 2 +- QRBee/QRBee/ViewModels/ClientPageViewModel.cs | 12 +++ QRBee/QRBee/ViewModels/ItemDetailViewModel.cs | 57 ------------- QRBee/QRBee/ViewModels/ItemsViewModel.cs | 84 ------------------- QRBee/QRBee/ViewModels/LoginViewModel.cs | 20 ++++- .../QRBee/ViewModels/MerchantPageViewModel.cs | 18 ++-- QRBee/QRBee/ViewModels/NewItemViewModel.cs | 65 -------------- QRBee/QRBee/ViewModels/RegisterViewModel.cs | 74 ++++++++++++++++ QRBee/QRBee/Views/AboutPage.xaml | 52 ------------ QRBee/QRBee/Views/AboutPage.xaml.cs | 15 ---- QRBee/QRBee/Views/ClientPage.xaml | 7 +- QRBee/QRBee/Views/ClientPage.xaml.cs | 8 +- QRBee/QRBee/Views/ItemDetailPage.xaml | 14 ---- QRBee/QRBee/Views/ItemDetailPage.xaml.cs | 15 ---- QRBee/QRBee/Views/ItemsPage.xaml | 44 ---------- QRBee/QRBee/Views/ItemsPage.xaml.cs | 32 ------- QRBee/QRBee/Views/LoginPage.xaml | 12 +++ QRBee/QRBee/Views/MerchantPage.xaml | 6 +- QRBee/QRBee/Views/MerchantPage.xaml.cs | 5 +- QRBee/QRBee/Views/NewItemPage.xaml | 22 ----- QRBee/QRBee/Views/NewItemPage.xaml.cs | 21 ----- QRBee/QRBee/Views/RegisterPage.xaml | 54 ++++++++++++ QRBee/QRBee/Views/RegisterPage.xaml.cs | 21 +++++ 34 files changed, 288 insertions(+), 533 deletions(-) create mode 100644 QRBee.Core/RegistrationData.cs delete mode 100644 QRBee/QRBee/ViewModels/AboutViewModel.cs create mode 100644 QRBee/QRBee/ViewModels/ClientPageViewModel.cs delete mode 100644 QRBee/QRBee/ViewModels/ItemDetailViewModel.cs delete mode 100644 QRBee/QRBee/ViewModels/ItemsViewModel.cs delete mode 100644 QRBee/QRBee/ViewModels/NewItemViewModel.cs create mode 100644 QRBee/QRBee/ViewModels/RegisterViewModel.cs delete mode 100644 QRBee/QRBee/Views/AboutPage.xaml delete mode 100644 QRBee/QRBee/Views/AboutPage.xaml.cs delete mode 100644 QRBee/QRBee/Views/ItemDetailPage.xaml delete mode 100644 QRBee/QRBee/Views/ItemDetailPage.xaml.cs delete mode 100644 QRBee/QRBee/Views/ItemsPage.xaml delete mode 100644 QRBee/QRBee/Views/ItemsPage.xaml.cs delete mode 100644 QRBee/QRBee/Views/NewItemPage.xaml delete mode 100644 QRBee/QRBee/Views/NewItemPage.xaml.cs create mode 100644 QRBee/QRBee/Views/RegisterPage.xaml create mode 100644 QRBee/QRBee/Views/RegisterPage.xaml.cs diff --git a/QRBee.Core/ClientCardData.cs b/QRBee.Core/ClientCardData.cs index f5c180e..28f7c06 100644 --- a/QRBee.Core/ClientCardData.cs +++ b/QRBee.Core/ClientCardData.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace QRBee.Core +namespace QRBee.Core { public class ClientCardData { @@ -12,16 +6,16 @@ namespace QRBee.Core public string CardNumber { get; - init; + set; } public string ExpirationDateMMYY { get; - init; + set; } - public string? ValidFrom + public string ValidFrom { get; set; @@ -30,13 +24,13 @@ namespace QRBee.Core public string CardHolderName { get; - init; + set; } public string CVC { get; - init; + set; } public int? IssueNo diff --git a/QRBee.Core/Data/ClientToMerchantResponse.cs b/QRBee.Core/Data/ClientToMerchantResponse.cs index 64e762b..94c7b1a 100644 --- a/QRBee.Core/Data/ClientToMerchantResponse.cs +++ b/QRBee.Core/Data/ClientToMerchantResponse.cs @@ -1,32 +1,26 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace QRBee.Core.Data +namespace QRBee.Core.Data { public record ClientToMerchantResponse { public MerchantToClientRequest Request { get; - init; + set; } public string ClientId { get; - init; + set; } public DateTime TimeStampUTC { get; - init; + set; } - public string? ClientSignature + public string ClientSignature { get; set; @@ -35,7 +29,7 @@ namespace QRBee.Core.Data public string EncryptedClientCardData { get; - init; + set; } public string AsString() => $"{Request.AsString()}|{ClientId}|{TimeStampUTC:O}"; diff --git a/QRBee.Core/Data/MerchantToClientRequest.cs b/QRBee.Core/Data/MerchantToClientRequest.cs index 8176107..3b1a134 100644 --- a/QRBee.Core/Data/MerchantToClientRequest.cs +++ b/QRBee.Core/Data/MerchantToClientRequest.cs @@ -1,38 +1,32 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace QRBee.Core.Data +namespace QRBee.Core.Data { public record MerchantToClientRequest { public string TransactionId { get; - init; + set; } public string Name { get; - init; + set; } public decimal Amount { get; - init; + set; } public DateTime TimeStampUTC { get; - init; + set; } - public string? MerchantSignature + public string MerchantSignature { get; set; diff --git a/QRBee.Core/Data/PaymentRequest.cs b/QRBee.Core/Data/PaymentRequest.cs index 10a5f40..76b8dad 100644 --- a/QRBee.Core/Data/PaymentRequest.cs +++ b/QRBee.Core/Data/PaymentRequest.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace QRBee.Core.Data +namespace QRBee.Core.Data { public record PaymentRequest { @@ -12,7 +6,7 @@ namespace QRBee.Core.Data public ClientToMerchantResponse Request { get; - init; + set; } public string AsString() => Request.AsString(); diff --git a/QRBee.Core/Data/PaymentResponse.cs b/QRBee.Core/Data/PaymentResponse.cs index 1f53944..0465c95 100644 --- a/QRBee.Core/Data/PaymentResponse.cs +++ b/QRBee.Core/Data/PaymentResponse.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace QRBee.Core.Data +namespace QRBee.Core.Data { public record PaymentResponse { @@ -12,13 +6,13 @@ namespace QRBee.Core.Data public string ServerTransactionId { get; - init; + set; } public PaymentRequest PaymentRequest { get; - init; + set; } public string AsString() => $"{ServerTransactionId}|{PaymentRequest.AsString()}"; diff --git a/QRBee.Core/QRBee.Core.csproj b/QRBee.Core/QRBee.Core.csproj index 132c02c..a07f3e8 100644 --- a/QRBee.Core/QRBee.Core.csproj +++ b/QRBee.Core/QRBee.Core.csproj @@ -1,9 +1,9 @@ - net6.0 + netstandard2.0 enable - enable + latest diff --git a/QRBee.Core/RegistrationData.cs b/QRBee.Core/RegistrationData.cs new file mode 100644 index 0000000..b241c58 --- /dev/null +++ b/QRBee.Core/RegistrationData.cs @@ -0,0 +1,31 @@ +namespace QRBee.Core +{ + internal class RegistrationData + { + public string Name + { + get; + set; + } + + public string Email + { + get; + set; + } + + public string DateOfBirth + { + get; + set; + } + + public string CertificateRequest + { + get; + set; + } + + + } +} diff --git a/QRBee/QRBee/AppShell.xaml b/QRBee/QRBee/AppShell.xaml index 34dbc4a..bfcae1c 100644 --- a/QRBee/QRBee/AppShell.xaml +++ b/QRBee/QRBee/AppShell.xaml @@ -1,4 +1,4 @@ - + - + - + + + + + - + \ No newline at end of file diff --git a/QRBee/QRBee/AppShell.xaml.cs b/QRBee/QRBee/AppShell.xaml.cs index dc589cb..688cf57 100644 --- a/QRBee/QRBee/AppShell.xaml.cs +++ b/QRBee/QRBee/AppShell.xaml.cs @@ -10,10 +10,11 @@ namespace QRBee { public AppShell() { + InitializeComponent(); - Routing.RegisterRoute(nameof(ItemDetailPage), typeof(ItemDetailPage)); - Routing.RegisterRoute(nameof(NewItemPage), typeof(NewItemPage)); + Routing.RegisterRoute(nameof(LoginPage),typeof(LoginPage)); + Routing.RegisterRoute(nameof(RegisterPage), typeof(RegisterPage)); } } -} +} \ No newline at end of file diff --git a/QRBee/QRBee/QRBee.csproj b/QRBee/QRBee/QRBee.csproj index 2ecd9d8..07a7eb2 100644 --- a/QRBee/QRBee/QRBee.csproj +++ b/QRBee/QRBee/QRBee.csproj @@ -12,6 +12,10 @@ + + + + ClientPage.xaml @@ -22,6 +26,12 @@ + + MSBuild:UpdateDesignTimeXaml + + + MSBuild:UpdateDesignTimeXaml + MSBuild:UpdateDesignTimeXaml @@ -31,5 +41,8 @@ MSBuild:UpdateDesignTimeXaml + + MSBuild:UpdateDesignTimeXaml + \ No newline at end of file diff --git a/QRBee/QRBee/ViewModels/AboutViewModel.cs b/QRBee/QRBee/ViewModels/AboutViewModel.cs deleted file mode 100644 index 76916a9..0000000 --- a/QRBee/QRBee/ViewModels/AboutViewModel.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System; -using System.Windows.Input; -using Xamarin.Essentials; -using Xamarin.Forms; - -namespace QRBee.ViewModels -{ - public class AboutViewModel : BaseViewModel - { - public AboutViewModel() - { - Title = "About"; - OpenWebCommand = new Command(async () => await Browser.OpenAsync("https://aka.ms/xamarin-quickstart")); - } - - public ICommand OpenWebCommand { get; } - } -} \ No newline at end of file diff --git a/QRBee/QRBee/ViewModels/BaseViewModel.cs b/QRBee/QRBee/ViewModels/BaseViewModel.cs index d5c1afe..ffb4801 100644 --- a/QRBee/QRBee/ViewModels/BaseViewModel.cs +++ b/QRBee/QRBee/ViewModels/BaseViewModel.cs @@ -51,4 +51,4 @@ namespace QRBee.ViewModels } #endregion } -} +} \ No newline at end of file diff --git a/QRBee/QRBee/ViewModels/ClientPageViewModel.cs b/QRBee/QRBee/ViewModels/ClientPageViewModel.cs new file mode 100644 index 0000000..57062f7 --- /dev/null +++ b/QRBee/QRBee/ViewModels/ClientPageViewModel.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace QRBee.ViewModels +{ + + + internal class ClientPageViewModel + { + } +} diff --git a/QRBee/QRBee/ViewModels/ItemDetailViewModel.cs b/QRBee/QRBee/ViewModels/ItemDetailViewModel.cs deleted file mode 100644 index d1cae3a..0000000 --- a/QRBee/QRBee/ViewModels/ItemDetailViewModel.cs +++ /dev/null @@ -1,57 +0,0 @@ -using QRBee.Models; -using System; -using System.Diagnostics; -using System.Threading.Tasks; -using Xamarin.Forms; - -namespace QRBee.ViewModels -{ - [QueryProperty(nameof(ItemId), nameof(ItemId))] - public class ItemDetailViewModel : BaseViewModel - { - private string itemId; - private string text; - private string description; - public string Id { get; set; } - - public string Text - { - get => text; - set => SetProperty(ref text, value); - } - - public string Description - { - get => description; - set => SetProperty(ref description, value); - } - - public string ItemId - { - get - { - return itemId; - } - set - { - itemId = value; - LoadItemId(value); - } - } - - public async void LoadItemId(string itemId) - { - try - { - var item = await DataStore.GetItemAsync(itemId); - Id = item.Id; - Text = item.Text; - Description = item.Description; - } - catch (Exception) - { - Debug.WriteLine("Failed to Load Item"); - } - } - } -} diff --git a/QRBee/QRBee/ViewModels/ItemsViewModel.cs b/QRBee/QRBee/ViewModels/ItemsViewModel.cs deleted file mode 100644 index 462b4f0..0000000 --- a/QRBee/QRBee/ViewModels/ItemsViewModel.cs +++ /dev/null @@ -1,84 +0,0 @@ -using QRBee.Models; -using QRBee.Views; -using System; -using System.Collections.ObjectModel; -using System.Diagnostics; -using System.Threading.Tasks; -using Xamarin.Forms; - -namespace QRBee.ViewModels -{ - public class ItemsViewModel : BaseViewModel - { - private Item _selectedItem; - - public ObservableCollection Items { get; } - public Command LoadItemsCommand { get; } - public Command AddItemCommand { get; } - public Command ItemTapped { get; } - - public ItemsViewModel() - { - Title = "Browse"; - Items = new ObservableCollection(); - LoadItemsCommand = new Command(async () => await ExecuteLoadItemsCommand()); - - ItemTapped = new Command(OnItemSelected); - - AddItemCommand = new Command(OnAddItem); - } - - async Task ExecuteLoadItemsCommand() - { - IsBusy = true; - - try - { - Items.Clear(); - var items = await DataStore.GetItemsAsync(true); - foreach (var item in items) - { - Items.Add(item); - } - } - catch (Exception ex) - { - Debug.WriteLine(ex); - } - finally - { - IsBusy = false; - } - } - - public void OnAppearing() - { - IsBusy = true; - SelectedItem = null; - } - - public Item SelectedItem - { - get => _selectedItem; - set - { - SetProperty(ref _selectedItem, value); - OnItemSelected(value); - } - } - - private async void OnAddItem(object obj) - { - await Shell.Current.GoToAsync(nameof(NewItemPage)); - } - - async void OnItemSelected(Item item) - { - if (item == null) - return; - - // This will push the ItemDetailPage onto the navigation stack - await Shell.Current.GoToAsync($"{nameof(ItemDetailPage)}?{nameof(ItemDetailViewModel.ItemId)}={item.Id}"); - } - } -} \ No newline at end of file diff --git a/QRBee/QRBee/ViewModels/LoginViewModel.cs b/QRBee/QRBee/ViewModels/LoginViewModel.cs index 58f6fac..5a3cce9 100644 --- a/QRBee/QRBee/ViewModels/LoginViewModel.cs +++ b/QRBee/QRBee/ViewModels/LoginViewModel.cs @@ -8,17 +8,31 @@ namespace QRBee.ViewModels { public class LoginViewModel : BaseViewModel { - public Command LoginCommand { get; } + public Command LoginCommand + { + get; + } + + public Command RegisterCommand + { + get; + } public LoginViewModel() { LoginCommand = new Command(OnLoginClicked); + RegisterCommand = new Command(OnRegisterClicked); } private async void OnLoginClicked(object obj) { // Prefixing with `//` switches to a different navigation stack instead of pushing to the active one - await Shell.Current.GoToAsync($"//{nameof(AboutPage)}"); + await Shell.Current.GoToAsync($"//{nameof(MainPage)}"); + } + + private async void OnRegisterClicked(object obj) + { + await Shell.Current.GoToAsync($"{nameof(RegisterPage)}"); } } -} +} \ No newline at end of file diff --git a/QRBee/QRBee/ViewModels/MerchantPageViewModel.cs b/QRBee/QRBee/ViewModels/MerchantPageViewModel.cs index 5b3f56e..dcac196 100644 --- a/QRBee/QRBee/ViewModels/MerchantPageViewModel.cs +++ b/QRBee/QRBee/ViewModels/MerchantPageViewModel.cs @@ -1,18 +1,12 @@ using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Text; -using QRBee.Views; using Xamarin.Forms; -using ZXing; -using ZXing.Common; namespace QRBee.ViewModels { internal class MerchantPageViewModel : BaseViewModel { private string _name; - private double _amount; + private decimal _amount; private string _qrCode; public Command GenerateQrCommand { get; } @@ -27,14 +21,14 @@ namespace QRBee.ViewModels get => _name; set { - if(_name==value) + if (_name == value) return; - _name= value; + _name = value; OnPropertyChanged(nameof(Name)); } } - public double Amount + public decimal Amount { get => _amount; set @@ -56,7 +50,7 @@ namespace QRBee.ViewModels // _qrCode = $"{Amount}/{Name}"; if (_qrCode == value) return; - + _qrCode = value; OnPropertyChanged(nameof(QrCode)); } @@ -70,4 +64,4 @@ namespace QRBee.ViewModels } } -} +} \ No newline at end of file diff --git a/QRBee/QRBee/ViewModels/NewItemViewModel.cs b/QRBee/QRBee/ViewModels/NewItemViewModel.cs deleted file mode 100644 index 375b0bc..0000000 --- a/QRBee/QRBee/ViewModels/NewItemViewModel.cs +++ /dev/null @@ -1,65 +0,0 @@ -using QRBee.Models; -using System; -using System.Collections.Generic; -using System.Text; -using System.Windows.Input; -using Xamarin.Forms; - -namespace QRBee.ViewModels -{ - public class NewItemViewModel : BaseViewModel - { - private string text; - private string description; - - public NewItemViewModel() - { - SaveCommand = new Command(OnSave, ValidateSave); - CancelCommand = new Command(OnCancel); - this.PropertyChanged += - (_, __) => SaveCommand.ChangeCanExecute(); - } - - private bool ValidateSave() - { - return !String.IsNullOrWhiteSpace(text) - && !String.IsNullOrWhiteSpace(description); - } - - public string Text - { - get => text; - set => SetProperty(ref text, value); - } - - public string Description - { - get => description; - set => SetProperty(ref description, value); - } - - public Command SaveCommand { get; } - public Command CancelCommand { get; } - - private async void OnCancel() - { - // This will pop the current page off the navigation stack - await Shell.Current.GoToAsync(".."); - } - - private async void OnSave() - { - Item newItem = new Item() - { - Id = Guid.NewGuid().ToString(), - Text = Text, - Description = Description - }; - - await DataStore.AddItemAsync(newItem); - - // This will pop the current page off the navigation stack - await Shell.Current.GoToAsync(".."); - } - } -} diff --git a/QRBee/QRBee/ViewModels/RegisterViewModel.cs b/QRBee/QRBee/ViewModels/RegisterViewModel.cs new file mode 100644 index 0000000..1cba3e1 --- /dev/null +++ b/QRBee/QRBee/ViewModels/RegisterViewModel.cs @@ -0,0 +1,74 @@ +using System; +using System.Collections.Generic; +using System.Text; +using QRBee.Views; +using Xamarin.Forms; + +namespace QRBee.ViewModels +{ + internal class RegisterViewModel: BaseViewModel + { + private string _password1; + private string _password2; + public RegisterViewModel() + { + RegisterCommand = new Command(OnRegisterClicked); + } + + public Command RegisterCommand + { + get; + } + + public string Name { get; set; } + public string Email { get; set; } + public string DateOfBirth { get; set; } + public string CardNumber { get; set; } + public string ValidFrom { get; set; } + public string ExpirationDate { get; set; } + public string CardHolderName { get; set; } + public string CVC { get; set; } + public string IssueNo { get; set; } + + public Color Password1Color { get; set; } + public Color Password2Color { get; set;} + + public string Password1 + { + get => _password1; + set + { + if ( value == _password1) + return; + + _password1 = value; + Password1Color = (string.IsNullOrWhiteSpace(_password1) || _password1.Length < 8 ) ? Color.Red : Color.Green; + OnPropertyChanged(nameof(Password1)); + OnPropertyChanged(nameof(Password1Color)); + } + } + + public string Password2 + { + get => _password2; + set + { + if(value == _password2) + return; + + _password2 = value; + Password2Color = (string.IsNullOrWhiteSpace(_password2) || _password2!=Password1) ? Color.Red : Color.Green; + OnPropertyChanged(nameof(Password2)); + OnPropertyChanged(nameof(Password2Color)); + } + } + + + + private async void OnRegisterClicked(object obj) + { + await Shell.Current.GoToAsync($"//{nameof(MainPage)}"); + } + + } +} diff --git a/QRBee/QRBee/Views/AboutPage.xaml b/QRBee/QRBee/Views/AboutPage.xaml deleted file mode 100644 index a30df50..0000000 --- a/QRBee/QRBee/Views/AboutPage.xaml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - #96d1ff - - - - - - - - - - - - - - - - - - - - - - diff --git a/QRBee/QRBee/Views/NewItemPage.xaml.cs b/QRBee/QRBee/Views/NewItemPage.xaml.cs deleted file mode 100644 index a3d0e2a..0000000 --- a/QRBee/QRBee/Views/NewItemPage.xaml.cs +++ /dev/null @@ -1,21 +0,0 @@ -using QRBee.Models; -using QRBee.ViewModels; -using System; -using System.Collections.Generic; -using System.ComponentModel; -using Xamarin.Forms; -using Xamarin.Forms.Xaml; - -namespace QRBee.Views -{ - public partial class NewItemPage : ContentPage - { - public Item Item { get; set; } - - public NewItemPage() - { - InitializeComponent(); - BindingContext = new NewItemViewModel(); - } - } -} \ No newline at end of file diff --git a/QRBee/QRBee/Views/RegisterPage.xaml b/QRBee/QRBee/Views/RegisterPage.xaml new file mode 100644 index 0000000..660413d --- /dev/null +++ b/QRBee/QRBee/Views/RegisterPage.xaml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + +