Exemplo n.º 1
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        public OutputDetailViewModel(InvestInfo investInfo)
        {
            InvestInfo    = investInfo;
            _tradeManager = new TradeManager();

            TradeRecordDeleteButton = new CommandBase(TradeRecordDeleteButtonExecute);
        }
Exemplo n.º 5
0
        public void Delete(InvestInfo investInfo, IEnumerable <TradeRecord> records)
        {
            var recordsArray = records.ToArray();

            for (int i = 0; i < recordsArray.Length; i++)
            {
                Delete(investInfo, recordsArray[i]);
            }
        }
Exemplo n.º 6
0
        public DataInputViewModel(InvestInfo investInfo)
        {
            InvestInfo = investInfo;

            Messenger.Instance.Register <TradeType>(this, OnTradeTypeChanged, Context.TRADETYPE_CHANGED);

            EnterCommand  = new CommandBase(EnterCommandExecute, EnterCommandCanExecute);
            _tradeManager = new TradeManager();

            ConnectWebAPIs();
        }
Exemplo n.º 7
0
        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;
            }
        }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
0
        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;
        }
Exemplo n.º 13
0
        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);
        }
Exemplo n.º 14
0
        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);
        }
Exemplo n.º 15
0
        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;
        }
Exemplo n.º 16
0
        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);
            }
        }
Exemplo n.º 17
0
        public void StartWithNewModel(string title, double principal)
        {
            InvestInfo investInfo = new InvestInfo(title, principal);

            LoadNewInterface(investInfo);
        }
Exemplo n.º 18
0
 public void Delete(InvestInfo investInfo, TradeRecord record)
 {
     _deleteProcessDictionary[record.TradeType].Invoke(investInfo, record);
     investInfo.TradeRecords.Remove(record);
 }
Exemplo n.º 19
0
        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));
        }
Exemplo n.º 20
0
 public void Record(InvestInfo investInfo, TradeRecord record)
 {
     investInfo.TradeRecords.Add(record);
     _recordProcessDictionary[record.TradeType].Invoke(investInfo, record);
 }
Exemplo n.º 21
0
        public OutputSummaryViewModel(InvestInfo investInfo)
        {
            InvestInfo = investInfo;

            Messenger.Instance.Register <bool>(this, CalculateCurrentCapital, Context.EVALUATE_CAPITAL);
        }