public IEnumerable <TripDto> GetAllTrips() { var context = new s19743Context(); var trips = context.Trips .Select(CreateNewTripDto()) .OrderByDescending(dto => dto.DateFrom) .ToList(); return(trips); }
private static Client AddNewClient(TripRegistrationDto registration, s19743Context context) { Client client; client = new Client { IdClient = context.Clients.Max(c => c.IdClient) + 1, FirstName = registration.FirstName, LastName = registration.LastName, Email = registration.Email, Telephone = registration.Telephone, Pesel = registration.Pesel, ClientTrips = new HashSet <ClientTrip>() }; context.Clients.Add(client); return(client); }
public void DeleteClient(int idClient) { var context = new s19743Context(); var client = context.Clients.SingleOrDefault(dbClient => dbClient.IdClient == idClient); if (client == null) { throw new ClientNotFoundException(idClient); } var clientHasTrips = context.ClientTrips.Any(trip => trip.IdClient == idClient); if (clientHasTrips) { throw new ClientHasTripsException(idClient); } context.Clients.Remove(client); context.SaveChanges(); }
public void RegisterClientOnTrip(TripRegistrationDto registration) { var context = new s19743Context(); var client = context.Clients.SingleOrDefault(c => c.Pesel == registration.Pesel) ?? AddNewClient(registration, context); if (IsClientAlreadySigned(registration, client, context)) { throw new TripException("Client is already signed on a trip."); } if (TripDoesntExist(registration, context)) { throw new TripException("Trip doesn't exist."); } var clientTrip = CreateClientTripFromRequest(registration, client); context.ClientTrips.Add(clientTrip); context.SaveChanges(); }
private static bool IsClientAlreadySigned(TripRegistrationDto registration, Client client, s19743Context context) { return(context.ClientTrips.Any(trip => trip.IdClient == client.IdClient && trip.IdTrip == registration.IdTrip)); }
private static bool TripDoesntExist(TripRegistrationDto registration, s19743Context context) { return(!context.Trips.Any(t => t.IdTrip == registration.IdTrip)); }