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)); }