Init
This commit is contained in:
196
ViewModels/DividendHistoryViewModel.cs
Normal file
196
ViewModels/DividendHistoryViewModel.cs
Normal file
@@ -0,0 +1,196 @@
|
||||
using System;
|
||||
using System.Windows.Input;
|
||||
using System.ComponentModel;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Collections.Specialized;
|
||||
using System.Windows;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using MarketData;
|
||||
using MarketData.Utils;
|
||||
using MarketData.DataAccess;
|
||||
using MarketData.MarketDataModel;
|
||||
using TradeBlotter.DataAccess;
|
||||
using TradeBlotter.Command;
|
||||
using TradeBlotter.Model;
|
||||
|
||||
namespace TradeBlotter.ViewModels
|
||||
{
|
||||
public class DividendHistoryViewModel : WorkspaceViewModel
|
||||
{
|
||||
private List<String> watchLists;
|
||||
private List<String> symbols;
|
||||
private String selectedWatchList;
|
||||
private String symbol;
|
||||
private String selectedCompanyName;
|
||||
private RelayCommand refreshCommand;
|
||||
private RelayCommand getLatestDivExDatesCommand;
|
||||
private bool busyIndicator = false;
|
||||
|
||||
public DividendHistoryViewModel()
|
||||
{
|
||||
base.DisplayName = "DividendHistory";
|
||||
watchLists = WatchListDA.GetWatchLists();
|
||||
watchLists.Insert(0, Constants.CONST_ALL);
|
||||
selectedWatchList = watchLists.Find(x => x.Equals("Valuations"));
|
||||
symbols = WatchListDA.GetWatchList(selectedWatchList);
|
||||
PropertyChanged += OnDividendHistoryViewModelPropertyChanged;
|
||||
}
|
||||
public override SaveParameters GetSaveParameters()
|
||||
{
|
||||
SaveParameters saveParams = new SaveParameters();
|
||||
if (null == symbol) return null;
|
||||
saveParams.Add(new KeyValuePair<String, String>("Type", GetType().Namespace + "." + GetType().Name));
|
||||
saveParams.Add(new KeyValuePair<String, String>("SelectedSymbol", symbol));
|
||||
saveParams.Add(new KeyValuePair<String, String>("SelectedWatchList", selectedWatchList));
|
||||
return saveParams;
|
||||
}
|
||||
public override void SetSaveParameters(SaveParameters saveParameters)
|
||||
{
|
||||
try
|
||||
{
|
||||
symbol = (from KeyValuePair<String, String> item in saveParameters where item.Key.Equals("SelectedSymbol") select item).FirstOrDefault().Value;
|
||||
selectedWatchList = (from KeyValuePair<String, String> item in saveParameters where item.Key.Equals("SelectedWatchList") select item).FirstOrDefault().Value;
|
||||
Referer=saveParameters.Referer;
|
||||
base.OnPropertyChanged("SelectedWatchList");
|
||||
base.OnPropertyChanged("SelectedSymbol");
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
MDTrace.WriteLine(LogLevel.DEBUG,String.Format("Exception:{0}",exception.ToString()));
|
||||
}
|
||||
}
|
||||
public override bool CanPersist()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
public ObservableCollection<DividendHistoryItem> AllDividendHistory
|
||||
{
|
||||
get;
|
||||
private set;
|
||||
}
|
||||
public bool BusyIndicator
|
||||
{
|
||||
get { return busyIndicator; }
|
||||
set
|
||||
{
|
||||
busyIndicator = value;
|
||||
base.OnPropertyChanged("BusyIndicator");
|
||||
}
|
||||
}
|
||||
private void OnDividendHistoryViewModelPropertyChanged(object sender, PropertyChangedEventArgs eventArgs)
|
||||
{
|
||||
if (eventArgs.PropertyName.Equals("SelectedSymbol") && null != symbol)
|
||||
{
|
||||
BusyIndicator = true;
|
||||
Task workerTask = Task.Factory.StartNew(() =>
|
||||
{
|
||||
base.DisplayName = "Dividend History (" + symbol + ")";
|
||||
base.OnPropertyChanged("DisplayName");
|
||||
String companyName = PricingDA.GetNameForSymbol(symbol);
|
||||
selectedCompanyName = PricingDA.GetNameForSymbol(symbol);
|
||||
List<PriceModel> priceModels = new List<PriceModel>();
|
||||
List<PriceModel> priceModelList = priceModels.ToList();
|
||||
DividendHistory dividendHistory=DividendHistoryDA.GetDividendHistory(symbol);
|
||||
if(null!=dividendHistory && 0!=dividendHistory.Count)
|
||||
this.AllDividendHistory = new ObservableCollection<DividendHistoryItem>(dividendHistory);
|
||||
else this.AllDividendHistory = new ObservableCollection<DividendHistoryItem>();
|
||||
});
|
||||
workerTask.ContinueWith((continuation) =>
|
||||
{
|
||||
BusyIndicator = false;
|
||||
base.OnPropertyChanged("AllDividendHistory");
|
||||
base.OnPropertyChanged("Title");
|
||||
});
|
||||
}
|
||||
else if (eventArgs.PropertyName.Equals("SelectedWatchList"))
|
||||
{
|
||||
if (selectedWatchList.Equals(Constants.CONST_ALL)) symbols = PricingDA.GetSymbols();
|
||||
else symbols = WatchListDA.GetWatchList(selectedWatchList);
|
||||
base.OnPropertyChanged("Symbols");
|
||||
}
|
||||
}
|
||||
public override String Title
|
||||
{
|
||||
get
|
||||
{
|
||||
if (null != selectedCompanyName && null!=symbol) return selectedCompanyName+" ("+symbol+")";
|
||||
return null;
|
||||
}
|
||||
}
|
||||
public List<String> WatchListNames
|
||||
{
|
||||
get
|
||||
{
|
||||
return watchLists;
|
||||
}
|
||||
set { ;}
|
||||
}
|
||||
public String SelectedWatchList
|
||||
{
|
||||
get { return selectedWatchList; }
|
||||
set { selectedWatchList = value; base.OnPropertyChanged("SelectedWatchList"); }
|
||||
}
|
||||
public List<String> Symbols
|
||||
{
|
||||
get
|
||||
{
|
||||
return symbols;
|
||||
}
|
||||
}
|
||||
public String SelectedSymbol
|
||||
{
|
||||
get { return symbol; }
|
||||
set
|
||||
{
|
||||
if (value == symbol || String.IsNullOrEmpty(value)) return;
|
||||
symbol = value;
|
||||
base.OnPropertyChanged("SelectedSymbol");
|
||||
}
|
||||
}
|
||||
private void Refresh()
|
||||
{
|
||||
base.OnPropertyChanged("SelectedSymbol");
|
||||
}
|
||||
public ICommand RefreshCommand
|
||||
{
|
||||
get
|
||||
{
|
||||
if (refreshCommand == null)
|
||||
{
|
||||
refreshCommand = new RelayCommand(param => this.Refresh(), param => { return true; });
|
||||
}
|
||||
return refreshCommand;
|
||||
}
|
||||
}
|
||||
public void GetLatestDivExDates()
|
||||
{
|
||||
BusyIndicator = true;
|
||||
Task workerTask = Task.Factory.StartNew(() =>
|
||||
{
|
||||
List<DivExDateItem> divExDates = DividendHistoryDA.GetLatestDivExDates();
|
||||
DividendHistory dividendHistory = DividendHistoryDA.GetDividendHistory(divExDates);
|
||||
if (null != dividendHistory && 0 != dividendHistory.Count)
|
||||
this.AllDividendHistory = new ObservableCollection<DividendHistoryItem>(dividendHistory);
|
||||
});
|
||||
workerTask.ContinueWith((continuation) =>
|
||||
{
|
||||
BusyIndicator = false;
|
||||
base.OnPropertyChanged("AllDividendHistory");
|
||||
});
|
||||
}
|
||||
public ICommand GetLatestDivExDatesCommand
|
||||
{
|
||||
get
|
||||
{
|
||||
if (getLatestDivExDatesCommand == null)
|
||||
{
|
||||
getLatestDivExDatesCommand = new RelayCommand(param => this.GetLatestDivExDates(), param => { return true; });
|
||||
}
|
||||
return getLatestDivExDatesCommand;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user