public void DeleteWithdrawal(InvestInfo investInfo, TradeRecord record) { var capital = investInfo.HoldingAssets.Where(x => x.AssetName.Equals("WON")); double withdrawalCost = record.Amount * (1 + record.RelativeFee * 0.01) + record.AbsoluteFee; capital.First().Amount += withdrawalCost; }
public ReviseInvestInfoViewModel(InvestInfo investInfo) { _investInfo = investInfo; DialogTitle = "투자 정보 변경"; EnterCommand = new CommandBase(EnterCommandExecute, EnterCommandCanExecute); }
public void RecordTransfer(InvestInfo investInfo, TradeRecord record) { var targetItem = investInfo.HoldingAssets.Where(x => x.AssetName.Equals(record.ItemName)); if (targetItem.Count() == 0) { Messenger.Instance.Send("보유 코인이 없습니다.", Context.WRITE_LOG); return; } if (targetItem.First().AssetName.Equals("WON")) { Messenger.Instance.Send("원화는 송금할 수 없습니다.", Context.WRITE_LOG); return; } if (targetItem.First().Amount < record.AbsoluteFee + (record.Amount * (record.RelativeFee * 0.01))) { Messenger.Instance.Send("코인이 부족합니다.", Context.WRITE_LOG); return; } targetItem.First().Amount -= record.AbsoluteFee + (record.Amount * (record.RelativeFee * 0.01)); Messenger.Instance.Send("송금 완료", Context.WRITE_LOG); }
public OutputDetailViewModel(InvestInfo investInfo) { InvestInfo = investInfo; _tradeManager = new TradeManager(); TradeRecordDeleteButton = new CommandBase(TradeRecordDeleteButtonExecute); }
public void Delete(InvestInfo investInfo, IEnumerable <TradeRecord> records) { var recordsArray = records.ToArray(); for (int i = 0; i < recordsArray.Length; i++) { Delete(investInfo, recordsArray[i]); } }
public DataInputViewModel(InvestInfo investInfo) { InvestInfo = investInfo; Messenger.Instance.Register <TradeType>(this, OnTradeTypeChanged, Context.TRADETYPE_CHANGED); EnterCommand = new CommandBase(EnterCommandExecute, EnterCommandCanExecute); _tradeManager = new TradeManager(); ConnectWebAPIs(); }
public void DeleteDeposit(InvestInfo investInfo, TradeRecord record) { var targetItem = investInfo.HoldingAssets.Where(x => x.AssetName.Equals(record.ItemName)); targetItem.First().Amount -= record.Amount; if (targetItem.First().Amount == 0) { investInfo.HoldingAssets.Remove(targetItem.First()); } }
public DataInputButtonsViewModel(InvestInfo investInfo) { InvestInfo = investInfo; Messenger.Instance.Register <TradeType>(this, SetButtonStates, Context.TRADETYPE_CHANGED); DepositCommand = new CommandBase(x => InvestInfo.CurrentTradeType = TradeType.DEPOSIT); WithdrawalCommand = new CommandBase(x => InvestInfo.CurrentTradeType = TradeType.WITHDRAWAL); TransferCommand = new CommandBase(x => InvestInfo.CurrentTradeType = TradeType.TRANSFER); BuyCommand = new CommandBase(x => InvestInfo.CurrentTradeType = TradeType.BUY); SellCommand = new CommandBase(x => InvestInfo.CurrentTradeType = TradeType.SELL); ReviseCommand = new CommandBase(CallReviseInvestInfoWindow); }
/// <summary> ///投资按钮状态 /// </summary> /// <param name="item"></param> /// <param name="btnInvest"></param> /// <param name="state"></param> void UpdataState(InvestInfo item, Button btnInvest, int state, string investId) { switch (state) { case 700: btnInvest.transform.Find("Text").GetComponent <Text>().text = LanguageService.Instance.GetStringByKey("700", String.Empty); btnInvest.interactable = true; if (btnInvest.IsInvoking()) { btnInvest.onClick.RemoveAllListeners(); } btnInvest.onClick.AddListener(() => { Dispatch(AreaCode.NET, ReqEventType.invest_req, investId); btnInvest.interactable = false; }); break; case 701: btnInvest.transform.Find("Text").GetComponent <Text>().text = LanguageService.Instance.GetStringByKey("701", String.Empty); btnInvest.interactable = false; break; case 702: btnInvest.transform.Find("Text").GetComponent <Text>().text = LanguageService.Instance.GetStringByKey("702", String.Empty); btnInvest.interactable = false; break; case 703: btnInvest.transform.Find("Text").GetComponent <Text>().text = LanguageService.Instance.GetStringByKey("703", String.Empty); btnInvest.interactable = true; if (btnInvest.IsInvoking()) { btnInvest.onClick.RemoveAllListeners(); } btnInvest.onClick.AddListener(() => { Dispatch(AreaCode.NET, ReqEventType.Extract, investId); btnInvest.interactable = false; }); break; } }
public void LoadNewInterface(InvestInfo loadedFile) { if (loadedFile == null) { return; } Reset(null); InvestInfo = loadedFile.Run(); Grid00 = new DataInputButtonsViewModel(InvestInfo); Grid01 = new OutputSummaryViewModel(InvestInfo); Grid10 = new DataInputViewModel(InvestInfo); Grid11 = new OutputDetailViewModel(InvestInfo); }
public void RecordDeposit(InvestInfo investInfo, TradeRecord record) { var targetItem = investInfo.HoldingAssets.Where(x => x.AssetName.Equals(record.ItemName)); if (targetItem.Count() == 0) { investInfo.HoldingAssets.Add(new HoldingAsset(record.ItemName, record.Amount, record.UnitPrice)); } else { targetItem.First().Amount += record.Amount; } Messenger.Instance.Send("입금 완료", Context.WRITE_LOG); }
public void DeleteSell(InvestInfo investInfo, TradeRecord record) { var targetItem = investInfo.HoldingAssets.Where(x => x.AssetName.Equals(record.ItemName)); var capital = investInfo.HoldingAssets.Where(x => x.AssetName.Equals("WON")); if (targetItem.Count() == 0) { investInfo.HoldingAssets.Add(new HoldingAsset(record.ItemName, record.Amount, record.UnitPrice)); } else { targetItem.First().Amount += record.Amount; } double sellCost = (record.Amount * record.UnitPrice) * (1 - record.RelativeFee * 0.01) - record.AbsoluteFee; capital.First().Amount -= sellCost; }
public void RecordSell(InvestInfo investInfo, TradeRecord record) { var capital = investInfo.HoldingAssets.Where(x => x.AssetName.Equals("WON")); var targetItem = investInfo.HoldingAssets.Where(x => x.AssetName.Equals(record.ItemName)); if (targetItem.Count() == 0) { Messenger.Instance.Send("보유 코인이 없습니다.", Context.WRITE_LOG); return; } if (targetItem.First().AssetName.Equals("WON")) { Messenger.Instance.Send("원화는 매도할 수 없습니다.", Context.WRITE_LOG); return; } if (targetItem.First().Amount < record.Amount) { Messenger.Instance.Send("코인이 부족합니다.", Context.WRITE_LOG); return; } targetItem.First().Amount -= record.Amount; if (targetItem.First().Amount == 0 || targetItem.First().Amount < 0.00000001f) { investInfo.HoldingAssets.Remove(targetItem.First()); } double sellCost = (record.Amount * record.UnitPrice) * (1 - record.RelativeFee * 0.01) - record.AbsoluteFee; if (capital.Count() == 0) { investInfo.HoldingAssets.Add(new HoldingAsset("WON", sellCost, 0)); } else { capital.First().Amount += sellCost; } Messenger.Instance.Send("매도 완료", Context.WRITE_LOG); }
public void RecordBuy(InvestInfo investInfo, TradeRecord record) { var capital = investInfo.HoldingAssets.Where(x => x.AssetName.Equals("WON")); var targetItem = investInfo.HoldingAssets.Where(x => x.AssetName.Equals(record.ItemName)); if (capital.Count() == 0) { Messenger.Instance.Send("원화를 가지고 있지 않습니다.", Context.WRITE_LOG); return; } if (record.ItemName.Equals("WON")) { Messenger.Instance.Send("원화는 매수할 수 없습니다.", Context.WRITE_LOG); return; } double buyCost = (record.Amount * record.UnitPrice) * (1 + record.RelativeFee * 0.01); double buyAmount = record.Amount - record.AbsoluteFee; if (capital.First().Amount < buyCost) { Messenger.Instance.Send("원화가 부족합니다.", Context.WRITE_LOG); return; } if (targetItem.Count() == 0) { investInfo.HoldingAssets.Add(new HoldingAsset(record.ItemName, buyAmount, record.UnitPrice)); } else { var newAmount = targetItem.First().Amount + buyAmount; var newBuyPrice = targetItem.First().BuyPrice + (buyAmount * record.UnitPrice); targetItem.First().Amount = newAmount; targetItem.First().BuyUnitPrice = newAmount != 0 ? newBuyPrice / newAmount : 0; } capital.First().Amount -= buyCost; Messenger.Instance.Send("매수 완료", Context.WRITE_LOG); }
public void DeleteBuy(InvestInfo investInfo, TradeRecord record) { var targetItem = investInfo.HoldingAssets.Where(x => x.AssetName.Equals(record.ItemName)); var capital = investInfo.HoldingAssets.Where(x => x.AssetName.Equals("WON")); var newAmount = targetItem.First().Amount - (record.Amount - record.AbsoluteFee); var newBuyPrice = targetItem.First().BuyPrice - ((record.Amount - record.AbsoluteFee) * record.UnitPrice); if (newAmount == 0) { investInfo.HoldingAssets.Remove(targetItem.First()); } else { targetItem.First().Amount = newAmount; targetItem.First().BuyUnitPrice = newBuyPrice / newAmount; } double buyCost = (record.Amount * record.UnitPrice) * (1 + record.RelativeFee * 0.01); capital.First().Amount += buyCost; }
public void RecordWithdrawal(InvestInfo investInfo, TradeRecord record) { var capital = investInfo.HoldingAssets.Where(x => x.AssetName.Equals("WON")); if (capital.Count() == 0) { Messenger.Instance.Send("원화를 가지고 있지 않습니다.", Context.WRITE_LOG); return; } double withdrawalCost = record.Amount * (1 + record.RelativeFee * 0.01) + record.AbsoluteFee; if (capital.First().Amount < withdrawalCost) { Messenger.Instance.Send("원화가 부족합니다.", Context.WRITE_LOG); } else { capital.First().Amount -= withdrawalCost; Messenger.Instance.Send("출금 완료", Context.WRITE_LOG); } }
public void StartWithNewModel(string title, double principal) { InvestInfo investInfo = new InvestInfo(title, principal); LoadNewInterface(investInfo); }
public void Delete(InvestInfo investInfo, TradeRecord record) { _deleteProcessDictionary[record.TradeType].Invoke(investInfo, record); investInfo.TradeRecords.Remove(record); }
public void DeleteTransfer(InvestInfo investInfo, TradeRecord record) { var targetItem = investInfo.HoldingAssets.Where(x => x.AssetName.Equals(record.ItemName)); targetItem.First().Amount += record.AbsoluteFee + (record.Amount * (record.RelativeFee * 0.01)); }
public void Record(InvestInfo investInfo, TradeRecord record) { investInfo.TradeRecords.Add(record); _recordProcessDictionary[record.TradeType].Invoke(investInfo, record); }
public OutputSummaryViewModel(InvestInfo investInfo) { InvestInfo = investInfo; Messenger.Instance.Register <bool>(this, CalculateCurrentCapital, Context.EVALUATE_CAPITAL); }