public async Task <ActionResult <UserFlights> > PostFlight([FromRoute] string icao)
        {
            var userId = _getUserId(User);
            var data   = new UserFlights
            {
                User = userId,
                ICAO = icao
            };

            _context.UserFlightTable.Add(data);
            await _context.SaveChangesAsync();

            return(data);
        }
Beispiel #2
0
        public async Task <IActionResult> Book(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }


            // get the current flight and current user
            var currentUser = await ctx.Users.FindAsync(User.FindFirstValue(ClaimTypes.NameIdentifier));

            var currentFlight = await ctx.Flights.FindAsync(id);

            // Create the Booking
            var userFlight = new UserFlights {
                User   = currentUser,
                Flight = currentFlight
            };

            if (userFlight != null)
            {
                ctx.UserFlights.Add(userFlight);  // add the user flight to the db
                --currentFlight.FreeSeats;        // assign the seat as reserved


                // Set the user as overbooked
                if (currentFlight.FreeSeats < 0)
                {
                    var overbookedUser = new OverbookedUser {
                        Flight = currentFlight, Email = currentUser.Email
                    };

                    ctx.OverbookedUsers.Add(overbookedUser);
                }


                await ctx.SaveChangesAsync();     // save changes to db
            }


            return(View(userFlight));
        }
Beispiel #3
0
 public void RemoveFlight(UserFlight userFlight)
 {
     UserFlights.Remove(userFlight);
 }
Beispiel #4
0
 public void AddFlight(UserFlight userFlight)
 {
     UserFlights.Add(userFlight);
 }