The new user registers within the application and completes the email verification process by clicking the activation link received in their email. Once verified, the user proceeds to select a screening date and choose a film for that specific time, while also checking the seat availability for the chosen screening.
Moving on to the next step, the user initiates the ticket booking process. They select a seat, specify the row, and choose a discount type.
The application provides two discount options :
-
Events: Cheap Tuesday and Cheap Friday, offering a 20% reduction in ticket prices.
-
Student discounts: An additional 10% off on ticket prices.
After a successful booking, the application sends an email containing the ticket in PDF format, which includes all the details along with a unique QR code for confirming the purchase and details of the ticket
The application is integrated with the National Bank of Poland's API, allowing customers to choose from 34 currencies for the ticket price. The application sends a periodic request to the API NBP every 24 hours, ensuring the database is updated with the latest currency values.
User have the authority to add new films to the database and create new screenings, specifying the date, time, and film.
I utilized a MySQL database to establish relationships within the data. The application is deployed on Docker and incorporates Swagger for documentation.
Core:
- Install IntelliJ IDEA and Docker Desktop on your computer.
- Run Docker Desktop.
- Clone the repository in IntelliJ IDEA using the link https://github.com/Gimi818/Cinema
- Run docker-compose up in the terminal.
- Run the applications in IntelliJ IDEA.
- Try the applications in Postaman, the steps on how to do it are below.
Step 1 :
POST localhost:8080/users/registration
Enter your data.
JSON:
{
"firstName":"Wojciech",
"lastName":"Gmiterek",
"email":"cinemaemailtest@gmail.com",
"password":"password",
"repeatedPassword" :"password",
"role":"USER"
}
Step 2 :
Click on the account activation link.
Step 3 :
GET localhost:8080/screenings?date=2023-11-25
Select the desired cinema date, input it into the URL, and discover a film you'd like to watch.
(screenings are available from 2023-11-20 to 2023-12-05)
Step 4 :
GET localhost:8080/screenings/1
Enter the film ID into the URL to check the available seats for the screening.
Step 5 :
POST localhost:8080/book/ea6c7acd-4f87-4ee5-829c-0460c315caad/1
Enter the user UUID and then the film ID.
Choose the ticket type NORMAL or REDUCE if you are a student, you are qualified for a discount.
Select the currency in which you would like to receive the ticket price, you can choose from 34 currencies.
Send request localhost:8080/codes and check available currencies.
Enter the row number or seat number.
JSON:
{
"ticketType":"REDUCE",
"currency":"USD",
"rowsNumber":7,
"seatInRow": 5
}
Step 6 :
You have received an email with a PDF ticket containing the details along with a QR code confirming your purchase.
Scan the QR code and check purchase details
Add the film to the database:
POST localhost:8080/films
Enter the film data.
JSON:
{
"title": "The Equalizer 3",
"category": "ACTION",
"durationFilmInMinutes": 130
}
Create a screening:
POST localhost:8080/screenings/26
Enter the ID in the URL of the film for which you want to create.
Enter the date and time of screening.
JSON:
{
"date": "2023-12-15",
"time": "22:30"
}
Endpoints available in the application :