private void LogOut() { Application.Current.MainPage = new LoginPage(); RhodeITDB db = new RhodeITDB(); db.LogOut(); }
public async Task <Tuple <bool, string> > AddUserRequestAsync(LoginDetails details) { RhodeITDB db = new RhodeITDB(); AddUserFunction addUserFunction = new AddUserFunction { FromAddress = details.Ethereum_Address, Gas = Variables.gas, Studentno_staff_no = details.User_ID }; string receipt = "0x"; bool exists = await UserExistsRequestAndWaitForReceiptAsync(details.Ethereum_Address).ConfigureAwait(false); if (exists) { db.StoreTransactionReceipt(new Models.TransactionReceipt { Receipt = receipt, Activity = "LoggedIn" }); } else { receipt = await ContractHandler.SendRequestAsync(addUserFunction).ConfigureAwait(false); exists = await UserExistsRequestAndWaitForReceiptAsync(details.Ethereum_Address).ConfigureAwait(false); db.StoreTransactionReceipt(new Models.TransactionReceipt { Receipt = receipt, Activity = "Registered" }); db.UpdateLoginDetails(details); } return(new Tuple <bool, string>(exists, receipt)); }
public async Task <bool> RentBicycleRequestAndWaitForReceiptAsync(Bicycle rental) { RhodeITDB db = new RhodeITDB(); bool rentalResults = false; RentBicycleFunction rentBicycleFunction = new RentBicycleFunction { BicycleId = rental.ID, DockingStation = rental.DockdeAt, FromAddress = rental.renter, Gas = Variables.gas }; try { Nethereum.RPC.Eth.DTOs.TransactionReceipt transactionReceipt = await ContractHandler.SendRequestAndWaitForReceiptAsync(rentBicycleFunction, null).ConfigureAwait(false); db.StoreTransactionReceipt(new Models.TransactionReceipt { Receipt = transactionReceipt.TransactionHash, Activity = "Rented out bicycle" }); db.StoreUserRide(new Ride { ID = rental.ID, StationName = rental.DockdeAt, Docked = rental.Status, TransactionReceipt = transactionReceipt.TransactionHash }); rentalResults = await UnlockBicycleAsync(rental).ConfigureAwait(false); } catch (Exception e) { Console.WriteLine("Something went wrong bicycle rental: " + e.Message); return(rentalResults); } return(rentalResults); }
/// <summary> /// @dev function that allows user to login this function also adds users to the smartcontracts storage users dont not need to register university credentials will be sufficient /// </summary> /// <param name="studentNo">student number</param> /// <param name="password">password</param> /// <returns>if the login was succefull or not</returns> public async Task RegisterStudent(LoginDetails details) { rhodeITDB = new RhodeITDB(); details.User_ID = details.User_ID.ToLower(); string Thash = ""; Tuple <bool, string> results = await SmartContractFunctions.AddUserRequestAsync(details).ConfigureAwait(false); Thash = results.Item2; details.TransactionHash = Thash; rhodeITDB.UpdateLoginDetails(details); }
public async Task <GetDockingStationOutputDTO> GetDockingStationQueryAsync() { LoginDetails details = new RhodeITDB().GetUserDetails(); GetDockingStationFunction getDockingStationFunction = new GetDockingStationFunction { Gas = Variables.gas, FromAddress = details.Ethereum_Address }; GetDockingStationOutputDTO stationDetails = await ContractHandler.QueryDeserializingToObjectAsync <GetDockingStationFunction, GetDockingStationOutputDTO>(getDockingStationFunction, null).ConfigureAwait(false); return(stationDetails); }
public async Task <List <string> > GetRegisteredDockingStationKeysQueryAsync() { LoginDetails details = new RhodeITDB().GetUserDetails(); GetRegisteredDockingStationKeysFunction getRegisteredDockingStationKeysFunction = new GetRegisteredDockingStationKeysFunction { FromAddress = details.Ethereum_Address, Gas = Variables.gas }; List <string> keys = await ContractHandler.QueryAsync <GetRegisteredDockingStationKeysFunction, List <string> >(getRegisteredDockingStationKeysFunction, null).ConfigureAwait(false); return(keys); }
public MainMenuTab() { db = new RhodeITDB(); dets = db.GetUserDetails(); Title = "Welcome " + dets.User_ID; menuViewModel = new MainMenuTabsViewModel(); ToolbarItem logOut = new ToolbarItem { Text = "Logout", Order = ToolbarItemOrder.Primary, Priority = 1 }; ToolbarItems.Add(new ToolbarItem("Logout", null, new Action(() => LogOut()), ToolbarItemOrder.Secondary, CheckPlatform())); Content = menuViewModel.main; }
public void Purchase_Ride_Credits() { RhodeITService rhodeITServices = new RhodeITService(); RhodeITDB db = new RhodeITDB(); IUserDialogs dialog = UserDialogs.Instance; dialog.ShowLoading("Purchasing Ride Credits..."); try { bool result = int.TryParse(amount.Text, out int rideCredit); if (!result) { throw new InvalidNumberException("Invalid"); } try { if (rideCredit <= 0) { throw new InvalidNumberException(""); } else { Details = db.GetUserDetails(); rhodeITServices.UpdateCreditRequestAsync(Details.Ethereum_Address, rideCredit).ConfigureAwait(false); Details.RideCredits += rideCredit; RhodesDataBase.ChargeUserRideCreditBalanceToAccount(Details).ConfigureAwait(false); db.UpdateLoginDetails(Details); dialog.HideLoading(); dialog.Alert(string.Format("Succesfully recharged ride credits with {0}", rideCredit), "Success", "OK"); } } catch (Exception e) { dialog.HideLoading(); PopupLayout.Dismiss(); Console.WriteLine("Error whilst purcasing credits: " + e.Message); dialog.Alert("Something went wrong whilst purchasing credit", "Insufficient Funds", "OK"); } } catch (InvalidNumberException e) { dialog.HideLoading(); PopupLayout.Dismiss(); Console.WriteLine("Error whilst purcasing credits: " + e.Message); dialog.Alert("Please ensure you entered a valid number e.g. 12", "Invalid Number", "OK"); } }
public App() { Current.Resources.MergedDictionaries.Clear(); Current.Resources.MergedDictionaries.Add(new LightTheme()); XF.Material.Forms.Material.Init(this); Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense(Variables.SyncFusionLicense); RhodeITDB db = new RhodeITDB(); LoginDetails dets = db.GetUserDetails(); if (!string.IsNullOrEmpty(dets.User_ID)) { Current.MainPage = new NavigationPage(new MainMenuTab()); } else { Current.MainPage = new LoginPage(); } }
public async Task <string> UpdateCreditRequestAsync(string address, int amount) { RhodeITDB db = new RhodeITDB(); //@dev only admin is allowed to approve the purchasing of ride credits UpdateCreditFunction updateCreditFunction = new UpdateCreditFunction { FromAddress = Variables.adminAddress, Gas = Variables.gas, AmountToSend = amount, Receipient = address }; string receipt = await ContractHandler.SendRequestAsync(updateCreditFunction).ConfigureAwait(false); db.StoreTransactionReceipt(new Models.TransactionReceipt { Receipt = receipt, Activity = "Purchased Ride Credits" }); return(receipt); }