示例#1
0
        public ActionResult Create([Bind(Include = "ID,IncomingCurrencyCode,OutgoingCurrencyCode,IncomingAmount,Comment")] TransactionHistory transactionHistory)
        {
            decimal buyRate  = rateDB.CurrencyRates.First(entry => entry.CurrencyCode == transactionHistory.IncomingCurrencyCode).BuyRateGEL;
            decimal sellRate = rateDB.CurrencyRates.First(entry => entry.CurrencyCode == transactionHistory.OutgoingCurrencyCode).SellRateGEL;

            // Determine outgoing amount based on incoming amount and exchange rate
            transactionHistory.OutgoingAmount = (int)(transactionHistory.IncomingAmount * buyRate / sellRate);

            // Get codes of rated currencies
            var regList = (from a in regDB.CurrencyRegisters
                           select new { a.CurrencyCode, a.OrderNum }).ToList();
            var rateList = (from a in rateDB.CurrencyRates
                            select a.CurrencyCode).ToList();

            ViewBag.existingCodes = new SelectList((from a in regList
                                                    join b in rateList on a.CurrencyCode equals b
                                                    orderby a.OrderNum
                                                    select a.CurrencyCode).ToList());
            // Make sure that no characters are unicode
            if (transactionHistory.IncomingAmount * sellRate > 3000 && transactionHistory.Comment == null)
            {
                return(View(transactionHistory));
            }
            // Add blank comment if it's null
            if (transactionHistory.Comment == null)
            {
                transactionHistory.Comment = "";
            }
            transactionHistory.TransactionDate = DateTime.Now;
            if (ModelState.IsValid)
            {
                db.TransactionHistories.Add(transactionHistory);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }
            return(View(transactionHistory));
        }