• Nenhum resultado encontrado

Διαχείριση ασφαλιστικού καταστήματος.

N/A
N/A
Protected

Academic year: 2023

Share "Διαχείριση ασφαλιστικού καταστήματος."

Copied!
77
0
0

Texto

(1)

Οξουζίδης Αθανάσιος Κάπας Αντώνιος

Δασκαλίδης Ιωάννης

ΤΜΗΜΑ ΒΙΟΜΗΧΑΝΙΚΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ, ΑΤΕΙ ΚΑΒΑΛΑΣ

Διαχείριση

ασφαλιστικού καταστήματος

© 2014

(2)

1

Πίνακας Περιεχομένων

Περίληψη ... 4

Πρόλογος ... 5

Κεφάλαιο 1ο – Εισαγωγή ... 6

1.1 Τεχνολογίες ... 6

1.2 Σύντομη περιγραφή του συστήματος ... 7

Κεφάλαιο 2ο – Ανάλυση εφαρμογής ... 8

2.1 Εργαλεία ... 8

2.2 Η Βάση Δεδομένων ... 10

2.3 Προγραμματιστικές Τεχνικές ... 12

2.4 HTML έγγραφα ... 14

Κεφάλαιο 3ο – Σχεδίαση εφαρμογής ... 17

3.1 Οι κλάσεις της εφαρμογής ... 17

3.1.1 Η κλάση Database ... 17

3.1.2 Η κλάση Person ... 18

3.1.3 Η κλάση Employee... 18

3.1.4 Η κλάση Client ... 19

3.1.5 Η κλάση InsuredPerson ... 19

3.1.6 Η κλάση Product ... 19

3.1.7 Η κλάση Coverage ... 20

3.1.8 Η κλάση Contract... 20

3.1.9 Η κλάση ContractCoverage ... 21

3.1.10 Η κλάση Address... 21

3.1.11 Η κλάση Shop ... 21

3.1.12 Οι κλάσεις Car και Savings ... 21

3.2 Προγράμματα – Πελάτες ... 21

3.2.1 Κεντρική Σελίδα ... 22

3.2.2 Διαχείριση πελατολόγιου ... 22

3.2.3 Διαχείριση ασφαλιστικών προϊόντων και των καλύψεών τους ... 23

3.2.4 Διαχείριση ασφαλιστικών υπαλλήλων ... 25

3.2.5 Διαχείριση συμβολαίων ... 25

3.2.6 Υπηρεσία αποστολής e-mail ... 27

3.2.7 Υπηρεσία δημιουργίας pdf αρχείων συμβολαίων ... 28

(3)

2

3.2.8 Πιστοποίηση και σύνδεση / αποσύνδεση χρηστών... 29

Κεφάλαιο 4ο – Συμπεράσματα και μελλοντικές επεκτάσεις... 31

4.1 Τι επιτεύχθηκε ... 31

4.2 Προτάσεις μελλοντικής εξέλιξης ... 31

Παράρτημα Α – Εγχειρίδιο χρήσεως εφαρμογής ... 33

Α-1 Ξεκινώντας ... 33

Α-2 Εισαγωγή και διαχείριση πελατών ... 35

Α-3 Δημιουργία και διαχείριση ασφαλιστικών προϊόντων ... 36

Α-4 Δημιουργία και διαχείριση συμβολαίων ... 39

Α-5 Εισαγωγή και διαχείριση ασφαλιστικών υπαλλήλων ... 42

A-6 Πληροφορίες ασφαλιστικού καταστήματος ... 43

Α-7 Έξοδος από το σύστημα ... 44

Α-8 Υπενθύμιση στοιχείων ... 44

Παράρτημα Β – Λεξικό δεδομένων ... 45

Β-1 Κλάση Database ... 45

Β-2 Κλάση Person ... 45

Β-3 Κλάση Employee ... 47

Β-4 Κλάση Client ... 48

Β-5 Κλάση InsuredPerson ... 49

Β-6 Κλάση Product... 50

Β-7 Κλάση Coverage ... 52

Β-8 Κλάση Contract ... 53

Β-9 Κλάση ContractCoverage ... 55

Β-10 Κλάση Shop ... 56

Β-11 Κλάση Address ... 57

Β-12 Κλάση Car ... 58

Β-13 Κλάση Savings ... 59

Παράρτημα Γ – Έγγραφο απαιτήσεων ... 61

Παράρτημα Δ – Προδιαγραφές ... 64

Παράρτημα Ε – Βάση Δεδομένων ... 72

Ε-1 Διάγραμμα ΜΟΣ ... 72

Ε-2 Δομή πινάκων... 72

addresses ... 72

cars ... 73

clients ... 73

contracts ... 73

(4)

3

contracts_coverages ... 73

coverages ... 74

employees ... 74

insured_persons ... 74

persons ... 74

products ... 75

savings ... 75

shops ... 75

Βιβλιογραφία ... 76

(5)

4

Περίληψη

Η παρούσα πτυχιακή ασχολείται με τη σχεδίαση και την υλοποίηση ενός πληροφοριακού συστήματος για τις ανάγκες μιας ασφαλιστικής εταιρίας. Το σύστημα αυτό προσφέρει τη διαχείριση του πελατολογίου, των ασφαλιστών, των ασφαλιστικών προϊόντων και συμβολαίων ενός ασφαλιστικού καταστήματος.

Το παρόν έργο αποτελεί μια διαδικτυακή εφαρμογή με βάση την οποία οι ασφαλιστές του γραφείου να μπορούν να εκτελούν τα διάφορα καθήκοντά τους μέσω διαδικτύου, είτε βρίσκονται στο γραφείο τους, είτε όχι (απομακρυσμένη πρόσβαση). Με αυτόν τον τρόπο, οι εργασίες εκτελούνται ταχύτερα αλλά και οικονομικότερα καθώς ο ασφαλιστής μπορεί να εργαστεί και από το χώρο του.

Το σύστημα αναπτύχθηκε με εργαλεία και τεχνολογίες ανοικτού και δωρεάν κώδικα, κάτι το οποίο σημαίνει ιδιαίτερα μειωμένο κόστος τόσο κατά την ανάπτυξη, όσο και κατά την λειτουργία του.

(6)

5

Πρόλογος

Το σύστημα αναπτύχθηκε ως διαδικτυακή εφαρμογή για τους παρακάτω λόγους:

 Πρόσβαση από οποιονδήποτε υπολογιστή που έχει σύνδεση στο διαδίκτυο.

 Εξ αποστάσεως αποθήκευση και αποστολή πληροφοριών.

 Συμβατότητα με όλες τις πλατφόρμες (πχ. windows, mac, linux κλπ)

 Μειωμένες απαιτήσεις σε πόρους (αποθηκευτικός χώρος, ταχύτητα CPU, μνήμη κλπ).

Ένα πολύ σημαντικό ζητούμενο από το ασφαλιστικό γραφείο, ήταν η δυνατότητα της απομακρυσμένης εργασίας των ασφαλιστών του. Έτσι, οι διαδικτυακές εφαρμογές καλύπτουν τέλεια τη συγκεκριμένη απαίτηση.

Κάθε ασφαλιστής μπορεί να διαχειρίζεται το πελατολόγιό του και τα συμβόλαιά του. Ο υπεύθυνος του ασφαλιστικού γραφείου (που είναι στην ουσία και ο διαχειριστής του συστήματος) μπορεί επιπλέον να διαχειρίζεται τα διάφορα ασφαλιστικά προϊόντα.

Το σύστημα προσφέρει και επιπλέον υπηρεσίες όπως:

- Δημιουργία αρχείου PDF των συμβολαίων για εύκολη προεπισκόπηση αλλά και εκτύπωση αυτών.

- Ηλεκτρονικό ταχυδρομείο με τη βοήθεια του οποίου μπορεί αμέσως να αποσταλεί στον πελάτη αντίγραφο του συμβολαίου του, καθώς και για την υπενθύμιση στοιχείων των ασφαλιστών.

- Δυνατότητες αναζήτησης πελατών, ασφαλιστικών προϊόντων και συμβολαίων με ένα πλήθος φίλτρων.

Τέλος, η εφαρμογή κατασκευάστηκε με τέτοιον τρόπο ώστε να είναι προσπελάσιμη και από τον απλό επισκέπτη προσφέροντάς του πληροφορίες σχετικές με το ασφαλιστικό κατάστημα (όπως: τρόποι επικοινωνίας, χάρτης Google, στοιχεία διεύθυνσης κ.λπ.) καθώς και πληροφορίες σχετικά με τα διαθέσιμα προϊόντα του γραφείου.

(7)

6

Κεφάλαιο 1

ο

– Εισαγωγή

1.1 Τεχνολογίες

Η συγκεκριμένη εργασία αφορά στη σχεδίαση και υλοποίηση ενός πληροφοριακού συστήματος με εφαρμογή στον τομέα των ασφαλιστικών υπηρεσιών. Πρόκειται για μια διαδικτυακή εφαρμογή, έτσι ώστε να επιτρέπει την απομακρυσμένη πρόσβαση και να δίνεται η δυνατότητα στους ασφαλιστικούς συμβούλους της εργασίας από απόσταση.

Για την ανάπτυξη της εφαρμογής χρησιμοποιήθηκαν δωρεάν τεχνολογίες ελεύθερου και ανοικτού λογισμικού. Μία από αυτές είναι και η γλώσσα PHP με την οποία αναπτύχθηκαν και όλα τα προγράμματα που απαρτίζουν το σύνολο της εφαρμογής. Πρόκειται για μια server side γλώσσα script, η οποία δίνει τη δυνατότητα παραγωγής δυναμικών ιστοσελίδων. Με αυτό τον τρόπο, είναι δυνατή η δημιουργία html εγγράφων ανάλογα με την περίπτωση. Χαρακτηριστικό παράδειγμα είναι η κεντρική σελίδα της εφαρμογής η οποία προσαρμόζεται ανάλογα με το αν είναι συνδεδεμένος κάποιος χρήστης ή όχι.

Η τεχνολογία βάσης δεδομένων που χρησιμοποιήθηκε είναι η MySQL η οποία συνεργάζεται άψογα με την PHP. Η ίδια η MySQL, άλλωστε, είναι γνωστή για την αξιοπιστία και την ταχύτητα που προσφέρει, καθώς επίσης και για τους ελάχιστους σχετικά πόρους που καταναλώνει στο web server. Καθώς η εφαρμογή απαιτεί την καταγραφή πληροφοριών, μια βάση δεδομένων είναι απαραίτητη.

Ο διακομιστής (web server) είναι ο Apache ο οποίος, ως έργο ελεύθερου και δωρεάν λογισμικού, κρίθηκε ιδανικός για ακόμη περισσότερο μειωμένο κόστος. Ο Apache βέβαια επιλέχθηκε και για την ενσωματωμένη υποστήριξη που διαθέτει για τη γλώσσα PHP καθώς και για την αξιοπιστία και την ασφάλεια που τον διακρίνουν.

Όλες οι σελίδες της εφαρμογής είναι HTML 5 έγγραφα. Αυτό σημαίνει ότι η εφαρμογή συμβαδίζει με τις τελευταίες τεχνολογίες και τάσεις στην ανάπτυξη διαδικτυακών εφαρμογών. Σημαίνει, όμως, και ότι από πλευράς προγράμματος περιήγησης (browser) πρέπει ο χρήστης να έχει έναν ενημερωμένο περιηγητή που να μπορεί να εκμεταλλευτεί και να εμφανίσει σωστά ένα HTML 5 έγγραφο. Το τελευταίο δεν αποτελεί πρόβλημα καθώς οποιοσδήποτε υπολογιστής με πρόσβαση στο διαδίκτυο, διαθέτει πλέον και ενημερωμένο browser.

(8)

7

1.2 Σύντομη περιγραφή του συστήματος

Η κεντρική σελίδα της εφαρμογής παρουσιάζει βασικές πληροφορίες σχετικές με το κατάστημα (μέσω επιλογών μενού) καθώς και έναν χάρτη που δείχνει τη θέση του ασφαλιστικού γραφείου μέσα στην πόλη. Το σύστημα για να χρησιμοποιηθεί από κάποιον ασφαλιστή, ή τον ίδιο το διαχειριστή, απαιτεί τη σύνδεση με βάση το όνομα χρήστη και τον κωδικό.

Το μενού της εφαρμογής προσαρμόζεται δυναμικά, ανάλογα με το αν ο χρήστης έχει συνδεθεί ή όχι και ανάλογα με το αν αυτός που συνδέθηκε είναι διαχειριστής ή απλός ασφαλιστής. Για παράδειγμα στο διαχειριστή δίνεται η δυνατότητα επεξεργασίας, προσθήκης και διαγραφής των ασφαλιστικών προϊόντων, ενώ στον ασφαλιστή όχι.

Οι ασφαλιστές έχουν δικαίωμα πρόσβασης στο πελατολόγιο του ασφαλιστικού καταστήματος, καθώς επίσης και να δημιουργούν συμβόλαια για τους πελάτες τους. Όλα τα συμβόλαια όμως, προκειμένου να τεθούν σε ισχύ, πρέπει να υποβληθούν σε επεξεργασία από το διαχειριστή.

Τα συμβόλαια δημιουργούνται επίσης δυναμικά, ανάλογα με τον τύπο και το είδος της ασφάλειας. Για παράδειγμα, το σύστημα θα ζητήσει διαφορετικά δεδομένα αν πρόκειται για ασφάλεια οχήματος και διαφορετικά αν πρόκειται για κάποιο αποταμιευτικό πρόγραμμα. Κάθε ασφαλιστής διαχειρίζεται μόνο τα δικά του συμβόλαια, με εξαίρεση το διαχειριστή ο οποίος για ευνόητους λόγους έχει πρόσβαση σε οποιοδήποτε συμβόλαιο.

Στα επόμενα κεφάλαια παρουσιάζονται αναλυτικά η σχεδίαση και η υλοποίηση της εφαρμογής, διάφορα ζητήματα της βάσης δεδομένων και διάφορες τεχνικές προγραμματισμού που υιοθετήθηκαν.

(9)

8

Κεφάλαιο 2

ο

– Ανάλυση εφαρμογής

2.1 Εργαλεία

Οι διαδικτυακές εφαρμογές φιλοξενούνται και εκτελούνται από έναν διακομιστή (web server), ενώ παρουσιάζονται στο χρήστη μέσω ενός κατάλληλου προγράμματος περιήγησης (web browser).

Ο διακομιστής αναλαμβάνει την εκτέλεση των PHP scripts που αποτελούν στο σύνολό τους και την παρούσα εφαρμογή, ενώ ο περιηγητής στην ουσία εμφανίζει αρχεία σε μορφή HTML τα οποία έχουν παραχθεί δυναμικά μέσω της PHP και του διακομιστή.

Επιλέχθηκε η 5η έκδοση της HTML για την παρουσίαση των σελίδων που απαρτίζουν την εφαρμογή για 2 λόγους:

- Οι σελίδες αποκτούν σημασιολογία χάρη στα νέα tags της HTML5 (όπως λ.χ. ‘nav’,

‘aside’, ‘article’ κ.λπ.) κάτι που έχει ιδιαίτερη σημασία πλέον για τις μηχανές αναζήτησης (Google, Yahoo κ.ά.).

- Η HTML5 έχει πλέον επικρατήσει και είναι το μέλλον. Η εφαρμογή, έτσι, συμβαδίζει με τις νέες εξελίξεις και θα συνεχίσει να το κάνει για αρκετά χρόνια.

Οι διαδικτυακές εφαρμογές, πρώτα αναπτύσσονται και ελέγχονται τοπικά και ύστερα

«ανεβαίνουν» σε κάποιον διακομιστή του διαδικτύου. Ένα σημαντικό εργαλείο που προσφέρει στον υπολογιστή του προγραμματιστή όλες τις τεχνολογίες σε τοπικό επίπεδο είναι το XAMPP (‘Χ’ – cross platform, ‘A’ – Apache, ‘M’ – MySQL, ‘P’ – PHP, ‘P’ – Perl). Το XAMPP στην ουσία μας προσφέρει, μετά από την εγκατάστασή του, έναν έτοιμο διακομιστή, ένα σύστημα βάσης δεδομένων και τη γλώσσα PHP μαζί με τις βιβλιοθήκες της.

Το ‘X’ σημαίνει ότι το XAMPP λειτουργεί σε όλες τις συμβατές πλατφόρμες, δηλαδή είτε σε υπολογιστές με Windows ή Mac OS ή Unix/Linux. Ακόμη, μέσω ενός απλού user interface μπορούμε να θέτουμε σε λειτουργία τον τοπικό διακομιστή μας και τη MySQL, όπως φαίνεται και στο επόμενο στιγμιότυπο:

(10)

9 Επιπλέον, το XAMPP έρχεται μαζί με ένα εύχρηστο εργαλείο ανάπτυξης και διαχείρισης των MySQL βάσεων, το λεγόμενο PHPMyAdmin, το οποίο και είναι διαθέσιμο από τη στιγμή που θα τεθεί σε λειτουργία ο Apache και ο MySQL server μέσω του localhost. Από οποιονδήποτε browser, λοιπόν, αν δώσουμε τη διεύθυνση:

localhost/phpmyadmin

οδηγούμαστε στο περιβάλλον του προγράμματος. Από το στιγμιότυπο που ακολουθεί, απεικονίζεται η βάση της εφαρμογής (insurance) με όλους τους πίνακές της:

(11)

10 Είναι ακόμη δυνατόν, να επεξεργαστούμε κάθε πίνακα και ως προς τη δομή του, αλλά και ως προς τις εγγραφές του και να διαχειριστούμε τους χρήστες της βάσης και τα δικαιώματά τους. Στο επόμενο στιγμιότυπο, απεικονίζεται η δομή του πίνακα employees:

2.2 Η Βάση Δεδομένων

Τα δεδομένα που καλείται να διαχειριστεί η εφαρμογή καθώς και οι διάφοροι συσχετισμοί μεταξύ τους απαιτούν τη σχεδίαση μιας κατάλληλης βάσης δεδομένων που να καλύπτει με βέλτιστο τρόπο όχι μόνο την αποθήκευση και την ανάκτησή τους, αλλά και να απαντά σε διάφορα ερωτήματα.

Ένα βασικό ζητούμενο που προέκυψε κατά το σχεδιασμό της βάσης ήταν και το εξής: στο σύστημα αποθηκεύονται διάφορες πληροφορίες που αφορούν σε ανθρώπους, με διαφορετικούς, όμως, ρόλους. Έτσι, πρέπει να αποθηκεύονται πληροφορίες που αφορούν στους πελάτες, αλλά και στους ασφαλιστές καθώς επίσης και σε ασφαλιζόμενους και δικαιούχους. Μία πρώτη (απλή) προσέγγιση θα μπορούσε να ήταν η δημιουργία αντίστοιχων πινάκων που κάποια δεδομένα θα ήταν κοινά, όπως για παράδειγμα, το επώνυμο, το όνομα, ο αριθμός ταυτότητας και ΑΦΜ και λοιπά. Κάτι τέτοιο, όμως, θα είχε ως αποτέλεσμα τη δημιουργία αρκετών πινάκων με όμοια πεδία (δηλαδή, το όνομα, το επώνυμο και άλλα τέτοια πεδία θα υπήρχαν και στον πίνακα πελατών και στον πίνακα ασφαλιστών και ούτω καθ’ εξής). Αντί αυτού, αποφασίστηκε όλα τα κοινά πεδία που έχουν

(12)

11 σχέση με προσωπικά στοιχεία να φυλάσσονται σε έναν πίνακα (persons) και στην ουσία να μοιράζονται στους υπόλοιπους πίνακες. Με αυτόν τον τρόπο, για παράδειγμα, ο πίνακας πελατών (clients) έχει ως ξένο κλειδί το person_id και έτσι το σύστημα μπορεί από την αντίστοιχη εγγραφή στον πίνακα persons να εντοπίσει τα προσωπικά στοιχεία ενός πελάτη.

Ένα ακόμη θέμα που εξετάστηκε, ήταν η σχέση ασφαλιζόμενου και δικαιούχου. Γενικά, σε μια ασφάλεια, το άτομο που την έχει είναι ο ασφαλιζόμενος. Αν πρόκειται για κάποια ασφάλεια ζωής ή κάποιο αποταμιευτικό πρόγραμμα, δίνεται η δυνατότητα ορισμού και κάποιων δικαιούχων. Ο αρχικός σχεδιασμός της βάσης ήταν να υπάρχουν 2 πίνακες: ο ένας να έχει πληροφορίες ασφαλιζόμενων και ο άλλος των δικαιούχων. Αυτό, όμως, οδήγησε πάλι σε 2 πίνακες οι οποίοι να διαθέτουν στην ουσία παρόμοιες πληροφορίες. Έτσι, αποφασίστηκε οι 2 πίνακες να αντικατασταθούν από έναν στον οποίο απλά προστέθηκαν τα πεδία is_insured & is_beneficiary που όταν έχουν τιμή 1 σημαίνει ότι το άτομο είναι ο ασφαλιζόμενος ή ο δικαιούχος αντίστοιχα.

Όσον αφορά στην αποθήκευση των στοιχείων διεύθυνσης των ανθρώπων (πελατών, ασφαλιστών, ασφαλιζομένων και δικαιούχων) αποφασίστηκε (για την ομαλή λειτουργία της βάσης) τα στοιχεία αυτά να κρατούνται σε ξεχωριστό πίνακα (addresses) και να συσχετίζονται με τον πίνακα persons (όπου εκεί κρατούνται τα προσωπικά στοιχεία των ανθρώπων) με ένα ξένο κλειδί (address_id) που να δείχνει στην αντίστοιχη διεύθυνση.

Το κάθε ασφαλιστικό προϊόν (πίνακας products) συνοδεύεται από ένα πλήθος καλύψεων.

Οι καλύψεις του κάθε προϊόντος αποθηκεύονται στον πίνακα coverages χρησιμοποιώντας ως ξένο κλειδί τον κωδικό του προϊόντος προκειμένου να είναι γνωστό ποια κάλυψη αντιστοιχεί σε ποιο προϊόν.

Ο πίνακας συμβολαίων (contracts) χρησιμοποιεί αρκετά ξένα κλειδιά προκειμένου να γίνει γνωστό για το κάθε συμβόλαιο:

 Σε ποιον ασφαλιστή έχει ανατεθεί (ξένο κλειδί ο κωδικός του ασφαλιστή – employee_id)

 Σε ποιον πελάτη ανήκει (ξένο κλειδί ο κωδικός του πελάτη – contracting_id)

 Σε ποιο προϊόν αναφέρεται (ξένο κλειδί ο κωδικός του προϊόντος – product_id) Για τα συμβόλαια παρέχονται επίσης κι άλλες πληροφορίες όπως η έναρξη και η λήξη σε μορφή ημερομηνίας, αν το συμβόλαιο είναι σε ισχύ ή όχι καθώς και η αξία του.

Κάποιες από τις καλύψεις που προσφέρουν τα ασφαλιστικά προϊόντα (και που συζητήθηκαν προηγουμένως) είναι προαιρετικές. Αυτό δημιούργησε το εξής πρόβλημα:

(13)

12 έπρεπε να είναι γνωστό για κάθε συμβόλαιο αν κάποιες από τις προαιρετικές καλύψεις είναι επιλεγμένες ή όχι. Κάτι τέτοιο είναι σημαντικό, όχι μόνο για να ξέρει ο πελάτης (και ο ασφαλιστής) τι καλύψεις περιέχονται στο συμβόλαιο, αλλά και για τον υπολογισμό της αξίας του συμβολαίου. Το πρόβλημα αντιμετωπίστηκε με έναν συσχετιστικό πίνακα (contracts_coverages) κάθε εγγραφή του οποίου συσχετίζει τον κωδικό ενός συμβολαίου με τον κωδικό μιας κάλυψης.

Τα ασφαλιστικά προϊόντα, επίσης, παρουσιάζουν κάποιες σημαντικές διαφορές αλλά και ομοιότητες. Για παράδειγμα, σε κάθε ασφάλεια πρέπει επιλεχθεί το προϊόν, ο πελάτης, να οριστούν οι ημερομηνίες έναρξης και λήξης καθώς και να επιλεχθούν οι καλύψεις (αυτές δηλαδή που είναι προαιρετικές). Αυτές είναι ο ομοιότητες. Αν, όμως, πρόκειται για ασφάλεια οχήματος, πρέπει να ζητηθούν τα δεδομένα του οχήματος, ενώ αν πρόκειται για κάποιο αποταμιευτικό πρόγραμμα πρέπει να ζητηθεί το μηνιαίο ποσό αποταμίευσης. Αυτά τα προβλήματα αντιμετωπίστηκαν με τη δημιουργία δύο πινάκων cars και savings, έτσι ώστε να αποθηκεύονται εκεί αυτές οι πληροφορίες.

Τέλος, τα δεδομένα του ασφαλιστικού καταστήματος βρίσκονται στον πίνακα shops. Εκεί κρατούνται η επωνυμία του καταστήματος, τα τηλέφωνα επικοινωνίας, το fax, το e-mail, η ιστοσελίδα του καθώς και ένα ξένο κλειδί με τον κωδικό της διεύθυνσής του (η διεύθυνσή του βρίσκεται όπως και όλες οι άλλες στον πίνακα addresses). Ο πίνακας shops δημιουργήθηκε για δύο λόγους. Ο πρώτος λόγος είναι ότι εισάγοντας τα δεδομένα ως εγγραφή στη βάση είναι εύκολη η διαχείρισή τους και ο δεύτερος λόγος αφορά στο μέλλον.

Αν το κατάστημα κάποια στιγμή αρχίσει να διαθέτει και υποκαταστήματα, τότε σε αυτή την περίπτωση ο πίνακας shops θα είναι ακόμη πιο ζωτικής σημασίας. Για παράδειγμα, το σύστημα θα μπορεί να ξεχωρίσει ποιοι υπάλληλοι βρίσκονται σε ποιο κατάστημα καθ’ ότι στον πίνακα employees υπάρχει για κάθε υπάλληλο – ασφαλιστή και ο κωδικός του καταστήματος (ως ξένο κλειδί).

Στο παράρτημα Ε, παρουσιάζονται αναλυτικά οι πίνακες και το διάγραμμα ΜΟΣ της βάσης δεδομένων.

2.3 Προγραμματιστικές Τεχνικές

Για την ανάπτυξη του κώδικα της εφαρμογής υιοθετήθηκε το αντικειμενοστραφές είδος προγραμματισμού. Κάθε ένας από τους πίνακες της βάσης δεδομένων αποτελεί μία

(14)

13 οντότητα, η οποία μεταφράζεται στο αντίστοιχο αντικείμενο, σύμφωνα με τις αρχές του αντικειμενοστραφούς προγραμματισμού.

Υπάρχουν πολλοί λόγοι για τους οποίους επιλέχθηκε το συγκεκριμένο είδος προγραμματισμού, έναντι π.χ., του διαδικασιακού προγραμματισμού. Οι λόγοι αυτοί, είναι στην ουσία τα πλεονεκτήματα που προσφέρει ο αντικειμενοστραφής προγραμματισμός:

- Επαναχρησιμοποίηση κώδικα: οι κλάσεις που γράφονται μπορούν κάλλιστα να χρησιμοποιηθούν και σε άλλα προγράμματα.

- Ενθυλάκωση: από τη στιγμή που θα δημιουργηθεί κάποιο αντικείμενο, δε χρειάζεται να είναι γνωστές οι λεπτομέρειες υλοποίησής του προκειμένου να χρησιμοποιηθεί.

- Απόκρυψη πληροφοριών: με αυτή τη δυνατότητα το αντικείμενο προστατεύει ενδεχομένως ευαίσθητα δεδομένα και ορίζει τους τρόπους που κάποιος μπορεί να αλληλοεπιδράσει με αυτό.

- Καλύτερη διαχείριση του κώδικα: ο κώδικας ουσιαστικά χωρίζεται σε λειτουργικές μονάδες (κλάσεις) και σε προγράμματα – πελάτες. Με αυτόν τον τρόπο βελτιώνεται η οργάνωση, η συντήρηση και η κατανόηση όλης της εφαρμογής.

Κάθε κλάση που δημιουργείται, λοιπόν, έχει ως ιδιότητές της τα πεδία του πίνακα που αναπαριστά. Για παράδειγμα, η κλάση Person αναπαριστά αντικείμενα των εγγραφών του πίνακα persons από τη βάση δεδομένων.

Με τη βοήθεια της κληρονομικότητας (μία από τις τεχνικές του αντικειμενοστραφούς προγραμματισμού), αναπτύχθηκαν κλάσεις οι οποίες είχαν ως βάση την κλάση Person. Για παράδειγμα, η κλάση Client που αναπαριστά αντικείμενα πελατών από τον αντίστοιχο πίνακα της βάσης clients, έχει για γονική της κλάση την Person και αυτό διότι ένας πελάτης είναι-ένας (σχέση: is-a) άνθρωπος και πρέπει να κληρονομήσει όλα τα βασικά στοιχεία του ανθρώπου. Έτσι, μπορεί η κλάση Client να διαθέτει μόνο 2 ιδιότητες (τον κωδικό πελάτη και τον κωδικό ατόμου), όμως κληρονομεί αυτομάτως και όλες τις ιδιότητες από την κλάση Person. Το ίδιο ισχύει και για τις κλάσεις Employee και InsuredPerson. Με αυτόν τον τρόπο επιταχύνεται ακόμη περισσότερο η συγγραφή του κώδικα, ενώ αποφεύγονται οι επαναλήψεις ίδιων κομματιών κώδικα.

Person

Client Employee InsuredPerson

Οι κλάσεις αυτές, κληρονομούν από την κλάση Person

(15)

14 Η γλώσσα PHP, που χρησιμοποιήθηκε για τη συγγραφή ολόκληρου του κώδικα της εφαρμογής, καλύπτει πλήρως όλες τις αρχές του αντικειμενοστραφούς προγραμματισμού και επιπλέον συνεργάζεται άψογα με την MySQL (database server) και τον Apache (web server).

2.4 HTML έγγραφα

Τα HTML έγγραφα, τα οποία παράγονται μεν δυναμικά από την εφαρμογή ανάλογα με το σενάριο και τις επιλογές του χρήστη, χρειάζονται μια βασική δομή και οργάνωση. Αυτό γίνεται και για λόγους ομοιομορφίας αλλά και για να υπάρχει μια συγκεκριμένη συνοχή, ώστε τα διάφορα αποτελέσματα να μπορούν να εμφανίζονται στα αντίστοιχα σημεία που πρέπει. Για παράδειγμα, σε συγκεκριμένο σημείο των σελίδων (στο πάνω μέρος) εμφανίζεται πάντα η γραμμή μενού, η οποία όμως, ανάλογα την κατάσταση της εφαρμογής, εμφανίζει διαφορετικές επιλογές.

Στο παρακάτω προσχέδιο, απεικονίζεται η δομή μιας σελίδας:

(1) Περιοχή κεφαλίδας (header): λογότυπο και επωνυμία του ασφαλιστικού γραφείου 1

2

3

4

(16)

15 (2) Περιοχή πλοήγησης (navigation): μενού διαθέσιμων επιλογών / μετάβασης σε

άλλες σελίδες

(3) Περιοχή απεικόνισης περιεχομένου (container): πελατολόγιο, ασφάλειες, συμβόλαια κ.λπ.)

(4) Περιοχή υποσέλιδου (footer): έτος κατασκευής – επωνυμία γραφείου κ.λπ.

Η περιοχή της κεφαλίδας και του υποσέλιδου περιέχουν στατικές πληροφορίες (δεν αλλάζει ποτέ η επωνυμία ή το λογότυπο) με εξαίρεση το έτος στο υποσέλιδο που ανανεώνεται αυτομάτως μέσω εντολής PHP που αποτυπώνει το τρέχον έτος.

Η παραπάνω δομή μεταφέρεται στην HTML5 σήμανση ως εξής:

<!DOCTYPE html>

<html lang="el">

<head>

</head>

<body>

<!-- 1. Header -->

<header id=”logo”>

</header>

<!-- 2. Navigation / Menu -->

<nav id=”navbar”>

</nav>

<!-- 3. Main content -->

<section class=”container”>

</section>

<!-- 4. Footer -->

<footer id=”footer”>

</footer>

</body>

</html>

Για την αποφυγή επαναλαμβανόμενων τμημάτων κώδικα, αρκετά σημεία της παραπάνω σήμανσης έχουν μεταφερθεί σε ξεχωριστά PHP αρχεία και κάθε φορά συμπεριλαμβάνονται (include) στην κάθε σελίδα της εφαρμογής. Στην ουσία η μόνη περιοχή που δεν γίνεται include είναι το <section class=”container”>, η περιοχή περιεχομένου δηλαδή, ενώ η δήλωση του html αρχείου μαζί με τις πληροφορίες κεφαλίδας (head), το υποσέλιδο (footer)

(17)

16 καθώς και η γραμμή μενού (nav) βρίσκονται το κάθε ένα στο δικό του PHP αρχείο:

header.php, footer.php και navigation.php αντίστοιχα.

(18)

17

Κεφάλαιο 3

ο

– Σχεδίαση εφαρμογής

3.1 Οι κλάσεις της εφαρμογής

Σύμφωνα με το αντικειμενοστραφές μοντέλο προγραμματισμού, κάθε έννοια εκφράζεται και από μία αντίστοιχη κλάση. Έτσι, αναπτύχθηκαν κλάσεις σχεδόν για τα πάντα: μία κλάση διαχείρισης και σύνδεσης για τη βάση δεδομένων και μία κλάση για κάθε πίνακα της βάσης δεδομένων.

3.1.1 Η κλάση Database

Όλα τα προγράμματα που αποτελούν την εφαρμογή, πρέπει να εκτελούν κάποια ερωτήματα προς τη βάση, προκειμένου να ανακτούν τις πληροφορίες που απαιτούνται. Για να εκτελεστεί, όμως, οποιοδήποτε ερώτημα, πρέπει πρώτα να γίνει η σύνδεση στη βάση δεδομένων. Έπειτα, μέσω κατάλληλων – ενσωματωμένων συναρτήσεων της PHP πρέπει να υποβληθούν τα ερωτήματα αυτά στη βάση, ώστε τελικώς να επιστραφούν τα αποτελέσματα. Αυτές τις λειτουργίες εξυπηρετεί η κλάση Database.

Ο δημιουργός της φροντίζει να γίνει η σύνδεση στη βάση παρέχοντας τα απαραίτητα στοιχεία:

1. Όνομα εξυπηρετητή

2. Όνομα χρήστη με δικαιώματα στη βάση 3. Κωδικός χρήστη

4. Όνομα της βάσης

Τα 3 πρώτα στοιχεία, δίνονται στην PHP συνάρτηση mysql_connect για να πραγματοποιηθεί η σύνδεση. Το τελευταίο στοιχείο, το όνομα της βάσης, δίνεται στην mysql_select_db ώστε ο MySQL server να γνωρίζει με ποια βάση θα εργαστεί.

Η αποσύνδεση από τη βάση, γίνεται μέσω της μεθόδου disconnect της κλάσης, η οποία στην ουσία καλεί τη συνάρτηση mysql_close της PHP.

Τα ερωτήματα εκτελούνται μέσω της μεθόδου query, η οποία καλεί την PHP συνάρτηση mysql_query, παρέχοντάς της το ερώτημα και τη σύνδεση, δυο απαραίτητα στοιχεία για την αποστολή του ερωτήματος προς τη βάση.

Από την κλάση αυτή, παράγεται ένα και μόνο καθολικό (global) αντικείμενο ώστε να υπάρχει πάντα η σύνδεση με τη βάση και το σύστημα να είναι έτοιμο ανά πάσα στιγμή για την εκτέλεση διαφόρων ερωτημάτων.

(19)

18 3.1.2 Η κλάση Person

Η κλάση Person, αποτελεί τη βασική κλάση για άλλες που χρειάζονται μια κοινή λειτουργικότητα και περιλαμβάνει στην ουσία, τα προσωπικά στοιχεία ενός ατόμου όπως:

- Κωδικός - Όνομα - Επώνυμο - Τηλέφωνο - Κινητό - Ταυτότητα - ΑΦΜ - E-mail - Εργασία

- Ημερομηνία γέννησης

Η κλάση αυτή, περιέχει ορισμένες μεθόδους για την αποθήκευση, ενημέρωση και διαγραφή εγγραφών στον πίνακα persons, καθώς και για τη δημιουργία αντικειμένων από τις αντίστοιχες εγγραφές. Αυτή η προσέγγιση ακολουθήθηκε και σε όλες τις υπόλοιπες κλάσεις που αναπαριστούν αντικείμενα από τους αντίστοιχους πίνακες της βάσης.

Ειδικότερα, για τις κλάσεις Employee, Client & InsuredPerson που κληρονομούν από την Person ακολουθήθηκε η εξής μεθοδολογία για την ομαλή λειτουργία της αποθήκευσης, ενημέρωσης και διαγραφής: πρώτα εφαρμόζεται η ενέργεια στο «βασικό» Person κομμάτι, και ύστερα η αντίστοιχη ενέργεια στο παράγωγο αντικείμενο.

Υπάρχουν επίσης και μέθοδοι αναζήτησης εγγραφών με βάση τον κωδικό ή το e-mail τους.

Αυτές οι μέθοδοι είναι στην ουσία στατικές μέθοδοι (δηλαδή μέθοδοι κλάσης) και όχι μέθοδοι αντικειμένων. Ο λόγος είναι ο εξής: όταν εκτελείται η λειτουργία αναζήτησης με βάση π.χ. τον κωδικό μιας εγγραφής, δεν υπάρχει ακόμη κάποιο αντικείμενο δημιουργημένο, αλλά θα δημιουργηθεί κάποιο αν η μέθοδος βρει την αντίστοιχη εγγραφή.

Έτσι δεν είναι δυνατό αυτή η μέθοδος να καλεστεί από κάποιο αντικείμενο.

3.1.3 Η κλάση Employee

Η κλάση Employee κληρονομεί την κλάση Person ώστε να έχει πρόσβαση στα βασικά στοιχεία ενός ατόμου και επιπλέον έχει τα στοιχεία:

- Κωδικός υπαλλήλου - Κωδικός καταστήματος - Όνομα χρήστη (username)

(20)

19 - Κωδικός χρήστης (password)

- Ημερομηνία πρόσληψης

- Ένδειξη αν πρόκειται για διαχειριστή ή όχι

- Κωδικός ατόμου (για την εύρεση των προσωπικών του στοιχείων)

Όταν παράγεται ένα αντικείμενο τύπου Employee, είναι δυνατόν, καλώντας τη μέθοδο personInfo() να συμπληρωθούν και τα προσωπικά του στοιχεία. Στην ουσία η μέθοδος αυτή εκτελεί ένα ερώτημα προς τη βάση (χρησιμοποιώντας τον κωδικό ατόμου) και βρίσκει σε ποια εγγραφή Person αναφέρεται ο συγκεκριμένος υπάλληλος.

Ακόμη, με τη μέθοδο login() στην οποία παρέχονται το όνομα και ο κωδικός χρήστη, πραγματοποιείται η είσοδος στο σύστημα. Στην ουσία αφού η μέθοδος εντοπίσει στη βάση κάποιον υπάλληλο με αυτά τα διαπιστευτήρια, φυλάσσει τον κωδικό του σε μια μεταβλητή συνόδου (session), ώστε να θεωρείται ότι έχει εισέλθει στο σύστημα ως χρήστης μέχρις ότου να εκείνος να αποσυνδεθεί.

3.1.4 Η κλάση Client

Η Client επίσης κληρονομεί την Person και περιγράφει αντικείμενα πελατών. Βασικά, οι μοναδικές της ιδιότητες είναι:

- Κωδικός πελάτη

- Κωδικός ατόμου (για τα προσωπικά στοιχεία του πελάτη 3.1.5 Η κλάση InsuredPerson

Αυτή η κλάση αναπαριστά τους ασφαλισμένους. Έτσι οι ιδιότητες είναι:

- Κωδικός ασφαλισμένου

- Κωδικός ατόμου (για προσωπικά στοιχεία)

- Κωδικός συμβολαίου στο οποίο βρίσκεται ο ασφαλισμένος

- Ένδειξη για το αν πρόκειται για ασφαλισμένο ή δικαιούχο στο συμβόλαιο 3.1.6 Η κλάση Product

Τα ασφαλιστικά προϊόντα αναπαρίστανται με την κλάση Product, η οποία έχει τις εξής ιδιότητες:

- Κωδικός - Περιγραφή

- Τύπος ασφάλειας (π.χ. γενική ασφάλεια) - Τύπος προϊόντος (π.χ. ασφάλεια οχήματος)

- Καλύψεις (πίνακας με στοιχεία – αντικείμενα της κλάσης Coverage)

(21)

20 Με τη μέθοδο getCoverages(), κάθε αντικείμενο της κλάσης Product μπορεί να βρίσκει τις καλύψεις του και να τις αποθηκεύει στον πίνακα – μέλος coverages.

3.1.7 Η κλάση Coverage

Με αυτή την κλάση περιγράφονται οι ασφαλιστικές καλύψεις που συνοδεύουν κάποια προϊόντα. Τα μέλη της κλάσης είναι:

- Κωδικός κάλυψης

- Κωδικός προϊόντος στο οποίο αναφέρεται η κάλυψη - Περιγραφή

- Τιμή

- Ένδειξη για το αν πρόκειται για προαιρετική κάλυψη ή όχι 3.1.8 Η κλάση Contract

Τα συμβόλαια αναπαρίστανται με αυτή την κλάση. Για κάθε συμβόλαιο κρατούνται:

- Κωδικός συμβολαίου - Κωδικός ασφαλιστή

- Κωδικός πελάτη (συμβαλλόμενος) - Κωδικός ασφαλιστικού προϊόντος - Ημερομηνίες έναρξης και λήξης - Ένδειξη για το αν είναι σε ισχύ ή όχι - Συνολική αξία

- Πίνακας με τις καλύψεις που έχουν επιλεχθεί

- Πίνακας με τους ασφαλισμένους / δικαιούχους του συμβολαίου

Η κλάση είναι εφοδιασμένη με μεθόδους ανάκτησης των καλύψεων και των ασφαλισμένων ατόμων του κάθε συμβολαίου που θα τις καλέσει. Επιπρόσθετα υπάρχουν κι άλλες βοηθητικές μέθοδοι για γρήγορη εξακρίβωση π.χ. αν κάποιο συμβόλαιο ανήκει σε κάποιον πελάτη, ή αν το έχει αναλάβει κάποιος ασφαλιστής κ.λπ.

Τέλος, υπάρχουν και δύο στατικές μέθοδοι οι οποίες επιστρέφουν όλα τα συμβόλαια ενός συγκεκριμένου πελάτη και όλα τα συμβόλαια ενός συγκεκριμένου ασφαλιστή. Αυτές οι μέθοδοι αποδείχθηκαν ιδιαίτερα χρήσιμες για τη γρήγορη ανάκτηση αποτελεσμάτων και τη μετέπειτα παρουσίασή τους υπό μορφή HTML πινάκων (όταν π.χ. ο διαχειριστής ζητά από το σύστημα να του δώσει όλα τα συμβόλαια ενός συγκεκριμένου ασφαλιστή).

(22)

21 3.1.9 Η κλάση ContractCoverage

Τα αντικείμενα αυτής της κλάσης είναι στην ουσία οι εγγραφές του συσχετιστικού πίνακα της βάσης δεδομένων contract_coverages. Κάθε τέτοιο αντικείμενο έχει στην ουσία δύο κωδικούς: τον κωδικό του συμβολαίου και τον κωδικό μιας κάλυψης. Με αυτόν τον τρόπο, το σύστημα γνωρίζει ποιες καλύψεις έχουν επιλεχθεί για ποιο συμβόλαιο.

3.1.10 Η κλάση Address

Εδώ περιγράφονται τα αντικείμενα – διευθύνσεις των πελατών, ασφαλιστών και γενικώς οποιοδήποτε τύπου ατόμου. Οι πληροφορίες που κρατούνται είναι:

- Κωδικός διεύθυνσης - Οδός και αριθμός - Πόλη

- Χώρα

- Ταχυδρομικός κώδικας 3.1.11 Η κλάση Shop

Εδώ περιγράφεται το αντικείμενο - κατάστημα. Οι πληροφορίες που κρατούνται είναι:

- Κωδικός καταστήματος - Επωνυμία

- Τηλέφωνο - Fax - E-mail - Website

- Κωδικός διεύθυνσης του καταστήματος 3.1.12 Οι κλάσεις Car και Savings

Αυτές οι δύο κλάσεις είναι ειδικού σκοπού. Συγκεκριμένα, η πρώτη χρησιμοποιείται στο να παραχθούν αντικείμενα – αυτοκίνητα, όταν πρόκειται για ασφάλεια οχήματος, και η δεύτερη χρησιμοποιείται για ασφάλεια αποταμίευσης και κρατά το ποσό κατάθεσης.

Η κλάση Car έχει τα στοιχεία που χρειάζεται να κρατά το σύστημα για τα οχήματα καθώς και τον κωδικό συμβολαίου που αυτό το όχημα σχετίζεται. Παρομοίως και η κλάση Savings:

διαθέτει ως μέλη τον κωδικό συμβολαίου και το αντίστοιχο ποσό αποταμίευσης.

3.2 Προγράμματα – Πελάτες

Από την περιγραφή και τον τρόπο λειτουργίας του συστήματος προκύπτουν οι εξής ανάγκες:

(23)

22 - Κεντρική σελίδα

- Διαχείριση πελατολόγιου

- Διαχείριση ασφαλιστικών προϊόντων και των καλύψεών τους - Διαχείριση ασφαλιστικών υπαλλήλων

- Διαχείριση συμβολαίων - Υπηρεσία αποστολής e-mail

- Υπηρεσία δημιουργίας pdf αρχείων συμβολαίων - Πιστοποίηση και σύνδεση / αποσύνδεση χρηστών 3.2.1 Κεντρική Σελίδα

Η κεντρική σελίδα (index.php) είναι το σημείο «έναρξης» της εφαρμογής, δηλαδή, η πρώτη σελίδα στην οποία οδηγείται ο χρήστης. Αρχικά, η σελίδα προτρέπει το χρήστη να συνδεθεί στο σύστημα (εφ’ όσον έχει λογαριασμό), ενώ παράλληλα περιέχει μενού με πληροφορίες καθώς και έναν χάρτη της Google στον οποίο απεικονίζεται η θέση του ασφαλιστικού καταστήματος. Όταν ο χρήστης συνδεθεί στο λογαριασμό του, οδηγείται και πάλι σε αυτή τη σελίδα όπου τώρα υπάρχει μήνυμα καλωσορίσματος μαζί με το ονοματεπώνυμό του.

Αν ο χρήστης έχει συνδεθεί, τότε σε μια μεταβλητή συνόδου καταγράφεται ο κωδικός του.

Έτσι, το script καταλαβαίνει αν είναι συνδεδεμένος ή όχι. Από τη στιγμή που είναι συνδεδεμένος, τότε εκτελώντας ένα απλό ερώτημα στη βάση, το script βρίσκει και τα περαιτέρω στοιχεία του υπαλλήλου – χρήστη.

3.2.2 Διαχείριση πελατολόγιου

Η διαχείριση των πελατών γίνεται με το συνδυασμό 2 scripts. Το πρώτο (client_list.php) εμφανίζει τη λίστα των πελατών, ενώ παράλληλα προσφέρει και τη δυνατότητα αναζήτησης με βάση το επώνυμο κάποιου πελάτη.

Η λίστα πελατών

(24)

23 Με το δεύτερο script (client_data.php) δίνεται η δυνατότητα νέας εγγραφής ή διόρθωσης και διαγραφής ενός πελάτη. Στο δεύτερο script οδηγούμαστε μέσω του πρώτου, αν επιλεχθεί η επιλογή «Νέα εγγραφή» ή αν επιλεχθεί το ονοματεπώνυμο κάποιου πελάτη από τη λίστα (περίπτωση επεξεργασίας στοιχείων ενός υπάρχοντος πελάτη).

Στοιχεία πελάτη από το client_data.php

3.2.3 Διαχείριση ασφαλιστικών προϊόντων και των καλύψεών τους

Τα scripts insurance_list.php, insurance_data.php και coverage_data.php είναι υπεύθυνα για τη διαχείριση των ασφαλιστικών προϊόντων. Το insurance_list.php εμφανίζει μια λίστα με τα διαθέσιμα προϊόντα ενώ παράλληλα παρέχει τις δυνατότητες δημιουργίας νέου προϊόντος και επεξεργασίας των ήδη υπαρχόντων, ανακατευθύνοντας ουσιαστικά το χρήστη στο δεύτερο script insurance_data.php.

(25)

24

Διαθέσιμα ασφαλιστικά προϊόντα

Το insurance_data.php αν κληθεί με παράμετρο τον κωδικό ενός ασφαλιστικού προϊόντος, τότε, με ένα κατάλληλο ερώτημα στη βάση, ανακτά τα στοιχεία του προϊόντος και μέσω κατάλληλης φόρμας ο χρήστης μπορεί να δει απλά τα στοιχεία του, να τα διορθώσει, να το διαγράψει καθώς και να διαχειριστεί τις καλύψεις που το συνοδεύουν. Αν το script κληθεί χωρίς παράμετρο, τότε η χρήση του προορίζεται για τη δημιουργία και αποθήκευση ενός νέου προϊόντος.

Λεπτομέρειες ασφάλειας από το insurance_data.php

Με παρόμοιο τρόπο, το coverage_data.php μπορεί να δημιουργήσει μια νέα κάλυψη για ένα συγκεκριμένο προϊόν ή (μέσω του κωδικού μιας κάλυψης ως παράμετρο) να επεξεργαστεί μια ήδη υπάρχουσα κάλυψη.

(26)

25

Λεπτομέρειες κάλυψης από το coverage_data.php

Μια σημαντική λεπτομέρεια είναι ότι μόνο ο διαχειριστής έχει πλήρη πρόσβαση στη διαχείριση των ασφαλιστικών προϊόντων. Ένας απλός ασφαλιστής το μόνο που του επιτρέπεται είναι να δει τη λίστα των διαθέσιμων προϊόντων και των καλύψεών τους, καθαρά και μόνο για πληροφοριακούς λόγους.

3.2.4 Διαχείριση ασφαλιστικών υπαλλήλων

Όμοια με τη διαχείριση πελατολογίου, έτσι και σε αυτή την περίπτωση χρησιμοποιούνται δύο scripts: employee_list.php και employee_data.php. Το employee_list.php είναι η κεντρική σελίδα διαχείρισης των ασφαλιστών. Παρουσιάζει μια λίστα με όλους τους διαθέσιμους ασφαλιστές και δίνει τη δυνατότητα δημιουργίας νέου ασφαλιστή ή την επεξεργασία ενός υπάρχοντος με επιλογή από τη λίστα. Η δημιουργία ή η επεξεργασία αναλαμβάνονται από το employee_data.php.

Να σημειωθεί πως αυτή η λειτουργία προορίζεται μόνο για το διαχειριστή της εφαρμογής και είναι αδύνατο να προσπελαστεί από τον απλό επισκέπτη ή κάποιον άλλον ασφαλιστή, για ευνόητους λόγους. Στην περίπτωση του απλού ασφαλιστή, ο τελευταίος μπορεί να δει και να επεξεργαστεί μόνο τα δικά του στοιχεία μέσω του employee_data.php.

3.2.5 Διαχείριση συμβολαίων

Με το script contract_list.php παρουσιάζεται μια λίστα των διαθέσιμων συμβολαίων, ενώ δίνεται η δυνατότητα δημιουργία νέου συμβολαίου, ή επεξεργασίας κάποιου από τη λίστα.

Το script εμφανίζει όλα τα συμβόλαια (ανεξαρτήτως ασφαλιστή) για το διαχειριστή του συστήματος. Στην περίπτωση, όμως, που ο συνδεδεμένος χρήστης είναι απλός ασφαλιστής, τότε εμφανίζονται μόνο τα δικά του συμβόλαια.

Το script επίσης προσφέρει και τη δυνατότητα της αναζήτησης συμβολαίων με βάση τα παρακάτω φίλτρα:

- Επώνυμο πελάτη - Ασφαλιστικό προϊόν

(27)

26 - Ασφαλιστής (στην περίπτωση του διαχειριστή μόνο)

- Κατάσταση (ισχύον συμβόλαιο ή όχι) - Ημερομηνία έναρξης

- Ημερομηνία λήξης

Λίστα με όλα τα διαθέσιμα συμβόλαια (λειτουργία διαχειριστή)

Η δημιουργία αλλά και η επεξεργασία των συμβολαίων γίνεται με βάση δύο scripts:

contract_data.php & contract_data_step2.php. Στην ουσία, με το contract_data.php δίνονται οι πρώτες πληροφορίες:

- Επιλογή πελάτη - Επιλογή ασφάλειας - Τρόπος πληρωμής

- Ημερομηνίες έναρξης και λήξης

Βασικά στοιχεία συμβολαίου (contract_data.php)

Κατόπιν, με το δεύτερο και τελευταίο βήμα, contract_data_step2.php (και αφού έχει ήδη πλέον αποφασιστεί από το πρώτο βήμα για ποια ασφάλεια πρόκειται), παρέχονται οι υπόλοιπες πληροφορίες όπως:

(28)

27 - Επιλογή των προαιρετικών καλύψεων

- Επιλογή των ασφαλισμένων / δικαιούχων (ασφάλεια ζωής) - Στοιχεία οχήματος (ασφάλεια αυτοκινήτου)

- Αποταμιευτικά ποσά (για κάποιο αποταμιευτικό πρόγραμμα)

Επιπλέον στοιχεία συμβολαίου (2ο βήμα)

Τέλος, στην περίπτωση ασφαλειών ζωής, υπάρχει ένα τρίτο βήμα: ο ορισμός των ασφαλισμένων και των δικαιούχων. Αυτή η λειτουργία εκτελείται με το script add_member.php το οποίο παρέχει ειδική φόρμα για τη συμπλήρωση στοιχείων ατόμου που δεν είναι μεν πελάτης στο σύστημα, αλλά πρόκειται να μπει στο συμβόλαιο ως δικαιούχος.

3.2.6 Υπηρεσία αποστολής e-mail

Η δυνατότητα αποστολής e-mail είναι ιδιαίτερα χρήσιμη στο σύστημα και εξυπηρετεί δύο σκοπούς:

1. Την υπενθύμιση των στοιχείων ενός χρήστη με την αποστολή τους στο mail που εκείνος είχε δώσει κατά την εγγραφή του.

2. Η αποστολή αντιγράφων των συμβολαίων ως συνημμένα pdf αρχεία στο mail του αντίστοιχου πελάτη.

Να σημειωθεί, εδώ, ότι στην περίπτωση που η εφαρμογή φιλοξενούνταν σε έναν πραγματικό server (και όχι τοπικά, όπως συνέβη κατά την ανάπτυξή της), θα μπορούσε να χρησιμοποιηθεί κάποια υπάρχουσα διεύθυνση από τον παροχέα φιλοξενίας (web host).

(29)

28 Έτσι, αντί αυτού, δημιουργήθηκε μια gmail διεύθυνση και χρησιμοποιήθηκε η βιβλιοθήκη Swift Mailer για τις ανάγκες της εφαρμογής.

Τα scripts που κάνουν χρήση της βιβλιοθήκης αυτής είναι το getPass.php, για την υπενθύμιση των στοιχείων του χρήστη, και το generate_pdf.php αν κληθεί με παράμετρο τέτοια ώστε να δημιουργήσει και να στείλει το pdf στον πελάτη.

Πιο συγκεκριμένα, το getPass.php ζητά από το χρήστη να πληκτρολογήσει το e-mail του.

Κατόπιν, ψάχνει στη βάση για το αν υπάρχει χρήστης εγγεγραμμένος με το συγκεκριμένο mail και αν ναι, τότε του αποστέλλει το username και το password. Με αυτόν τον τρόπο, ακόμη και αν κάποιος τρίτος συμπληρώσει το e-mail κάποιου υπαλλήλου, τα στοιχεία είναι ασφαλή.

3.2.7 Υπηρεσία δημιουργίας pdf αρχείων συμβολαίων

Το υπεύθυνο script για αυτή την υπηρεσία είναι το generate_pdf.php.

Η βιβλιοθήκη που χρησιμοποιείται για αυτό το σκοπό είναι η mPDF. Το προτέρημα αυτής της βιβλιοθήκης είναι η γρήγορη δημιουργία pdf αρχείου κατευθείαν από τα περιεχόμενα ενός html εγγράφου, ενώ με τις κατάλληλες εντολές CSS δημιουργείται ταυτόχρονα και την εμφάνιση του παραγόμενου αρχείου. Για παράδειγμα με την ίδια HTML σήμανση που χρησιμοποιείται για τη δημιουργία ενός πίνακα, το mPDF δημιουργεί τον αντίστοιχο πίνακα στο pdf αρχείο. Επίσης, αν εφαρμόζονται CSS κλάσεις για την εμφάνιση του πίνακα, αυτές θα διατηρηθούν και στο pdf αρχείο, έτσι ώστε το τελικό αποτέλεσμα να είναι το ίδιο μεταξύ html και pdf.

Στην ουσία, μέσα στο script, δημιουργείται ένα html αρχείο με το περιεχόμενο και τις CSS κλάσεις (για την εμφάνιση) και στέλνεται σε έναν output buffer. Όταν ετοιμαστεί ολόκληρο το έγγραφο και εμπλουτιστεί με τις αντίστοιχες πληροφορίες από τη βάση τότε δίνεται στο mPDF. Ο περιηγητής φορτώνει αυτόματα και εμφανίζει το παραγόμενο pdf αρχείο και δίνει τη δυνατότητα στο χρήστη να το αποθηκεύσει. Η μορφή των ονομάτων των pdf αρχείων είναι:

{επώνυμο πελάτη} – {όνομα προϊόντος}.pdf π.χ. Παπαδόπουλος – Ασφάλεια οχήματος.pdf

Τέλος, σε περίπτωση που δε ζητηθεί η προεπισκόπηση ενός συμβολαίου ως pdf, αλλά η αποστολή αυτού του pdf με e-mail στον πελάτη, τότε μέσω κατάλληλων παραμέτρων η βιβλιοθήκη mPDF το δημιουργεί και κατόπιν με τη βιβλιοθήκη Swift Mailer επισυνάπτεται στο ηλεκτρονικό μήνυμα (ως ένα συνημμένο τύπου ‘application/pdf’) και αποστέλλεται.

(30)

29

Δείγμα παραγόμενου συμβολαίου σε μορφή PDF

3.2.8 Πιστοποίηση και σύνδεση / αποσύνδεση χρηστών

Υπάρχουν δύο τύποι χρηστών στην εφαρμογή: οι διαχειριστές (π.χ. ο διευθυντής του ασφαλιστικού καταστήματος) και οι απλοί χρήστες (π.χ. οι υπόλοιποι ασφαλιστές). Όπως έχει ήδη αναφερθεί, όλοι οι χρήστες είναι στην ουσία αντικείμενα της κλάσης Employee. Το μοναδικό στοιχείο με το οποίο ξεχωρίζει ο διαχειριστής σε σχέση με έναν απλό χρήστη είναι

(31)

30 ότι το πεδίο ‘superuser’ για έναν διαχειριστή έχει τιμή 1 ενώ για έναν απλό χρήστη έχει τιμή 0.

Η σύνδεση των χρηστών στο σύστημα γίνεται αφού δώσουν το username και το password τους. Στη συνέχεια καλείται η μέθοδος login της κλάσης Employee η οποία ελέγχει τα στοιχεία και αν βρει χρήστη στη βάση με αυτά, τότε καταχωρεί τον κωδικό υπαλλήλου σε μια μεταβλητή συνόδου (session) ώστε να θεωρείται πλέον συνδεδεμένος.

Η αποσύνδεση επιτυγχάνεται, διαγράφοντας τη μεταβλητή συνόδου που περιέχει τον κωδικό του συνδεδεμένου χρήστη (unset($SESSION[‘e_id’])) και καταστρέφοντας τη συνεδρία (session_destroy()). Με αυτόν τον τρόπο ο χρήστης θεωρείται αποσυνδεδεμένος πλέον και κανένα script που χρειάζεται δικαιώματα χρήστη ή διαχειριστή δεν πρόκειται να λειτουργήσει.

Referências

Documentos relacionados

Σε αυτή την περίπτωση στο αντίστοιχο αρχείο της Βάσης Δεδομένων • Έχει αλλοιωθεί ο ειδικός κωδικός ταυτότητας του αρχείου κακή παρέμβαση του χρήστη • Έχει αντικατασταθεί το αρχείο