示例#1
0
 private ClientTrip CreateClientTripFromRequest(TripRegistrationDto registration, Client client)
 {
     return(new()
     {
         IdClient = client.IdClient,
         IdTrip = registration.IdTrip,
         PaymentDate = registration.PaymentDate,
         RegisteredAt = DateTime.Now
     });
 }
示例#2
0
        public IActionResult RegisterClientOnTrip(int idTrip, [FromBody] TripRegistrationDto registration)
        {
            registration.IdTrip = idTrip;

            try
            {
                _service.RegisterClientOnTrip(registration);
            }
            catch (TripException e)
            {
                return(BadRequest(e.Message));
            }

            return(Ok());
        }
示例#3
0
        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);
        }
示例#4
0
        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();
        }
示例#5
0
 private static bool IsClientAlreadySigned(TripRegistrationDto registration, Client client,
                                           s19743Context context)
 {
     return(context.ClientTrips.Any(trip =>
                                    trip.IdClient == client.IdClient && trip.IdTrip == registration.IdTrip));
 }
示例#6
0
 private static bool TripDoesntExist(TripRegistrationDto registration, s19743Context context)
 {
     return(!context.Trips.Any(t => t.IdTrip == registration.IdTrip));
 }