From c13e2f3ccb83f1966136b0b2ce5ec8c5a11cc7a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tommy=20=C3=96man?= Date: Sun, 17 May 2020 16:41:53 +0200 Subject: [PATCH] Create Prize and create Team ready --- TrackerWPFUI/TrackerWPFUI.csproj | 16 ++ .../ViewModels/CreatePrizeViewModel.cs | 104 +++++++++++++ .../ViewModels/CreateTeamViewModel.cs | 145 ++++++++++++++++++ TrackerWPFUI/ViewModels/ShellViewModel.cs | 4 +- TrackerWPFUI/Views/CreatePrizeView.xaml | 51 ++++++ TrackerWPFUI/Views/CreatePrizeView.xaml.cs | 28 ++++ TrackerWPFUI/Views/CreateTeamView.xaml | 30 ++++ TrackerWPFUI/Views/CreateTeamView.xaml.cs | 28 ++++ TrackerWPFUI/Views/ShellView.xaml | 2 +- 9 files changed, 406 insertions(+), 2 deletions(-) create mode 100644 TrackerWPFUI/ViewModels/CreatePrizeViewModel.cs create mode 100644 TrackerWPFUI/ViewModels/CreateTeamViewModel.cs create mode 100644 TrackerWPFUI/Views/CreatePrizeView.xaml create mode 100644 TrackerWPFUI/Views/CreatePrizeView.xaml.cs create mode 100644 TrackerWPFUI/Views/CreateTeamView.xaml create mode 100644 TrackerWPFUI/Views/CreateTeamView.xaml.cs diff --git a/TrackerWPFUI/TrackerWPFUI.csproj b/TrackerWPFUI/TrackerWPFUI.csproj index 0cb5137..d88b24d 100644 --- a/TrackerWPFUI/TrackerWPFUI.csproj +++ b/TrackerWPFUI/TrackerWPFUI.csproj @@ -71,7 +71,15 @@ Designer + + + + CreatePrizeView.xaml + + + CreateTeamView.xaml + ShellView.xaml @@ -79,6 +87,14 @@ App.xaml Code + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + Designer MSBuild:Compile diff --git a/TrackerWPFUI/ViewModels/CreatePrizeViewModel.cs b/TrackerWPFUI/ViewModels/CreatePrizeViewModel.cs new file mode 100644 index 0000000..c16fd10 --- /dev/null +++ b/TrackerWPFUI/ViewModels/CreatePrizeViewModel.cs @@ -0,0 +1,104 @@ +using Caliburn.Micro; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using TrackerLibrary; +using TrackerLibrary.Models; + +namespace TrackerWPFUI.ViewModels +{ + public class CreatePrizeViewModel : Screen + { + private int _placeNumber; + private string _placeName; + private decimal _prizeAmount; + private double _prizePercentage; + + + public int PlaceNumber + { + get { return _placeNumber; } + set { + _placeNumber = value; + NotifyOfPropertyChange(() => PlaceNumber); + } + } + + + public string PlaceName + { + get { return _placeName; } + set { _placeName = value; + NotifyOfPropertyChange(() => PlaceName); + } + } + + + public decimal PrizeAmount + { + get { return _prizeAmount; } + set { _prizeAmount = value; + NotifyOfPropertyChange(() => PrizeAmount); + } + } + + + public double PrizePercentage + { + get { return _prizePercentage; } + set { _prizePercentage = value; + NotifyOfPropertyChange(() => PrizePercentage); + } + } + + public bool CanCreatePrize(int placeNumber, string placeName, decimal prizeAmount, double prizePercentage) + { + return ValidateForm(placeNumber, placeName, prizeAmount, prizePercentage); + } + + public void CreatePrize(int placeNumber, string placeName, decimal prizeAmount, double prizePercentage) + { + PrizeModel model = new PrizeModel + { + PlaceNumber = placeNumber, + PlaceName = placeName, + PrizeAmount = prizeAmount, + PrizePercentage = prizePercentage + }; + GlobalConfig.Connection.CreatePrize(model); + + //TODO Close out the form and alert the calling form + + } + + private bool ValidateForm(int placeNumber, string placeName, decimal prizeAmount, double prizePercentage) + { + bool output = true; + + + if (placeNumber < 1) + { + output = false; + } + + if (placeName.Length == 0) + { + output = false; + } + + if (prizeAmount <= 0 && prizePercentage <= 0) + { + output = false; + } + + if (prizePercentage < 0 || prizePercentage > 100) + { + output = false; + } + + return output; + } + } +} diff --git a/TrackerWPFUI/ViewModels/CreateTeamViewModel.cs b/TrackerWPFUI/ViewModels/CreateTeamViewModel.cs new file mode 100644 index 0000000..7bf1ded --- /dev/null +++ b/TrackerWPFUI/ViewModels/CreateTeamViewModel.cs @@ -0,0 +1,145 @@ +using Caliburn.Micro; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using TrackerLibrary; +using TrackerLibrary.Models; + +namespace TrackerWPFUI.ViewModels +{ + public class CreateTeamViewModel : Conductor + { + private string _teamName = ""; + private BindableCollection _availableTeamMembers; + private PersonModel _selectedTeamMemberToAdd; + private BindableCollection _selectedTeamMembers = new BindableCollection(); + private PersonModel _selectedTeamMemberToRemove; + + public CreateTeamViewModel() + { + AvailableTeamMembers = new BindableCollection(GlobalConfig.Connection.GetPerson_All()); + } + + + public string TeamName + { + get { return _teamName; } + set + { + _teamName = value; + NotifyOfPropertyChange(() => TeamName); + NotifyOfPropertyChange(() => CanCreateTeam); + } + } + + public BindableCollection AvailableTeamMembers + { + get { return _availableTeamMembers; } + set { _availableTeamMembers = value; } + } + + + public BindableCollection SelectedTeamMembers + { + get { return _selectedTeamMembers; } + set + { + _selectedTeamMembers = value; + NotifyOfPropertyChange(() => CanCreateTeam); + } + } + + + public PersonModel SelectedTeamMemberToAdd + { + get { return _selectedTeamMemberToAdd; } + set + { + _selectedTeamMemberToAdd = value; + NotifyOfPropertyChange(() => SelectedTeamMemberToAdd); + NotifyOfPropertyChange(() => CanAddMember); + } + } + + public bool CanAddMember + { + get + { + return SelectedTeamMemberToAdd != null; + } + } + + public void AddMember() + { + SelectedTeamMembers.Add(SelectedTeamMemberToAdd); + AvailableTeamMembers.Remove(SelectedTeamMemberToAdd ); + NotifyOfPropertyChange(() => CanCreateTeam); + } + public PersonModel SelectedTeamMemberToRemove + { + get { return _selectedTeamMemberToRemove; } + set + { + _selectedTeamMemberToRemove = value; + NotifyOfPropertyChange(() => SelectedTeamMemberToRemove); + NotifyOfPropertyChange(() => CanRemoveMember); + } + } + + public bool CanRemoveMember + { + get + { + return SelectedTeamMemberToRemove != null; + } + } + + public void RemoveMember() + { + AvailableTeamMembers.Add(SelectedTeamMemberToRemove); + SelectedTeamMembers.Remove(SelectedTeamMemberToRemove); + NotifyOfPropertyChange(() => CanCreateTeam); + } + + public void CreateMember() + { + + } + public bool CanCreateTeam + { + get + { + if (SelectedTeamMembers != null) + { + if (TeamName.Length > 0 && SelectedTeamMembers.Count > 0) + { + return true; + } + else + { + return false; + } + } + else + { + return false; + } + } + } + + public void CreateTeam() + { + TeamModel t = new TeamModel(); + t.TeamName = TeamName; + t.TeamMembers = SelectedTeamMembers.ToList(); + + GlobalConfig.Connection.CreateTeam(t); + + //TODO - Pass the team back to the parent and close the form + } + + + } +} diff --git a/TrackerWPFUI/ViewModels/ShellViewModel.cs b/TrackerWPFUI/ViewModels/ShellViewModel.cs index afb3865..42f1553 100644 --- a/TrackerWPFUI/ViewModels/ShellViewModel.cs +++ b/TrackerWPFUI/ViewModels/ShellViewModel.cs @@ -9,7 +9,7 @@ using TrackerLibrary.Models; namespace TrackerWPFUI.ViewModels { - public class ShellViewModel : Conductor + public class ShellViewModel : Conductor //ActiveItem in Itemcontrol tells whats going on { public ShellViewModel() @@ -17,6 +17,8 @@ namespace TrackerWPFUI.ViewModels // Initialize the database connections GlobalConfig.InitializeConnections(DatabaseType.Sql); _existingTournaments = new BindableCollection(GlobalConfig.Connection.GetTournament_All()); + //ActivateItem(new CreatePrizeViewModel()); + ActivateItem(new CreateTeamViewModel()); } public void CreateTournament() { diff --git a/TrackerWPFUI/Views/CreatePrizeView.xaml b/TrackerWPFUI/Views/CreatePrizeView.xaml new file mode 100644 index 0000000..3394749 --- /dev/null +++ b/TrackerWPFUI/Views/CreatePrizeView.xaml @@ -0,0 +1,51 @@ + + + + Create Prize + + + + + + + + + + + + + + + + + Place Number + + + Place Name + + + Prize Amount + + + + -- OR -- + + + Prize Percentage + + + + + + + diff --git a/TrackerWPFUI/Views/CreatePrizeView.xaml.cs b/TrackerWPFUI/Views/CreatePrizeView.xaml.cs new file mode 100644 index 0000000..5b36a5b --- /dev/null +++ b/TrackerWPFUI/Views/CreatePrizeView.xaml.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace TrackerWPFUI.Views +{ + /// + /// Interaction logic for CreatePrizeView.xaml + /// + public partial class CreatePrizeView : UserControl + { + public CreatePrizeView() + { + InitializeComponent(); + } + } +} diff --git a/TrackerWPFUI/Views/CreateTeamView.xaml b/TrackerWPFUI/Views/CreateTeamView.xaml new file mode 100644 index 0000000..28c87af --- /dev/null +++ b/TrackerWPFUI/Views/CreateTeamView.xaml @@ -0,0 +1,30 @@ + + + + Create Team + Team Name + + Select Team Member + + + + + + + Selected Team Members + + + + + diff --git a/TrackerWPFUI/Views/CreateTeamView.xaml.cs b/TrackerWPFUI/Views/CreateTeamView.xaml.cs new file mode 100644 index 0000000..e4128af --- /dev/null +++ b/TrackerWPFUI/Views/CreateTeamView.xaml.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace TrackerWPFUI.Views +{ + /// + /// Interaction logic for CreateTeamView.xaml + /// + public partial class CreateTeamView : UserControl + { + public CreateTeamView() + { + InitializeComponent(); + } + } +} diff --git a/TrackerWPFUI/Views/ShellView.xaml b/TrackerWPFUI/Views/ShellView.xaml index 3c3fbf9..4eb41e3 100644 --- a/TrackerWPFUI/Views/ShellView.xaml +++ b/TrackerWPFUI/Views/ShellView.xaml @@ -36,6 +36,6 @@ - +