Initial Commit
This commit is contained in:
131
PortfolioManager/Dialogs/EditPositionDialogViewModel.cs
Normal file
131
PortfolioManager/Dialogs/EditPositionDialogViewModel.cs
Normal file
@@ -0,0 +1,131 @@
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using Avalonia.Controls;
|
||||
using CommunityToolkit.Mvvm.Input;
|
||||
using MarketData.DataAccess;
|
||||
using MarketData.Generator.Interface;
|
||||
using MarketData.MarketDataModel;
|
||||
using MarketData.Utils;
|
||||
using PortfolioManager.ViewModels;
|
||||
|
||||
namespace PortfolioManager.Dialogs
|
||||
{
|
||||
public partial class EditPositionDialogViewModel : DialogViewModelBase
|
||||
{
|
||||
private IPosition sourcePosition;
|
||||
private bool syncTrailingStop = true;
|
||||
|
||||
public EditPositionDialogViewModel(Window dialogWindow, IPosition clonedPosition)
|
||||
: base(dialogWindow)
|
||||
{
|
||||
sourcePosition = clonedPosition;
|
||||
DisplayName = "Edit Position";
|
||||
}
|
||||
|
||||
public String Symbol
|
||||
{
|
||||
get { return sourcePosition.Symbol; }
|
||||
}
|
||||
|
||||
public String CompanyName
|
||||
{
|
||||
get
|
||||
{
|
||||
CompanyProfile companyProfile = CompanyProfileDA.GetCompanyProfile(sourcePosition.Symbol);
|
||||
return companyProfile.CompanyName;
|
||||
}
|
||||
}
|
||||
|
||||
public String PurchaseDate
|
||||
{
|
||||
get
|
||||
{
|
||||
return sourcePosition.PurchaseDate.ToShortDateString();
|
||||
}
|
||||
}
|
||||
|
||||
public String PurchasePrice
|
||||
{
|
||||
get
|
||||
{
|
||||
return Utility.FormatCurrency(sourcePosition.PurchasePrice);
|
||||
}
|
||||
set
|
||||
{
|
||||
sourcePosition.PurchasePrice = Utility.ParseCurrency(value);
|
||||
base.OnPropertyChanged("PurchasePrice");
|
||||
base.OnPropertyChanged("InitialStopRecommendation");
|
||||
}
|
||||
}
|
||||
|
||||
public String InitialStopLimit
|
||||
{
|
||||
get
|
||||
{
|
||||
return Utility.FormatCurrency(sourcePosition.InitialStopLimit);
|
||||
}
|
||||
set
|
||||
{
|
||||
sourcePosition.InitialStopLimit = Utility.ParseCurrency(value);
|
||||
base.OnPropertyChanged("InitialStopLimit");
|
||||
if (syncTrailingStop)
|
||||
{
|
||||
TrailingStopLimit = Utility.FormatCurrency(sourcePosition.InitialStopLimit);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public bool SyncTrailingStop
|
||||
{
|
||||
get
|
||||
{
|
||||
return syncTrailingStop;
|
||||
}
|
||||
set
|
||||
{
|
||||
syncTrailingStop = value;
|
||||
base.OnPropertyChanged("SyncTrailingStop");
|
||||
}
|
||||
}
|
||||
|
||||
public String InitialStopRecommendation
|
||||
{
|
||||
get
|
||||
{
|
||||
return "Recommended Initial Stop: " + Utility.FormatCurrency(sourcePosition.PurchasePrice * (1.00 - sourcePosition.PositionRiskPercentDecimal), 2);
|
||||
}
|
||||
}
|
||||
|
||||
public String TrailingStopLimit
|
||||
{
|
||||
get
|
||||
{
|
||||
return Utility.FormatCurrency(sourcePosition.TrailingStopLimit);
|
||||
}
|
||||
set
|
||||
{
|
||||
if (Utility.ParseCurrency(value).Equals(sourcePosition.TrailingStopLimit)) return;
|
||||
sourcePosition.TrailingStopLimit = Utility.ParseCurrency(value);
|
||||
base.OnPropertyChanged("TrailingStopLimit");
|
||||
}
|
||||
}
|
||||
|
||||
public IPosition GetResult()
|
||||
{
|
||||
return sourcePosition;
|
||||
}
|
||||
|
||||
[RelayCommand]
|
||||
public async Task OkButtonClick()
|
||||
{
|
||||
IsSuccess = true;
|
||||
await Close();
|
||||
}
|
||||
|
||||
[RelayCommand]
|
||||
public async Task CancelButtonClick()
|
||||
{
|
||||
await Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user