Advertisement
Guest User

Untitled

a guest
Dec 14th, 2019
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.69 KB | None | 0 0
  1. public static class BookingHelper
  2.     {
  3.         public static string OverlappingBookingsExist(Booking booking, IBookingRepository bookingRepository)
  4.         {
  5.             if (booking.Status == "Cancelled")
  6.                 return string.Empty;
  7.  
  8.             var bookings = bookingRepository.GetActiveBookings(booking.Id);
  9.  
  10.             var overlappingBooking =
  11.                 bookings.FirstOrDefault(
  12.                     b =>
  13.                         booking.ArrivalDate < b.DepartureDate
  14.                         && b.ArrivalDate < booking.DepartureDate
  15.                 );
  16.  
  17.             return overlappingBooking == null ? string.Empty
  18.                 : overlappingBooking.Reference;
  19.         }
  20.     }
  21.  
  22.     public class BookingRepository : IBookingRepository
  23.     {
  24.         public IQueryable<Booking> GetActiveBookings(int? excludedBookingId = null)
  25.         {
  26.             var unitOfWork = new UnitOfWork();
  27.             var bookings =
  28.                 unitOfWork.Query<Booking>()
  29.                     .Where(
  30.                         b => b.Id != excludedBookingId && b.Status != "Cancelled");
  31.  
  32.             return bookings;
  33.         }
  34.     }
  35.  
  36.     public interface IBookingRepository
  37.     {
  38.         IQueryable<Booking> GetActiveBookings(int? excludedBookingId = null);
  39.     }
  40.  
  41.     public class UnitOfWork
  42.     {
  43.         public IQueryable<T> Query<T>()
  44.         {
  45.             return new List<T>().AsQueryable();
  46.         }
  47.     }
  48.  
  49.     public class Booking
  50.     {
  51.         public string Status { get; set; }
  52.         public int Id { get; set; }
  53.         public DateTime ArrivalDate { get; set; }
  54.         public DateTime DepartureDate { get; set; }
  55.         public string Reference { get; set; }
  56.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement