Example #1
0
        public IActionResult Book(UserFlightEditModel model)
        {
            if (ModelState.IsValid)
            {
                var      flight = context.Flights.FirstOrDefault(f => f.FlightId == model.Id);
                var      userId = int.Parse(User.FindFirstValue(ClaimTypes.NameIdentifier));
                var      user   = context.Users.FirstOrDefault(u => u.UserId == userId);
                string[] parts  = new string[2];
                parts = user.PasswordHashCode.Split(" : ");
                string salt     = parts[0];
                string password = parts[1];
                string hashed   = Convert.ToBase64String(KeyDerivation.Pbkdf2(
                                                             password: model.Password,
                                                             salt: Encoding.BigEndianUnicode.GetBytes(salt),
                                                             prf: KeyDerivationPrf.HMACSHA1,
                                                             iterationCount: 10000,
                                                             numBytesRequested: 256 / 8));

                if (password.Equals(hashed))
                {
                    if (flight.AvailableTickets > 0)
                    {
                        flight.AvailableTickets--;
                    }
                    else
                    {
                        UserBookViewModel m = new UserBookViewModel()
                        {
                            Flight           = flight,
                            TicketsAvailable = false
                        };
                        return(View(m));
                    }
                    UserFlight newUserFlight = new UserFlight()
                    {
                        UserId   = userId,
                        FlightId = model.Id,
                        User     = user,
                        Flight   = flight
                    };
                    context.UserFlights.Add(newUserFlight);
                    context.SaveChanges();
                    return(RedirectToAction("Flight", "Flights", new { id = model.Id }));
                }
                else
                {
                    UserBookViewModel m = new UserBookViewModel()
                    {
                        Flight            = flight,
                        IncorrectPassword = true,
                    };
                    return(View(m));
                }
            }
            else
            {
                return(RedirectToAction("Index", "Home"));
            }
        }
Example #2
0
            public async Task ReturnsEmptyIfDoesNotExist()
            {
                var user = new User()
                {
                    Email = "*****@*****.**"
                };

                var user2 = new User()
                {
                    Email = "*****@*****.**"
                };

                var flight = new Flight()
                {
                    FlightNo = "BT147"
                };

                var flight2 = new Flight()
                {
                    FlightNo = "BT148"
                };

                var userFlight = new UserFlight()
                {
                    Flight = flight,
                    User   = user,
                };

                var userFlights = new List <UserFlight>()
                {
                    userFlight,
                    new UserFlight()
                    {
                        Flight = flight2,
                        User   = user,
                    },
                };

                await flyItContext.AddRangeAsync(user, user2, flight, flight2);

                await flyItContext.UserFlight.AddRangeAsync(userFlights);

                await flyItContext.SaveChangesAsync();

                var result = await repository.GetUserFlightByIdAsync(user2.Id, flight.Id);

                Assert.IsTrue(result != userFlight);
                Assert.IsNull(result);
            }
Example #3
0
            public async Task CanRemoveUserFlight()
            {
                var user = new User()
                {
                    Email = "*****@*****.**"
                };

                var flight = new Flight()
                {
                    FlightNo = "BT147"
                };

                var flight2 = new Flight()
                {
                    FlightNo = "BT148"
                };

                var userFlight = new UserFlight()
                {
                    Flight = flight,
                    User   = user,
                };

                var userFlights = new List <UserFlight>()
                {
                    userFlight,
                    new UserFlight()
                    {
                        Flight = flight2,
                        User   = user,
                    },
                };

                await flyItContext.AddRangeAsync(user, flight, flight2);

                await flyItContext.UserFlight.AddRangeAsync(userFlights);

                await flyItContext.SaveChangesAsync();

                var databaseBefore = await flyItContext.UserFlight.Where(uf => uf.UserId == user.Id).ToListAsync();

                var result = await repository.RemoveUserFlightAsync(userFlight);

                var databaseAfter = await flyItContext.UserFlight.Where(uf => uf.UserId == user.Id).ToListAsync();

                Assert.IsTrue(databaseBefore.Count == userFlights.Count);
                Assert.IsTrue(databaseAfter.Count != userFlights.Count);
                Assert.IsNotNull(result);
            }
Example #4
0
            public async Task CanReturnUserFlightById()
            {
                var user = new User()
                {
                    Email = "*****@*****.**"
                };

                var flight = new Flight()
                {
                    FlightNo = "BT147"
                };

                var flight2 = new Flight()
                {
                    FlightNo = "BT148"
                };

                var userFlight = new UserFlight()
                {
                    Flight = flight,
                    User   = user,
                };

                var userFlights = new List <UserFlight>()
                {
                    userFlight,
                    new UserFlight()
                    {
                        Flight = flight2,
                        User   = user,
                    },
                };

                await flyItContext.AddRangeAsync(user, flight, flight2);

                await flyItContext.UserFlight.AddRangeAsync(userFlights);

                await flyItContext.SaveChangesAsync();

                var result = await repository.GetUserFlightByIdAsync(user.Id, flight.Id);

                Assert.AreEqual(userFlight, result);
                Assert.IsNotNull(result.Flight);
            }