Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 8 additions & 5 deletions src/main/java/ie/atu/bookingservice/BookingController.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Optional;

@RestController
@RequestMapping("/api/booking")
Expand All @@ -17,21 +16,26 @@ public BookingController(BookingService bookingService) {
this.bookingService = bookingService;
}

// Endpoint for creating a new booking
@PostMapping("/createBooking")
public ResponseEntity<BookingDetails> createBooking(@RequestBody BookingDetails bookingDetails) {
// Ensure required fields are populated
if (bookingDetails.getRoomType() == null || bookingDetails.getRoomType().isEmpty()) {
bookingDetails.setRoomType("Standard"); // Default room type
}
if (bookingDetails.getNumberOfGuests() == 0) {
bookingDetails.setNumberOfGuests(1); // Default to 1 guest
}

BookingDetails createdBooking = bookingService.createBooking(bookingDetails);
return ResponseEntity.ok(createdBooking);
}

// Endpoint to get all bookings
@GetMapping
public ResponseEntity<List<BookingDetails>> getAllBookings() {
List<BookingDetails> bookings = bookingService.getAllBookings();
return ResponseEntity.ok(bookings);
}

// Endpoint for updating a booking
@PutMapping("update/{id}")
public ResponseEntity<BookingDetails> updateBooking(@PathVariable String id, @RequestBody BookingDetails bookingDetails) {
BookingDetails updatedBooking = bookingService.updateBooking(id, bookingDetails);
Expand All @@ -58,7 +62,6 @@ public ResponseEntity<String> confirmBooking(@RequestBody BookingDetails booking
}
}

// Endpoint for deleting a booking
@DeleteMapping("delete/{id}")
public ResponseEntity<Void> deleteBooking(@PathVariable String id) {
bookingService.deleteBooking(id);
Expand Down
24 changes: 21 additions & 3 deletions src/main/java/ie/atu/bookingservice/BookingDetails.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,9 @@ public class BookingDetails {
private String status;
private Date bookingDate;
private String token = null;
private double amount; // Add this field
private double amount;
private int numberOfGuests; // New field
private String roomType; // New field

// Getters and setters
public String getId() {
Expand Down Expand Up @@ -74,11 +76,27 @@ public void setToken(String token) {
this.token = token;
}

public double getAmount() { // Add getter
public double getAmount() {
return amount;
}

public void setAmount(double amount) { // Add setter
public void setAmount(double amount) {
this.amount = amount;
}

public int getNumberOfGuests() {
return numberOfGuests;
}

public void setNumberOfGuests(int numberOfGuests) {
this.numberOfGuests = numberOfGuests;
}

public String getRoomType() {
return roomType;
}

public void setRoomType(String roomType) {
this.roomType = roomType;
}
}
20 changes: 19 additions & 1 deletion src/main/java/ie/atu/bookingservice/BookingDetailsDTO.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package ie.atu.bookingservice; // Use dto if moved into a dto package
package ie.atu.bookingservice;

public class BookingDetailsDTO {
private String id;
private double amount;
private int numberOfGuests; // New field
private String roomType; // New field

// Getters and setters
public String getId() {
Expand All @@ -20,4 +22,20 @@ public double getAmount() {
public void setAmount(double amount) {
this.amount = amount;
}

public int getNumberOfGuests() {
return numberOfGuests;
}

public void setNumberOfGuests(int numberOfGuests) {
this.numberOfGuests = numberOfGuests;
}

public String getRoomType() {
return roomType;
}

public void setRoomType(String roomType) {
this.roomType = roomType;
}
}
10 changes: 9 additions & 1 deletion src/main/java/ie/atu/bookingservice/BookingEventPublisher.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package ie.atu.bookingservice;

import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
Expand All @@ -20,6 +21,13 @@ public BookingEventPublisher(RabbitTemplate rabbitTemplate) {
}

public void publishBookingCreatedEvent(BookingDetailsDTO bookingDetailsDTO) {
rabbitTemplate.convertAndSend(exchange, routingKey, bookingDetailsDTO);
try {
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(bookingDetailsDTO);
System.out.println("Publishing JSON payload: " + json);
rabbitTemplate.convertAndSend(exchange, routingKey, bookingDetailsDTO);
} catch (Exception e) {
System.err.println("Failed to serialize message: " + e.getMessage());
}
}
}
51 changes: 21 additions & 30 deletions src/main/java/ie/atu/bookingservice/BookingService.java
Original file line number Diff line number Diff line change
@@ -1,32 +1,32 @@
package ie.atu.bookingservice;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Optional;

@Service
public class BookingService {

private final BookingRepository bookingRepository;
private final BookingEventPublisher bookingEventPublisher;

@Autowired
public BookingService(BookingRepository bookingRepository, BookingEventPublisher bookingEventPublisher) {
this.bookingRepository = bookingRepository;
this.bookingEventPublisher = bookingEventPublisher;
}

public BookingDetails createBooking(BookingDetails bookingDetails) {
bookingDetails.setStatus("AVAILABLE"); // Default status
// Save booking to database
BookingDetails savedBooking = bookingRepository.save(bookingDetails);

// Publish event to RabbitMQ
BookingDetailsDTO dto = new BookingDetailsDTO();
dto.setId(savedBooking.getId());
dto.setAmount(savedBooking.getAmount());
bookingEventPublisher.publishBookingCreatedEvent(dto); // Pass the DTO
// Publish event
BookingDetailsDTO bookingDetailsDTO = new BookingDetailsDTO();
bookingDetailsDTO.setId(savedBooking.getId());
bookingDetailsDTO.setAmount(savedBooking.getAmount());
bookingDetailsDTO.setNumberOfGuests(savedBooking.getNumberOfGuests());
bookingDetailsDTO.setRoomType(savedBooking.getRoomType());

bookingEventPublisher.publishBookingCreatedEvent(bookingDetailsDTO);

return savedBooking;
}
Expand All @@ -35,30 +35,21 @@ public List<BookingDetails> getAllBookings() {
return bookingRepository.findAll();
}

public BookingDetails updateBooking(String id, BookingDetails updatedBooking) {
Optional<BookingDetails> existingBooking = bookingRepository.findById(id);
if (existingBooking.isPresent()) {
BookingDetails booking = existingBooking.get();
booking.setServiceId(updatedBooking.getServiceId());
booking.setServiceType(updatedBooking.getServiceType());
booking.setStatus(updatedBooking.getStatus());
booking.setAmount(updatedBooking.getAmount());
return bookingRepository.save(booking);
}
return null;
public BookingDetails updateBooking(String id, BookingDetails bookingDetails) {
return bookingRepository.findById(id).map(existingBooking -> {
existingBooking.setRoomType(bookingDetails.getRoomType());
existingBooking.setNumberOfGuests(bookingDetails.getNumberOfGuests());
existingBooking.setAmount(bookingDetails.getAmount());
return bookingRepository.save(existingBooking);
}).orElse(null);
}

public boolean confirmBooking(String id) {
Optional<BookingDetails> bookingOptional = bookingRepository.findById(id);
if (bookingOptional.isPresent()) {
BookingDetails booking = bookingOptional.get();
if ("AVAILABLE".equals(booking.getStatus())) {
booking.setStatus("CONFIRMED");
bookingRepository.save(booking);
return true;
}
}
return false;
return bookingRepository.findById(id).map(existingBooking -> {
existingBooking.setStatus("Confirmed");
bookingRepository.save(existingBooking);
return true;
}).orElse(false);
}

public void deleteBooking(String id) {
Expand Down
6 changes: 4 additions & 2 deletions src/main/java/ie/atu/bookingservice/RabbitMQConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,11 @@ public Jackson2JsonMessageConverter jackson2JsonMessageConverter() {
}

@Bean
public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory, Jackson2JsonMessageConverter jackson2JsonMessageConverter) {
RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
public org.springframework.amqp.rabbit.core.RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory,
Jackson2JsonMessageConverter jackson2JsonMessageConverter) {
org.springframework.amqp.rabbit.core.RabbitTemplate rabbitTemplate = new org.springframework.amqp.rabbit.core.RabbitTemplate(connectionFactory);
rabbitTemplate.setMessageConverter(jackson2JsonMessageConverter);
return rabbitTemplate;
}
}

Loading