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

@ -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;
}
}
}