public void PrintTransfers(Dictionary <int, Transfer> transfers, API_User user) { Console.ForegroundColor = ConsoleColor.DarkYellow; Console.WriteLine(@"::::::::::: ::::::::: ::: :::: ::: :::::::: :::::::::: :::::::::: ::::::::: :::::::: "); Console.WriteLine(@" :+: :+: :+: :+: :+: :+:+: :+: :+: :+: :+: :+: :+: :+: :+: :+:"); Console.WriteLine(@" +:+ +:+ +:+ +:+ +:+ :+:+:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ "); Console.WriteLine(@" +#+ +#++:++#: +#++:++#++: +#+ +:+ +#+ +#++:++#++ :#::+::# +#++:++# +#++:++#: +#++:++#++"); Console.WriteLine(@" +#+ +#+ +#+ +#+ +#+ +#+ +#+#+# +#+ +#+ +#+ +#+ +#+ +#+ "); Console.WriteLine(@" #+# #+# #+# #+# #+# #+# #+#+# #+# #+# #+# #+# #+# #+# #+# #+# "); Console.WriteLine(@" ### ### ### ### ### ### #### ######## ### ########## ### ### ######## "); Console.WriteLine(); Console.WriteLine(); Console.ForegroundColor = ConsoleColor.Blue; Console.WriteLine("id from/to name amount"); foreach (KeyValuePair <int, Transfer> t in transfers) { Console.ForegroundColor = ConsoleColor.White; if (t.Value.AccountFrom.AccountId == user.UserId) { Console.WriteLine($"{t.Key} --> {t.Value.ToUsername} ${t.Value.Amount} "); } else { Console.WriteLine($"{t.Key} <-- {t.Value.FromUsername} ${t.Value.Amount} "); } } Console.ForegroundColor = ConsoleColor.Blue; }
public ActionResult Edit(int Id, User user) { try { // TODO: Add update logic here if (Id > 0 && ModelState.IsValid) { user.SysUserID = Id; res = API_User.SaveUser(user); if (res.Status) { return(RedirectToAction("Index")); } else { res.Data = user; return(View(res)); } } else { return(View(res)); } } catch { return(View(res)); } }
public void TransferDetails(Transfer transfer, API_User user) { Console.ForegroundColor = ConsoleColor.White; Console.WriteLine("---"); Console.WriteLine($"ID No. {transfer.TransferID}"); Console.WriteLine($"FROM: {transfer.FromUsername}"); Console.WriteLine($"TO: {transfer.ToUsername}"); if (transfer.TransferTypeID == 1) { Console.WriteLine("TYPE: REQUEST"); } else { Console.WriteLine("TYPE: SEND"); } if (transfer.TransferStatusID == 1) { Console.WriteLine("STATUS: PENDING"); } else if (transfer.TransferStatusID == 2) { Console.WriteLine("STATUS: APPROVED"); } else { Console.WriteLine("STATUS: REJECTED"); } Console.WriteLine($"AMOUNT: ${transfer.Amount}"); Console.WriteLine($"---"); Console.ForegroundColor = ConsoleColor.Blue; }
private MenuOptionResult Login() { API_User user = null; while (user == null) { LoginUser loginUser = new LoginUser(); loginUser.Username = GetString("Username: "******"Login cancelled."); return(MenuOptionResult.WaitAfterMenuSelection); } loginUser.Password = GetPasswordFromConsole("Password: "******"Username or password is not valid."); } } UserService.SetLogin(user); // User is logged in, show the main menu now. return(new MainMenu(api_url).Show()); }
public API_User ActionRegister(Frontend_User f_User) { var context = new API_DBDataContext(ConfigurationManager.ConnectionStrings["Connections string"].ConnectionString); API_User A = new API_User(); A.email = f_User.email; if (context.User.Where(p => p.email == f_User.email).Any()) { throw new Exception(); } else { A.name = f_User.email; A.GenerateAccesToken(); var k = new User { name = A.name, email = f_User.email, password_hash = f_User.password_hash }; context.User.InsertOnSubmit(k); context.User.Context.SubmitChanges(); return(A); } }
public void Run() { //Menu for login and registration while (true) { Console.WriteLine("Welcome to TEnmo!"); Console.WriteLine("1: Login"); Console.WriteLine("2: Register"); Console.WriteLine("3: Exit"); Console.Write("Please choose an option: "); int loginRegister = -1; try { if (!int.TryParse(Console.ReadLine(), out loginRegister)) { Console.WriteLine("Invalid input. Please enter only a number."); } else if (loginRegister == 1) { LoginUser loginUser = PromptForLogin(); API_User user = authService.Login(loginUser); if (user != null) { UserService.SetLogin(user); MenuSelection(); } } else if (loginRegister == 2) { LoginUser registerUser = PromptForLogin(); bool isRegistered = authService.Register(registerUser); if (isRegistered) { Console.WriteLine(""); Console.WriteLine("Registration successful. You can now log in."); } } else if (loginRegister == 3) { Console.WriteLine("Goodbye!"); Environment.Exit(0); } else { Console.WriteLine("Invalid selection."); } } catch (Exception ex) { Console.WriteLine("Error - " + ex.Message); } } }
public ActionResult Create(User user) { try { if (ModelState.IsValid) { // TODO: Add insert logic here res = API_User.SaveUser(user); if (res.Status) { return(RedirectToAction("Index")); } else { res.Data = user; return(View(res)); } } else { return(View(res)); } } catch { return(View(res)); } }
private MenuOptionResult Login() { LoginUser loginUser = new LoginUser(); API_User user = null; string ApiUrl = "https://localhost:44315/"; while (user == null) { //LoginUser loginUser = new LoginUser(); loginUser.Username = GetString("Username: "******"Login cancelled."); return(MenuOptionResult.WaitAfterMenuSelection); } loginUser.Password = GetPasswordFromConsole("Password: "******"Username or password is not valid."); } } UserService.SetLogin(user); // User is logged in, show the main menu now. return(new MainMenu(ApiUrl).Show()); //TODO UserService maybe add new constructor to menu }
private static void Run() { while (true) { int loginRegister = -1; while (loginRegister != 1 && loginRegister != 2) { Console.Clear(); Console.WriteLine("Welcome to TEnmo!"); Console.WriteLine("1: Login"); Console.WriteLine("2: Register"); Console.WriteLine("0: Exit"); Console.Write("Please choose an option: "); if (!int.TryParse(Console.ReadLine(), out loginRegister)) { Console.WriteLine("Invalid input. Please enter only a number."); } else if (loginRegister == 0) { Environment.Exit(0); } else if (loginRegister == 1) { while (!UserService.IsLoggedIn()) //will keep looping until user is logged in { LoginUser loginUser = consoleService.PromptForLogin(); API_User user = authService.Login(loginUser); if (user != null) { UserService.SetLogin(user); apiService = new ApiService(); } } } else if (loginRegister == 2) { bool isRegistered = false; while (!isRegistered) //will keep looping until user is registered { LoginUser registerUser = consoleService.PromptForLogin(); isRegistered = authService.Register(registerUser); if (isRegistered) { Console.WriteLine(""); Console.WriteLine("Registration successful. You can now log in."); loginRegister = -1; //reset outer loop to allow choice for login } } } else { Console.WriteLine("Invalid selection."); } } MenuSelection(); } }
// GET: QuestionStats public User_Stats GetUserStats(API_User _User) { User_Stats Res = new User_Stats(_User); Res.user_id = _User.id; Res.answers = Res.CollectStats(Res.user_id); return(Res); }
public async Task <MessageReport> User_Login([FromBody] API_User_Login model) { var result = new MessageReport(false, "Có lỗi xảy ra"); try { //Kiểm tra đúng hệ thống //if (model.KeyPass != ApiConfig.Key_System) //{ // result = new MessageReport(false, "Kết nối không hợp lệ"); // return await Task.FromResult(result); //} //Kiểm tra user tồn tại var user = await Task.FromResult(_UserService.GetByUserName(model.Username)); if (user == null) { result = new MessageReport(false, "Tài khoản không tồn tại"); return(await Task.FromResult(result)); } //Kiểm tra khóa if (user.Active == false) { result = new MessageReport(false, "Tài khoản bị khóa"); return(await Task.FromResult(result)); } //Kiểm tra mk var pass = model.Password.PasswordHashed(user.PasswordSalat); if (user.Password != pass) { result = new MessageReport(false, "Mật khẩu không khớp"); return(await Task.FromResult(result)); } //Gán lại var cus = new API_User() { UserId = user.Id, Username = user.Username, Avatar = user.UserAvatar ?? "", Name = user.Name }; var token = ApiHelper.GenerateJSON_MobileToken(user.Id); result = new MessageReport(true, token); } catch (Exception ex) { result = new MessageReport(false, ex.Message); } return(await Task.FromResult(result)); }
public void PrintUsers(List <API_User> names, API_User user) { foreach (API_User name in names) { if (name.Username == user.Username) { continue; } Console.WriteLine($"{name.UserId} || {name.Username}"); } }
private void HandleUserLogin() { while (!UserService.IsLoggedIn) //will keep looping until user is logged in { LoginUser loginUser = consoleService.PromptForLogin(); API_User user = authService.Login(loginUser); if (user != null) { UserService.SetLogin(user); } } }
public ActionResult UsersGridPartial() { res1.DataList = API_User.GetAllUsers().DataList; if (Session[SessionNames.UserLayout] != null) { API_RefOptions.SaveGridLayout(new GridLayout("User", 0, (string)Session[SessionNames.UserLayout])); } else { Session[SessionNames.UserLayout] = API_RefOptions.GetSavedGridLayout("User", 0).ToString(); } return(PartialView("_UsersGridPartial", res1)); }
public void PostUserSubmission(API_User _user, int _question_id, int _answer_id) { var context = new API_DBDataContext(ConfigurationManager.ConnectionStrings["Connections string"].ConnectionString); int answers_id = Convert.ToInt32(context.answers_to_questions.Where(p => p.answer_id == _answer_id).Where(p => p.question_id == _question_id).Select(p => p.Id).FirstOrDefault()); var k = new user_submission { user_id = _user.id, answer_id = answers_id }; context.user_submission.InsertOnSubmit(k); context.user_submission.Context.SubmitChanges(); }
public void RequestTeBucksMenu(List <API_User> users) { bool done = false; while (!done) { int selectedId = PromptForUserID("requesting", "from"); API_User selectedUser = users.Find(u => u.UserId == selectedId); if (selectedId == 0) { done = true; } else if (selectedUser == null) { Console.WriteLine("Please enter a valid selection or 0 to exit/cancel."); done = true; } else { Transfer requestTransfer = new Transfer(); List <Account> ListOfAccounts = accountsAPIService.AccountInfo(); requestTransfer.transferTypeId = 1; requestTransfer.transferStatusId = 1; requestTransfer.accountFrom = ListOfAccounts.Find(a => a.IsLoggedInUser == true).AccountID; requestTransfer.accountTo = ListOfAccounts.Find(a => a.UserID == selectedId).AccountID; if (requestTransfer.accountFrom == requestTransfer.accountTo) { Console.WriteLine("Cannot request money from yourself. Please enter a valid user."); } else { requestTransfer.amount = PromptForMoneyAmount(); if (requestTransfer.amount != 0) { bool transferCreated = transfersAPIService.CreateTransfer(requestTransfer); if (transferCreated) { Console.WriteLine($"Request sent to user {requestTransfer.accountTo} for {requestTransfer.amount} TE Bucks."); } } else { Console.WriteLine("Invalid entry or entered zero for requested amount."); } } done = true; } } }
public void TestGetBalance() { LoginUser user = new LoginUser(); user.Username = "******"; user.Password = "******"; API_User api_user = authService.Login(user); UserService.SetLogin(api_user); decimal?result = accountService.GetBalance(UserService.GetToken()); decimal?expected = 1000; Assert.AreEqual(expected, result); }
public void PrintRequests(Dictionary <int, Transfer> transfers, API_User user) { Console.ForegroundColor = ConsoleColor.DarkYellow; Console.ForegroundColor = ConsoleColor.Blue; Console.WriteLine("id name amount"); foreach (KeyValuePair <int, Transfer> t in transfers) { if (t.Value.TransferStatusID == 1 && t.Value.AccountFrom.AccountId == user.UserId) { Console.ForegroundColor = ConsoleColor.White; Console.WriteLine($"{t.Key} {t.Value.ToUsername} ${t.Value.Amount} "); } } Console.ForegroundColor = ConsoleColor.Blue; }
public MainMenu(API_User user) { this.User = user; AddOption("View your current balance", ViewBalance) .AddOption("View your past transfers", ViewTransfers) .AddOption("View your pending requests", ViewRequests) .AddOption("Send TE bucks", SendTEBucks) .AddOption("Request TE bucks", RequestTEBucks) .AddOption("Log in as different user", Logout) .AddOption("Exit", Exit); Configure(cfg => { cfg.ItemForegroundColor = ConsoleColor.Blue; cfg.SelectedItemForegroundColor = ConsoleColor.White; }); }
private void HandleUserLogin() { while (!UserService.IsLoggedIn) //will keep looping until user is logged in { Console.Clear(); Console.WriteLine(); Console.WriteLine("Welcome to TEnmo! Please login:"); Console.WriteLine(); LoginUser loginUser = consoleService.PromptForLogin(); API_User user = authService.Login(loginUser); if (user != null) { UserService.SetLogin(user); this.accountService.UpdateToken(user.Token); Console.Clear(); //will put the method to update token into the service class we create } } }
public API_User ActionLogin(Frontend_User f_User) { var context = new API_DBDataContext(ConfigurationManager.ConnectionStrings["Connections string"].ConnectionString); API_User A = new API_User(); string email = f_User.email; string password_hash = f_User.password_hash; if (context.User.Where(p => p.email == email).Any()) { var _user = context.User.Where(p => p.email == email).FirstOrDefault(); A.id = _user.Id; A.name = _user.name; } if (!A.ValidatePassword(f_User.password_hash)) { throw new Exception(); } else { A.GenerateAccesToken(); } return(A); }
public void Step2_LoginMethod() { // Arrange API_User expected = new API_User { Username = "******", Token = "abcdefgh123456789", Message = null }; Mock <IRestClient> restClient = new Mock <IRestClient>(); restClient.Setup(x => x.Execute <API_User>(It.IsAny <IRestRequest>(), Method.POST)) .Returns(new RestResponse <API_User> { StatusCode = HttpStatusCode.OK, Data = expected, ResponseStatus = ResponseStatus.Completed }); APIService apiService = new APIService(restClient.Object); // Act API_User actual = apiService.Login("test", "test"); // Assert expected.Should().BeEquivalentTo(actual); // Uses FluentAssertions }
public static void SetLogin(API_User u) { user = u; }
// // GET: /User/Edit/5 public ActionResult Edit(int Id) { res = API_User.GetUserAccount(Id); return(View(res)); }
// // GET: /User/Delete/5 public ActionResult Delete(int Id) { res = API_User.RemoveUserAccount(Id); return(RedirectToAction("Index")); }
// // GET: /User/Create public ActionResult Create() { res = new Response <User>(); res = API_User.GetUserAccount(0); return(View(res)); }
private static void MenuSelection() { int menuSelection = -1; while (menuSelection != 0) { Console.WriteLine(""); Console.WriteLine("Welcome to TEnmo! Please make a selection: "); Console.WriteLine("1: View your current balance"); Console.WriteLine("2: View your past transfers"); Console.WriteLine("3: View your pending requests"); Console.WriteLine("4: Send TE bucks"); Console.WriteLine("5: Request TE bucks"); Console.WriteLine("6: Log in as different user"); Console.WriteLine("0: Exit"); Console.WriteLine("---------"); Console.Write("Please choose an option: "); if (!int.TryParse(Console.ReadLine(), out menuSelection)) { Console.WriteLine("Invalid input. Please enter only a number."); } switch (menuSelection) { case 1: loggedInAccount = authService.GetAccount(loggedInUserId); userBalance = loggedInAccount.balance; consoleService.PrintBalance(loggedInAccount); break; case 2: loggedInAccount = authService.GetAccount(loggedInUserId); List <Data.Transfer> pastTransfers = authService.GetPastTransfers(loggedInAccount.accountId); if (pastTransfers != null && pastTransfers.Count > 0) { consoleService.DisplayTransfers(pastTransfers); } Console.WriteLine("Please enter a transfer ID to view details(0 to cancel):"); int userInput = Convert.ToInt32(Console.ReadLine()); { Data.Transfer transfer = authService.GetTransferDetails(userInput); if (transfer != null) { consoleService.DisplayTransferDetails(transfer); } } break; case 3: break; case 4: try { //print users to select recipient List <API_User> users = authService.GetUsers(); consoleService.DisplayUsers(users); //select user Console.WriteLine("Input the UserId of the person who you want to send TEBucks:"); int userId = Convert.ToInt32(Console.ReadLine()); API_User userTo = authService.GetUser(userId); //input amount Console.WriteLine($"Input the amount you want to send to {userTo.Username}:"); decimal amount = Convert.ToDecimal(Console.ReadLine()); //verify amount < account balance amount = consoleService.VerifyAccountBalancePrompt(userBalance, amount, userTo.Username); if (amount < 0) { break; } consoleService.DisplaySendTransfer(amount, userTo.Username); //Confirm transfer is still wanted Console.WriteLine("Confirm Transfer? Y/N"); string response = Console.ReadLine().ToLower(); if (response != "y") { break; } else { //create transfer (transfer contains (userIdFrom, userIdTo, amount, transfer type = 2) Data.Account accountFrom = authService.GetAccount(loggedInUserId); Data.Account accountTo = authService.GetAccount(userTo.UserId); Data.Transfer newTransfer = new Data.Transfer(2, 2, accountFrom.accountId, accountTo.accountId, amount); if (newTransfer != null) { Data.Transfer addedTransfer = authService.CreateTransfer(newTransfer); if (addedTransfer != null) { //receiver balance increased by amount //sender balance decreased by amount accountFrom = authService.UpdateAccount(loggedInUserId, (accountFrom.balance - amount)); accountTo = authService.UpdateAccount(userTo.UserId, (accountTo.balance + amount)); Console.WriteLine("Transfer Completed."); } else { Console.WriteLine("There was a error completing your transfer."); } } } } catch (Exception e) { Console.WriteLine("You entered an invalid Response. Please try again."); } break; case 5: //print users to select user for request //select user //input amount requested (transfer contains (userIdFrom, userIdTo, amount) transfer type = 1 //transferStatus = Pending(1) //userFrom approve/deny request //verify amount < userFrom account balance //reciever balance increased by amount //sender balance decreased by amount //TransferStatus changed to Approved or Rejected break; case 6: Console.WriteLine(""); UserService.SetLogin(new API_User()); //wipe out previous login info Run(); //return to entry point break; case 0: Console.WriteLine("Goodbye!"); Environment.Exit(0); break; default: Console.WriteLine("Please enter a number from the list displayed."); break; } } }
public void NewUserAccountBalanceIs1000() { //Arrange string API_URL_LOGIN = "******"; string API_URL = "https://localhost:44315/accounts"; LoginUser user = new LoginUser(); user.Username = "******"; user.Password = "******"; //string connectionString = "Server=.\\SQLEXPRESS;Database=tenmo;Trusted_Connection=True;"; RestClient client = new RestClient(); // Still Arranging // Login to get credentials RestRequest request = new RestRequest(API_URL_LOGIN); request.AddJsonBody(user); IRestResponse <API_User> response = client.Post <API_User>(request); API_User authenticatedUser = response.Data; client.Authenticator = new JwtAuthenticator(authenticatedUser.Token); // get highest Id request = new RestRequest(API_URL + "/transfers"); IRestResponse <List <API_User> > responseUsers = client.Get <List <API_User> >(request); List <API_User> users = responseUsers.Data; int highestId = 0; foreach (API_User apiUser in users) { if (apiUser.UserId > highestId) { highestId = apiUser.UserId; } } // Register new user highestId++; LoginUser testUser = new LoginUser(); testUser.Username = $"test{highestId}"; testUser.Password = "******"; RestClient registerClient = new RestClient(); RestRequest registerRequest = new RestRequest(API_URL_LOGIN + "/register"); registerRequest.AddJsonBody(testUser); IRestResponse registerResponse = registerClient.Post(registerRequest); // Login with testUser registerRequest = new RestRequest(API_URL_LOGIN); registerRequest.AddJsonBody(testUser); IRestResponse <API_User> loginResponse = registerClient.Post <API_User>(registerRequest); API_User returnTestUser = loginResponse.Data; registerClient.Authenticator = new JwtAuthenticator(returnTestUser.Token); // Act // assert Balance is 1000 registerRequest = new RestRequest(API_URL + "/balance"); IRestResponse <Account> balanceResponse = registerClient.Get <Account>(registerRequest); Account account = balanceResponse.Data; // Assert Assert.AreEqual(1000M, account.Balance); /** * The problem here is that the database is not testable * If I hit the controller with tests, the db is not returned to the same state for testing purposes * Is there a way to override Startup of TenmoServer to tenmotestbd? * We could change appsetting.json to point to testdb * * The tests could also target the existing db using rolled back transactions and performing transfers between known entities * * The process would be like such: * register new client, hold token for authentication, Assert balance, rollback * register two new clients and authenticate each, make transfer, Assert balances, rollback * register three new clients, make a complex transfer, Assert balances, rollback * ... * **/ }
private static void Run() { int loginRegister = -1; while (loginRegister != 1 && loginRegister != 2) { Console.ForegroundColor = ConsoleColor.Blue; Console.Write(@" ██████████████████████████████████████████████████████████████████████████████████████ █████▀▄▄▓████▓▄▄▀███████████████████████████████████████████████████████████████████████ ▐███▀▄█████▌▀█████▄▀███▀ ╙███ ╙ ╙███ ╙` ▀ █████╜ ╙██████▌ ▐██ ██████▀ ▀██████▐▌ ,╗ ▐█▌ ██▌ j██` █████▌ ▐██ █████╝ ██ ▐█████▌▓ ª▀╙ ██ ▓██ ██ ▓██ ██ ▐█ ╔██ ▐████▌ ▐██ ████╜⌐ ,, ╙████▌▓ ,╓▄███ ██▌ ]██ ██▌ ]██ ██ ███ ▐████▌ ▐██ ███▌ ▄████▌ ▐███╒ ▀████▀██▌ ]██ ██▌ ╒██ ███ ██ ██▀ █████▌ ▐███▄▀████████████▀▄█ ██ ███ ██ ▓██ ██ ▐██, ╓██████▌ ▐█████▄▀▀██████▀▀▄████▄,,,,,,╓▄██,,,,,██▌,,,,▐██,,,,,██▌,,,,▐██,,,,,████▄, ,,▄████████▌ ████████▓▓▓▓████████████████████████████████████████████████████████████████████████████ ██████████████████████████████████████████████████████████████████████████████████████ "); Console.ForegroundColor = ConsoleColor.Cyan; Console.WriteLine("\t\t\t\t\t\t\t\tChris McAfee & Juan Leon\n"); Console.WriteLine("Welcome to TEnmo!"); Console.WriteLine("1: Login"); Console.WriteLine("2: Register"); Console.Write("Please choose an option: "); if (!int.TryParse(Console.ReadLine(), out loginRegister)) { Console.WriteLine("Invalid input. Please enter only a number."); } else if (loginRegister == 1) { while (!UserService.IsLoggedIn()) //will keep looping until user is logged in { LoginUser loginUser = consoleService.PromptForLogin(); API_User user = authService.Login(loginUser); if (user != null) { UserService.SetLogin(user); } } } else if (loginRegister == 2) { bool isRegistered = false; while (!isRegistered) //will keep looping until user is registered { LoginUser registerUser = consoleService.PromptForLogin(); isRegistered = authService.Register(registerUser); if (isRegistered) { Console.WriteLine(""); Console.WriteLine("Registration successful. You can now log in."); loginRegister = -1; //reset outer loop to allow choice for login } } } else { Console.WriteLine("Invalid selection."); } } MenuSelection(); }
// GET: Submission public Submission GetUserSubmission(API_User _user) { Submission A = new Submission(_user.id); return(A); }