# Car Rental Shop System
A company wants to manage their chain of car rental shops using an automated system. The goal of the system is to easily manage car listings and rentals of the rental shops.
- Users: dozens of company and shop staff, hundreds of rentee.
- Requirements:
- Company staff manages shops.
- Shop staff manages cars listings.
- Public users browse shops' car listings to rent a car.
# Project Overview
## Actors
1. *Company staff:* Company staff will manage shop listings.
2. *Shop Staff:* Shop staff will manage car listings of their shop.
3. *Users:* Public users will browse shops' car listings to rent a car.
## ERD
```mermaid
erDiagram
SHOP }|--|{ CAR: Many
RENT ||--|| SHOP: from
RENT ||--|| CAR: available
BRAND ||--o{ CAR: has
```
## System Details
The above Diagram should give you a overview of the system. Do no treat the diagrams as a strict guide, rather think of them as a very loose idea of one possible implementation. We want to see your take on the design and implementation of the system, as long as it fulfills the requirements.
The system will have **many** shops. A shop will have **many** cars. A car can belong to **many** shops. Example: **ABC enterprise** and **XYZ enterprise** both can have **"toyota corolla 2016"** car.
**Rent** entity represents quantities of a particular car for a particular shop. This will contain information like available for rent, already rented, total.
You have to add additional properties to your data model to make it sensible in a real world. Like **Brand** can have a **name** property. **Car** can have **makeYear**, **color** etc. properties. Use your imagination to make a complete data model.
Public facing site will have these pages:
- home:
- link to shop list
- link to car list
- shop list:
- for each shop: link shop details page
- shop details:
- information about this particular shop, name, address etc..
- list of cars available in this particular shop.
- for each car: link to rent information for this car for this shop
- car list:
- for each car: link to car details page
- car details:
- information about this particular car, name, makeYear, model, color etc..
- list of shops this particular car is available in.
- for each shop: link to rent information for this car for this shop
- rent information:
- this page will have a shop and car parameter in url. show information like available for rent, already rented, total etc.. in this page.
You'll use the knowledge gathered to far in the **Symfony Fast Track** book.
especially the following topics:
- Describing the Data Structure
- Creating a Controller
- Setting up an Admin Backend
- Building the User Interface
You don't have to implement any features not covered in the book so far, like security, protecting the admin panel etc...
This project is very similar to the project being exercised in the book. Implement it in this order: Make the entities using command line. Make necessary admins to input the data. Make necessary controllers and twig template to implement the public facing site pages.
Don't forget to make git commits after each task as seen in the book. Push the project to a new branch in your **intern-...** github repo.
## Reference
[Symfony Fast Track](https://symfony.com/doc/current/the-fast-track/en/index.html)
[Symfony Components](https://symfony.com/components)