private User GetUserByUserName(AirportCarpoolDbContext db, string userName) {
     return (from u in db.Users
             where u.UserName == userName
             select u).SingleOrDefault<User>();
 }
        private Movement SaveNewTrip(NewTrip newTrip) {
            var movement = new Movement();
            var db = new AirportCarpoolDbContext();
            db.Entry(movement).State = EntityState.Added;

            var user = GetUserByUserName(db, WebSecurity.CurrentUserName);
            db.Entry(user).State = EntityState.Unchanged;

            movement.User = user;
            Location locationFrom = null;
            if (newTrip.LocationFrom == "Home" && user.Location != null) {
                locationFrom = Location.GetCopy(user.Location);
            } else if (newTrip.LocationFrom == "Schiphol") {
                locationFrom = Location.GetNewSchipholLocation();
            }
            if (locationFrom != null) {
                db.Entry(locationFrom).State = EntityState.Added;
            }
            movement.LocationFrom = locationFrom;

            Location locationTo = null;
            if (newTrip.LocationTo == "Home" && user.Location != null) {
                locationTo = Location.GetCopy(user.Location);
            } else if (newTrip.LocationTo == "Schiphol") {
                locationTo = Location.GetNewSchipholLocation();
            }
            if (locationTo != null) {
                db.Entry(locationTo).State = EntityState.Added;
            }
            movement.LocationTo = locationTo;

            movement.Driver = newTrip.Driver;
            movement.Passenger = newTrip.Passenger;
            movement.Seats = newTrip.Seats;
            movement.Luggage = newTrip.Luggage;
            if (newTrip.Driver) {
                movement.MaxSeats = newTrip.MaxSeats;
                movement.MaxLuggage = newTrip.MaxLuggage;
                movement.MaxKm = newTrip.MaxKm;
            }
            movement.MovementDateTime = newTrip.MovementDate.Add(newTrip.MovementTime.TimeOfDay);
            movement.MovementDateType = newTrip.MovementDateType;

            if (movement.Driver) {
                var carpool = new Carpool();
                carpool.Status = CarpoolStatus.New;
                carpool.MaxKm = newTrip.MaxKm;
                carpool.MaxSeats = newTrip.MaxSeats;
                carpool.MaxLuggage = newTrip.MaxLuggage;
                carpool.Arrival = movement.MovementDateTime;
                db.Entry(carpool).State = EntityState.Added;
                carpool.Movements = new List<Movement>();
                carpool.Movements.Add(movement);
            }

            db.SaveChanges();
            db.Dispose();

            if (newTrip.FlightNumber != "") {
                db = new AirportCarpoolDbContext();
                Flight flight = new Flight {
                    FlightNumber = newTrip.FlightNumber,
                    ArrDep = newTrip.ArrDep,
                    Arrival = newTrip.Arrival,
                    Departure = newTrip.Departure,
                    Date = newTrip.MovementDate,
                    MovementId = movement.MovementId
                };
                db.Entry(flight).State = EntityState.Added;
                db.SaveChanges();
                db.Dispose();
            }

            

            return movement;
        }