public override void HandleAu3Frame(Frames.MaslAu3Frame au3Frame) { var expectedDir = MaslFrameDirection.Client2Server; if (au3Frame.Direction != expectedDir) { throw new DirectionFlagException(expectedDir); } // 收到AU3,关闭握手计时器。 this.Context.StopHandshakeTimer(); // 验证MAC var actualMac = au3Frame.MAC; var expectedMac = this.Context.AuMessageMacCalculator.CalcAu3MAC(au3Frame, this.Context.RsspEP.LocalID); if (!ArrayHelper.Equals(expectedMac, actualMac)) { throw new MacInAu3Exception(string.Format("Au3消息Mac检验失败,期望值={0},实际值={1}", HelperTools.ConvertToString(expectedMac), HelperTools.ConvertToString(actualMac))); } // 发送AR var arPkt = this.Context.AuMessageBuilder.BuildArPacket(); this.Context.AleConnection.SendUserData(arPkt); // 连接建立。 this.Context.Connected = true; }
private static int Main(string[] args) { if (args.Length != 0) { return((int)ReturnValue.InvalidArgumentCode); } HelperTools.SetupEncoding(); try { foreach (var result in ScriptManager.GetScripts()) { var converted = result.Select(x => new KeyValuePair <string, object>(x.Key, x.Value)).ToList(); Console.WriteLine(HelperTools.KeyValueListToConsoleOutput(converted)); } return((int)ReturnValue.OkCode); } catch (IOException ex) { LogWriter.WriteExceptionToLog(ex); return(HelperTools.HandleHrefMessage(ex)); } catch (Exception ex) { LogWriter.WriteExceptionToLog(ex); return((int)ReturnValue.FunctionFailedCode); } }
public async Task RemovedFromMempoolEventAsync(RemovedFromMempoolEvent e) { if (e.Message.Reason == RemovedFromMempoolMessage.Reasons.CollisionInBlockTx) { var removedTxId = new uint256(e.Message.TxId).ToBytes(); var txWithDSCheck = (await txRepository.GetTxsForDSCheckAsync(new[] { removedTxId }, false)).ToArray(); if (txWithDSCheck.Any()) { // Try to insert the block into DB. If block is already present in DB nothing will be done await blockParser.NewBlockDiscoveredAsync(new NewBlockDiscoveredEvent() { CreationDate = clock.UtcNow(), BlockHash = e.Message.BlockHash }); foreach (var tx in txWithDSCheck) { await txRepository.InsertBlockDoubleSpendAsync( tx.TxInternalId, new uint256(e.Message.BlockHash).ToBytes(), new uint256(e.Message.CollidedWith.TxId).ToBytes(), HelperTools.HexStringToByteArray(e.Message.CollidedWith.Hex)); var notificationEvent = new NewNotificationEvent() { CreationDate = clock.UtcNow(), NotificationType = CallbackReason.DoubleSpend, TransactionId = tx.TxExternalIdBytes }; eventBus.Publish(notificationEvent); } } } }
public static void WriteUpdateList() { var wuaSession = new UpdateSessionClass(); var wuaSearcher = wuaSession.CreateUpdateSearcher(); var wuaSearch = wuaSearcher.Search("IsInstalled=1 and IsPresent=1 and Type='Software'"); var updates = wuaSearch.Updates.OfType <IUpdate>().ToList(); foreach (var update in updates) { var id = update.Identity; var result = HelperTools.KeyValueListToConsoleOutput(new List <KeyValuePair <string, object> > { new KeyValuePair <string, object>(nameof(id.UpdateID), id.UpdateID), new KeyValuePair <string, object>(nameof(id.RevisionNumber), id.RevisionNumber), new KeyValuePair <string, object>(nameof(update.Title), update.Title), new KeyValuePair <string, object>(nameof(update.IsUninstallable), update.IsUninstallable), new KeyValuePair <string, object>(nameof(update.SupportUrl), update.SupportUrl), new KeyValuePair <string, object>(nameof(update.MinDownloadSize), update.MinDownloadSize), new KeyValuePair <string, object>(nameof(update.MaxDownloadSize), update.MaxDownloadSize), new KeyValuePair <string, object>(nameof(update.LastDeploymentChangeTime), update.LastDeploymentChangeTime) }); Console.WriteLine(result); } }
private async Task <(string, string, int)> CreateUnconfirmedAncestorChainAsync(string txHex1, string txId1, int length, int sendToMAPIRate, bool sendLastToMAPI = false, CancellationToken?cancellationToken = null) { var curTxHex = txHex1; var curTxId = txId1; var mapiTxCount = 0; for (int i = 0; i < length; i++) { Transaction.TryParse(curTxHex, Network.RegTest, out Transaction curTx); var curTxCoin = new Coin(curTx, 0); (curTxHex, curTxId) = CreateNewTransaction(curTxCoin, new Money(1000L)); // Submit every sendToMAPIRate tx to mapi with dsCheck if ((sendToMAPIRate != 0 && i % sendToMAPIRate == 0) || (sendLastToMAPI && i == length - 1)) { var payload = await SubmitTransactionAsync(curTxHex, true, true); Assert.AreEqual(payload.ReturnResult, "success"); mapiTxCount++; } else { _ = await node0.RpcClient.SendRawTransactionAsync(HelperTools.HexStringToByteArray(curTxHex), true, false, cancellationToken); } } return(curTxHex, curTxId, mapiTxCount); }
public async Task StoreUnconfirmedParentsOnSubmitTxAsync() { using CancellationTokenSource cts = new(cancellationTimeout); await RegisterNodesWithServiceAndWaitAsync(cts.Token); Assert.AreEqual(1, zmqService.GetActiveSubscriptions().Count()); // Subscribe invalidtx events var invalidTxDetectedSubscription = EventBus.Subscribe <InvalidTxDetectedEvent>(); // Create and submit first transaction var coin = availableCoins.Dequeue(); var(txHex1, txId1) = CreateNewTransaction(coin, new Money(1000L)); var response = await node0.RpcClient.SendRawTransactionAsync(HelperTools.HexStringToByteArray(txHex1), true, false, cts.Token); // Create chain based on first transaction with last transaction being submited to mAPI var(lastTxHex, lastTxId, mapiCount) = await CreateUnconfirmedAncestorChainAsync(txHex1, txId1, 100, 0, true, cts.Token); // Check that first tx is in database long?txInternalId1 = await TxRepositoryPostgres.GetTransactionInternalId((new uint256(txId1)).ToBytes()); Assert.IsTrue(txInternalId1.HasValue); Assert.AreNotEqual(0, txInternalId1.Value); }
public async Task RejectSubmitWithWithParamCNTooBig() { await Nodes.CreateNodeAsync(new Node("node1", 0, "mocked", "mocked", null, null)); await QueryReturnPositiveAsync(); IList <(string, string)> queryParams = new List <(string, string)> { ("txid", txC0Hash), ("ctxid", txC1Hash), ("n", "0"), ("cn", "10") }; var bytes = HelperTools.HexStringToByteArray(txC1Hex); var reqContent = new ByteArrayContent(bytes); reqContent.Headers.ContentType = new MediaTypeHeaderValue(MediaTypeNames.Application.Octet); var response = await Post <string>(PrepareQueryParams(MapiServer.ApiDSSubmit, queryParams), Client, reqContent, HttpStatusCode.BadRequest); var responseString = await response.httpResponse.Content.ReadAsStringAsync(); Assert.IsTrue(responseString.Contains("banned")); Assert.IsTrue(banList.IsHostBanned("localhost")); }
private void button1_Click(object sender, EventArgs e) { //var filePath = string.Empty; //using (OpenFileDialog openFileDialog = new OpenFileDialog()) //{ // openFileDialog.Title = "NAME ME BIATCH"; // openFileDialog.InitialDirectory = "c:\\"; // openFileDialog.Filter = "PNG files (*.png)|*.png|JPEG files (*.jpg)|*.jpg|All files (*.*)|*.*"; // openFileDialog.FilterIndex = 2; // openFileDialog.RestoreDirectory = true; // if (openFileDialog.ShowDialog() == DialogResult.OK) // { // //ADD YOUR CODE HERE // //Get the path of specified file // filePath = openFileDialog.FileName; //Set image here string filepath = HelperTools.LoadFromFile("Hello", "JPEG Files (*.jpg)|*.jpg|", "c:\\"); pictureBox1.Image = Image.FromFile(filepath); // pictureBox1.Size = pictureBox1.Image.; pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage; //File path label1.Text = filepath; // } // else // { // MessageBox.Show("Aaron you numnut...you need to find a file", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); // } //} }
public override void HandleArFrame(Frames.MaslArFrame arFrame) { var expectedDir = MaslFrameDirection.Server2Client; if (arFrame.Direction != expectedDir) { throw new DirectionFlagException(expectedDir); } // 收到AR,关闭握手计时器。 this.Context.StopHandshakeTimer(); // 验证MAC var actualMac = arFrame.MAC; var expectedMac = this.Context.AuMessageMacCalculator.CalcArMAC(arFrame, this.Context.RsspEP.LocalID); if (!ArrayHelper.Equals(expectedMac, actualMac)) { throw new MacInArException(string.Format("Ar消息Mac检验失败,期望值={0},实际值={1}", HelperTools.ConvertToString(expectedMac), HelperTools.ConvertToString(actualMac))); } this.Context.Connected = true; }
private void btnChooseAsset_Click(object sender, EventArgs e) { if (cboProjectType.Text != string.Empty) { HelperTools.LoadFromFile("Upload Project", "ZIP File (*.zip)|*.zip"); } }
public async Task <uint256> InsertMerkleProof() { var blockStream = await RpcClient.GetBlockAsStreamAsync(await RpcClient.GetBestBlockHashAsync()); var firstBlock = HelperTools.ParseByteStreamToBlock(blockStream); var block = firstBlock.CreateNextBlockWithCoinbase(firstBlock.Transactions.First().Outputs.First().ScriptPubKey.GetDestinationPublicKeys().First(), new Money(50, MoneyUnit.MilliBTC), new ConsensusFactory()); var firstBlockHash = firstBlock.GetHash(); var tx = Transaction.Parse(Tx1Hex, Network.Main); block.AddTransaction(tx); tx = Transaction.Parse(Tx2Hex, Network.Main); block.AddTransaction(tx); tx = Transaction.Parse(Tx3Hex, Network.Main); block.AddTransaction(tx); tx = Transaction.Parse(Tx4Hex, Network.Main); block.AddTransaction(tx); tx = Transaction.Parse(Tx5Hex, Network.Main); block.AddTransaction(tx); rpcClientFactoryMock.AddKnownBlock((await RpcClient.GetBlockCountAsync()) + 1, block.ToBytes()); var node = NodeRepository.GetNodes().First(); var rpcClient = rpcClientFactoryMock.Create(node.Host, node.Port, node.Username, node.Password); PublishBlockHashToEventBus(await rpcClient.GetBestBlockHashAsync()); return(firstBlockHash); }
public async Task <PrevTxOutput> GetPrevOutAsync(byte[] prevOutTxId, long prevOutN) { PrevTxOutput foundPrevOut; lock (prevTxOutputCache) { prevTxOutputCache.Cache.TryGetValue($"{HelperTools.ByteToHexString(prevOutTxId)}_{prevOutN}", out foundPrevOut); } if (foundPrevOut == null) { using var connection = GetDbConnection(); string cmdText = @" SELECT tx.txInternalId, tx.txExternalId, txinput.n FROM tx INNER JOIN txinput ON txinput.txInternalId = tx.txInternalId WHERE tx.txExternalId = @prevOutTxId AND txinput.n = @prevOutN; "; foundPrevOut = await connection.QueryFirstOrDefaultAsync <PrevTxOutput>(cmdText, new { prevOutTxId, prevOutN }); if (foundPrevOut != null) { CachePrevOut(foundPrevOut); } } else { logger.LogInformation($"GetPrevOutAsync: prevOut was found in prevTxOutputCache, key={HelperTools.ByteToHexString(prevOutTxId)}_{prevOutN}."); } return(foundPrevOut); }
private void btnChooseAsset_Click(object sender, EventArgs e) { if (cboAssetType.Text != string.Empty) { string filter = string.Empty; switch (cboAssetType.SelectedIndex) { case 0: case 1: filter = "PNG File (*.png)|*.png|JPEG File (*.jpg)|*.jpg"; break; case 2: filter = "GIF File (*.gif)|*.gif"; break; case 3: case 4: filter = "FBX File (*.fbx)|*.fbx|OBJ File (*.obj)|*.obj|Maya File (*.mb)|*.mb|Maya File (*.ma)|*.ma|3ds Max File (*.max)|*.max|Cinema 4D File (*.c4d)|*.c4d"; break; case 5: filter = "WAVE file (*.wav)|*.wav|MP3 File (*.mp3)|*.mp3"; break; } _assetFilePath = HelperTools.LoadFromFile("Upload Asset", filter); _assetUploaded = true; } else { MessageBox.Show("cboAssetType = null"); } }
private static int Main(string[] args) { if (args.Length == 0) { return((int)ReturnValue.InvalidArgumentCode); } HelperTools.SetupEncoding(); if (args.Length == 1 && string.Equals(args[0], @"/query", StringComparison.OrdinalIgnoreCase)) { try { var result = OculusManager.QueryOculusApps(); foreach (var app in result) { Console.WriteLine(HelperTools.ObjectToConsoleOutput(app)); } return((int)ReturnValue.OkCode); } catch (IOException ex) { LogWriter.WriteExceptionToLog(ex); return(HelperTools.HandleHrefMessage(ex)); } }
private async Task <(string, string)> CatchInMempoolDoubleSpendZMQMessage() { using CancellationTokenSource cts = new CancellationTokenSource(cancellationTimeout); await RegisterNodesWithServiceAndWait(cts.Token); Assert.AreEqual(1, zmqService.GetActiveSubscriptions().Count()); // Subscribe invalidtx events var invalidTxDetectedSubscription = eventBus.Subscribe <InvalidTxDetectedEvent>(); // Create two transactions from same input var coin = availableCoins.Dequeue(); var(txHex1, txId1) = CreateNewTransaction(coin, new Money(1000L)); var(txHex2, txId2) = CreateNewTransaction(coin, new Money(500L)); // Transactions should not be the same Assert.AreNotEqual(txHex1, txHex2); // Send first transaction using MAPI var payload = await SubmitTransactionAsync(txHex1); Assert.AreEqual(payload.ReturnResult, "success"); // Send second transaction using RPC try { _ = await node0.RpcClient.SendRawTransactionAsync(HelperTools.HexStringToByteArray(txHex2), true, false, cts.Token); } catch (Exception rpcException) { // Double spend will throw txn-mempool-conflict exception Assert.AreEqual("258: txn-mempool-conflict", rpcException.Message); } // InvalidTx event should be fired var invalidTxEvent = await invalidTxDetectedSubscription.ReadAsync(cts.Token); Assert.AreEqual(InvalidTxRejectionCodes.TxMempoolConflict, invalidTxEvent.Message.RejectionCode); Assert.AreEqual(txId2, invalidTxEvent.Message.TxId); Assert.IsNotNull(invalidTxEvent.Message.CollidedWith, "bitcoind did not return CollidedWith"); Assert.AreEqual(1, invalidTxEvent.Message.CollidedWith.Length); Assert.AreEqual(txId1, invalidTxEvent.Message.CollidedWith[0].TxId); WaitUntilEventBusIsIdle(); // Check if callback was received var calls = Callback.Calls; Assert.AreEqual(1, calls.Length); var callback = HelperTools.JSONDeserialize <JSONEnvelopeViewModelGet>(calls[0].request) .ExtractPayload <CallbackNotificationDoubleSpendViewModel>(); Assert.AreEqual(CallbackReason.DoubleSpendAttempt, callback.CallbackReason); Assert.AreEqual(new uint256(txId1), new uint256(callback.CallbackTxId)); Assert.AreEqual(new uint256(txId2), new uint256(callback.CallbackPayload.DoubleSpendTxId)); return(txHex1, txHex2); }
public MyAssetsPageControl(FormMain form, string message) { InitializeComponent(); formMain = form; DataBaseAccess dataBase = new DataBaseAccess(); dataBase.StartConnection(); if (message == "project") { curUserProjects = dataBase.getOwnedProjectsOfUser((int)formMain.UsersAccounts.GetCurrentUser().GetUserID()); } else if (message == "asset") { curUserAssets = dataBase.getAssetsOfUser((int)formMain.UsersAccounts.GetCurrentUser().GetUserID()); } dataBase.CloseConnection(); if (curUserAssets != null && message == "asset") { HelperTools.CreateAssetButtons(new Point(48, 104), formMain, this, curUserAssets.Count, 5, curUserAssets); } else if (curUserProjects != null && message == "project") { HelperTools.CreateAssetButtons(new Point(48, 104), formMain, this, curUserProjects.Count, 5, null, curUserProjects); } }
public void ResetRace() { if (!Racing) { return; } RacingToggleEvent.Invoke(); StartAreaGameObject.transform.position = originalStartAreaPosition; Racing = false; Finished = false; transform.position = startPos; transform.rotation = startRotation; Camera.main.transform.position = startCameraPos; Camera.main.transform.rotation = startCameraRot; Camera.main.orthographicSize = startCameraSize; Camera.main.transform.SetParent(startCameraParent); RacingWarble.GetComponent <GeneBehaviorController>().enabled = false; RacingWarble.transform.position = startPos; RacingWarble.transform.SetParent(originalWarbleParent); RacingWarble = null; timer.StopTimer(); input.ActiveWarble = null; currentPosition = 0; if (notepadOn) { HelperTools.ToggleOn(NotepadCG); } }
public IEnumerable <KeyValuePair <uint, List <IPEndPoint> > > GetAcceptableClients() { try { if (this.chkAcceptableClients.Checked) { var result = new List <KeyValuePair <uint, List <IPEndPoint> > >(); var splitedText = this.txtAcceptableClients.Text.Trim(). Split(new string[] { ";", ";", "\r\n" }, StringSplitOptions.RemoveEmptyEntries); foreach (var item in splitedText) { var value = HelperTools.ParseIdAndEndPoints(item); result.Add(value); } return(result); } else { return(null); // 空引用表示不指定客户端,即接受所有客户端。 } } catch (System.Exception ex) { MessageBox.Show("无法解析指定的客户端," + ex.Message + "\r\n多个客户端使用半角逗号分隔。", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return(null); } }
private void RunReceiverProcessCallback(object state, CancellationToken token) { buffer = HelperTools.RentBuffer(HelperTools.SIZE_BYTES); Socket socket = (Socket)state; //EndPoint e = new IPEndPoint(IPAddress.Any, networkPort); long time; int n_bytes; while (!cancelToken.IsCancellationRequested) { if (socket != null) { try { n_bytes = socket.Receive(buffer, 0, buffer.Length, SocketFlags.None); time = HelperTools.GetLocalMicrosTime(); if (n_bytes > 0) { // Fire Event DataReadyEvent?.Invoke(networkIp, networkPort, time, buffer, 0, n_bytes, ID, ipChunks); } } catch (Exception ee) { } } } HelperTools.ReturnBuffer(buffer); }
IEnumerator ListenForReturn() { float countdown = 3; float time = 0f; listening = true; while (listening) { var exit = Input.GetAxis("Submit"); if (exit != 0) { HelperTools.ToggleOn(textCG); countdown = Mathf.Ceil(3f - 2f * (Time.time - time)); CountdownText.text = "" + countdown; if (countdown <= 0) { HelperTools.ToggleOff(textCG); yield return(ReturnToTheLab()); } } else { HelperTools.ToggleOff(textCG); time = Time.time; countdown = 3; } yield return(null); } }
private void Start() { GameManager.Instance.GameStateChange.AddListener(StateChange); textCG = CountdownText.GetComponent <CanvasGroup>(); shadeCG = Shade.GetComponent <CanvasGroup>(); HelperTools.ToggleOff(textCG); }
public async Task CatchMempoolAndBlockDoubleSpendMessages() { var txs = await CatchInMempoolDoubleSpendZMQMessage(); var tx1 = HelperTools.ParseBytesToTransaction(HelperTools.HexStringToByteArray(txs.Item1)); var tx2 = HelperTools.ParseBytesToTransaction(HelperTools.HexStringToByteArray(txs.Item2)); var txId1 = tx1.GetHash().ToString(); var txId2 = tx2.GetHash().ToString(); await MineNextBlockAsync(new[] { tx2 }); var mempoolTxs2 = await rpcClient0.GetRawMempool(); // Tx should no longer be in mempool Assert.IsFalse(mempoolTxs2.Contains(txId1), "Submitted tx1 should not be found in mempool"); WaitUntilEventBusIsIdle(); var calls = Callback.Calls; Assert.AreEqual(2, calls.Length); var callbackDS = HelperTools.JSONDeserialize <JSONEnvelopeViewModel>(calls[1].request) .ExtractPayload <CallbackNotificationDoubleSpendViewModel>(); Assert.AreEqual(CallbackReason.DoubleSpend, callbackDS.CallbackReason); Assert.AreEqual(new uint256(txId1), new uint256(callbackDS.CallbackTxId)); Assert.AreEqual(new uint256(txId2), new uint256(callbackDS.CallbackPayload.DoubleSpendTxId)); }
string RefreseHash(string hash) { var array = HelperTools.HexStringToByteArray(hash); Array.Reverse(array); return(HelperTools.ByteToHexString(array)); }
public static void Run() { School school = new School() { Name = "秀尽学院", Number = 0, Student = new Student() { Name = "Joker", Age = 18 } }; Console.WriteLine("--------原始对象"); ShowSchoolInfo(school); Console.WriteLine("\n--------深拷贝方法1:序列化"); School serSchool = HelperTools.SerializableClone(school); serSchool.Name = "序列化 "; serSchool.Number = 1; serSchool.Student.Name = "Skull"; serSchool.Student.Age = 20; ShowSchoolInfo(serSchool); ShowSchoolInfo(school); Console.WriteLine("\n--------深拷贝方法2:新建对象"); School newSchool = (School)school.NewClone(); newSchool.Name = "new对象 "; newSchool.Number = 2; newSchool.Student.Name = "Panther"; newSchool.Student.Age = 22; ShowSchoolInfo(newSchool); ShowSchoolInfo(school); Console.WriteLine("\n--------浅拷贝方法1:属性反射"); School proSchool = HelperTools.PropertyClone(school); proSchool.Name = "反射 "; proSchool.Number = 3; proSchool.Student.Name = "Fox"; proSchool.Student.Age = 21; ShowSchoolInfo(proSchool); ShowSchoolInfo(school); Console.WriteLine("\n--------浅拷贝2:克隆接口"); School cloneSchool = (School)school.Clone(); cloneSchool.Name = "克隆 "; cloneSchool.Number = 4; cloneSchool.Student.Name = "Queen"; cloneSchool.Student.Age = 23; ShowSchoolInfo(cloneSchool); ShowSchoolInfo(school); Console.ReadLine(); }
private void CachePrevOut(PrevTxOutput prevTxOutput) { var cacheEntryOptions = new MemoryCacheEntryOptions() .SetSize(1) .SetSlidingExpiration(TimeSpan.FromMinutes(30)); prevTxOutputCache.Cache.Set <PrevTxOutput>($"{HelperTools.ByteToHexString(prevTxOutput.TxExternalId)}_{prevTxOutput.N}", prevTxOutput, cacheEntryOptions); }
IEnumerator WaitForRaceEnd() { while (OldGM.Instance.Racing) { yield return(new WaitForSeconds(0.1f)); } HelperTools.ToggleOn(cgRandom); }
/// <summary> /// Replaces currently known transactions with a set of new transactions /// </summary> /// <param name="data"></param> public void SetUpTransaction(params string[] data) { transactions.Clear(); foreach (var tx in data) { AddKnownTransaction(HelperTools.HexStringToByteArray(tx)); } }
public ProgressViewModel() { this.tools = new HelperTools(); this.DM = new DirectoryManager(); this.managerIO = new IOManager(); appData = DM.GetAppDataPath("WordLearner"); savedPlace = Path.Combine(appData, "Saves"); }
private void btnUploadThumbnail_Click(object sender, EventArgs e) { string _uploadedPic = HelperTools.LoadFromFile("Choose Image", "PNG File (*.png)|*.png|JPEG File (*.jpg)|*.jpg"); _uploadedPic = HelperTools.AddFileToStorage(_uploadedPic, (int)_curUserProject.GetAuthor().GetUserID(), _curUserProjectID); _thumbNailPic = _uploadedPic; picThumbnail.ImageLocation = _thumbNailPic; }
void Update() { var input = Input.GetAxis("Submit"); if (input != 0f) { HelperTools.ToggleOn(cg); } }
public ActionResult MakeWithDrawal() { ViewBag.Message = "In this form you can fill in the details for making a withdrawal from your Cryptobank account"; HelperTools h = new HelperTools(); ViewBag.BitcoinRate = h.GetConversionRate(); ViewBag.LastUpdated = h.GetLastTimeUpdated(); var model = new DepositWithdrawalInfo(); model.IBAN = loggedInUser.accountnumber; return View(model); }
public ActionResult Dashboard() { if (Session["LoggedUserAccountNumber"] != null) { HelperTools rateOfExchange = new HelperTools(); ViewBag.rate = rateOfExchange.GetConversionRate(); ViewBag.date = rateOfExchange.GetLastTimeUpdated(); return View(loggedInUser); } else { return RedirectToAction("Login"); } }