Ejemplo n.º 1
0
        void AddPassenger(FEPassenger passengerToAdd, int tripId)
        {
            var passenger = new Passenger()
            {
                TripId = tripId,
                UserId = passengerToAdd.UserId
            };

            appDbContext.Passengers.Add(passenger);
        }
Ejemplo n.º 2
0
        List <FEPassenger> preparePassengers(List <Passenger> passengers, List <User> users)
        {
            List <FEPassenger> passengersFE = new List <FEPassenger>();

            foreach (Passenger pass in passengers)
            {
                FEPassenger passToAdd = new FEPassenger
                {
                    UserId   = pass.UserId,
                    TripId   = pass.TripId,
                    FullName = users.SingleOrDefault(user => user.UserId == pass.UserId).FullName
                };
                passengersFE.Add(passToAdd);
            }
            return(passengersFE);
        }
Ejemplo n.º 3
0
        public async Task <FETrip> Update(FETrip newTrip, UpdateTripRequest updateTripRequest)
        {
            var passengers = GetListOfPassengers(newTrip.ID.Value);

            if (updateTripRequest != null)
            {
                if (updateTripRequest.PassengerId != null)
                {
                    if (updateTripRequest.IsLeaving.Value)
                    {
                        var passengerToRemove = newTrip.Passengers.FirstOrDefault(passenger => passenger.UserId == updateTripRequest.PassengerId);
                        newTrip.Passengers.Remove(passengerToRemove);
                        RemovePassenger(passengerToRemove);
                    }
                    else
                    {
                        if (!passengers.Exists(p => p.UserId == updateTripRequest.PassengerId))
                        {
                            if (newTrip.DriverID == updateTripRequest.PassengerId.Value)
                            {
                                throw new InvalidOperationException(ErrorMessages.JoinOwnTrip);
                            }
                            if (newTrip.LeavingDate < DateTime.Now)
                            {
                                throw new InvalidOperationException(ErrorMessages.JoinPastTrip);
                            }
                            if (newTrip.MaxSeats <= passengers.Count)
                            {
                                throw new InvalidOperationException(ErrorMessages.NoAvailableSeatsLeft);
                            }
                            FEPassenger passengerToAdd = new FEPassenger
                            {
                                TripId   = (int)newTrip.ID,
                                UserId   = (int)updateTripRequest.PassengerId,
                                FullName = appDbContext.Users.FirstOrDefault(user => user.UserId == updateTripRequest.PassengerId).FullName
                            };
                            newTrip.Passengers.Add(passengerToAdd);
                            AddPassenger(passengerToAdd, newTrip.ID.Value);
                        }
                    }
                }
            }

            if (newTrip.ID != null)
            {
                int index = (int)newTrip.ID;

                Trip oldTrip = (from t in appDbContext.Trips
                                where t.TripId == index
                                select t).SingleOrDefault();
                Trip updatedTrip = new Trip();
                updatedTrip = oldTrip;
                if (oldTrip != null)
                {
                    UpdateTrip(ref updatedTrip, newTrip);
                    appDbContext.Entry(oldTrip).State     = EntityState.Detached;
                    appDbContext.Entry(updatedTrip).State = EntityState.Modified;
                    await appDbContext.SaveChangesAsync();
                }
                else
                {
                    newTrip = await Create(newTrip);
                }
            }
            else
            {
                newTrip = await Create(newTrip);
            }

            return(newTrip);
        }
Ejemplo n.º 4
0
        void RemovePassenger(FEPassenger passengerToRemove)
        {
            var passenger = appDbContext.Passengers.FirstOrDefault(pass => pass.UserId == passengerToRemove.UserId);

            appDbContext.Passengers.Remove(passenger);
        }