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