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
5 changes: 5 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
version: '3.8'
services:
rabbitmq:
image: rabbitmq:management
ports:
- "5672:5672"
- "15672:15672"
booking-service:
build:
context: .
Expand Down
21 changes: 17 additions & 4 deletions pom.xml
Original file line number Diff line number Diff line change
@@ -1,21 +1,26 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.3.5</version>
<relativePath/>
<relativePath/> <!-- lookup parent from repository -->
</parent>

<groupId>ie.atu</groupId>
<artifactId>BookingService</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>BookingService</name>
<description>BookingService</description>
<description>Booking Service for managing bookings</description>

<properties>
<java.version>17</java.version>
<spring-cloud.version>2023.0.3</spring-cloud.version>
</properties>

<dependencies>
<!-- Spring Boot Dependencies -->
<dependency>
Expand Down Expand Up @@ -60,6 +65,12 @@
<scope>runtime</scope>
</dependency>

<!-- RabbitMQ Dependency -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

<!-- Testing Dependencies -->
<dependency>
<groupId>org.springframework.boot</groupId>
Expand All @@ -79,6 +90,7 @@
<optional>true</optional>
</dependency>
</dependencies>

<dependencyManagement>
<dependencies>
<dependency>
Expand All @@ -90,6 +102,7 @@
</dependency>
</dependencies>
</dependencyManagement>

<build>
<plugins>
<plugin>
Expand Down
20 changes: 10 additions & 10 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

// Getters and setters
public String getId() {
return id;
}
Expand Down Expand Up @@ -64,21 +66,19 @@ public void setBookingDate(Date bookingDate) {
this.bookingDate = bookingDate;
}

public void setBookedBy(String username) {
}

public void setBooked(boolean b) {
}

public boolean isBooked() {
return false;
}

public String getToken() {
return token;
}

public void setToken(String token) {
this.token = token;
}

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

public void setAmount(double amount) { // Add setter
this.amount = amount;
}
}
23 changes: 23 additions & 0 deletions src/main/java/ie/atu/bookingservice/BookingDetailsDTO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package ie.atu.bookingservice; // Use dto if moved into a dto package

public class BookingDetailsDTO {
private String id;
private double amount;

// Getters and setters
public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public double getAmount() {
return amount;
}

public void setAmount(double amount) {
this.amount = amount;
}
}
30 changes: 30 additions & 0 deletions src/main/java/ie/atu/bookingservice/BookingEventPublisher.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package ie.atu.bookingservice;

import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

@Service
public class BookingEventPublisher {

private final RabbitTemplate rabbitTemplate;

@Value("${rabbitmq.exchange}")
private String exchange;

@Value("${rabbitmq.routingkey}")
private String routingKey;

public BookingEventPublisher(RabbitTemplate rabbitTemplate) {
this.rabbitTemplate = rabbitTemplate;
}

public void publishBookingCreatedEvent(BookingDetails bookingDetails) {
BookingDetailsDTO dto = new BookingDetailsDTO();
dto.setId(bookingDetails.getId());
dto.setAmount(bookingDetails.getAmount()); // Include amount

rabbitTemplate.convertAndSend(exchange, routingKey, dto);
}

}
46 changes: 19 additions & 27 deletions src/main/java/ie/atu/bookingservice/BookingService.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

@Service
public class BookingService {

private final BookingRepository bookingRepository;

@Autowired
Expand All @@ -16,50 +17,41 @@ public BookingService(BookingRepository bookingRepository) {
}

public BookingDetails createBooking(BookingDetails bookingDetails) {
bookingDetails.setStatus("AVAILABLE");
bookingDetails.setStatus("AVAILABLE"); // Default status
return bookingRepository.save(bookingDetails);
}

public Optional<BookingDetails> getBookingById(String id) {
return bookingRepository.findById(id);
}

public List<BookingDetails> getByBookingUserId(String userId) {
return bookingRepository.findByUserId(userId);
public List<BookingDetails> getAllBookings() {
return bookingRepository.findAll();
}

public BookingDetails updateBooking(String id, BookingDetails updatedBooking) {
if (updatedBooking != null && bookingRepository.existsById(id)) {
updatedBooking.setId(id);
return bookingRepository.save(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 void deleteBooking(String id) {
bookingRepository.deleteById(id);
}

public List<BookingDetails> getAllBookings() {
return bookingRepository.findAll();
}

public List<BookingDetails> getAvailableBookings() {
return bookingRepository.findByStatus("AVAILABLE");
}
public boolean confirmBooking(String id) {
Optional<BookingDetails> bookingOptional = bookingRepository.findById(id);
if (bookingOptional.isPresent()) {
BookingDetails booking = bookingOptional.get();

// Check if the status is "AVAILABLE"
if ("AVAILABLE".equals(booking.getStatus())) {
// If AVAILABLE, update status to "BOOKED"
booking.setStatus("BOOKED");
bookingRepository.save(booking); // Save the updated booking
booking.setStatus("CONFIRMED");
bookingRepository.save(booking);
return true;
}
}
return false; // Return false if the booking is not available or doesn't exist
return false;
}

public void deleteBooking(String id) {
bookingRepository.deleteById(id);
}
}
7 changes: 7 additions & 0 deletions src/main/resources/application.properties
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,10 @@ spring.data.mongodb.uri=mongodb://localhost:27017/bookingdb
spring.data.mongodb.database=bookingdb
server.port=8082

spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest

rabbitmq.exchange=booking.exchange
rabbitmq.routingkey=booking.created
Loading