Beispiel #1
0
        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);
        }
Beispiel #2
0
 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);
        }