public IResult ReceiveMoney(ITransaction earning) { IResult result = new Result(); if (this.Balance.Currency.Name.Equals(CurrencyType.USD)) { earning.Amount.ConvertToUSD(); } else if (this.Balance.Currency.Name.Equals(CurrencyType.EUR .ToString())) { earning.Amount.ConvertToEUR(); } else if (this.Balance.Currency.Name.Equals(CurrencyType.UAH)) { earning.Amount.ConvertToUAH(); } this.Balance.Count += earning.Amount.Count; this.Transactions.Add(earning); result.Success = true; result.Message = string.Format(MessageHolder.GetMessage(MessageType .EarnMoney), this.Name, earning.Amount.GetStrValue(), earning.Name); return(result); }
public IResult ConvertToEUR(IBalance balance) { IResult result = _stateResult.Clone(); result.Success = false; result.Message = MessageHolder.GetMessage(MessageType.AlreadyIn) + this.Name; return(result); }
public static Result GetDefaultResult() { Result result = new Result { Message = MessageHolder.GetMessage(MessageType.Default), Success = false }; return(result); }
public IResult ConvertToUAH(IBalance balance) { UAHBalanceState uah = (UAHBalanceState)StateFactoryHolder .factory.GetBalanceState(CurrencyType.UAH.ToString()); balance.Count = balance.Count * balance.Currency.IndexToDollar / uah.IndexToDollar; balance.Currency = uah; IResult result = _stateResult.Clone(); result.Message = MessageHolder.GetMessage(MessageType.Convert) + uah.Name; result.Success = true; return(result); }
public IResult ConvertToEUR(IBalance balance) { EURBalanceState eur = (EURBalanceState)StateFactoryHolder .factory.GetBalanceState(CurrencyType.EUR.ToString()); balance.Count = balance.Count * balance.Currency.IndexToDollar / eur.IndexToDollar; balance.Currency = eur; IResult result = _stateResult.Clone(); result.Message = MessageHolder.GetMessage(MessageType.Convert) + eur.Name; result.Success = true; return(result); }
public IResult HasMember(IAccount account) { IResult result = Result.GetDefaultResult(); result.Message = string.Format(MessageHolder.GetMessage(MessageType .NotAMember), account.Name); foreach (var fondAccount in this.Members) { if (fondAccount.Equals(account)) { result.Success = true; result.Message = string.Format(MessageHolder .GetMessage(MessageType.FondMember), account.Name); } } return(result); }
public IResult AddMember(IAccount account) { Result result = Result.GetDefaultResult(); if (account != null) { Members.Add(account); result.Success = true; result.Message = MessageHolder.GetMessage(MessageType .AccountAdd) + this.Name; } else { result.Message = MessageHolder.GetMessage(MessageType .CanntAdd) + this.Name; } return(result); }
private IDataResult <double> GetBalanceFromString(string value) { IDataResult <double> result = new DataResult <double>(); double resultData; try { resultData = Convert.ToDouble(value); result.Message = MessageType.Success.ToString(); result.Success = true; result.Data = resultData; } catch { result.Success = false; result.Message = MessageHolder.GetMessage(MessageType .BalanceFieldError); } return(result); }
public IResult MakeContribution(IFond fond, IBalance balance) { IResult result = Result.GetDefaultResult(); if (fond.HasMember(this).Success) { ITransaction accountSpending = new Transaction(); accountSpending.Name = TransactionNameHolder .GetName(TransactionName.FondSpending); accountSpending.Description = string.Format("{0} - {1}", fond.Name, balance.GetStrValue()); accountSpending.Type = new TransactionType(TransactionTypes .Spending.ToString()); accountSpending.Time = DateTime.Now.ToLongTimeString(); accountSpending.Amount = balance; ITransaction fondEarning = new Transaction(); fondEarning.Name = TransactionNameHolder .GetName(TransactionName.AccountContribution); fondEarning.Description = string.Format("{0} - {1}", this.Name, balance.GetStrValue()); fondEarning.Type = new TransactionType(TransactionTypes .Earning.ToString()); fondEarning.Time = DateTime.Now.ToLongTimeString(); fondEarning.Amount = balance; this.SpendMoney(accountSpending); fond.ReceiveMoney(fondEarning); result.Success = true; result.Message = string.Format(MessageHolder .GetMessage(MessageType.MakeContribution), this.Name, fond.Name); } else { result.Message = fond.HasMember(this).Message; } return(result); }
public IResult JoinToFond(IFond fond) { IResult result = Result.GetDefaultResult(); if (fond != null) { Fonds.Add(fond); fond.AddMember(this); result.Success = true; result.Message = string.Format(MessageHolder .GetMessage(MessageType.FondJoin), this.Name, fond.Name); } else { result.Message = string.Format(MessageHolder .GetMessage(MessageType.CanntJoin), fond.Name); } return(result); }
public IResult SpendMoney(ITransaction spending) { if (this.FondBalance.Currency.Name.Equals(CurrencyType.USD)) { spending.Amount.ConvertToUSD(); } else if (this.FondBalance.Currency.Name.Equals(StateFactoryHolder .factory.GetBalanceState(CurrencyType.EUR.ToString()).Name)) { spending.Amount.ConvertToEUR(); } else if (this.FondBalance.Currency.Name.Equals(StateFactoryHolder .factory.GetBalanceState(CurrencyType.UAH.ToString()).Name)) { spending.Amount.ConvertToUAH(); } IResult result = new Result(); result.Success = false; if (this.FondBalance.Count >= spending.Amount.Count) { this.FondBalance.Count -= spending.Amount.Count; this.Transactions.Add(spending); result.Message = string.Format(MessageHolder .GetMessage(MessageType.SpentMoney), this.Name, spending.Amount.GetStrValue(), spending.Name); result.Success = true; } else { result.Message = MessageHolder.GetMessage(MessageType .NotEnoughMoney); } return(result); }
private void Transaction(string transactionType) { try { msgLabel.Hide(); if (AccountHolder.CurrentAccount != null) { ITransaction transaction = new Transaction(); transaction.Name = nameTxtBx.Text; transaction.Description = descriptTxtBx.Text; transaction.Time = DateTime.Now.ToLongTimeString(); if (transactionType.Equals(TransactionTypes.Spending.ToString())) { transaction.Type = new TransactionType(TransactionTypes .Spending.ToString()); } else { transaction.Type = new TransactionType(TransactionTypes .Earning.ToString()); } double cost = 0; if (GetBalanceFromString(costTxtBx.Text).Success == true) { cost = GetBalanceFromString(costTxtBx.Text).Data; } else { msgLabel.Text = GetBalanceFromString(costTxtBx.Text) .Message; throw new Exception(); } IBalanceState currency = null; if (USDChkBx.Checked && !UAHChkBx.Checked && !EURChkBx.Checked) { currency = (USDBalanceState)StateFactoryHolder.factory .GetBalanceState(CurrencyType.USD.ToString()); } else if (!USDChkBx.Checked && UAHChkBx.Checked && !EURChkBx.Checked) { currency = (UAHBalanceState)StateFactoryHolder.factory .GetBalanceState(CurrencyType.UAH.ToString()); } else if (!USDChkBx.Checked && !UAHChkBx.Checked && EURChkBx.Checked) { currency = (EURBalanceState)StateFactoryHolder.factory .GetBalanceState(CurrencyType.EUR.ToString()); } else { msgLabel.Text = MessageHolder.GetMessage(MessageType .MultiplyCheckError); throw new Exception(); } Balance balance = new Balance(cost, currency); transaction.Amount = balance; if (transactionType.Equals(TransactionTypes.Spending.ToString())) { AccountHolder.CurrentAccount.SpendMoney(transaction); } else { AccountHolder.CurrentAccount.ReceiveMoney(transaction); } } } catch (Exception ex) { MessageBox.Show(ex.Message); msgLabel.Show(); } }