mirror of
https://github.com/alextselegidis/easyappointments.git
synced 2024-12-22 06:32:24 +03:00
* Added new chapter in the thesis document (conclusions.tex).
This commit is contained in:
parent
d1ed539464
commit
60fcb4f154
4 changed files with 33 additions and 17 deletions
12
doc/thesis/includes/conclusions.tex
Normal file
12
doc/thesis/includes/conclusions.tex
Normal file
|
@ -0,0 +1,12 @@
|
|||
\chapter{Συμπεράσματα}
|
||||
Το αποτέλεσμα της εκπόνησης της εργασίας αυτής είναι ένα πλήρης σύστημα διαχείρισης ραντεβού, το οποίο μπορεί να παραμετροποιηθεί επαρκώς έτσι ώστε να καλύψει τις ανάγκες οποιασδήποτε επιχείρισης ανεξαρτήτου ειδικότητας και μεγέθους. Ο αρχικός σχεδιασμός αποδείχθηκε σωστός και έτσι το τελικό προϊόν πληροί τις απαιτήσεις για τις οποίες αναπτύχθηκε.
|
||||
|
||||
\section{Προβλήματα}
|
||||
Σημαντικότερο πρόβλημα σχετικά με την υλοποίηση της εφαρμογής ήταν η χρονική καθυστέρηση μιας και ανάμεσα στην ανάληψη της εργασίας και την περαίωση της, πραγματοποιήθηκε η πρακτική άσκηση σε εταιρεία πληροφορικής, καθώς και εργασία εκτός σχολής με άλλες εταιρείες πληροφορικής. Οι εξωτερικές υποχρεώσεις αυτές αποσπούσαν την συνεχή και ομαλή ανάπτυξη, κάτι που συνεχώς διασπούσε τον ειρμό και τον δημιουργικό οίστρο. Συμπέρασμα αυτού του σημαντικού προβλήματος είναι ότι θα πρέπει να γίνεται σαφής και ορθός προγραμματισμός του χρόνου υλοποίησης ενός έργου γιατί διαφορετικά οι πιθανότητες για χαμηλότερη ποιότητα υπηρεσίας ή ακόμα και αποτυχίας του έργου αυξάνονται εκθετικά.
|
||||
|
||||
Όσον αφορά την συνεργασία του συστήματος με την υπηρεσία Google Calendar, αλλά και γενικότερα με άλλες πιθανές υπηρεσίες το ζήτημα παραμένει στο πως θα παραμείνουν τα δεδομένα ακέραια και ενημερωμένα και στα δύο συστήματα, όταν δεν υπάρχει ένα κοινό μέσο αποθήκευσης. Το θέμα γιγαντώνεται μάλιστα όταν δεν υπάρχει πρόσβαση στον κώδικα του ενός από τα δύο συστήματα έτσι ώστε να δημιουργηθεί μια "γέφυρα δεδομένων". Για την επίλυση αυτού του θέματος ήταν αναγκαίο να δημιουργηθεί ένας αλγόριθμος συγχρονισμού ο οποίος θα ενεργοποιούνταν από την πλευρά του Easy!Appointments και θα αναλάμβανε την ενημέρωση και τον δύο συστημάτων με τα τελευταία δεδομένα. Για αυτόν τον σκοπό θα έπρεπε να καταγραφούν και να υλοποιηθούν κάποιοι κανόνες συγχρονισμού οι οποίοι θα μετέφεραν επιτυχώς τα ραντεβού αμφίδρομα και στα δύο συστήματα. Στις περιπτώσεις όπου η μεταφορά αυτή θα ήταν αδύνατη (σύγκρουση δεδομένων) ο χρήστης θα έπρεπε να αποφασίσει ποια εκδοχή των δεδομένων θα υπερισχύσει στο τέλος.
|
||||
|
||||
Ένα ακόμα πρόβλημα που αντιμετωπίστηκε κατά την διάρκεια την ανάπτυξης του έργου ήταν ο διαχωρισμός των δικαιωμάτων των χρηστών μέσα στο σύστημα. Ο κάθε χρήστης αναλόγως το είδος του (διαχειριστής, πάροχως, γραμματέας) έχει διαφορετικές δυνατότητες και δικαιώματα στα δεδομένα που αποθηκεύονται από το σύστημα. Αυτό συμβαίνει γιατί στις περισσότερες περιπτώσεις θα πρέπει να τηρηθεί η ιεραρχία της επιχείρησης, αλλά και επίσης γιατί θα πρέπει να διασφαλιστεί η ακεραιότητα των δεδομένων από τυχόν εσφαλμένες ενέργειες χρηστών σε βασικές ρυθμίσεις του συστήματος. Για τις κυριότερες ρυθμίσεις απαιτούνται τα δικαιώματα διαχειριστή και έτσι το σύστημα χρειάζεται απαραιτήτως πάντα έναν χρήστη διαχειριστή (ο χρήστης που δημιουργείται κατά την εγκατάσταση είναι ουσιαστικά ο πρώτος διαχειριστής της εφαρμογής). Για να λυθεί αυτό το πρόβλημα η εγγραφή του κάθε χρήστης στην βάση δεδομένων συνδέεται με έναν ρόλο, ο οποίος περιέχει τα δικαιώματα που του αντιστοιχούν. Έτσι για παράδειγμα ένας χρήστης που προορίζεται για πάροχος υπηρεσίας, θα έχει τα δικαιώματα που αντιστοιχούν στον ρόλο "Πάροχος Υπηρεσίας", όπως αυτά είναι αποθηκευμένα στην βάση δεδομένων. Έτσι κάθε φορά που συνδέεται ένας χρήστης στο διαχειριστικό κομμάτι της εφαρμογής τα δεδομένα σχετικά με τα δικαιώματα του και τον ρόλο του διαβάζονται από σελίδα σε σελίδα και η εφαρμογή μπορεί και γνωρίζει με ποιόν τρόπο θα πρέπει να εμφανιστούν τα δεδομένα και ποιες ενέργειες είναι διαθέσιμες στην κάθε περίπτωση.
|
||||
|
||||
\section{Εξέλιξη Της Εφαρμογής}
|
||||
Όπως και σε κάθε έργο λογισμικού υπάρχουν πολλά πράγματα τα οποία μπορούν να εξελιχθούν και να βελτιωθούν, καθώς και δυνατότητες οι οποίες μπορούν να προστεθούν για να κάνουν την εφαρμογή πιο εύχρηστη και εύκολη προς την χρήση.
|
|
@ -33,23 +33,25 @@
|
|||
private function test_add_appointment_insert() {
|
||||
// Add - insert new appointment record to the database.
|
||||
$appointment_data = array(
|
||||
'start_datetime' => '2013-05-01 12:30:00',
|
||||
'end_datetime' => '2013-05-01 13:00:00',
|
||||
'notes' => 'Some notes right here...',
|
||||
'id_users_provider' => $this->provider_id,
|
||||
'id_users_customer' => $this->customer_id,
|
||||
'id_services' => $this->service_id
|
||||
);
|
||||
'start_datetime' => '2013-05-01 12:30:00',
|
||||
'end_datetime' => '2013-05-01 13:00:00',
|
||||
'notes' => 'Some notes right here...',
|
||||
'id_users_provider' => $this->provider_id,
|
||||
'id_users_customer' => $this->customer_id,
|
||||
'id_services' => $this->service_id
|
||||
);
|
||||
$appointment_data['id'] = $this->CI->Appointments_Model
|
||||
->add($appointment_data);
|
||||
$this->CI->unit->run($appointment_data['id'], 'is_int',
|
||||
'Test if add() appointment (insert operation) returned the db row id.');
|
||||
'Test if add() appointment (insert operation) '
|
||||
. 'returned the db row id.');
|
||||
|
||||
// Check if the record is the one that was inserted.
|
||||
$db_data = $this->CI->db->get_where('ea_appointments',
|
||||
array('id' => $appointment_data['id']))->row_array();
|
||||
$this->CI->unit->run($appointment_data, $db_data,
|
||||
'Test if add() appointment (insert operation) has successfully inserted a record.');
|
||||
$this->CI->unit->run($appointment_data, $db_data, 'Test if add() '
|
||||
. 'appointment (insert operation) has successfully '
|
||||
. 'inserted a record.');
|
||||
|
||||
// Delete inserted record.
|
||||
$this->CI->db->delete('ea_appointments',
|
||||
|
@ -74,12 +76,14 @@ private function test_get_value_record_does_not_exist() {
|
|||
$has_thrown_exception = FALSE;
|
||||
|
||||
try {
|
||||
$this->CI->Appointments_Model->get_value('start_datetime', $random_record_id);
|
||||
$this->CI->Appointments_Model
|
||||
->get_value('start_datetime', $random_record_id);
|
||||
} catch (InvalidArgumentException $db_exc) {
|
||||
$has_thrown_exception = TRUE;
|
||||
}
|
||||
|
||||
$this->CI->unit->run($has_thrown_exception, TRUE, 'Test get_value() with record id that does not exist.');
|
||||
$this->CI->unit->run($has_thrown_exception, TRUE,
|
||||
'Test get_value() with record id that does not exist.');
|
||||
}
|
||||
\end{verbatim}
|
||||
\endgroup
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
|
||||
%% ΣΕΝΑΡΙΟ ΧΡΗΣΗΣ ΠΕΛΑΤΗ
|
||||
\section{Σενάριο Χρήσης Πελάτη}
|
||||
Ο πελάτης ενδιαφέρεται να κλείσει ραντεβού στην επιχείρηση για μια συγκεκριμένη υπηρεσία. Πηγαίνει στην σελίδα της επιχείρησης και βλέπει το πλάνο, αφού έχει επιλέξει ποια υπηρεσία και ποιόν υπάλληλο προτιμάει. Στην συνέχεια επιλέγει μια χρονική στιγμή που τον βολεύει και την κατοχυρώνει. Για να ολοκληρωθεί η διαδικασία θα χρειαστεί να απαντήσει σε ένα επιβεβαιωτικό email που θα του έρθει. Από την στιγμή αυτήν και μετά το ραντεβού έχει κατοχυρωθεί και ο πελάτης μπορεί να ενημερωθεί ανά πάσα στιγμή για την κατάστασή του.
|
||||
Ο πελάτης ενδιαφέρεται να κλείσει ραντεβού στην επιχείρηση για μια συγκεκριμένη υπηρεσία. Πηγαίνει στην σελίδα της επιχείρησης και βλέπει το πλάνο, αφού έχει επιλέξει ποια υπηρεσία και ποιόν υπάλληλο προτιμάει. Στην συνέχεια επιλέγει μια χρονική στιγμή που τον βολεύει και την κατοχυρώνει. Η διαδικασία ολοκληρώνεται με την αποστολή ενός email προς τον πελάτη, το οποίο περιέχει όλες τις πληροφορίες του ραντεβού, έτσι ώστε να είναι πάντα προσβάσιμες. Σε αυτό το email περιέχεται και ένας σύνδεσμος ο οποίος επιτρέπει στον πελάτη να πραγματοποιήσει αλλαγές στο ραντεβού. Από την στιγμή αυτήν και μετά το ραντεβού έχει κατοχυρωθεί και ο πελάτης θα ενημερώνεται για οποιαδήποτε αλλαγή μπορεί να γίνει στο ραντεβού του με email.
|
||||
|
||||
\section{Σενάριο Χρήσης Γραμματέας}
|
||||
Ένας από τους πάροχους υπηρεσίας έχει κλειστεί εντελώς από ραντεβού και δεν μπορεί να δεχτεί άλλα για αυτήν την εβδομάδα. Ένας άλλος πάροχος προσφέρεται να βοηθήσει και έτσι κάποια ραντεβού πρέπει να μεταφερθούν στο ημερολογιακό πλάνο του δεύτερου πάροχου. Την διαδικασία αυτήν θα πρέπει να την αναλάβει η γραμματεία γιατί όλοι οι άλλοι είναι πολύ απασχολημένοι με το να εξυπηρετήσουν τους πελάτες τους.
|
|
@ -17,7 +17,7 @@
|
|||
|
||||
\begin{itemize}
|
||||
\item Αν ο πελάτης αργήσει να επιλέξει ημερομηνία και στο ενδιάμεσο τον προλάβει ένας άλλος, θα πρέπει να επιστραφεί μήνυμα το οποίο θα τον προτρέψει να βρει άλλη ημερομηνία και ώρα για το ραντεβού του.
|
||||
\item Όταν ο πελάτης συμπληρώνει τα στοιχεία του και αφήσει κενό ένα πεδίο το οποίο είναι υποχρεωτικό για να ολοκληρωθεί η διαδικασία, θα εμφανιστεί μήνυμα το οποίο θα τον προτρέψει να συμπληρώσει όλα τα υποχρεωτικά πεδία.
|
||||
\item Όταν ο πελάτης συμπληρώσει τα στοιχεία του και αφήσει κενό ένα πεδίο το οποίο είναι υποχρεωτικό για να ολοκληρωθεί η διαδικασία, θα εμφανιστεί μήνυμα το οποίο θα τον προτρέψει να συμπληρώσει όλα τα υποχρεωτικά πεδία.
|
||||
\end{itemize}
|
||||
|
||||
\subsection{Επεξεργασία - Ακύρωση Ραντεβού}
|
||||
|
@ -30,7 +30,7 @@
|
|||
\textbf{ΕΝΑΛΛΑΚΤΙΚΕΣ ΡΟΕΣ}
|
||||
|
||||
\begin{itemize}
|
||||
\item Ο χρήστης μπορεί εν τέλη να μην θέλει να αποθηκεύσει τις αλλαγές του και έτσι να κλείσει την σελίδα ή να πατήσει το αντίστοιχο κουμπί ακύρωσης.
|
||||
\item Ο χρήστης μπορεί εν τέλη να μην θέλει να αποθηκεύσει τις αλλαγές του και έτσι να κλείσει την σελίδα.
|
||||
\item Ο διαχειριστής του συστήματος μπορεί να έχει ορίσει ένα χρονικό περιθώριο πριν το ραντεβού, στο οποίο δεν επιτρέπεται να γίνονται αλλαγές (λόγω σταθερότητας του πλάνου). Αν ο χρήστης βρίσκεται μέσα σε αυτό το περιθώριο τότε θα εμφανιστεί μήνυμα το οποίο θα τον ενημερώνει για τον λόγο τον οποίο δεν μπορεί να πραγματοποιήσει αλλαγές στο ραντεβού του.
|
||||
\end{itemize}
|
||||
|
||||
|
@ -68,7 +68,7 @@
|
|||
|
||||
\textbf{ΒΑΣΙΚΗ ΡΟΗ}
|
||||
|
||||
Ο πάροχος υπηρεσιών μπαίνει στο σύστημα και πραγματοποιεί αλλαγές σε ένα ήδη καταχωρημένο ραντεβού. Με την αποθήκευση των αλλαγών αυτός και ο πελάτης θα λάβουν ένα email στο οποίο θα φαίνονται τα νέα στοιχεία του ραντεβού. Με αυτόν τον τρόπο μπορεί να επαληθευθεί ότι οι αλλαγές που έγιναν είναι σωστές και επίσης δίνεται η δυνατότητα να στον χρήστη να χρησιμοποίήσει το link του ραντεβού για να πραγματοποιήσει άλλες αλλαγές, αν αυτό είναι απαραίτητο.
|
||||
Ο πάροχος υπηρεσιών μπαίνει στο σύστημα και πραγματοποιεί αλλαγές σε ένα ήδη καταχωρημένο ραντεβού. Με την αποθήκευση των αλλαγών αυτός και ο πελάτης θα λάβουν ένα email στο οποίο θα φαίνονται τα νέα στοιχεία του ραντεβού. Με αυτόν τον τρόπο μπορεί να επαληθευθεί ότι οι αλλαγές που έγιναν είναι σωστές και επίσης δίνεται η δυνατότητα στον χρήστη να χρησιμοποιήσει το link του ραντεβού για να πραγματοποιήσει άλλες αλλαγές, αν αυτό είναι απαραίτητο.
|
||||
|
||||
\subsection {Διαχείριση Πελατών}
|
||||
Από την στιγμή που ένας πάροχος θα έχει το δικαίωμα να επεξεργαστεί τις πληροφορίες ενός ραντεβού θα μπορεί να επεξεργάζεται και τα στοιχεία των πελατών που υπάγονται σε αυτό. Με αυτήν την δυνατότητα θα μπορεί να είναι σε θέση να ενημερώσει κάποια πεδία στην εγγραφή του πελάτη τα οποία είναι πιθανώς λανθασμένα ή και να προσθέσει νέες πληροφορίες.
|
||||
|
@ -83,7 +83,7 @@
|
|||
|
||||
\section{Γραμματέας}
|
||||
\subsection{Διαχείριση Ραντεβού}
|
||||
Ο χρήστης γραμματέας μπορεί να πραγματοποιήσει αλλαγές στα ραντεβού ενός ή περισσοτέρων πάροχων υπηρεσίας. Με αυτόν τον τρόπο μια εταιρεία μπορεί αν αναθέσει όλη την διαχείριση των ραντεβού σε ένα άτομο και οι πάροχοι απλώς να βλέπουν τα ραντεβού τους στο πλάνο.
|
||||
Ο χρήστης γραμματέας μπορεί να πραγματοποιήσει αλλαγές στα ραντεβού ενός ή περισσοτέρων πάροχων υπηρεσίας. Με αυτόν τον τρόπο μια εταιρεία μπορεί να αναθέσει όλη την διαχείριση των ραντεβού σε ένα άτομο και οι πάροχοι απλώς να βλέπουν τα ραντεβού τους στο πλάνο.
|
||||
|
||||
\textbf{ΒΑΣΙΚΗ ΡΟΗ}
|
||||
|
||||
|
|
Loading…
Reference in a new issue