Create Tournament screen is wired up an is functioning

This commit is contained in:
2020-05-18 21:29:14 +02:00
parent bcb1a561d4
commit 1207617a7c
8 changed files with 334 additions and 143 deletions

View File

@ -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)

View File

@ -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)

View File

@ -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<object>.Collection.AllActive
public class CreateTournamentViewModel : Conductor<object>.Collection.AllActive, IHandle<TeamModel>,IHandle<PrizeModel>
{
private string _tournamentName;
private decimal _entryFee;
private BindableCollection<TeamModel> _availableTeams;
private TeamModel _selectedTeamToAdd;
private BindableCollection<TeamModel> _selectedTeams;
private TeamModel _selectedTeamToRemove;
private Screen _activeAddTeamView;
private BindableCollection<PrizeModel> _selectedPrizes;
private PrizeModel _selectedPrizeToRemove;
private Screen _activAddPrizeView;
private string _tournamentName = "";
private decimal _entryFee;
private BindableCollection<TeamModel> _availableTeams;
private TeamModel _selectedTeamToAdd;
private BindableCollection<TeamModel> _selectedTeams = new BindableCollection<TeamModel>();
private TeamModel _selectedTeamToRemove;
private Screen _activeAddTeamView;
private BindableCollection<PrizeModel> _selectedPrizes = new BindableCollection<PrizeModel>();
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<TeamModel>(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<TeamModel> AvailableTeams
{
get { return _availableTeams; }
set { _availableTeams = value; }
}
public BindableCollection<TeamModel> 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<TeamModel> SelectedTeams
{
get { return _selectedTeams; }
set { _selectedTeams = value;}
}
public BindableCollection<TeamModel> 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<PrizeModel> SelectedPrizes
{
get { return _selectedPrizes; }
set { _selectedPrizes = value; }
}
public BindableCollection<PrizeModel> 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;
}
}
}

View File

@ -9,22 +9,30 @@ using TrackerLibrary.Models;
namespace TrackerWPFUI.ViewModels
{
public class ShellViewModel : Conductor<object> //ActiveItem in Itemcontrol tells whats going on
public class ShellViewModel : Conductor<object>,IHandle<TournamentModel> //ActiveItem in Itemcontrol tells whats going on
{
public ShellViewModel()
{
// Initialize the database connections
GlobalConfig.InitializeConnections(DatabaseType.Sql);
EventAggregationProvider.TrackerEventAggregator.Subscribe(this);
_existingTournaments = new BindableCollection<TournamentModel>(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<TournamentModel> _existingTournaments;