Ejemplo n.º 1
0
 //mevcut paramıza yeni para eklemeye yarayan metod
 //örneğin Euro olan bir paraya dollar eklenebilir.
 public bool AddMoney(Money money)
 {
     //önce mevcut paranın tl cinsinden tutarı bulunur.
     decimal tlAmount=this.ConvertToMoney(MoneyPattern.MoneyType.TL, 2).amount;
     //daha sonra eklenmek istenen paranın tl cinsinden tutarı bulunur.
     decimal otherTlAmount = money.ConvertToMoney(MoneyPattern.MoneyType.TL, 2).amount;
     //daha sonra bu iki paranın toplamı mevcut sınıfımızın currency değerine çevrilir.
     decimal lastAmount = Math.Round((tlAmount + otherTlAmount) / this.GetMoneyRate(this.moneyType), 2);
     //amoutumuz güncellenir.
     this.amount = lastAmount;
     return true;
 }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            //1000 euro oluşturulur
            Money euroMoney = new Money(MoneyType.Euro, 1000);
            //600 dollar oluşturulu
            Money dollarMoney = new Money(MoneyType.Dollar, 600);

            //1000 euroya 600 doları ekleyelim.
            euroMoney.AddMoney(dollarMoney);

            //eouro muzu gbp ye convert edelim.
            Money gbpMoney=euroMoney.ConvertToMoney(MoneyType.GBP, 2);

            //gbp değerimizi yüzdelerimizi vererek 3 e bölelim
            List<Money> gbpMoneyList=gbpMoney.DivideMoney(3, 30, 40, 30);

            //dolarımız birinci gbp değerinden büyük mü kontrolünü yapalım.
            dollarMoney.isGreaterThan(gbpMoneyList[0]);
        }
Ejemplo n.º 3
0
        //bu metodla paramızı kaça böleceğimizi ve hangi yüzdeyle böleceğimizi veririz.
        public List<Money> DivideMoney(int divideCount, params decimal[] percent)
        {
            //bölünmesini istediğimiz miktar ile parametre ile gelen yüzdeler
            //eşit değilse ve yüzdelerin toplamı yüz etmiyorsa hata fırlat.
            if (divideCount != percent.Count() || percent.Sum(i=>i)!=100)
                throw new Exception("hata");
            List<Money> results = new List<Money>();

            //istenen yüzdeler içerisinde dönülür.
            foreach (var item in percent)
            {
                //her bir yüzde için çarpım değeri hesaplanır.
                decimal temp = item / 100;
                //paranın çarpım değerine göre miktarı hesaplanır.
                decimal newAmount = Math.Round(this.amount * temp, 2);
                //yeni para oluşturulur ve listeye eklenir.
                Money money = new Money(this.moneyType, newAmount);
                results.Add(money);
            }
            //en sonunda para kaybetmememiz için toplam para ile
            //bölünen paraların tamamı birbirinden çıkarılır.
            decimal restAmount = this.amount - results.Sum(i => i.amount);
            //kalan para birinciye eklenir. Bu kısmı kural değil herhangi
            //birine eklenebilirdi.
            results[0].amount += restAmount;
            return results;
        }
Ejemplo n.º 4
0
 //para biriminleri arasında convert işlemlerimizi bu metod vasıtasıyla
 //yapacağız. Sadece çevirmek istediğimiz para birimini hassasiyet bilgisini
 //veriyoruz.
 public Money ConvertToMoney(MoneyType type,int roundSensitive)
 {
     //eğer çevrilmesini istediğimiz tip ile aynı tip ise aynı tipi dönüyoruz.
     if (Enum.Equals(moneyType, type))
         return this;
     else
     {
         //Toplam TL tutar bulundu.
         decimal totalTlValue = this.amount * this.Rate;
         //istenen tipin rate değeri bulunmadı.
         decimal convertRateValue = GetMoneyRate(type);
         //istenen kur tipinden toplam amount miktarı hesaplandı.
         decimal convertAmount = Math.Round(totalTlValue / convertRateValue, roundSensitive);
         //yeni para birimi ve amounta göre paramız oluştuurlur.
         Money returnMoney = new Money(type,convertAmount);
         return returnMoney;
     }
 }
Ejemplo n.º 5
0
 public bool isLessThan(Money money)
 {
     decimal amount = this.ConvertToMoney(MoneyType.TL, 2).amount;
     decimal otherAmount = money.ConvertToMoney(MoneyType.TL, 2).amount;
     decimal div = otherAmount-amount;
     div = div > 0 ? div : -1 * div;
     return div > 0.01M;
 }