diff --git a/TrackerWPFUI/ViewModels/CreatePrizeViewModel.cs b/TrackerWPFUI/ViewModels/CreatePrizeViewModel.cs index c16fd10..de7a8e4 100644 --- a/TrackerWPFUI/ViewModels/CreatePrizeViewModel.cs +++ b/TrackerWPFUI/ViewModels/CreatePrizeViewModel.cs @@ -53,6 +53,12 @@ namespace TrackerWPFUI.ViewModels } } + public void CancelCreation() + { + EventAggregationProvider.TrackerEventAggregator.PublishOnCurrentThread(new PrizeModel()); + this.TryClose(); + } + public bool CanCreatePrize(int placeNumber, string placeName, decimal prizeAmount, double prizePercentage) { return ValidateForm(placeNumber, placeName, prizeAmount, prizePercentage); @@ -69,8 +75,8 @@ namespace TrackerWPFUI.ViewModels }; GlobalConfig.Connection.CreatePrize(model); - //TODO Close out the form and alert the calling form - + EventAggregationProvider.TrackerEventAggregator.PublishOnCurrentThread(model); + this.TryClose(); } private bool ValidateForm(int placeNumber, string placeName, decimal prizeAmount, double prizePercentage) diff --git a/TrackerWPFUI/ViewModels/CreateTeamViewModel.cs b/TrackerWPFUI/ViewModels/CreateTeamViewModel.cs index eaf53bf..0707be2 100644 --- a/TrackerWPFUI/ViewModels/CreateTeamViewModel.cs +++ b/TrackerWPFUI/ViewModels/CreateTeamViewModel.cs @@ -133,6 +133,12 @@ namespace TrackerWPFUI.ViewModels SelectedTeamMembersIsVisible = false; AddPersonIsVisible = true; } + + public void CancelCreation() + { + EventAggregationProvider.TrackerEventAggregator.PublishOnUIThread(new TeamModel()); + this.TryClose(); + } public bool CanCreateTeam { get @@ -163,7 +169,8 @@ namespace TrackerWPFUI.ViewModels GlobalConfig.Connection.CreateTeam(t); - //TODO - Pass the team back to the parent and close the form + EventAggregationProvider.TrackerEventAggregator.PublishOnUIThread(t); + this.TryClose(); } public void Handle(PersonModel message) diff --git a/TrackerWPFUI/ViewModels/CreateTournamentViewModel.cs b/TrackerWPFUI/ViewModels/CreateTournamentViewModel.cs index bea079a..cd7152f 100644 --- a/TrackerWPFUI/ViewModels/CreateTournamentViewModel.cs +++ b/TrackerWPFUI/ViewModels/CreateTournamentViewModel.cs @@ -2,149 +2,297 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Security.Cryptography.X509Certificates; using System.Text; using System.Threading.Tasks; +using TrackerLibrary; using TrackerLibrary.Models; namespace TrackerWPFUI.ViewModels { - public class CreateTournamentViewModel : Conductor.Collection.AllActive + public class CreateTournamentViewModel : Conductor.Collection.AllActive, IHandle,IHandle { - private string _tournamentName; - private decimal _entryFee; - private BindableCollection _availableTeams; - private TeamModel _selectedTeamToAdd; - private BindableCollection _selectedTeams; - private TeamModel _selectedTeamToRemove; - private Screen _activeAddTeamView; - private BindableCollection _selectedPrizes; - private PrizeModel _selectedPrizeToRemove; - private Screen _activAddPrizeView; + private string _tournamentName = ""; + private decimal _entryFee; + private BindableCollection _availableTeams; + private TeamModel _selectedTeamToAdd; + private BindableCollection _selectedTeams = new BindableCollection(); + private TeamModel _selectedTeamToRemove; + private Screen _activeAddTeamView; + private BindableCollection _selectedPrizes = new BindableCollection(); + private PrizeModel _selectedPrizeToRemove; + private Screen _activAddPrizeView; + private bool _selectedTeamIsVisible =true; + private bool _addTeamIsVisible = false; + private bool _selectedPrizesIsVisible = true; + private bool _addPrizeIsVisible = false; + public CreateTournamentViewModel() + { + AvailableTeams = new BindableCollection(GlobalConfig.Connection.GetTeam_All()); + EventAggregationProvider.TrackerEventAggregator.Subscribe(this); + } - public string TournamentName - { - get { return _tournamentName; } - set { _tournamentName = value; - NotifyOfPropertyChange(() => TournamentName); - } - } + public string TournamentName + { + get { return _tournamentName; } + set + { + _tournamentName = value; + NotifyOfPropertyChange(() => TournamentName); + NotifyOfPropertyChange(() => CanCreateTournament); + } + } - public decimal EntryFee - { - get { return _entryFee; } - set { _entryFee = value; - NotifyOfPropertyChange(() => EntryFee); - } - } + public decimal EntryFee + { + get { return _entryFee; } + set + { + _entryFee = value; + NotifyOfPropertyChange(() => EntryFee); + } + } - public BindableCollection AvailableTeams - { - get { return _availableTeams; } - set { _availableTeams = value; } - } + public BindableCollection AvailableTeams + { + get { return _availableTeams; } + set { _availableTeams = value; } + } - public TeamModel SelectedTeamToAdd - { - get { return _selectedTeamToAdd; } - set { _selectedTeamToAdd = value; - NotifyOfPropertyChange(() => SelectedTeamToAdd); - } - } + public TeamModel SelectedTeamToAdd + { + get { return _selectedTeamToAdd; } + set + { + _selectedTeamToAdd = value; + NotifyOfPropertyChange(() => SelectedTeamToAdd); + NotifyOfPropertyChange(() => CanAddTeam); + } + } - public BindableCollection SelectedTeams - { - get { return _selectedTeams; } - set { _selectedTeams = value;} - } + public BindableCollection SelectedTeams + { + get { return _selectedTeams; } + set { _selectedTeams = value; + NotifyOfPropertyChange(() => SelectedTeams); + } + } - public TeamModel SelectedTeamToRemove - { - get { return _selectedTeamToRemove; } - set { _selectedTeamToRemove = value; - NotifyOfPropertyChange(() => SelectedTeamToRemove); - } - } + public TeamModel SelectedTeamToRemove + { + get { return _selectedTeamToRemove; } + set + { + _selectedTeamToRemove = value; + NotifyOfPropertyChange(() => SelectedTeamToRemove); + NotifyOfPropertyChange(() => CanRemoveTeam); + } + } - - public Screen ActiveAddTeamView - { - get { return _activeAddTeamView; } - set { _activeAddTeamView = value; - NotifyOfPropertyChange(() => ActiveAddTeamView); - } - } + public Screen ActiveAddTeamView + { + get { return _activeAddTeamView; } + set + { + _activeAddTeamView = value; + NotifyOfPropertyChange(() => ActiveAddTeamView); + } + } - public BindableCollection SelectedPrizes - { - get { return _selectedPrizes; } - set { _selectedPrizes = value; } - } + public BindableCollection SelectedPrizes + { + get { return _selectedPrizes; } + set { _selectedPrizes = value; } + } - public PrizeModel SelectedPrizeToRemove - { - get { return _selectedPrizeToRemove; } - set { _selectedPrizeToRemove = value; - NotifyOfPropertyChange(() => SelectedPrizeToRemove); - } - } + public PrizeModel SelectedPrizeToRemove + { + get { return _selectedPrizeToRemove; } + set + { + _selectedPrizeToRemove = value; + NotifyOfPropertyChange(() => SelectedPrizeToRemove); + NotifyOfPropertyChange(() => CanRemovePrize); + } + } - public Screen ActiveAddPrizeView - { - get { return _activAddPrizeView; } - set { _activAddPrizeView = value; - NotifyOfPropertyChange(() => ActiveAddPrizeView); - } - } + public Screen ActiveAddPrizeView + { + get { return _activAddPrizeView; } + set + { + _activAddPrizeView = value; + NotifyOfPropertyChange(() => ActiveAddPrizeView); + } + } - public bool CanAddTeam() - { - return SelectedTeamToAdd != null; - } - public void AddTeams() - { - } + public bool SelectedTeamIsVisible + { + get { return _selectedTeamIsVisible; } + set { _selectedTeamIsVisible = value; + NotifyOfPropertyChange(() => SelectedTeamIsVisible); + } + } - public void CreateTeam() - { + public bool AddTeamIsVisible + { + get { return _addTeamIsVisible; } + set { _addTeamIsVisible = value; + NotifyOfPropertyChange(() => AddTeamIsVisible); + } + } - } - public bool CanRemoveTeam() - { - return SelectedTeamToRemove != null; - } - public void RemoveTeam() - { + public bool SelectedPrizesIsVisible + { + get { return _selectedPrizesIsVisible; } + set { _selectedPrizesIsVisible = value; + NotifyOfPropertyChange(() => SelectedPrizesIsVisible); + } + } - } + public bool AddPrizeIsVisible + { + get { return _addPrizeIsVisible; } + set { _addPrizeIsVisible = value; + NotifyOfPropertyChange(() => AddPrizeIsVisible); + } + } - public void CreatePrize() - { - } + public bool CanAddTeam + { + get + { + return SelectedTeamToAdd != null; + } + } + public void AddTeam() + { + SelectedTeams.Add(SelectedTeamToAdd); + AvailableTeams.Remove(SelectedTeamToAdd); + NotifyOfPropertyChange(() => CanCreateTournament); + } - public bool CanRemovePrize() - { - return SelectedPrizeToRemove != null; - } + public void CreateTeam() + { + ActiveAddTeamView = new CreateTeamViewModel(); + Items.Add(ActiveAddTeamView); - public void RemovePrize() - { + SelectedTeamIsVisible = false; + AddTeamIsVisible = true; + } - } + public bool CanRemoveTeam + { + get + { + return SelectedTeamToRemove != null; + } + } + public void RemoveTeam() + { + AvailableTeams.Add(SelectedTeamToRemove); + SelectedTeams.Remove(SelectedTeamToRemove); + NotifyOfPropertyChange(() => CanCreateTournament); + } - public bool CanCreateTournament() - { - //ToDo - Add logic for createing the tournament - return true; - } + public void CreatePrize() + { + ActiveAddPrizeView = new CreatePrizeViewModel(); + Items.Add(ActiveAddPrizeView); - public void CreateTournament() - { + SelectedPrizesIsVisible = false; + AddPrizeIsVisible = true; + } - } - } + public bool CanRemovePrize + { + get + { + return SelectedPrizeToRemove != null; + } + } + + public void RemovePrize() + { + SelectedPrizes.Remove(SelectedPrizeToRemove); + } + + public bool CanCreateTournament + { + get + { + if(SelectedTeams != null) + { + if (TournamentName.Length > 0 && SelectedTeams.Count > 1) + { + return true; + } + else + { + return false; + } + + } + else + { + return false; + } + } + } + + public void CreateTournament() + { + + // Create our tournament model + TournamentModel tm = new TournamentModel(); + + tm.TournamentName = TournamentName; + tm.EntryFee = EntryFee; + tm.Prizes = SelectedPrizes.ToList(); + tm.EnteredTeams = SelectedTeams.ToList(); + + // TODO Wireup our matchups + + TournamentLogic.CreateRounds(tm); + + // Finally create the tournament entry + // Create all of the prizes entries + // Create all of team entries + GlobalConfig.Connection.CreateTournament(tm); + + tm.AlertUsersToNewRound(); + + EventAggregationProvider.TrackerEventAggregator.PublishOnUIThread(tm); + this.TryClose(); + } + + public void Handle(TeamModel message) + { + if (!string.IsNullOrWhiteSpace(message.TeamName)) + { + SelectedTeams.Add(message); + NotifyOfPropertyChange(() => CanCreateTournament); + } + + SelectedTeamIsVisible = true; + AddTeamIsVisible = false; + + } + + public void Handle(PrizeModel message) + { + if (!string.IsNullOrWhiteSpace(message.PlaceName)) + { + SelectedPrizes.Add(message); + } + + SelectedPrizesIsVisible = true; + AddPrizeIsVisible = false; + } + } } diff --git a/TrackerWPFUI/ViewModels/ShellViewModel.cs b/TrackerWPFUI/ViewModels/ShellViewModel.cs index 24c2add..20c984f 100644 --- a/TrackerWPFUI/ViewModels/ShellViewModel.cs +++ b/TrackerWPFUI/ViewModels/ShellViewModel.cs @@ -9,22 +9,30 @@ using TrackerLibrary.Models; namespace TrackerWPFUI.ViewModels { - public class ShellViewModel : Conductor //ActiveItem in Itemcontrol tells whats going on + public class ShellViewModel : Conductor,IHandle //ActiveItem in Itemcontrol tells whats going on { public ShellViewModel() { // Initialize the database connections GlobalConfig.InitializeConnections(DatabaseType.Sql); + + EventAggregationProvider.TrackerEventAggregator.Subscribe(this); + _existingTournaments = new BindableCollection(GlobalConfig.Connection.GetTournament_All()); //ActivateItem(new CreatePrizeViewModel()); //ActivateItem(new CreateTeamViewModel()); //ActivateItem(new CreatePersonViewModel()); - ActivateItem(new CreateTournamentViewModel()); } public void CreateTournament() { + ActivateItem(new CreateTournamentViewModel()); + } + public void Handle(TournamentModel message) + { + // Open the tournamentViewer to the given tournament + throw new NotImplementedException(); } private BindableCollection _existingTournaments; diff --git a/TrackerWPFUI/Views/CreatePrizeView.xaml b/TrackerWPFUI/Views/CreatePrizeView.xaml index 2d6dddd..f907efe 100644 --- a/TrackerWPFUI/Views/CreatePrizeView.xaml +++ b/TrackerWPFUI/Views/CreatePrizeView.xaml @@ -41,10 +41,20 @@ Prize Percentage - - + + + diff --git a/TrackerWPFUI/Views/CreateTeamView.xaml b/TrackerWPFUI/Views/CreateTeamView.xaml index 870999d..237c290 100644 --- a/TrackerWPFUI/Views/CreateTeamView.xaml +++ b/TrackerWPFUI/Views/CreateTeamView.xaml @@ -29,7 +29,15 @@ - + + + + diff --git a/TrackerWPFUI/Views/CreateTournamentView.xaml b/TrackerWPFUI/Views/CreateTournamentView.xaml index e675c71..894520e 100644 --- a/TrackerWPFUI/Views/CreateTournamentView.xaml +++ b/TrackerWPFUI/Views/CreateTournamentView.xaml @@ -29,40 +29,44 @@ - Teams Section - - Select Team - + Teams Section + + Select Team + - - - - - - - Selected Teams - + + + + + + Selected Teams + + - Prizes Section - - - - - - Selected Teams - + Prizes Section + + + + + + Selected Prizes + + - + diff --git a/TrackerWPFUI/Views/ShellView.xaml b/TrackerWPFUI/Views/ShellView.xaml index 4eb41e3..e5d4859 100644 --- a/TrackerWPFUI/Views/ShellView.xaml +++ b/TrackerWPFUI/Views/ShellView.xaml @@ -5,7 +5,7 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:TrackerWPFUI.Views" FontSize="18" mc:Ignorable="d" WindowStartupLocation="CenterScreen" Icon="..\TournamentTracker.ico" - Title="ShellView" Height="500" Width="600"> + Title="ShellView" Height="700" Width="1200">