public DeskBookResult BookDesk(DeskBookRequest request) { if (request == null) { throw new ArgumentNullException(nameof(request)); } var result = Create <DeskBookResult>(request); var availbleDesks = _deskRepository.GetAvailbleDesks(request.Date); if (availbleDesks.FirstOrDefault() is Desk availableDesk) { var deskBooking = Create <DeskBooking>(request); deskBooking.DeskId = availableDesk.Id; _deskBookingRepository.Save(deskBooking); result.DeskBookingId = deskBooking.Id; result.Code = DeskBookingResultCode.Success; } else { result.Code = DeskBookingResultCode.NoDeskAvailable; } return(result); }
private static T Create <T>(DeskBookRequest request) where T : DeskBookingBase, new () { return(new T { FirstName = request.FirstName, LastName = request.LastName, Email = request.Email, Date = request.Date }); }
public DeskBookerRequestProcessorShould() { _request = new DeskBookRequest { FirstName = "Ahmed", LastName = "Seif", Email = "*****@*****.**", Date = new DateTime(2020, 1, 28) }; _availableDesks = new List <Desk> { new Desk { Id = 7 } }; _deskBookRepository = new Mock <IDeskBookingRepository>(); _deskRepository = new Mock <IDeskRepository>(); _deskRepository.Setup(d => d.GetAvailbleDesks(It.IsAny <DateTime>())) .Returns(_availableDesks); _processor = new DeskBookingRequestProcessor(_deskBookRepository.Object, _deskRepository.Object); }