<commit_before># electronic_protocol

<img src="https://cloud.githubusercontent.com/assets/23439035/22380227/4f839c3a-e4c5-11e6-91fc-457f55281e6e.png" width="99%">

# Ηλεκτρονικό Πρωτόκολλο Σχολείου
- **Πρωτοκόλληση** Εισερχομένων και Εξερχομένων εγγράφων
- **Επισύναψη** Αρχείων και **καθορισμός Ημερομηνίας Διατήρησης - Καταστροφής** ανάλογα με το Φάκελο Αρχειοθέτησης **Φ.**
- **Φάκελοι Αρχειοθέτησης** και **Χρόνος Διατήρησης Εγγράφων**. Δυνατότητα τροποποίησης ανάλογα με τις εκάστοτε εγκυκλίους
- **Αναζήτηση** Πρωτοκόλλου, **Ανάκτηση - Διαγραφή** συνημμένων αρχείων
- **Εκτύπωση Απόδειξης** Κατάθεσης Πρωτοκόλλου
- Εκτύπωση Ηλεκτρονικού Πρωτοκόλλου για **βιβλιοδέτηση**
- Εκτύπωση λίστας εγγράφων για **Εκκαθάριση Αρχείου** μετά τη λήξη Διατήρησης αυτών
- **Backup** βάσης δεδομένων, εύκολο κατέβασμα για φύλαξη αυτών
- **Διαχείριση Χρηστών** με ρόλους "Διαχειριστής", "Αναθέτων", "Συγγραφέας", "Αναγνώστης" και ανάλογη πρόσβαση
- **Σύστημα αναθέσεων**: Ο "Διαχειριστής" και "Αναθέτων" μπορούν να αναθέτουν προς Διεκπεραίωση Πρωτόκολλα σε "Συγγραφείς"...
- **Πρωτοκόλληση email**: Σύνδεση με λογαριασμό email. Επισκόπηση εισερχομένων μηνυμάτων και των συνημμένων αρχείων και Πρωτοκόλληση με αποθήκευση των επιλεγμένων

#
# Βίντεο 
https://www.youtube.com/watch?v=Xl6qhbJWTGs


#
# Οδηγίες Χρήσης

https://drive.google.com/file/d/0B2ACFOVDi2ORWmZjUGNmQTNpVlk/view?usp=sharing

#
# Εγκατάσταση

Για την εγκατάσταση του framework laravel υπάρχουν διαθέσιμοι αρκετοί οδηγοί στο υπερκείμενο:

#### Για Debian 9:

https://tecadmin.net/install-laravel-on-debian-9-stretch/

#### Για Centos 7:

https://tecadmin.net/install-laravel-framework-on-centos/

#### Για Ubuntu:

https://websiteforstudents.com/install-laravel-php-framework-on-ubuntu-16-04-17-10-18-04-with-apache2-and-php-7-2-support/

#### Χρήση xampp

Αν θέλετε να χρησιμοποιήσετε xampp σε linux ή Windows ρίξτε μια ματιά στους επόμενους υπερσυνδέσμους:

https://www.5balloons.info/how-to-install-laravel-5-5-with-xampp-on-linux/

https://www.5balloons.info/install-laravel-5-7-xampp-windows/

#### Παρατηρήσεις

Σε όλους τους οδηγούς είναι σημαντικό να προσέξουμε και να **εγκαταστήσουμε τις απαραίτητες εξαρτήσεις**.

Όταν φτάσουμε στην εγκατάσταση του laravel

```git clone https://github.com/laravel/laravel.git```

ή

```sudo composer create-project laravel/laravel MyProject --prefer-dist```

**αντικαθιστούμε** με την παρακάτω εντολή:

```sudo git clone https://github.com/g-theodoroy/electronic_protocol.git .```

Οι οδηγοί αναφέρονται στη **mysql (mariaDB)** σαν Βάση Δεδομένων. Μπορείτε να επιλέξετε και τη **sqlite** (η πρότασή μου για ευκολία)

Για να ανακατευθύνουν τον **apache** server χρησιμοποιούν τη ντιρεκτίβα **VirtualHost**.

Προσωπικά Θεωρώ πιο εύκολο να ρυθμιστεί με τη χρήση της ντιρεκτίβας **Alias**


#### Ρυθμίσεις php

Θα πρέπει να ενεργοποιηθούν στο ```php.ini``` οι ακόλουθες extentions:

```
extension=fileinfo
extension=imap
extension=mbstring
extension=exif
extension=openssl
extension=pdo_sqlite
```

Για χρήση με mysql ή mariaDB και οι παρακάτω:

```
extension=mysqli
extension=pdo_mysql

```

#### Ρύθμίση email

Για να ρυθμίσετε το email συμπληρώστε ανάλογα τα στοιχεία στο αρχείο ```.env```.

γραμμές 26 έως 40:
```
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=gm@ilusern@me
MAIL_PASSWORD=<PASSWORD>
MAIL_ENCRYPTION=tls

IMAP_HOST=imap.gmail.com
IMAP_PORT=993
IMAP_ENCRYPTION=ssl
IMAP_VALIDATE_CERT=false
IMAP_USERNAME=gm@ilusern@me
IMAP_PASSWORD=<PASSWORD>
IMAP_DEFAULT_ACCOUNT=default
IMAP_PROTOCOL=imap
```

**Για να εφαρμοστούν οι αλλαγές** που κάνατε πρέπει να καθαρίσετε τις ήδη αποθηκευμένες ρυθμίσεις **config** με:
``` php artisan config:clear```

**Αν το smtp Gmail δεν συνδέεται**

Αν δεν μπορείτε να στείλετε email με το gmail λογαριασμό σας ενεργοποιήστε την πρόσβαση σε "λιγότερο ασφαλείς" εφαρμογές. Κάντε login στο gmail λογαριασμό σας και επισκεφθείτε τον επόμενο σύνδεσμο:

https://myaccount.google.com/lesssecureapps


**Imap**

Μπορείτε να ρυθμίσετε περισσότερους λογαριασμούς imap για λήψη email στο αρχείο ```config/imap.php```. Υπάρχουν ήδη λογαριασμοί με τις κατάλληλες ρυθμίσεις και πρέπει να συμπληρωθεί μόνο **username** και **password**. Ο Διαχειριστής μπορεί να επιλέγει τον ενεργό λογαριασμό email.

Τα μηνύματα από τον φάκελο **INBOX** μεταφέρονται ή στον φάκελο **INBOX.beenRead** αν δεν Πρωτοκολληθούν, είτε στον **INBOX.inProtocol** όταν Πρωτοκολληθούν.

#### Προτεινόμενη ρύθμιση του λογαριασμού email

Για να ελέγχονται όλα τα email από το Ηλ. Πρωτόκολλο διαβάζονται όλα τα εισερχόμενα μηνύματα είτε είναι σεσημασμένα σαν διαβασμένα είτε όχι. Τα μηνύματα που επεξεργάστηκαν με το Ηλ. Πρωτόκολλο μεταφέρονται σε φακέλους όπως περιγράφεται παραπάνω. 

Τα σχολεία έχουν ένα λογαριασμό με τη μορφή **mail@[όνομα σχολείου].[νομός].sch.gr**. Αν δεν θέλουμε να γίνεται σε αυτό το λογαριασμό η μεταφορά των email στους φακέλους μπορούμε να φτιάξουμε ένα νέο λογααριασμό (πχ <EMAIL>) και να ρυθμίσουμε τον επίσημο λογαριασμό του σχολείου να προωθεί τα email στο νέο λογαριασμό. Εκεί θα δουλεύουμε με το Ηλ.Πρωτόκολλο. Αυτό το λογαριασμό μπορούμε να τον συντηρούμε με ένα πρόγραμμα Ηλ. Αλληλογραφίας (διαγραφή παλιών ή μη σημαντικών email ).



### Ενδεικτικά σας παρουσιάζω αναλυτικά τις ενέργειες που πρέπει να γίνουν για εγκατάσταση σε Ubuntu 18.04<commit_msg>Ρυθμίσεις email για το ΠΣΔ<commit_after># electronic_protocol

<img src="https://cloud.githubusercontent.com/assets/23439035/22380227/4f839c3a-e4c5-11e6-91fc-457f55281e6e.png" width="99%">

# Ηλεκτρονικό Πρωτόκολλο Σχολείου
- **Πρωτοκόλληση** Εισερχομένων και Εξερχομένων εγγράφων
- **Επισύναψη** Αρχείων και **καθορισμός Ημερομηνίας Διατήρησης - Καταστροφής** ανάλογα με το Φάκελο Αρχειοθέτησης **Φ.**
- **Φάκελοι Αρχειοθέτησης** και **Χρόνος Διατήρησης Εγγράφων**. Δυνατότητα τροποποίησης ανάλογα με τις εκάστοτε εγκυκλίους
- **Αναζήτηση** Πρωτοκόλλου, **Ανάκτηση - Διαγραφή** συνημμένων αρχείων
- **Εκτύπωση Απόδειξης** Κατάθεσης Πρωτοκόλλου
- Εκτύπωση Ηλεκτρονικού Πρωτοκόλλου για **βιβλιοδέτηση**
- Εκτύπωση λίστας εγγράφων για **Εκκαθάριση Αρχείου** μετά τη λήξη Διατήρησης αυτών
- **Backup** βάσης δεδομένων, εύκολο κατέβασμα για φύλαξη αυτών
- **Διαχείριση Χρηστών** με ρόλους "Διαχειριστής", "Αναθέτων", "Συγγραφέας", "Αναγνώστης" και ανάλογη πρόσβαση
- **Σύστημα αναθέσεων**: Ο "Διαχειριστής" και "Αναθέτων" μπορούν να αναθέτουν προς Διεκπεραίωση Πρωτόκολλα σε "Συγγραφείς"...
- **Πρωτοκόλληση email**: Σύνδεση με λογαριασμό email. Επισκόπηση εισερχομένων μηνυμάτων και των συνημμένων αρχείων και Πρωτοκόλληση με αποθήκευση των επιλεγμένων

#
# Βίντεο 
https://www.youtube.com/watch?v=Xl6qhbJWTGs


#
# Οδηγίες Χρήσης

https://drive.google.com/file/d/0B2ACFOVDi2ORWmZjUGNmQTNpVlk/view?usp=sharing

#
# Εγκατάσταση

Για την εγκατάσταση του framework laravel υπάρχουν διαθέσιμοι αρκετοί οδηγοί στο υπερκείμενο:

#### Για Debian 9:

https://tecadmin.net/install-laravel-on-debian-9-stretch/

#### Για Centos 7:

https://tecadmin.net/install-laravel-framework-on-centos/

#### Για Ubuntu:

https://websiteforstudents.com/install-laravel-php-framework-on-ubuntu-16-04-17-10-18-04-with-apache2-and-php-7-2-support/

#### Χρήση xampp

Αν θέλετε να χρησιμοποιήσετε xampp σε linux ή Windows ρίξτε μια ματιά στους επόμενους υπερσυνδέσμους:

https://www.5balloons.info/how-to-install-laravel-5-5-with-xampp-on-linux/

https://www.5balloons.info/install-laravel-5-7-xampp-windows/

#### Παρατηρήσεις

Σε όλους τους οδηγούς είναι σημαντικό να προσέξουμε και να **εγκαταστήσουμε τις απαραίτητες εξαρτήσεις**.

Όταν φτάσουμε στην εγκατάσταση του laravel

```git clone https://github.com/laravel/laravel.git```

ή

```sudo composer create-project laravel/laravel MyProject --prefer-dist```

**αντικαθιστούμε** με την παρακάτω εντολή:

```sudo git clone https://github.com/g-theodoroy/electronic_protocol.git .```

Οι οδηγοί αναφέρονται στη **mysql (mariaDB)** σαν Βάση Δεδομένων. Μπορείτε να επιλέξετε και τη **sqlite** (η πρότασή μου για ευκολία)

Για να ανακατευθύνουν τον **apache** server χρησιμοποιούν τη ντιρεκτίβα **VirtualHost**.

Προσωπικά Θεωρώ πιο εύκολο να ρυθμιστεί με τη χρήση της ντιρεκτίβας **Alias**


#### Ρυθμίσεις php

Θα πρέπει να ενεργοποιηθούν στο ```php.ini``` οι ακόλουθες extentions:

```
extension=fileinfo
extension=imap
extension=mbstring
extension=exif
extension=openssl
extension=pdo_sqlite
```

Για χρήση με mysql ή mariaDB και οι παρακάτω:

```
extension=mysqli
extension=pdo_mysql

```

#### Ρύθμίση email με το Gmail

Για να ρυθμίσετε το email συμπληρώστε ανάλογα τα στοιχεία στο αρχείο ```.env```.

γραμμές 26 έως 40:
```
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=gm@ilusern<EMAIL>
MAIL_PASSWORD=<PASSWORD>
MAIL_ENCRYPTION=tls

IMAP_HOST=imap.gmail.com
IMAP_PORT=993
IMAP_ENCRYPTION=ssl
IMAP_VALIDATE_CERT=false
IMAP_USERNAME=gm@ilusern@me
IMAP_PASSWORD=<PASSWORD>
IMAP_DEFAULT_ACCOUNT=default
IMAP_PROTOCOL=imap
```


#### Ρύθμίση email με το ΠΣΔ Πανελλήνιο Σχολικό Δίκτυο

```
MAIL_DRIVER=smtp
MAIL_HOST=mail.sch.gr
MAIL_PORT=25
MAIL_USERNAME=sch_usern@me
MAIL_PASSWORD=sch_p@ss
MAIL_ENCRYPTION=

IMAP_HOST=mail.sch.gr
IMAP_PORT=143
IMAP_ENCRYPTION=tls
IMAP_VALIDATE_CERT=true
IMAP_USERNAME=sch_usern@me
IMAP_PASSWORD=<PASSWORD>
IMAP_DEFAULT_ACCOUNT=default
IMAP_PROTOCOL=imap
```

**Για να εφαρμοστούν οι αλλαγές** που κάνατε πρέπει να καθαρίσετε τις ήδη αποθηκευμένες ρυθμίσεις **config** με:
``` php artisan config:clear```

**Αν το smtp Gmail δεν συνδέεται**

Αν δεν μπορείτε να στείλετε email με το gmail λογαριασμό σας ενεργοποιήστε την πρόσβαση σε "λιγότερο ασφαλείς" εφαρμογές. Κάντε login στο gmail λογαριασμό σας και επισκεφθείτε τον επόμενο σύνδεσμο:

https://myaccount.google.com/lesssecureapps


**Imap**

Μπορείτε να ρυθμίσετε περισσότερους λογαριασμούς imap για λήψη email στο αρχείο ```config/imap.php```. Υπάρχουν ήδη λογαριασμοί με τις κατάλληλες ρυθμίσεις και πρέπει να συμπληρωθεί μόνο **username** και **password**. Ο Διαχειριστής μπορεί να επιλέγει τον ενεργό λογαριασμό email.

Τα μηνύματα από τον φάκελο **INBOX** μεταφέρονται ή στον φάκελο **INBOX.beenRead** αν δεν Πρωτοκολληθούν, είτε στον **INBOX.inProtocol** όταν Πρωτοκολληθούν.

#### Προτεινόμενη ρύθμιση του λογαριασμού email

Για να ελέγχονται όλα τα email από το Ηλ. Πρωτόκολλο διαβάζονται όλα τα εισερχόμενα μηνύματα είτε είναι σεσημασμένα σαν διαβασμένα είτε όχι. Τα μηνύματα που επεξεργάστηκαν με το Ηλ. Πρωτόκολλο μεταφέρονται σε φακέλους όπως περιγράφεται παραπάνω. 

Τα σχολεία έχουν ένα λογαριασμό με τη μορφή **mail@[όνομα σχολείου].[νομός].sch.gr**. Αν δεν θέλουμε να γίνεται σε αυτό το λογαριασμό η μεταφορά των email στους φακέλους μπορούμε να φτιάξουμε ένα νέο λογααριασμό (πχ <EMAIL>) και να ρυθμίσουμε τον επίσημο λογαριασμό του σχολείου να προωθεί τα email στο νέο λογαριασμό. Εκεί θα δουλεύουμε με το Ηλ.Πρωτόκολλο. Αυτό το λογαριασμό μπορούμε να τον συντηρούμε με ένα πρόγραμμα Ηλ. Αλληλογραφίας (διαγραφή παλιών ή μη σημαντικών email ).



### Ενδεικτικά σας παρουσιάζω αναλυτικά τις ενέργειες που πρέπει να γίνουν για εγκατάσταση σε Ubuntu 18.04
{'fraction_non_alphanumeric': 0.09545413301878232, 'fraction_numerical': 0.015152889937392252, 'mean_word_length': 5.64376130198915, 'pattern_counts': {'":': 0, '<': 13, '<?xml version=': 0, '>': 13, 'https://': 22, 'lorem ipsum': 0, 'www.': 6, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '431839', 'n_tokens_mistral': 8391, 'n_tokens_neox': 5747, 'n_words': 1120}