Database Project - Marcin Mikuła, Dominik Grzesik

Temat projektu

Aplikacja internetowa, pozwalająca na rezerwację miejsca w wybranym porcie.

Technologie

  • Baza danych MongoDB Atlas
  • Django Famework Frontedn i Backend

Funkcjonalności

Aplikacja internetowa pozwala na rezerwację miejsca w wyszukanym porcie.

Rysunek 1: Lista wszystkich portów z opcją wyszukiwania po nazwie.


Każdy port ma swoje sektory, których ofertę użytkownik otrzymuje po podaniu danych jachtu. Jachty mają określone wymiary: długość, głębokość i szerokość. Dodatkowo obowiązkowy do podania jest też typ jachtu: mieczowy bądź balastowy. Łodzi mieczowych nie dotyczy ograniczenie na głębokość, jako że miecz można schować. Zanurzenie łodzi balastowych, jako że jest stałe, może być zbyt duże i dana rezerwacja może nie być możliwa - w ofercie nie będzie sektorów z tą bądź mniejszą głębokością.



Rysunek 2: Formularz na dane łodzi potrzebne do wyszukania dostępnych sektorów.



Rysunek 3: Efekt wypełnienia formularza oraz wyszukania wyników.


    Rodzaje sektorów:

  1. Pierwszy z nich, typu “równoległy”, to taki, do którego jachty cumują równolegle. Ograniczeniem jest długość sektora, w pewnym momencie następny jacht się już nie zmieści.
  2. Drugi typ to “prostopadły”, zawierający miejsca, w których jachty cumują prostopadle do pomostu. Ograniczeniem tutaj jest wspólna dla wszystkich miejsc danego sektora maksymalna szerokość łodzi. W momencie rezerwacji danego miejsca znika ono z oferty i nie można go zarezerwować.

    Rysunek 4: Dostępne miejsca w wybranym sektorze prostopadłym

  3. Oba typy sektorów mają również określoną głębokość, czyli maksymalne zanurzenie jachtu.
  4. W momencie wybrania miejsca użytkownik zostaje poproszony o podanie danych potrzebnych do wykonania rezerwacji:


    Rysunek 5: Formularz danych potrzebny do podania w momencie rezerwacji.


    W momencie wykonania rezerwacji klient dostaje obowiązkowy do zapisania bądź zapamiętania numer rezerwacji:

    Rysunek 6: Komunikat z koniecznym do zapisania numerem rezerwacji.


    Będzie on potrzebny do podania w momencie próby znalezienia rezerwacji w zakładce rezerwacje:

    Rysunek 7: Wyszukiwanie rezerwacji o danym numerze.



      Aktywne rezerwacje można:

    • edytować, tzn. zmieniać datę rozpoczęcia i zakończenia rezerwacji
    • usuwać, czyli anulować.
    • Rysunek 8: Opcje usuwania lub edytowania rezerwacji.


      Rysunek 9: Rezultat edycji wybranej rezerwacji.


    Baza danych MongoDB Atlas

    Baza danych PortDB składa się z 3 kolekcji o przykładowych dokumentach:

    Port z tablicą sektorów, z których każdy, jeśli typu prostopadłego, zawiera tablicę miejsc do rezerwacji:


    Reservation


    oraz Yacht


    V. Django Framework

    Do bazy danych podpinamy się przez pymongo:


    • Widoki:


      views.port_list - lista portów:


      views.sectors - lista sektorów:


      views.slots - list miejsc:


      views.reserve - wykonywanie rezerwacji:


      views.reservation - podgląd na rezerwację o danym numerze:


      views.edit_reservation - edytowanie bądź usuwanie rezerwacji:


    • Formularze:



    • Routing:



    • Wyświetlanie informacji następuje w plikach .html:


      ports.html:


      sectors.html:


      slots.html:


      reservations.html:


      results.html - w zależności od wykonanej akcji, dostajemy specjalny komunikat/informację, ostrzeżenie: