public TableBookingResponse BookTable(TableBookingRequest request) { if (request == null) { throw new ArgumentNullException(nameof(request)); } var avaliableTables = _tableRepository.GetAvaliableTables(request.ReservationDate); var response = Create <TableBookingResponse>(request); if (avaliableTables.FirstOrDefault() is Table table) { var deskBooking = Create <TableBooking>(request); deskBooking.TableId = table.Id; _tableBookingRespository.Save(deskBooking); response.Code = TableBookingResultCode.Success; response.TableBookingId = deskBooking.Id; } else { response.Code = TableBookingResultCode.NoTableAvaliable; } return(response); }
private T Create <T>(TableBookingRequest request) where T : TableBookingBase, new() { return(new T { FirstName = request.FirstName, LastName = request.LastName, Email = request.Email, ReservationDate = request.ReservationDate }); }
private static T Assign <T>(TableBookingRequest request) where T : BaseTableBooking, new() { return(new T { FirstName = request.FirstName, LastName = request.LastName, Email = request.Email, Date = request.Date }); }
public void Initialise() { _bookingRepository = new Mock <ITableBookingRepository>(); _tableRepository = new Mock <ITableRepository>(); _request = new TableBookingRequest { FirstName = "John", LastName = "Doe", Email = "*****@*****.**", Date = new DateTime(2020, 12, 12) }; _processor = new TableBookingRequestProcessor(_bookingRepository.Object, _tableRepository.Object); _tables = new List <Table> { new Table { Id = 1 } }; _tableRepository.Setup(_ => _.GetAvailableTables(_request.Date)).Returns(_tables); }
public TableBookerProcessorTests() { _request = new TableBookingRequest { FirstName = "Tekus", LastName = "Arkbox", Email = "*****@*****.**", ReservationDate = new DateTime(2021, 6, 15) }; _avaliableTables = new List <Table> { new Table() }; _tableBookerRepositoyMock = new Mock <ITableBookingRespository>(); _tableRepositoryMock = new Mock <ITableRepository>(); _tableRepositoryMock.Setup(repository => repository.GetAvaliableTables(_request.ReservationDate)) .Returns(_avaliableTables); _processor = new TableBookerProcessor(_tableBookerRepositoyMock.Object, _tableRepositoryMock.Object); }
public TableBookingResult BookTable(TableBookingRequest request) { if (request == null) { throw new ArgumentNullException(nameof(request)); } var tables = _tableRepository.GetAvailableTables(request.Date); var result = Assign <TableBookingResult>(request); if (tables.FirstOrDefault() is Table availableTable) { var tableBooking = Assign <TableBooking>(request); tableBooking.TableId = availableTable.Id; _bookingRepository.SaveBooking(tableBooking); result.Code = TableBookingResultCode.Available; result.BookingId = tableBooking.TableId; } else { result.Code = TableBookingResultCode.NotAvailable; } return(result); }