public async Task <IActionResult> SetCategoryAmount(CategoryAmount model)
        {
            var contract = new Contract
            {
                WalletName     = User.GetWalletName(),
                WalletAddress  = User.GetWalletAddress(),
                WalletPassword = model.WalletPassword
            };

            var transaction = await _blockChainApi.SetAmountForCategory(contract, model.Category, model.Amount);

            if (transaction.Success)
            {
                for (var i = 0; i < 2; i++)
                {
                    await Task.Delay(_appConfiguration.Value.AverageBlockTime);

                    var receipt = await _blockChainApi.GetReceipt(transaction.TransactionId);

                    if (receipt.Success)
                    {
                        break;
                    }

                    if (!string.IsNullOrEmpty(receipt.Error))
                    {
                        return(JsonError(receipt.Error));
                    }
                }

                return(JsonSuccess(Constants.CategoryAmountSuccess));
            }

            return(JsonError(Constants.Error));
        }
        public async Task <IActionResult> SubmitApplication(ApplicationViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View("_ApplyModalPartial", model));
            }

            var applicationModel = new Application
            {
                UserId               = User.GetUserId(),
                AverageIncome        = model.AverageIncome,
                Category             = (int)model.Category,
                Status               = (int)Enums.ApplicationStatus.Pending,
                IdentificationNumber = model.IdentificationNumber
            };

            applicationModel.Id = await _userService.CreateApplication(applicationModel);

            if (applicationModel.Id.IsValidGuid())
            {
                var contract = new Contract
                {
                    WalletName     = User.GetWalletName(),
                    WalletPassword = model.WalletPassword,
                    WalletAddress  = User.GetWalletAddress()
                };

                var transaction = await _blockChainApi.SubmitApplication(contract, applicationModel, DateTime.UtcNow.ToUnixTimestamp());

                if (!transaction.Success)
                {
                    return(JsonError(Constants.Error));
                }

                await Task.Delay(_appConfiguration.Value.AverageBlockTime);

                var receipt = await _blockChainApi.GetReceipt(transaction.TransactionId);

                if (receipt.Success)
                {
                    return(JsonSuccess(Constants.ApplicationCreationSuccess));
                }
                return(JsonError(receipt.Error));
            }

            return(JsonError(Constants.ErrorDuringDatabaseOperation));
        }