コード例 #1
0
 public void Setup()
 {
     _deskBookingRepository = new Mock <IDeskBookingRepository>();
     _deskRepository        = new Mock <IDeskRepository>();
     _processor             = new Mock <IDeskBookingRequestProcessor>();
     _deskBookModel         = new DeskBookModel(_processor.Object)
     {
         DeskBookingRequest = new DeskBookingRequest()
     };
     _deskBookingResponse = new DeskBookingResponse
     {
         ResultCode = DeskBookingResultCode.Available
     };
     _processor.Setup(x => x.BookDeskAsync(_deskBookModel.DeskBookingRequest))
     .ReturnsAsync(
         _deskBookingResponse
         );
 }
コード例 #2
0
        public async Task <DeskBookingResponse> BookDeskAsync(DeskBookingRequest request)
        {
            if (request is null)
            {
                throw new ArgumentNullException(nameof(request));
            }
            var desks = await _deskRepository.GetAvailableDesks(request.Date);

            DeskBookingResponse response = Create <DeskBookingResponse>(request);

            if (desks.FirstOrDefault() is Desk availableDesks)
            {
                var deskBooking = Create <DeskBooking>(request);
                deskBooking.DeskId = availableDesks.Id;
                _deskBookingRepository.Save(deskBooking);
                response.ResultCode    = DeskBookingResultCode.Available;
                response.DeskBookingId = deskBooking.Id;
            }
            else
            {
                response.ResultCode = DeskBookingResultCode.NotAvailable;
            }
            return(response);
        }