Dokładniejszy opis zawierający diagramy UML znajduje się w zakładce Wiki, znajdującej sią pod poniższym linkiem. https://github.com/kubabar1/CarRental/wiki
CarRental
Głównym celem stworzenia tej aplikacji było wykorzystanie w praktyce dotychczas zgromadzonej przeze mnie wiedzy na temat tworzenia
bazodanowych restowych aplikacji z wykorzystaniem Springa.
Celem programu CarRental jest obsługa firmy wypożyczającej auta. Głównym zadaniem aplikacji jest umożliwienie przejrzenia listy aut
oraz ich szegółów przez klientów, a następnie rezerwacji wybranego auta. Aplikacja posiada również panel klienta umożliwiający
przeglądanie zamówień oraz zmianę ustawień konta, oraz panel administratora umożliwiający m.in. administrowanie zamówieniami oraz
użytkownikami, dodawanie i edycję aut, edycję wyposażenia aut. Aplikacja posiada również system logowania oraz rejestracji nowych
klientów.
Restowe API napisane w Springu z wykorzystaniem następujących technologii:
- Spring MVC
- Spring Security
- Spring Data JPA
- Hibernate
Frontend został głównie napisany z wykorzystaniem Reacta. Technologię Thymeleaf wykorzystałem do stworzenia panelu logowania, rejestracji oraz jako podstawę do głównej strony projektu oraz panelu użytkownika. W sumie przy tworzeniu frontendu wykorzystałem następujące technologie:
- React, React Router
- Thymeleaf
- Bootstrap
- HTML, CSS
- npm, webpack
W sumie frontend składa się ze 101 plików, które w sumie liczą ok. 8000 linii kodu.
- Admin - osoba zarządzająca stroną posiadająca najwięcej uprawnień
- Customer - klient, osoba korzystająca z naszej strony w celu rezerwacji auta, każdy użytkownik który zakłada konto posiada początkowo rolę klienta, pozostałe role są przypisywane przez admina
- Renting employee - osoba wypożyczająca auta, ma m.in uprawnienia do zarządzania wszystkimi zamówieniami
- Office employee - osoba pracująca na stanowisku biurowym
- serwer MySQL (można go pobrać poleceniem sudo apt-get install mysql-server),
- Maven (można go pobrać poleceniem sudo apt-get install maven),
- Tomcat (należy później skonfigurować użytkowników i nadać im odpowiednie prawa)
- Sklonuj repozytorium: https://github.com/kubabar1/CarRental.git
git clone https://github.com/kubabar1/CarRental.git
- Używając skryptu bazy danych o nazwie carrental.sql znajdującego się tutaj utwórz bazę danych na serwerze MySQL. Aby zainstalować bazę danych należy wpisać poniższą komendę:
sudo mysql –u root < carrental.sql
Polecenie to spowoduje usunięcie istniejącej bazy danych o nazwie carrental (jeżeli istnieje) i utworzenie nowej wraz z tabelami i wpisanymi do nich wartościami. !!! bardzo istotne jest to, aby w naszej bazie danych znajdował się użytkownik root, nie posiadający hasła, jeżeli jednak jest ustawione hasło, należy je wpisać w pliku persistence-mysql.properties link.
- Przejdż do katalogu w projekcie w którym znajduje się plik pom.xml i wykonaj następujące polecenie:
sudo mvn clean install
sudo jest konieczne ze względu na fakt, że Maven tworzy w folderze głównym systemu folder w którym wypakowuje część zdjęć wykorzystywanych w aplikacji oraz w którym są przechowywane m.in. zdjęcia dodanych przez nas aut.
-
Po zakończeniu działania programu Maven należy przejść do folderu CarRental/target i skopiować plik CarRental.war do folderu webapps naszego serwera Tomcat (np. dla serwera Tomcat 8 będzie to folder /var/lib/tomcat8/webapps).
-
Edytujemy konfigurację w pliku /etc/tomcat8/server.xml:
a) Dla systemu Windows
<Host name="localhost">
<Context docBase="C:\carrental\img\vehicles_img" path="/CarRental/vehicles-img"/>
<Context docBase="C:\carrental\img\etc_img" path="/CarRental/etc-img"/>
</Host>
b) Dla systemu Linux:
<Host name="localhost">
<Context docBase="/carrental/img/vehicles_img" path="/CarRental/vehicles-img"/>
<Context docBase="/carrental/img/etc_img" path="/CarRental/etc-img"/>
</Host>
Dzięki temu nasza aplikacja będzie mogła mieć dostęp do zdjęć przechowywanych na dysku.
- Uruchamiamy serwer poleceniem (dla wersji serwera Tomcat 8):
sudo service tomcat8 start
- Wpisujemy w przegladarce adres http://localhost:8080/CarRental
Ekran główny wyświetla się po kliknięciu przycisku Home w menu lub kliknięciu w logo firmy. Przeglądanie listy pojazdów Listę pojazdów możemy wyświetlić po kliknięciu przycisku Car list w menu.
Aby wyszukać pojazdy według kryteriów należy przejść do listy pojazdów przez kliknięcie przycisku Car list w menu, a następnie wprowadzić pożądane kryteria w panelu filtrów i kliknąć przycisk Search. Spowoduje to wyświetlenie na ekranie pojazdów spełniających pożądane kryteria.
Aby przejrzeć informacje szczegółowe na temat pojazdów należy przejść do listy pojazdów (po kliknięciu Car rental), a następnie przy wybranym pojeździe z listy kliknąć przycisk Properties.
Zarezerwować pojazd może tylko zalogowany użytkownik. Aby zarezerwować pojazd należy wypełnić formularz znajdujący się na podstronie Home i kliknąć przycisk Reserve. Następnie należy wypełnić poszczególne podstrony formularza i na ostatniej wybrać Reserve. Pojazd można również zarezerwować poprzez kliknięcie przycisku Reserve, znajdującego się na podsterownie detali wybranego auta (użytkownik musi być zalogowany aby zobaczyć owy przycisk).
Aby dodać komentarz należy być zalogowanym. Komentarz wraz z liczbą gwiazdek można dodać na podstronie szczegółów danego pojazdu.
Listę najlepszych ofert możemy wyświetlić po kliknięciu przycisku Best offers w menu.
Informacje na temat firmy możemy przeczytać po kliknięciu przycisku About us.
Dane kontaktowe firmy możemy wyświetlić po kliknięciu przycisku Contact w menu.
Klient ma możliwość wysłania emaila do pracowników firmy poprzez formularz znajdujący się na podstronie Contacts.
Nowe konto możemy utworzyć poprzez kliknięcie przycisku Sign up i prawidłowe wypełnienie formularza.
Aby zalogować się na istniejące konto należy kliknąć przycisk Log in, wpisać login i hasło, a następnie kliknąć przycisk Sign in.
Aby wylogować się z konta użytkownika należy kliknąć przycisk Log out, znajdujący się zarówno na głównej stronie internetowej jak i w panelu klienta.
Listę wszystkich zamówień może przeglądać tylko użytkownik posiadający rolę Aby przejrzeć listę wszystkich zamówień należy przejść do panelu klienta i kliknąć przycisk All bookings.
Aby pobrać plik Excel zawierający wszystkie zamówienia przechowywane w bazie należy przejść do panelu klienta, wybrać zakładkę „All bookings” , a następnie kliknąć niebieski przycisk Download file.
Aby wyświetlić listę wszystkich aktualnych rezerwacji dokonanych przez użytkowników należy przejść do panelu klienta i kliknąc zakładkę All reserved bookings.
Użytkownik posiadający odpowiednie uprawnienia może zmienić status rezerwacji auta na Rented. Dzieje się to w momencie, gdy klient po zarezerwowaniu auta przychodzi po jego odbiór.
Użytkownik posiadający odpowiednie uprawnienia może anulować dowolną rezerwację. Musi w tym celu przejść do panelu klienta i wybrać zakładkę All reserved bookings, a następnie kliknąć czerwony przycisk Cancel.
Aby wyświetlić listę wszystkich aktualnych wynajęć aut dokonanych przez użytkowników należy przejść do panelu klienta i kliknąc zakładkę All rented bookings.
Użytkownik posiadający odpowiednie uprawnienia może zmienić status rezerwacji auta na „Returned”. Dzieje się to w momencie, gdy klient zwraca zarezerwowane auto.
Funkcjonalność ta jest udostępniona dla każdego zalogowanego użytkownika. Aby użytkownik mógł wyświetlić listę wszystkich dokonanych przez siebie zamówień musi przejść do panelu klienta i kliknąć zakładkę My all bookings.
Funkcjonalność ta jest udostępniona dla każdego zalogowanego użytkownika. Aby użytkownik mógł wyświetlić listę wszystkich dokonanych przez siebie zamówień posiadających status Reserved musi przejść do panelu klienta i kliknąć zakładkę My all rented bookings.
Funkcjonalność ta jest udostępniona dla każdego zalogowanego użytkownika. Aby użytkownik mógł anulować dokonaną przez siebie rezerwację musi przejść do panelu klienta, kliknąć zakładkę My all reserved bookings i kliknąć czerwony przycisk Cancel przy rezerwacji którą chcemy anulować.
Funkcjonalność ta jest udostępniona dla każdego zalogowanego użytkownika. Aby użytkownik mógł wyświetlić listę wszystkich swoich rezerwacji posiadających status "Rented" (wynajętych pojazdów) musi kliknąć w przycisk My all rented bookings znajdujący się w zakładce Bookings.
Aby wyświetlić listę wszystkich użytkowników należy kliknąć przycisk Show wewnątrz zakładki Users znajdującej się w panelu admina.
Aby edytować użytkownika, należy kliknąć przycisk Edit znajdujący się obok użytkownika, na liście użytkowników.
Aby wyświetlić listę wszystkich aut należy kliknąć zakładkę Cars a następnie zakładkę Show cars.
Aby edytować auto należy kliknąć przycisk Edit znajdujący się obok każdego pojazdu na liście pojazdów.
Aby dodać nowe auto należy kliknąć zakładkę Cars, a następnie zakładkę Add car.
Aby wyświetlić listę wszystkich elementów wyposażenia danego pojazdu, należy kliknąć przycisk Car equipment list, a następnie wpisać ID danego pojazdu.
Aby dodać nowy element wyposażenia do auta, należy wyświetlić listę jego wyposażenia, a następnie z selektora znajdującego się na dole podstrony wybrać pożądany element i kliknąć przycisk ADD.
Aby usunąć element wyposażenia z auta, należy wyświetlić listę jego wyposażenia, a następnie kliknąć przycisk Delete.
Aby wyświetlić listę wszystkich istniejących elementów wyposażenia należy kliknąć zakładkę Cars, a następnie Equipment list.
Aby dodać element wyposażenia do listy wszystkich elementów wyposażenia, należy wyświetlić listę el. wyposażenia, podać nazwę i kod elementu i kliknąć przycisk Add.
Aby usunąć element wyposażenia z listy wszystkich elementów wyposażenia, należy wyświetlić listę el. wyposażenia, a następnie kliknąć przycisk Delete przy pożądanym elemencie z listy.
Aby wyświetlić listę użytkowników wraz z przypisanymi im rolami należy w panelu admina kliknąć zakładkę "User roles", a następnie Show.
Aby dodać dla danego użytkownika nową rolę, należy wyświetlić listę użytkowników wraz z przypisanymi im rolami, a następnie przy wybranym użytkowniku z listy kliknąć przycisk Add role.
Aby wyświetlić listę lokalizacji wypożyczalni aut należy kliknąć zakładkę Locations, a następnie zakładkę Show.
Aby wysłać email do danego użytkownika, należy w panelu admina kliknąć zakładkę Send e-mail, a następnie wybrać użytkownika z listy i kliknąć znajdujący się obok niego przycisk Send.
Aby zmienić ustawienia naszego konta, należy w panelu użytkownika kliknąć zakładkę Settings, a następnie wprowadzić zmiany i kliknąć przycisk Edit.