Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update README.md #94

Merged
merged 1 commit into from
Nov 26, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
169 changes: 145 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,32 +1,153 @@
# IS200-1-2 prosjekt for N�sted &
# IS200-1-2 prosjekt for Nøsted &

Husk � navngi branches til det du jobber med.
## Applikasjonens oppsett (arkitektur)

## How to use
### Prerequisites:
To make this work, you need to have [Docker](https://www.docker.com/) installed and running on your system.
For at klientens utviklere vet hva slags teknologier de må ha på plass for å sette opp
applikasjonen

##### 1. Build then start the docker container with the web application:
`docker image build -t webapp .`
`docker container run --rm -it -d --name webapp --publish 80:80 webapp`
For å sette opp applikasjonen trengs følgende teknologier:

##### 2. Start a mariadb container using the localdirectory "database" to store the data:
Docker brukes for å bygge og sette opp applikasjonen.

|Bash (Mac and Linux)|Powershell (Windows)|
|--------------------|--------------------|
|`docker run --rm --name mariadb -p 3308:3306/tcp -v "$(pwd)/database":/var/lib/mysql -e MYSQL_ROOT_PASSWORD=12345 -d mariadb:10.5.11`|`docker run --rm --name mariadb -p 3308:3306/tcp -v "%cd%\database":/var/lib/mysql -e MYSQL_ROOT_PASSWORD=12345 -d mariadb:10.5.11`|
MariaDB er en relasjonsdatabase og brukes for å lagre dataen.

##### 3. Enter the database and create the database and table for this skeleton:
`docker exec -it mariadb mysql -p`
When prompted enter the password (`12345`), then type or copy in the SQL from [this file](CreateDb.sql) (line by line).
<br>
Github brukes for å lagre applikasjonens kode og sørger for versjonskontroll.

### Via scripts:
The following takes the above steps and deduce them into scripts. (all the above commands are present in the below scripts).
The scripts allow us to build and deploy our application faster, which can be beneficial when the core concepts of using docker are understood.
|Bash (Mac and Linux)|Powershell (Windows)|
|--------------------|--------------------|
|Run `build.sh` to compile source code and build tomcat docker image.|Run `build.cmd` to compile source code and build tomcat docker image.|
|Run `startDb.sh` to start database|Run `startDb.cmd` to start database|
<br>
.NET, applikasjonen er skrevet i .NET 7.0, er dermed mulig det kan oppstå problemer hvis man prøver å kjøre koden med .NET 8.0

En IDE som støtter .NET, vi har brukt Visual studio.



## Hvordan applikasjonen kjøres (kjøring på Docker, kobling mot database, osv)

For at klientens utviklere får kjøre applikasjonen på en riktig måte


1. Installer Docker på systemet der applikasjonen skal kjøres.

2. Klon applikasjonens kode fra Github til systemet der den skal kjøres.

3. Finn hvor prosjekt mappen er plassert og kjør Startdb.cmd (startdb.sh for mac) fra prosjekt mappen.

4. Bygg applikasjonen med Visual Studio.

5. Kjør applikasjonen fra Visual Studio med Docker.





## Komponenter av applikasjonen (MVC, repo, klasser, osv)

For at klientens utviklere vet om komponentene som applikasjonen er oppbygget av, hva det gjør og hvorfor de er bygget slik

Applikasjonen er bygget opp med følgende komponenter:

### MVC

MVC er et rammeverk for programvareutvikling som skiller mellom data (model), logikk (controller) og visning (view).

Model: Representerer dataen i applikasjonen med klasser.

Controller: Behandler forespørsler fra brukere ved å kommunisere med model og view.

View: Presenterer dataen til brukerene.



### Klasser

Klassene ligger i mappen "Model".

Klassene representerer dataen i applikasjonen.

For eksempel har klassen " ArbDokViewModel " informasjon om et arbeidsdokument, som ArbDokID, NotatFraMekaniker og Status.



### Entity framework

Entity framework er et rammeverk som gjør det enklere å bruke dataen fra databasen.

Mappen "DataAccess" inneholder kode som bruker Entity framework til å kommunisere med databasen.

Mappen "Entities" består av dataen fra databasen, men representert som objekter slik at det er mulig å enklere jobbe med dataen i koden





### Repository

Repository er et mønster som brukes til å håndtere data fra databasen.

I applikasjonen brukes repository til å gjøre det enklere å hente, lagre og oppdatere data fra databasen.

Mappen "Repository" inneholder implementasjonen av repository-mønsteret.



### Database

Databasen ligger i mappen "Solution items".

Filen "CreateDb" inneholder oppsettet til databasen med alle tabellene

Filen "StartDb" sørger for at databasen blir opprettet i Docker og starter CreateDb filen som lager tabellene.





## Funksjonaliteter i applikasjonen (det som applikasjonen gjør)

For at klientens utviklere vet hvilke krav spesifikasjoner ble utviklet som funksjonaliteter i applikasjonen, sånn at de vet hva bør utvikles videre



Applikasjonen har følgende funksjonaliteter:

### Brukeradministrasjon

Admin kan opprette, slette og endre rettigheter til brukere (avdelinger).

### Dokumentbehandling

Brukere kan opprette, slette og redigere dokumenter.

### Søk

Brukere kan søke i dokumentoversikten.

### Autentisering

Brukere må logge inn for å få tilgang til applikasjonen.



## Funksjonene kan brukes på følgende måte:

### Brukeradministrasjon

Admin kan opprette nye brukere ved å fylle ut et skjema.

Admin kan slette brukere ved å velge brukeren og klikke på "Slett"-knappen.

Admin kan endre rettighetene til brukere ved å velge brukeren og klikke på "Gjør til administrator"-knappen.

### Dokumentbehandling

Brukere kan opprette nye dokumenter ved å klikke på "Ny ordre"-knappen.

Brukere kan slette dokumenter ved å velge dokumentet og klikke på "Slett"-knappen.

Brukere kan redigere dokumenter ved å klikke på et eksisterende dokument.

### Søk

Brukere kan søke i dokumentoversikten ved å skrive inn et søkeord i søkefeltet i dokumentoversikten.

Autentisering

Brukere kan logge inn ved å oppgi brukernavnet og passordet sitt.