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); }
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); }
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)); }