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")); } }
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); }
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); }
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); }