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));
        }
Example #4
0
        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);
        }
Example #5
0
        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));
        }