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