---
# System prepended metadata

title: Wille - Will
tags: [wille]

---

# 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**        |                                           |                                                                                                   |