namespace Web.ViewModels
{
using Controls.WizardNavigation;
using System.Collections.Generic;
using System.Threading.Tasks;
using static DefaultViewModelEvents;
public static class DefaultViewModelEvents
{
public delegate void ToggleNext(bool isEnabled);
}
public class DefaultViewModel : SiteViewModel
{
public FirstViewModel First { get; set; }
public SecondViewModel Second { get; set; }
public WizardNavigationViewModel Wizard { get; set; }
public DefaultViewModel()
{
Wizard = new WizardNavigationViewModel(new List<string>
{
"First",
"Second"
}, 1);
Initialize();
}
private void Initialize()
{
First = new FirstViewModel();
if (!First.IsInitialized)
First.Initialize(ToggleNextButtonEnabled);
Wizard = new WizardNavigationViewModel(new List<string>
{
"Tale of Two Cities",
"Moby Dick"
}, 1)
{
NextButtonEnabled = false // default off until user checks to continue
};
Wizard.Show();
}
public async Task OnNextClick()
{
if (Wizard.Step == 2)
{
if (Second == null) // TODO resolve with IOC
Second = new SecondViewModel();
if (!Second.IsInitialized)
Second.Initialize();
}
await Task.CompletedTask;
}
public async Task OnPreviousClick()
{
await Task.CompletedTask;
}
#region Private Methods
private void ToggleNextButtonEnabled(bool isEnabled)
{
Wizard.NextButtonEnabled = isEnabled;
}
#endregion
}
#region First
public class FirstViewModel
{
public ToggleNext ToggleNext;
public string ConfirmationMessage { get; set; }
public bool IsInitialized { get; set; }
public bool IsNextEnabled { get; set; }
public bool ShowConfirmationModal { get; set; }
public void Initialize(ToggleNext toggleNext)
{
ToggleNext = toggleNext;
IsInitialized = true;
}
public void OnConfirmationShowClick()
{
ShowConfirmationModal = true;
}
public void OnConfirmationSubmitClick()
{
IsNextEnabled = true;
ToggleNext.Invoke(IsNextEnabled);
}
//public void OnContinueChanged()
//{
// ToggleNext?.Invoke(IsNextEnabled);
//}
}
#endregion
#region Second
public class SecondViewModel
{
public bool IsInitialized { get; set; }
public bool IsNextEnabled { get; set; }
public void Initialize()
{
IsInitialized = true;
}
}
#endregion
}