# Wille - Will
###### tags: `wille`
## Domenski model
```plantuml
WillDocument "*" --> "1" NaturalPerson: testator
WillDocument "*" --> "1" Institution: createdByInstitution
WillDocument "*" --> "0..1" Institution: proclaimedByInstitution
WillDocument "*" --> "0..1" Attachment: cancellationFile
ProclamationDocument "1" --> "*" NaturalPersonEntity: testators
ProclamationDocument "*" --> "1" Institution: institution
ProclamationDocument "*" --> "0..1" Attachment: determination
ProclamationDocument "1" -up-> "*" WillDocument: wills
class WillDocument << SearchableAndAuditable >> {
number: String
sentDate: DateTime
depositedDate: DateTime
source: WillDocumentSource
state: WillState
type: WillType
officialActionType: WillOfficialActionType
compilationDate: DateTime
proclamationDate: DateTime
storagePlace: String
note: String
proclamationNumber: String
cancellationNote: String
details: Map
}
class ProclamationDocument << SearchableAndAuditable >> {
number: String
proclamationDate: DateTime
source: ProclamationDocumentSource
state: ProclamationState
caseNumber: String
}
enum WillDocumentSource {
SYSTEM,
NOTARIO
}
enum WillDocumentSource {
NEW,
SUBMITTED,
CHANGE_REQUEST_SUBMITTED,
PENDING,
IN_PROCLAMATION,a
CANCELLED,
PROCLAIMED,
UNKNOWN;
}
enum WilleType {
HOLOGRAPHIC,
ALLOGRAPHIC,
COURT,
INTERNATIONAL,
NOTARY,
UNKNOWN
}
enum WillOfficialActionType {
DEPOSIT,
VERIFICATION,
CANCELLATION,
RETURNED,
NOTARIO_PROCLAIMED,
UNKNOWN;
}
enum ProclamationDocumentSource {
SYSTEM,
NOTARIO
}
enum ProclamationState {
NEW,
IN_PROGRESS,
CLOSED,
ARCHIVED
}
```
## Kreiranje patch-eva i changelog-ova
1. Potrebno je da postoji kreiran **will** psql user
```sql=
psql postgres -U postgres -c "create USER will with PASSWORD 'will'";
```
2. Kreiramo **will_prod_schema** bazu podataka u kojoj će biti kreirana šema sa produkcije
```sql=
psql postgres -U postgres -c "select pg_terminate_backend(pid) from pg_stat_activity where datname = 'will_prod_schema'"
psql postgres -U postgres -c "drop database if exists will_prod_schema"
psql postgres -U postgres -c "create database will_prod_schema"
psql postgres -U postgres -c "grant all privileges on database will_prod_schema to will"
```
3. Kreiramo tabele (šemu) sa produkcije
**Na willpriv**:
- docker exec -it will_db_1 /bin/bash
- pg_dump -U will -s > will_prod_schema.sql
- exit
- docker cp will_db_1:will_prod_schema.sql will_prod_schema.sql
- exit
- rsync -avc willpriv:will_prod_schema.sql .
```sql=
psql will_prod_schema -U will < will_prod_schema.sql
```
4. Kreiramo **will_dev_schema** bazu podataka u kojoj će biti kreirana trenutna šema podataka
```sql=
psql postgres -U postgres -c "select pg_terminate_backend(pid) from pg_stat_activity where datname = 'will_dev_schema'"
psql postgres -U postgres -c "drop database if exists will_dev_schema"
psql postgres -U postgres -c "create database will_dev_schema"
psql postgres -U postgres -c "grant all privileges on database will_dev_schema to will"
```
5. Postavljamo prod konfiguraciju tako da kreira celokupnu šemu podataka u will_dev_schema bazi podataka kako bi napravili **diff** trenutne i šeme sa produkcije
```java=
spring.jpa.hibernate.ddl-auto = create
spring.datasource.url=jdbc:postgresql://localhost:5432/will_dev_schema
spring.liquibase.enabled=false
```
**cd wille-will
mvn spring-boot:run -Dspring-boot.run.profiles=prod**
6. Krairamo diff trenutne i šeme sa produkcije u fajlu db.changelog-diff.postgresql.sql
```shell=
mvn liquibase:diff \
-Dliquibase.username=will \
-Dliquibase.url=jdbc:postgresql://localhost:5432/will_prod_schema \
-Dliquibase.referenceUsername=will \
-Dliquibase.referenceUrl=jdbc:postgresql://localhost:5432/will_dev_schema \
-Dliquibase.changeLogFile=src/main/resources/db/changelog/db.changelog-master.yaml \
-Dliquibase.diffChangeLogFile=src/main/resources/db/changelog/db.changelog-diff.postgresql.sql \
-Dliquibase.logging=DEBUG \
-Dliquibase.verbose=true
```
7. Obrisati sve act_ i jv_ changeset-ove iz db.changelog-diff.postgresql.sql
8. Napraviti patch-eve i changelog fajlove pa ih zatim ukljuciti i u changelog-master (ostaviti db.changelog-diff.postgresql.sql cistim)
9. Vratiti prod konfiguraciju u prethodno stanje
10. Kreiramo will bazu podataka u koju će biti spušten prod will_prod.sql dump
```sql=
psql postgres -U postgres -c "select pg_terminate_backend(pid) from pg_stat_activity where datname = 'will'"
psql postgres -U postgres -c "drop database if exists will"
psql postgres -U postgres -c "create database will"
psql postgres -U postgres -c "grant all privileges on database will to will"
```
11. Kreiramo tabele (šemu ukljucujuci i podatke) sa produkcije
**Na willpriv:**
- docker exec -it will_db_1 /bin/bash
- pg_dump -U will > will_prod.sql
- exit
- docker cp will_db_1:will_prod.sql will_prod.sql
- exit
- rsync -avc willpriv:will_prod.sql .
```sql=
psql will -U will < will_prod.sql
```
12. Pokrenemo aplikaciju i proverimo da li se changelog-ovi kreiraju uspešno, u suprotnom ponoviti postupak dok se ne kreira željena šema
**cd wille-will
mvn spring-boot:run -Dspring-boot.run.profiles=prod**
## Testni korisnici
| Sud | username | password |
|:------------------------- |:------------- |:---------- |
| OSNOVNI SUD U PANCEVU | prituzbetest1 | Pravda2022 |
| VISI SUD U PANCEVU | prituzbetest2 | Pravda2022 |
| APELACIONI SUD U BEOGRADU | prituzbetest3 | Pravda2022 |
| VRHOVNI KASACIONI SUD | prituzbetest4 | Pravda2022 |
| MINISTARSTVO PRAVDE | prituzbetest5 | Pravda2022 |
| VISOKI SAVET SUDSTVA | prituzbetest6 | Pravda2022 |
## Spisak veb notifikacija i email obaveštenja
#### Prihvaćen zahtev za izmenu zaveštanja
| | Naslov | Opis |
| ---------------- |:------------------------------------- |:------------------------------------------------------------------------------------------------------- |
| **notifikacija** | Prihvaćen zahtev za izmenu zaveštanja | Javno-beležnička komora je prihvatila zahtev za izmenu zaveštanja {link}. Rok za izmenu je do: {datum}. |
| **email** | | |
#### Pristigao zahtev za izmenu zaveštanja
| | Naslov | Opis |
|:---------------- |:------------------------------------- |:---------------------------------------------------------------------------------------------- |
| **notifikacija** | Pristigao zahtev za izmenu zaveštanja | Pristigao Vam je zahtev za izmenu zaveštanja {link} od notara {link}. Razlog izmene: {razlog}. |
| **email** | | |
#### Poslat zahtev za izmenu zaveštanja
| | Naslov | Opis |
|:---------------- |:---------------------------------- |:------------------------------------------------------------ |
| **notifikacija** | Poslat zahtev za izmenu zaveštanja | Poslat zahtev za izmenu zaveštanja {link} zaveštaoca {link}. |
| **email** | | |
#### Odbijen zahtev za izmenu zaveštanja
| | Naslov | Opis |
|:---------------- |:----------------------------------- |:----------------------------------------------------------------------- |
| **notifikacija** | Odbijen zahtev za izmenu zaveštanja | Odbijen zahtev za izmenu zaveštanja {link}. Razlog odbijanja: {razlog}. |
| **email** | | |
#### Uspešno zavedeno zaveštanje
| | Naslov | Opis |
|:---------------- |:--------------------------- |:------------------------------------------------------------------ |
| **notifikacija** | Uspešno zavedeno zaveštanje | Uspešno ste zaveli zaveštanje zaveštaoca {link} pod brojem {broj}. |
| **email** | | |
#### Opozvano zaveštanje
| | Naslov | Opis |
|:---------------- |:------------------- |:------------------------------------------------------------------------------------- |
| **notifikacija** | Opozvano zaveštanje | Opozvano zaveštanje zaveštaoca {link} pod brojem {broj}. Razlog opozivanja: {razlog}. |
| **email** | | |
#### Pristigao zahtev za proglašenje zaveštanja
| | Naslov | Opis |
|:---------------- |:------------------------------------------ |:----------------------------------------------------------------------------------------------------------------------------- |
| **notifikacija** | Pristigao zahtev za proglašenje zaveštanja | Institucija {link} je pokrenula proces proglašenja zaveštanja zaveštaoca {link}. Proglasite dokumenta koja se čuvaju kod Vas. |
| **email** | | |
#### Pristigao zahtev za proglašenje zaveštanja
| | Naslov | Opis |
|:---------------- |:----------------------------------------- |:------------------------------------------------------------------------------------------------- |
| **notifikacija** | Pristigao zahtev za proglašenje zaveštanja | Pristigao Vam je zahtev za kreiranje konačnog zapisnika proglašenja zaveštanja zaveštaoca {link}. |
| **email** | | |