public IActionResult Index(CurrencyConversionViewModel resultModel) { if (resultModel.AmountToConvert < 0 || resultModel.AmountToConvert >= decimal.MaxValue) { ModelState.AddModelError("InvalidInput", "Invalid value to convert"); } else if (resultModel.SelectedFromCurrencyId == resultModel.SelectedToCurrencyId) { ModelState.AddModelError("SameCurrencies", "Currencies to convert cannot be the same"); } else { int selectedFromCurrencyId = resultModel.SelectedFromCurrencyId; int selectedToCurrencyId = resultModel.SelectedToCurrencyId; Currency fromCurrency = GetCurrencyFromId(resultModel.Currencies, selectedFromCurrencyId); Currency toCurrency = GetCurrencyFromId(resultModel.Currencies, selectedToCurrencyId); decimal conversionResult = Convert(fromCurrency, toCurrency, resultModel.AmountToConvert); resultModel.ConvertedResult = conversionResult; AddConversionToDatabase(fromCurrency, toCurrency, resultModel, conversionResult); } return(View(resultModel)); }
public JsonResult ResetToDefault(CurrencyConversionViewModel res) { BusinessLibrary.Library.CurrencyConversionLibrary ccLib = new BusinessLibrary.Library.CurrencyConversionLibrary(Helpers.AuthenticationHelper.GetSession(System.Web.HttpContext.Current)); CurrencyConversionViewModel ccvModel = ccLib.GetCurrencyConversion(); return(Json(ccLib.GetCurrencyConversion(), JsonRequestBehavior.AllowGet)); }
public JsonResult ToValueChanged(CurrencyConversionViewModel res) { Session session = Helpers.AuthenticationHelper.GetSession(System.Web.HttpContext.Current); BusinessLibrary.Library.CurrencyConversionLibrary ccLib = new BusinessLibrary.Library.CurrencyConversionLibrary(session, res, true); return(Json(ccLib.GetCurrencyConversion(), JsonRequestBehavior.AllowGet)); }
public async Task <ModelStateDictionary> ValidateConvertUserCurrency(CurrencyConversionViewModel model, Account sender, ModelStateDictionary ModelState, User user) { EmployeeAccount Limit = accountService.FindEmployeeAccountByUserIdAndAccountId(user.Id, model.AccountSenderId); Account receiverAccount = accountService.FindAccountById(model.AccountReceiverId).Result; Account senderAccount = accountService.FindAccountById(model.AccountSenderId).Result; decimal amountSend = 0; if (senderAccount == null) { ModelState.AddModelError("AccountSenderId", localizer["AccountSenderIdValidation"]); } else if (receiverAccount == null) { ModelState.AddModelError("AccountReceiverId", localizer["AccountReceiverIdValidation"]); } else { if (sender.Locked) { ModelState.AddModelError("AccountSenderId", "*Счет заблокирован"); } else if (!await accountService.IsAccountExist(receiverAccount.Number)) { ModelState.AddModelError("AccountReceiverId", localizer["ReceiverAccountNumberExistVlidation"]); } else if (!await accountService.IsAccountSenderNotReceiver(receiverAccount.Number, user)) { ModelState.AddModelError("AccountSenderId", localizer["IsAccountSenderNotReceiverValidation"]); } else if (senderAccount.Id == receiverAccount.Id) { ModelState.AddModelError("AccountSenderId", localizer["AccountReceiverValidation"]); } else if (!await accountService.IsUserHaveRightsOnAccount(user, senderAccount.Id)) { ModelState.AddModelError("AccountSenderId", localizer["SenderRightsValidation"]); } if (!accountService.AmountTryParse(model.AmountSend, out amountSend)) { ModelState.AddModelError("AmountSend", localizer["AmountFormatValidation"]); } else if (amountSend <= 0) { ModelState.AddModelError("AmountSend", localizer["AmountNotNull"]); } else if (!await accountService.IsBalanceEnough(senderAccount.Id, amountSend)) { ModelState.AddModelError("AmountSend", localizer["IsBalanceEnoughValidation"]); } else if (Limit.limit.LimitAmount < amountSend) { ModelState.AddModelError("AmountSend", string.Format("{0} {1}", localizer["ExceededTheLimit"], Limit.limit.LimitAmount)); } } return(ModelState); }
public CurrencyConversionLibrary(Session currentSession, CurrencyConversionViewModel ccModel, bool updateReversed) { this.SetDefaults(currentSession); this.Currencies = new CurrencyLibrary(); this.ValueFrom = ccModel.ValueFrom; this.ValueTo = ccModel.ValueTo; this.ChangeCurrencyRates(ccModel.CurrencyFrom.ID, ccModel.CurrencyTo.ID, updateReversed); }
// GET: ConversionCalculator public ActionResult Index() { Session session = Helpers.AuthenticationHelper.GetSession(System.Web.HttpContext.Current); BusinessLibrary.Library.CurrencyConversionLibrary ccLib = new BusinessLibrary.Library.CurrencyConversionLibrary(session); CurrencyConversionViewModel ccvModel = ccLib.GetCurrencyConversion(); return(View("ConversionCalculator", ccvModel)); }
public async Task <IActionResult> ConvertUserCurrency() { string userName = String.Empty; int userId = 0; User user = userService.FindUserByName(User.Identity.Name); UserInfo userInfo = userService.FindUserByIdInUserInfo(user.Id, ref userName, ref userId); EmployeeInfo employeeInfo = userService.FindUserByIdInCompany(user.Id, ref userName, ref userId); CurrencyConversionViewModel currencyConversion = new CurrencyConversionViewModel(); if (userInfo != null) { currencyConversion.UserAccounts = selectListService.GetUserAccounts(userInfo.Id); } if (employeeInfo != null) { currencyConversion.UserAccounts = selectListService.GetEmployeeAccounts(employeeInfo.Id); } return(View(currencyConversion)); }
public async Task <IActionResult> ConvertUserCurrency(CurrencyConversionViewModel model) { User user = userService.FindUserByName(User.Identity.Name); Account sender = accountService.FindAccountById(model.AccountSenderId).Result; decimal amountSend = 0; accountService.AmountTryParse(model.AmountSend, out amountSend); await validationService.ValidateConvertUserCurrency(model, sender, ModelState, user); if (ModelState.IsValid) { Account receiver = accountService.FindAccountById(model.AccountReceiverId).Result; decimal amountReceive = 0; accountService.AmountTryParse(model.AmountReceive, out amountReceive); List <ExchangeRate> exchangeRateList = exchangeRateService.GetLastExchangeRatesByDate().ToList(); ExchangeRate exchangeRate = exchangeRateList.FirstOrDefault(r => r.CurrencyId == receiver.CurrencyId); ExchangeRate exchangeRateSecond = exchangeRateList.FirstOrDefault(r => r.CurrencyId == sender.CurrencyId); if (exchangeRate == null) { exchangeRate = exchangeRateList.FirstOrDefault(u => u.CurrencyId == sender.CurrencyId); } if (exchangeRateSecond == null) { exchangeRateSecond = exchangeRateList.FirstOrDefault(u => u.CurrencyId == receiver.CurrencyId); } int exchangeRateId = exchangeRate.Id; int exchangeRateIdSecond = exchangeRateSecond.Id; InnerTransfer transfer = await transferService.CreateInnerTransfer(sender, receiver, amountSend, "конвертация", amountReceive, exchangeRateId, exchangeRateIdSecond); transferService.AddTransfer(transfer); ViewBag.successMessage = localizer["ConversionWasSuccessful"]; ConvertConversionToDocViewModel docModel = new ConvertConversionToDocViewModel() { Date = DateTime.Now.ToString(), AccountFromNumber = sender.Number, CurrencyFromName = sender.Currency.Name, AmountSend = amountSend.ToString(), AccountToNumber = receiver.Number, CurrencyToName = receiver.Currency.Name, AmountReceive = amountReceive.ToString(), CurrencyFromRate = exchangeRate.RateForSale.ToString(), CurrencyToRate = exchangeRateSecond.RateForPurchaise.ToString() }; _docmodel = docModel; PdfPTable table = createPdFandLoad.TableForConvertion(docModel); string name = createPdFandLoad.CreatePDF(table); ViewBag.FileName = name; } string userName = String.Empty; int userId = 0; UserInfo userInfo = userService.FindUserByIdInUserInfo(user.Id, ref userName, ref userId); EmployeeInfo employeeInfo = userService.FindUserByIdInCompany(user.Id, ref userName, ref userId); if (userInfo != null) { model.UserAccounts = selectListService.GetUserAccounts(userInfo.Id); } if (employeeInfo != null) { model.UserAccounts = selectListService.GetEmployeeAccounts(employeeInfo.Id); } return(View(model)); }
private void AddConversionToDatabase(Currency fromCurrency, Currency toCurrency, CurrencyConversionViewModel resultModel, decimal conversionResult) { Conversion conversion = new Conversion { FromCurrencyName = fromCurrency.Name, ToCurrencyName = toCurrency.Name, AmountConverted = resultModel.AmountToConvert, ConversionResult = conversionResult, DateSubmitted = DateTime.UtcNow.Date }; _context.Add(conversion); _context.SaveChanges(); }
public IActionResult Index() { CurrencyConversionViewModel viewModel = new CurrencyConversionViewModel(); return(View(viewModel)); }