public IActionResult DisplayRents() { if (HttpContext.Session.GetString("Username") == null) { TempData["Error"] = "You need to login First!"; return(RedirectToAction("Index", "Game")); } var loggedUser = _users.GetAllObjects().Result.FirstOrDefault(u => u.UserName.Equals(HttpContext.Session.GetString("Username"))); List <RentOrder> rents = _rentOrders.GetAllObjects().Result.Where(r => r.user.Id == loggedUser.Id).ToList(); return(View("MyRents", rents)); }
public IActionResult DisplayRents() { if (GetSessionValue("Username") == null) { SetTempData("Error", "You need to login first!"); return(RedirectToAction("Index", "Game")); } var loggedUser = _users.GetAllObjects().Result.FirstOrDefault(u => u.UserName.Equals(GetSessionValue("Username"))); List <RentOrder> rents = _rentOrders.GetAllObjects().Result.Where(r => r.user.Id == loggedUser.Id).ToList(); return(View("MyRents", rents)); }
public async Task <IActionResult> Return(int id) { RentOrder selectedRent = _rentOrders.GetObjectById(id).Result; if (selectedRent.CurrentRentedDay == DateTime.Today) { TempData["Error"] = "You can't return a game on the same day you rent it!"; return(RedirectToAction("DisplayRents", "Rent")); } Game returnedGame = _games.GetAllObjects().Result.Where(g => g.Name.Equals(selectedRent.GameRented)).FirstOrDefault(); returnedGame.Quantity += 1; var user = _users.GetAllObjects().Result.FirstOrDefault(u => u.UserName.Equals(HttpContext.Session.GetString("Username"))); var selectedRentJson = JsonConvert.SerializeObject(selectedRent, new JsonSerializerSettings() { ReferenceLoopHandling = ReferenceLoopHandling.Ignore } ); await _broker.SendMessage(selectedRentJson, "ReturnToWorker"); var receivedRent = await _broker.ReceiveMessage("ReturnToWeb"); user.Balance += receivedRent.TotalPayment; await _users.Update(user); await _rentOrders.Delete(selectedRent.Id); HttpContext.Session.SetString("Balance", user.Balance.ToString()); return(RedirectToAction("DisplayRents", "Rent")); }
public async Task <IActionResult> Rent(RentViewModel rentView) { // database operations var rentedGame = _games.GetAllObjects().Result.FirstOrDefault(g => g.Name == rentView.RentedGame); var user = _users.GetAllObjects().Result.FirstOrDefault(u => u.UserName.Equals(HttpContext.Session.GetString("Username"))); var gameRented = _games.GetAllObjects().Result.FirstOrDefault(g => g.Name.Equals(rentView.RentedGame)); rentedGame = rentedGame.RentGame(); if (rentedGame == null) { SetTempData("Quantity", "No more products left on stock"); return(View("Index")); } else { await _games.Update(gameRented); } var rent = rentView.Rent; user.RentOrders = new Collection <RentOrder>(); // DDD operations (kind of) rent.GameRented = gameRented.Name; await rent.CreateRentAsync(_broker); user = user.AddRent(rent); if (user == null) { SetTempData("Funds", $"Not enough funds, payment is {rent.TotalPayment}$!"); return(View("Index")); } else { await _rentOrders.Insert(rent); await _users.Update(user); HttpContext.Session.SetString("Balance", Convert.ToString(user.Balance)); return(RedirectToAction("Index", "Game")); } }
public async Task <IActionResult> Login(User user) { if (user.UserName != null && user.Password != null) { User foundUser = _userRepository.GetAllObjects().Result.FirstOrDefault(e => e.UserName == user.UserName); if (foundUser != null && user.Password == foundUser.Password) { HttpContext.Session.SetString("Username", user.UserName); HttpContext.Session.SetString("Balance", Convert.ToString(foundUser.Balance)); return(RedirectToAction("Index", "Game")); } else { TempData["LoginError"] = "Incorrect username or password!"; } } return(RedirectToAction("LoginView")); }
public async Task <IActionResult> Index() { var model = await _games.GetAllObjects(); return(View(model)); }