예제 #1
0
        public async Task Execute(StopBindingModel model)
        {
            var booking = context.Bookings.FirstOrDefault(b => b.BookingId == model.BookingId);

            if (booking == null)
            {
                throw new BookingNotFoundException("Booking Not Found");
            }

            var driver = context.Dirvers.FirstOrDefault(d => d.DriverId == booking.DriverId);

            if (driver == null)
            {
                throw new DriverNotFoundException("Driver Not Found");
            }

            var newStop = new Stop
            {
                StopId    = Guid.NewGuid().ToString(),
                BookingId = booking.BookingId,
                Address   = model.Address,
                PostCode  = model.PostCode,
                Reason    = model.Reason,
                Date      = model?.Date ?? DateTime.UtcNow.AddHours(1),
                Charge    = model.Reason.ToStopCharge(driver.CarType, booking.JobType)
            };

            context.Stops.Add(newStop);

            await context.SaveChangesAsync();
        }
예제 #2
0
        public async Task <Driver> Execute(Driver model)
        {
            var existingDriver = context.Dirvers.FirstOrDefault(d => d.LicenceNumber == model.LicenceNumber);

            if (existingDriver != null)
            {
                throw new DuplicateDriverException("Driver already exists");
            }

            var newDriver = new Driver
            {
                DriverId      = Guid.NewGuid().ToString(),
                Address       = model.Address,
                FirstName     = model.FirstName,
                LastName      = model.LastName,
                PreferredName = model.PreferredName,
                PostCode      = model.PostCode,
                PhoneNumber   = model.PhoneNumber,
                LicenceNumber = model.LicenceNumber,
                CarDetails    = model.CarDetails,
                CarType       = model.CarType,
                IsActive      = true
            };

            context.Dirvers.Add(newDriver);
            await context.SaveChangesAsync();

            return(newDriver);
        }
예제 #3
0
        public async Task <Driver> Execute(Driver model)
        {
            var driver = context.Dirvers.FirstOrDefault(d => d.DriverId == model.DriverId);

            if (driver == null)
            {
                throw new DriverNotFoundException("Driver Not Found");
            }


            driver.Address       = model.Address;
            driver.FirstName     = model.FirstName;
            driver.LastName      = model.LastName;
            driver.PreferredName = model.PreferredName;
            driver.PostCode      = model.PostCode;
            driver.PhoneNumber   = model.PhoneNumber;
            driver.LicenceNumber = model.LicenceNumber;
            driver.CarDetails    = model.CarDetails;
            driver.CarType       = model.CarType;
            driver.IsActive      = model.IsActive;


            await context.SaveChangesAsync();

            return(driver);
        }
예제 #4
0
        public async Task <Booking> Execute(string bookingId)
        {
            var currentBooking = context.Bookings.FirstOrDefault(b => b.BookingId == bookingId);

            if (currentBooking == null)
            {
                throw new BookingNotFoundException("Booking not found");
            }

            currentBooking.CancelledDate = DateTime.UtcNow.AddHours(1);

            await context.SaveChangesAsync();

            return(currentBooking);
        }
예제 #5
0
        public async Task Execute(CustomerBindingModel model)
        {
            var newCustomer = new Customer
            {
                CustomerId            = Guid.NewGuid().ToString(),
                FirstName             = model.FirstName,
                LastName              = model.LastName,
                Address               = model.LastName,
                PostCode              = model.PostCode,
                PreferredName         = model.PreferredName,
                PhoneNumber           = model.PhoneNumber,
                PreferredDriverUserId = model.PreferredDriverUserId,
                ExtraInformation      = model.ExtraInformation,
                Email = model.Email
            };

            context.Customers.Add(newCustomer);
            await context.SaveChangesAsync();
        }
        public async Task <Booking> Execute(BookingBindingModel model)
        {
            var newBooking = new Booking
            {
                BookingId        = Guid.NewGuid().ToString(),
                CustomerId       = model.CustomerId,
                DriverId         = model.DriverId,
                CreatedDate      = DateTime.UtcNow.AddHours(1),
                StartDate        = model.StartDate,
                StartAddress     = model.StartAddress,
                StartPostCode    = model.StartPostCode,
                EndAddress       = model.EndAddress,
                EndPostCode      = model.EndPostCode,
                CompletedDate    = model.CompletedDate,
                JobType          = model.JobType,
                ExtraInformation = model.ExtraInformation
            };

            context.Bookings.Add(newBooking);

            await context.SaveChangesAsync();

            return(newBooking);
        }