Exemple #1
0
        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);
        }
Exemple #2
0
        public IResult ConvertToEUR(IBalance balance)
        {
            IResult result = _stateResult.Clone();

            result.Success = false;
            result.Message = MessageHolder.GetMessage(MessageType.AlreadyIn)
                             + this.Name;
            return(result);
        }
Exemple #3
0
        public static Result GetDefaultResult()
        {
            Result result = new Result
            {
                Message = MessageHolder.GetMessage(MessageType.Default),
                Success = false
            };

            return(result);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        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);
        }
Exemple #7
0
        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);
        }
Exemple #8
0
        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);
        }
Exemple #9
0
        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);
        }
Exemple #10
0
        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);
        }
Exemple #11
0
        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);
        }
Exemple #12
0
        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();
            }
        }