Skip to content

Commit

Permalink
finish for README file
Browse files Browse the repository at this point in the history
  • Loading branch information
Jirjis77 committed Jan 18, 2024
1 parent 04aaf00 commit 3b1ed92
Show file tree
Hide file tree
Showing 8 changed files with 151 additions and 49 deletions.
57 changes: 57 additions & 0 deletions .github/workflows/buildapp.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: Build and Publish

on:
#pull_request:
#branches:
#- '*'
push:
branches:
- '*'

jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v2

- name: Setup .NET
uses: actions/setup-dotnet@v1
with:
dotnet-version: '8.0.x'

- name: Create Temporary Publish Directory
run: mkdir -p publish-temp

- name: Build and Publish
run: |
dotnet restore --runtime win-x64
dotnet publish -c Release -o publish-temp/PersonNummerValidationTool --self-contained true -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true -p:UseAppHost=true --runtime win-x64 PersonNummerValidationTool/PersonNummerValidationTool.csproj
- name: Create Target Directory
run: mkdir -p publish

- name: Move EXE to Target Directory
run: mv publish-temp/PersonNummerValidationTool/*.exe publish/

- name: List generated files
run: ls -R publish-temp/PersonNummerValidationTool

- name: Remove Temporary Publish Directory
run: rm -rf publish-temp

- name: Upload EXE
uses: actions/upload-artifact@v2
with:
name: .ZIP-acrhive
path: publish

- name: Create Downloaded Artifact Directory
run: mkdir -p downloaded-artifact

- name: Download EXE
uses: actions/download-artifact@v2
with:
name: .ZIP-acrhive
path: downloaded-artifact
10 changes: 5 additions & 5 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
name: Docker Publish Application

on:
#push:
#branches:
#- '*'

pull_request:
push:
branches:
- '*'

#pull_request:
#branches:
#- '*'

jobs:
build:
runs-on: ubuntu-latest
Expand Down
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ DocProject/Help/Html2
DocProject/Help/html

# Click-Once directory
publish/
#publish/

# Publish Web Output
*.Publish.xml
Expand Down
1 change: 0 additions & 1 deletion GlobalUsings.cs

This file was deleted.

11 changes: 9 additions & 2 deletions PersonNummerValidationTool/PersonNummerValidationTool.csproj
Original file line number Diff line number Diff line change
@@ -1,10 +1,17 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<UseRidGraph>true</UseRidGraph>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<RuntimeIdentifier>win10-x64</RuntimeIdentifier>
<AdditionalUsings>global using Xunit;</AdditionalUsings>
</PropertyGroup>

<PropertyGroup>
<OutputPath>publish\</OutputPath>
</PropertyGroup>

</Project>
10 changes: 6 additions & 4 deletions PersonNummerValidationTool/Program.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
using System;

class StartProgram
class StartProgram
{
static void Main()
{
Start();
do
{
Start();
Console.WriteLine("Do you want to check another personal identity number? (y/n)");
} while (Console.ReadLine()?.Trim().ToLower() == "y");
}

static void Start()
Expand Down
106 changes: 71 additions & 35 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,14 @@
![example workflow](https://github.com/Acrozi/Personnummer-validation/actions/workflows/docker.yml/badge.svg)![example workflow](https://github.com/Acrozi/Personnummer-validation/actions/workflows/tests.yml/badge.svg)
# To-do
<div align="center">

![Workflow build](https://github.com/Acrozi/Personnummer-validation/actions/workflows/docker.yml/badge.svg)
![Workflow test](https://github.com/Acrozi/Personnummer-validation/actions/workflows/tests.yml/badge.svg)

</div>

<div align="center">
<h1>Personnummer Verification Console Application</h1>
</div>

# Personnummer Verification Console Application

## Introduktion

Expand All @@ -12,52 +19,77 @@ Nedan finner du dokumentation om hur du kan köra och testa applikationen både

För att köra och testa applikationen lokalt, följ stegen nedan:

1. ## Klona projektet från GitHub:
1. Klona projektet från GitHub:
bash
git clone https://github.com/Acrozi/Personnummer-validation.git
`git clone https://github.com/Acrozi/Personnummer-validation.git`

2. # Navigera till projektmappen:
2. Navigera till projektmappen:
bash
cd Personnummer-validation
`cd Personnummer-validation`

3. # Öppna projektet i din C#-utvecklingsmiljö t.ex., Visual Studio eller VS Code.
3. Öppna projektet i din C#-utvecklingsmiljö t.ex., Visual Studio eller VS Code.

4. # Bygg projektet:
4. Bygg projektet:
bash
dotnet build
`dotnet build`

5. # Kör applikationen:
5. Kör applikationen:
bash
dotnet run
`dotnet run`

6. # Använd applikationen för att verifiera personnummer:
6. Använd applikationen för att verifiera personnummer:
Följ instruktionerna som visas i konsolen för att ange ett svenskt personnummer och se resultatet av verifieringen.


7. # Kör enhetstester:
7. Kör enhetstester:
bash
dotnet test
`dotnet test`


Se resultaten av enhet testerna för att säkerställa korrekt funktionalitet.
Se resultaten av enhetstesterna för att säkerställa korrekt funktionalitet.

## Körning med Docker

För att köra applikationen med Docker, så måste du kunna lära dig dom olika alternativ som finns,
Att först köra med docker container så måste man ha installerat docker på sin dator, efteråt hämtar man en docker image med hjälp av att öppna terminaler eller kommandoprompt. Man hämtar docker image med hjälp av att använda
Här är OPTIONS för de olika alternativen som kan användas med docker exec-kommandot, CONTAINER är namnet eller ID på behållaren där kommandot ska köras, COMMAND är kommandot som ska köras och ARG är argumentet. passerade att ge order till kommandot.
För att korrekt installera och köra programmet "Personnummer Validation" via Docker, följ dessa steg:

1. Se till att Docker är korrekt installerat och att Docker Desktop körs. Kontrollera att Docker Daemon är igång. (https://www.docker.com/products/docker-desktop/)

2. Använd kommandot `docker pull acrozi/personnummer_validation-docker` för att hämta Docker-bilden från Docker Hub och ladda ner den lokalt.

3. Använd kommandot `docker images` för att visa en lista över alla lokalt sparade Docker-images. Kontrollera att `acrozi/personnummer_validation-docker` finns i listan.

4. Använd kommandot `docker run acrozi/personnummer_validation-docker` för att köra programmet i en Docker-container. För Windows-användare som använder en terminal som stöder interaktivt läge kan du använda kommandot utan winpty. Om du har problem med det, prova med kommandot `winpty docker run -it acrozi/personnummer_validation-docker`. Kommandot `-it` möjliggör att vi kan köra programmet interaktivt vilket gör att vi kan mata in data.

5. Följ instruktionerna i terminalen för att interagera med programmet. Ange personnummer när det efterfrågas.


## Körning med .EXE

Via github actions skapas ett körbart program.

1. Gå in på webbsidan https://github.com/Acrozi/Personnummer-validation/actions/runs/7572835865/artifacts/1178651670

2. Ladda ned och packa upp zip-filen och kör programmet.

3. Följ instruktionerna i terminalen för att interagera med programmet. Ange personnummer när det efterfrågas.

## Enhetstester

För att säkerställa korrekt funktionalitet har enhetstester skapats med hjälp av xUnit-ramverket. Några av de testade scenarierna inkluderar:

###########################################################################################
1. Validering av personnummer med korrekt format.

Niklas del
2. Ogiltiga personnummer i olika format som förväntas returnera false.

3. Hämtning av könet baserat på näst sista siffran i giltiga personnummer.

4. Kastning av ArgumentException vid försök att hämta kön från ett ogiltigt personnummer.

5. Projektstruktur:

Projektet innehåller två projekt

PersonNummerValidationTool: Huvudprojektet som innehåller kodfilen SwedishPersonalNumberValidator.cs.
xUnitTest: Projektet som innehåller xUnit-testerna för att validera koden

## Personnummer

Expand All @@ -67,7 +99,7 @@ Ett personnummer är uppbyggt av 10 siffror indelade i två grupper om 6 respekt

Ett personnummer kan matas in på olika sätt, bland annat genom 12 siffror, 10 siffror med bindestreck eller 10 siffror utan bindestreck.

För att kontrollera detta använder vi funktionen `IsValid`:
För att kontrollera detta använder programmet funktionen `IsValid`:

```csharp
public static bool IsValid(string personalNumber)
Expand Down Expand Up @@ -107,7 +139,7 @@ För att kontrollera detta använder vi funktionen `IsValid`:
}
```
Genom att kontrollera den nionde siffran i personnumret kan vi avgöra om personen är en man eller en kvinna, jämn siffra för kvinnor och udda siffra för män.
Detta kontrollerar vi genom funktionen `GetGender`:
Detta kontrollerar programmet genom funktionen `GetGender`:


```csharp
Expand All @@ -131,7 +163,7 @@ Detta kontrollerar vi genom funktionen `GetGender`:
```
Personnummer kan beräknas för att se om det är äkta. Detta görs genom att man multiplicerar de 9 första siffrorna med omväxlande 2 och 1.
De respektive siffersummorna adderas. Om man adderar kontrollsiffran(sista siffran) till denna summa skall man få ett tal jämt delbart med 10.
Detta kontrollerar vi genom funktionen `CalculateChecksum`:
Detta kontrollerar programmet genom funktionen `CalculateChecksum`:


```csharp
Expand All @@ -157,15 +189,19 @@ Detta kontrollerar vi genom funktionen `CalculateChecksum`:
return checksum;
}
```
## Collaborators
<a href="https://github.com/niklasallard1">
<img src="https://github.com/niklasallard1.png" alt="niklasallard1" width="60" height="60">
</a> <a href="https://github.com/acrozi">
<img src="https://github.com/acrozi.png" alt="acrozi" width="60" height="60">
</a><a href="https://github.com/jirjis77">
<img src="https://github.com/jirjis77.png" alt="jirjis77" width="60" height="60">
</a><a href="https://github.com/Heithum123">
<img src="https://github.com/Heithum123.png" alt="Heithum123" width="60" height="60">
</a>
## Svenska Regler för Personnummer

Svenska personnummer följer ett specifikt format och har regler för att bestämma dess giltighet. Applikationen genomför kontroller för att säkerställa att personnumret är korrekt enligt dessa regler.

## Övrig Information

För ytterligare detaljer och användning, se dokumentationen i källkoden och README.md filen i GitHub.

Lycka till med användningen av personnummerkontroll applikationen!

<div align="center">
<h2>Collaborators</h2>
<a href="https://github.com/Acrozi/Personnummer-validation/graphs/contributors">
<img src="https://contrib.rocks/image?repo=Acrozi/Personnummer-validation" />
</a>
</div>
3 changes: 2 additions & 1 deletion xUnitTest/xUnitTest.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
<AdditionalUsings>global using Xunit;</AdditionalUsings>
</PropertyGroup>

<ItemGroup>
Expand All @@ -26,6 +27,6 @@

<ItemGroup>
<ProjectReference Include="..\PersonNummerValidationTool\PersonNummerValidationTool.csproj" />
</ItemGroup>
</ItemGroup>

</Project>

0 comments on commit 3b1ed92

Please sign in to comment.