Example #1
0
            public async Task <List <GetAllRiderTransactionsDto> > Handle(GetAllRiderTransactionsQuery request, CancellationToken cancellationToken)
            {
                // filter by status ready. only ready status will be retrieved.
                var bookingStatus = await context.BookingStatus.SingleOrDefaultAsync(o => o.BookingStatusName.ToLower() == "ready");

                if (bookingStatus == null)
                {
                    throw new NotFoundException();
                }

                var result = await context.Bookings.Where(o => o.BookingStatusId == bookingStatus.BookingStatusId).ToListAsync();

                if (result == null)
                {
                    throw new BookingsWithStatusReadyNotFoundException();
                }

                var bookings = mapper.Map <List <GetAllRiderTransactionsDto> >(result);

                foreach (var booking in bookings)
                {
                    var status = await context.BookingStatus.FindAsync(booking.BookingStatusId);

                    if (status != null)
                    {
                        booking.BookingStatusName = status.BookingStatusName;
                    }

                    var customer = await context.Customers.FindAsync(booking.CustomerId);

                    if (customer != null)
                    {
                        booking.CustomerName = $"{ customer.LastName }, {customer.FirstName}";
                    }

                    var rider = await context.Riders.FindAsync(booking.RiderId);

                    if (rider != null)
                    {
                        booking.RiderName = $"{ rider.LastName }, {rider.FirstName}";
                    }

                    booking.BookingDateFormatted = booking.BookingDate.ToString("MM/dd/yyyy");
                    booking.PickupTimeFormatted  = booking.PickupTime.GetValueOrDefault().ToString("hh:mm tt");
                    booking.DropOffTimeFormatted = booking.DropOffTime.GetValueOrDefault().ToString("hh:mm tt");

                    var fare = await context.Fares.FindAsync(booking.FareId);

                    if (fare != null)
                    {
                        booking.TotalFare = FareHelper.Compute(fare.PricePerKilometer, fare.BaseFare, fare.Surcharge, GetKilometer(booking.TotalKilometers));
                    }
                }

                return(bookings);
            }
Example #2
0
            public async Task <List <GetAllBookingsDto> > Handle(GetAllBookingsQuery request, CancellationToken cancellationToken)
            {
                var bookings = mapper.Map <List <GetAllBookingsDto> >(await context.Bookings.ToListAsync());

                foreach (var booking in bookings)
                {
                    var status = await context.BookingStatus.FindAsync(booking.BookingStatusId);

                    if (status != null)
                    {
                        booking.BookingStatusName  = status.BookingStatusName;
                        booking.BookingStatusColor = status.StatusColor;
                    }

                    var customer = await context.Customers.SingleOrDefaultAsync(o => o.UserId == booking.CustomerId);

                    if (customer != null)
                    {
                        booking.CustomerName = $"{ customer.LastName }, {customer.FirstName}";
                    }

                    var rider = await context.Riders.FindAsync(booking.RiderId);

                    if (rider != null)
                    {
                        booking.RiderName = $"{ rider.LastName }, {rider.FirstName}";
                    }

                    booking.BookingDateFormatted = booking.BookingDate.ToString("MM/dd/yyyy");
                    booking.PickupTimeFormatted  = booking.PickupTime.GetValueOrDefault().ToString("hh:mm tt");
                    booking.DropOffTimeFormatted = booking.DropOffTime.GetValueOrDefault().ToString("hh:mm tt");

                    var fare = await context.Fares.FindAsync(booking.FareId);

                    if (fare != null)
                    {
                        booking.TotalFare = FareHelper.Compute(fare.PricePerKilometer, fare.BaseFare, fare.Surcharge, GetKilometer(booking.TotalKilometers));
                    }
                }

                return(bookings);
            }
Example #3
0
            public async Task <Unit> Handle(UpdateBookingCommand request, CancellationToken cancellationToken)
            {
                var entity = mapper.Map <Booking>(request.Dto);

                var booking = await context.Bookings.FindAsync(request.BookingId);

                if (booking == null)
                {
                    throw new NotFoundException();
                }

                // update booking properties
                booking.BookingStatusId      = entity.BookingStatusId;
                booking.BookingDate          = entity.BookingDate;
                booking.ContactName          = entity.ContactName;
                booking.ContactNumber        = entity.ContactNumber;
                booking.DropOffLocation      = entity.DropOffLocation;
                booking.DropOffLatitude      = entity.DropOffLatitude;
                booking.DropOffLongitude     = entity.DropOffLongitude;
                booking.DropOffTime          = entity.DropOffTime;
                booking.Items                = entity.Items;
                booking.Notes                = entity.Notes;
                booking.TotalEstimatedWeight = entity.TotalEstimatedWeight;
                booking.IsActive             = entity.IsActive;
                booking.PickupLocation       = entity.PickupLocation;
                booking.PickupLongitude      = entity.PickupLongitude;
                booking.PickupLatitude       = entity.PickupLatitude;
                booking.PickupTime           = entity.PickupTime;
                booking.FareId               = entity.FareId;
                booking.RiderId              = entity.RiderId;
                booking.PhotoUrl             = entity.PhotoUrl;

                context.Update(booking);
                context.SaveChanges();

                // log in booking history
                var customerBookingHistory = new CustomerBookingHistory();

                customerBookingHistory.CustomerId              = booking.CustomerId;
                customerBookingHistory.BookingStatusId         = booking.BookingStatusId;
                customerBookingHistory.ReceiverCompleteName    = booking.ContactName;
                customerBookingHistory.ReceiverCompleteAddress = booking.DropOffLocation;
                customerBookingHistory.EstimatedTime           = booking.EstimatedTime;
                customerBookingHistory.ItemDetails             = booking.Items;
                customerBookingHistory.TotalKilometers         = booking.TotalKilometers;
                customerBookingHistory.Receipt     = booking.ReceiptNumber;
                customerBookingHistory.BookingDate = booking.BookingDate;

                var fare = await context.Fares.FindAsync(booking.FareId);

                if (fare != null)
                {
                    if (!string.IsNullOrEmpty(entity.TotalKilometers))
                    {
                        customerBookingHistory.TotalFare = FareHelper.Compute(fare.PricePerKilometer, fare.BaseFare, fare.Surcharge, GetKilometer(booking.TotalKilometers));
                    }
                }

                context.CustomerBookingHistories.Add(customerBookingHistory);
                await context.SaveChangesAsync();

                return(await Task.FromResult(Unit.Value));
            }