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