예제 #1
0
        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));
        }
예제 #2
0
        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));
        }
예제 #3
0
        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"));
        }
예제 #4
0
        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"));
            }
        }
예제 #5
0
 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"));
 }
예제 #6
0
        public async Task <IActionResult> Index()
        {
            var model = await _games.GetAllObjects();

            return(View(model));
        }