Team 5 Project
Στα πλαίσια του Java|Spring Course του ProjectFuture και του Web App project development ζητείται να υλοποιηθεί το παρόν web application, το οποίο θα βοηθήσει τους συμμετέχοντες να κατανοήσουν, εφαρμόζοντας τις τεχνολογίες που παρουσιάστηκαν στα μαθήματα Java, Databases, Enterprise Development (Spring Boot) και Web Development.
Μια εταιρεία εργολαβίας επισκευών και ανακαινίσεων ακίνητης περιουσίας στα πλαίσια της λειτουργίας της, χρειάζεται ένα web application που θα δίνει τη δυνατότητα στους εργαζόμενους - διαχειριστές της πλατφόρμας της να έχουν πρόσβαση σε πληροφορίες που αφορούν πελάτες, ακίνητα κι επισκευές, με σκοπό την ομαλότερη κι αποδοτικότερη λειτουργία των συνεργείων της. Επίσης, θα δίνει την δυνατότητα στους πελάτες της να επιβλέπουν την πορεία εργασιών επισκευής/ανακαίνισης της ιδιοκτησίας τους.
● Admin ( Υπάλληλος της αντιπροσωπείας)
● Property Owner/User ( Χρήστης της πλατφόρμας - πελάτης )
● Η Αρχική Σελίδα του Admin (homepage) θα παρουσιάζει τις ενεργές
επισκευές της ημέρας (επισκευές που είναι σε εξέλιξη) και θα δίνει τη
δυνατότητα στους διαχειριστές να πλοηγηθούν στις ακόλουθες σελίδες:
○ Ιδιοκτητών (Property Owners)
○ Επισκευών (Repairs)
● Σελίδα Property Owners : Θα περιέχει τις εξής λειτουργίες: Δημιουργία, Αναζήτηση, Ενημέρωση, Διαγραφή. ○ Δημιουργία (Create) Property Owner : Θα εμφανίζεται φόρμα με τα εξής πεδία: ■ ΑΦΜ (χαρακτηρίζει μοναδικά τους χρήστες), ■ ‘ Όνομα , ■ Επίθετο , ■ Διεύθυνση , ■ Αριθμό τηλεφώνου, ■ Εmail , ■ Κωδικό χρήστη , ■ Τύπος ιδιοκτησίας ( Μονοκατοικία, Μεζονέτα, Πολυκατοικία) ○ Αναζήτηση (Search) : Θα περιέχει τα εξής πεδία προς αναζήτηση: ■ ΑΦΜ ■ email ○ Ενημέρωση (Update) : Σε αυτήν την σελίδα, θα εμφανίζονται τα πλήρη στοιχεία ενός χρήστη και θα μπορεί ο διαχειριστής να τα τροποποιεί. Το navigation στην σελίδα μπορεί να γίνει με αντίστοιχο link στην σελίδα της αναζήτησης. ○ Διαγραφή (Delete) : Μέσω της σελίδας της ενημέρωσης, θα παρέχεται ειδικό κουμπί που θα επιτρέπει αυτή τη λειτουργία. Προτείνεται με το πάτημα του κουμπιού να πετάγεται Javascript παράθυρο για επιβεβαίωση της ενέργειας. Σημείωση: οι επιλογές για Ενημέρωση, Διαγραφή μπορουν να βρίσκονται δίπλα από τα αποτελέσματα της αναζήτησης για κάθε χρήστη/ιδιοκτήτη. ● Σελίδα Επισκευών(Repair) ιδιοκτησίας : Θα περιέχει τις εξής λειτουργίες: Αναζήτηση, Δημιουργία, Διαγραφή, Ενημέρωση. ○ Δημιουργία (Create) : ■ Ημερομηνία (datetime) της προγραμματισμένης επισκευής (repair), ■ Κατάσταση της επισκευής (Σε αναμονή, Σε εξέλιξη και Ολοκληρωμένη - προεπιλεγμένη η κατάσταση αναμονής) ■ Είδος επισκευής (Βάψιμο, Μόνωση, Κουφώματα, υδραυλικές εργασίες, ηλεκτρολογικές εργασίες), ■ Κόστος της επισκευής, ■ Διεύθυνση της επισκευής
■ Owner για τον οποίο γίνεται η επισκευή, ■ Περιγραφή ως free-text πεδίο για τις εργασίες που θα γίνουνε (π.χ εγκατάσταση ηλιακού θερμοσίφωνα). ○ Ενημέρωση (Update) : Παρόμοια με τη σελίδα του Owner, όπου θα δίνεται η δυνατότητα ενημέρωσης των στοιχείων της επισκευής (π.χ. Το status) ○ Αναζήτηση (Search) : Με βάση ■ Ημερομηνία ή Εύρος ημερομηνιών ■ ΑΦΜ χρήστη σε περίπτωση που θέλουμε να εμφανίσουμε όλες τις επισκευές που γίνονται για έναν κάτοχο ακινήτων. ○ Διαγραφή (Delete) : Μέσω της σελίδας της ενημέρωσης, θα παρέχεται ειδικό κουμπί που θα επιτρέπει αυτή τη λειτουργία. Προτείνεται με το πάτημα του κουμπιού να πετάγεται Javascript παράθυρο για επιβεβαίωση της ενέργειας. ● Authentication & Authorization: Μετά την ταυτοποίηση τους, αναλόγως τον τύπο τους, οι απλοί χρήστες δεν πρέπει να έχουν πρόσβαση στις σελίδες των διαχειριστών (αλλάζοντας δηλαδή το url). Σημείωση: ποιό είναι το μειονέκτημα της παραπάνω μοντελοποίησης; Πως θα μπορούσε να αντιμετωπιστεί;
● Validations μέσω Javascript για φόρμες εισαγωγής στοιχείων. Για
παράδειγμα, να μην μπορεί να εισαχθεί χρήστης με κενό ΑΦΜ.
● Validations στο BackEnd κατά την εισαγωγή στοιχείων: Για παράδειγμα,
δεν μπορεί να εισαχθεί χρήστης με email ή ΑΦΜ που υπάρχουν ήδη
● Εισαγωγή έξτρα οντότητας στην εφαρμογή: Ιδιοκτησία(Property).
Σελίδα Property : Θα περιέχει τις εξής λειτουργίες: Αναζήτηση,
Δημιουργία, Διαγραφή, Ενημέρωση.
○ Δημιουργία : Φόρμα με τα εξής πεδία:
■ Αριθμός Ταυτότητας Ακινήτου , ο οποίος συμπίπτει με
τον αντίστοιχο αριθμό του Ε9 και θα χαρακτηρίζει
μοναδικά το ακίνητο,
■ Διευθυνση ιδιοκτησίας ,
■ Έτος κατασκευής ,
■ Τύπος ιδιοκτησίας ( Μονοκατοικία, Μεζονέτα,
Πολυκατοικία) , (Σημ. το συγκεκριμένο πεδίο αφαιρείται
πλέον από τον ιδιοκτήτη
■ ΑΦΜ του ιδιοκτήτη του.
○ Αναζήτηση : Ο διαχειριστής θα μπορεί να αναζητήσει ακίνητα
βάσει διαφόρων κριτηρίων, αλλά κυρίως
■ Αριθμός Ταυτότητας Ακινήτου
■ ΑΦΜ.
○ Ενημέρωση : Παρόμοια με τη σελίδα του Owner.
○ Διαγραφή : Παρόμοια με τη σελίδα του Owner.
Ο χρήστης θα εισάγει το email και τον κωδικό του και ανάλογα τον τύπο/ρόλο του, θα παραπέμπεται σε μία από τις παρακάτω 2 σελίδες
- Property Owner (User) Home Page
- Admin Ηome Page
Η homepage του διαχειριστή θα πρέπει να εμφανίζει τα 10 επόμενα repairs που πρέπει να γίνουν, βάσει της ημέρας και ώρας που θα έχουν οριστεί. Μόνο οι διαχειριστές θα μπορούν να εκτελούν τις λειτουργίες που αναφέρθηκαν παραπάνω, και θα μπορεί να κατευθύνεται προς τις αντίστοιχες σελίδες μέσω κατάλληλου menu/navigation bar. H homepage του απλού χρήστη θα πρέπει να δείχνει μόνο τις επισκευές που τον αφορούν.
Για την διαχείριση χρηστών - property owner θα πρέπει να δημιουργηθούν οι παρακάτω σελίδες/views:
- Δημιουργία property owner με την αντίστοιχη φόρμα (create-owner-view)
- Σελίδα επεξεργασίας στοιχείων owner. Στυλιστικά θα μοιάζει με τη δημιουργία owner απλώς τα πεδία θα είναι προσυμπληρωμένα. Επιπλέον θα υπάρχει και ένα κουμπί το οποίο όταν πατιέται θα διαγράφει τον αντίστοιχο Owner. (edit-owner-view)
- Σελίδα αναζήτησης χρηστών: Μία φόρμα με τα κριτήρια αναζήτησης που αναφέρθηκαν και από κάτω ένα table με τα αποτελέσματα (αρχικά άδειο στην 1η επίσκεψη στη σελίδα). (search-owner-view) Με τον ίδιο τρόπο ορίζονται και τα αντίστοιχα views-σελίδες για το και για το repair. Συγκεκριμένα:
- Create-repair-view
- Edit-repair-view
- Search-repair-view
- Create-property-view (nice to have)
- Edit-property-view (nice to have)
- Search-property-view (nice to have)
● Java SE 11
● Database: MS SQL Server
● Spring Boot, Spring MVC, Spring Security
● Maven
● FreeMarker Template (FTL)
● Javascript/JQuery
● VCS: Git (Github repositories)
● Χρησιμοποιήστε Spring Initializr (https://start.spring.io/) για να
δημιουργήσετε ένα template Spring Project που θα χρησιμοποιήσετε ως
codebase. Τα Dependencies που θα χρειαστείτε είναι τουλάχιστον το JPA
και το Freemarker.
● Για την ανάπτυξη του FE, προτείνεται η χρήση του Bootstrap Framework
(http://getbootstrap.com/). Ωστόσο, δε χρειάζεται να περιοριστείτε σε
αυτό μόνο, μπορείτε και για την ακρίβεια σας ενθαρρύνουμε να
εμπλουτίσετε την εφαρμογή σας με δικά σας styles σε συνδυασμό με το
Bootstrap ή να χρησιμοποιήσετε ένα εντελώς διαφορετικό της αρεσκείας
σας. Παρ’ όλα αυτά σας συμβουλεύουμε να μην αναλωθείτε στο styling
των σελίδων αυτό καθ’ αυτό.
● Προτείνεται breakdown των tasks στα διάφορα μέλη της ομάδας με
τρόπο που θα συζητηθεί (functionality, component κτλ) και η
χρησιμοποίηση Trello board για καλύτερη διαχείριση και εποπτεία.
● Ακολουθήστε το παράδειγμα της 3-tier αρχιτεκτονικής (controller,
service, repository) και κατανείμετε σε αντίστοιχα packages τις
αντίστοιχες κλάσεις.
● Χρησιμοποιήστε Git Repo (GitHub) για να γίνεται σωστά το code
versioning και sharing μεταξύ των μελών της κάθε ομάδας. Προτείνεται
δημιουργία ενός empty repo από κάποιο μέλος της ομάδας μέσω GitHub
interface, o οποίος στην συνέχεια θα ανεβάσει και το initialized
codebase, έτσι ώστε στην συνέχεια να είναι δυνατό git clone από το repo
αυτό.
● Ξεκινήστε υιοθετώντας πρώτα το απλο μοντέλο (Property Owner - Repair)
Τα milestones δίνονται κυρίως σαν ένας λογικός διαχωρισμός των διαφόρων tasks και θα μας βοηθήσουν να κατανείμουμε χρονικά τα διάφορα στάδια υλοποίησης. Δεν είναι υποχρεωτική η τήρησή τους, αλλά προτείνεται να ακολουθούνται, ώστε να υπάρχει μια ένδειξη της προόδου του παραδοτέου. ● 7/12: Προετοιμασία και υλοποίηση των domain entities και συνεπακόλουθα του σχήματος της βάσης (χρησιμοποιώντας το ddl-auto property του hibernate) και του structure του webapp και import σε κάποιο IDE (π.χ Intellij). Επίσης δημιουργία του GitHub repository και των accounts των μελών της ομάδας. ● 14/12: Υλοποίηση των home pages των Admin και Property Owner/User ● 17/12: Υλοποίηση εισαγωγής/αναζήτησης/τροποποίησης/διαγραφής Property Οwners και Repairs από τον Admin. ● 19/12: Υλοποίηση login functionality, security features.
● 21/12: Υλοποίηση των απαιτούμενων λειτουργιών για επισκευές (repairs)