Úloha na vypracovanie pre záujemcov o pozíciu junior C# .NET vývojára
Na vypracovanie tejto úlohy bude potrebné mať nasledujúce nástroje:
- Účet na github.com
- Nainštalovaný git-scm
- Nainštalovaný .NET 8.0 SDK
- Nainštalované ľubovoľné vývojové prostredie pre C# .NET:
- Visual Studio Community
- JetBrains Rider (platené)
- Visual Studio Code nastavené pre vývoj .NET
- prípadne ľubovoľný textový editor podľa vašich preferencií
Zadanie musíte vypracovať samostatne bez cudzej pomoci.
Pri vypracovaní môžete používať ľubovoľné dokumentácie, návody, videá, stackoverflow, google, a pod.
Myslite však na to, že všetko, čo spravíte, si budete musieť vedieť aj obhájiť.
Čas potrebný na vypracovanie zadania sa nijak nehodnotí.
Tento solution reprezentuje veľmi jednoduchú správu užívateľov (pacientov) a základné operácie nad nimi (zobrazovanie, vytváranie, zmenu údajov a mazanie).
Solution sa skladá z 2 projektov:
- Projekt
SoftProgres.PatientRegistry.Apireprezentuje backend v .NET 8.0 s použitím ServiceStack frameworku (niečo, s čím sa u nás bežne stretnete). V tomto projekte sa pracuje s databázou, obsahuje biznis logiku a pre používateľov vystavuje rozhranie v podobe webových služieb (API). - Projekt
SoftProgres.PatientRegistry.Desktopreprezentuje frontend v .NET 8.0 s použitím WPF. Pre štylizáciu komponentov a pár nástrojov na zjednodušenie je použitá open-source knižnica WPF-UI.
Vašou úlohou bude vytvoriť kópiu repozitára https://github.com/softprogres/softprogres.patientregistry vo vašom github
účte (projekt nevytvárajte ako fork repozitára, nakoľko bude verejne viditeľný).
Vytvorte si prázdny repozitár softprogres.patientregistry pod vašim github účtom a pridajte do neho všetky súbory.
Spravte commit a push projektu bez zmien ako prvý commit.
Zmeny budete vykonávať do branchov, ktoré si vytvoríte:
- zmeny v projekte
SoftProgres.PatientRegistry.Apibudú commitnuté do branchebackend. - zmeny v projekte
SoftProgres.PatientRegistry.Desktopbudú commitnuté do branchefrontend.
Po dokončení všetkých úloh urobíte merge branchov backend a frontend do branche main cez pull request.
Branche po mergi nemažte, commity zachovajte (nerobte squash).
Či budete používať na prácu s git-om CLI alebo nejakú GUI aplikáciu, je na vás.
Pre správnu funkčnosť je potrebné mať spustené oba projekty. Projekty sú nastavené tak, aby server bežal na localhoste
na porte 5001. V prípade, že vám to nevyhovuje, aktualizujte port v API projekte v Properties/launchSettings.json
a v Desktop projekte v appsettings.json.
Databáza pacientov je reprezentovaná súborovou SQLite databázou v projekte SoftProgres.PatientRegistry.Api. Nájdete
ju v ceste App_Data/app.db. Môžete ju v prípade potreby zmazať a vygeneruje sa nanovo so základnou sadou pacientov.
V tomto projekte bude vašou úlohou implementovať jednoduchý algoritmus na validáciu rodného čísla a pomocné funkcie pre získavanie dodatočných údajov z rodného čísla.
- V súbore
Validators/BirthNumberValidator.csimplementuje validáciu rodného čísla.- Za validný vstupný formát sa považuje reťazec reprezentujúci rodné číslo s lomkou aj bez lomky
- Validácia musí spĺňať pravidlá definované v zákone 301/1995 Z. z. o rodnom čísle § 2
- V súbore
ServiceInterface/PatientService.cszavolajte funkciu validácie (validátor je v premennej_birthNumberValidator) pri vytváraní pacienta (metódaPost) a aktualizácií údajov o pacientovi (metódaPut) na mieste, kde si myslíte, že je to najlepšie.
- V súbore
Helpers/BirthNumberHelper.csimplementujete funkcionalitu na získavanie dátumu narodenia, veku a pohlavia osoby z rodného čísla.- Za validný vstupný formát sa považuje reťazec reprezentujúci rodné číslo s lomkou aj bez lomky
- Predpokladajte, že rodné číslo na vstupe je už validné podľa zákona 301/1995 Z. z. o rodnom čísle § 2.
- V súbore
Database/DataProvider.cszavolajte pomocné funkcie (helper je v premennej_birthNumberHelper) pri vytváraní pacienta (metódaCreatePatientAsync) a aktualizácii údajov o pacientovi (metódaUpdatePatientAsync) na mieste, kde si myslíte, že je to najlepšie.
V tomto projekte budete musieť vytvoriť converter, pracovať s WPF bindingami, systémovými dialógmi a súborovým systémom a vytvoriť jednoduchý formulár.
- V súbore
Converters/SexEnumToStringConvertervytvorte IValueConverter, ktorý na vstupe dostane enum reprezentujúci pohlavie pacienta (enum sa nachádza v súboreModels/Sex.csa vráti reťazec v tvare "muž", "žena", alebo "neznáme". - V súbore
Views/Pages/PatientRegistryPage.xamlmusíte vyriešiť zobrazovanie hodnôt v 3 stĺpcoch v DataGrid-e:- Stĺpec
Pohlaviemusí zobraziť hodnotu s použitím convertera vytvoreného v 1. úlohe - Stĺpec
Dátum narodeniamusí zobraziť hodnotu, ktorá bude v bindingu naformátovaná do tvarudd.mm.rrrr - Stĺpec
Adresamusí zobraziť v sebe kombináciu kompletnej adresy zo 4 premenných v tvare "Ulica, PSČ Mesto, Štát", čiže napr. "Nálepková 123/13, 921 01 Piešťany, Slovensko".
- Stĺpec
- V súbore
ViewModels/PatientRegistryViewModel.csimplementuje vo funkciiDeletePatientAsyncvolanie systémovéhoMessageBox, ktorý vyžiada užívateľské potvrdenie zmazania pacienta. - V súbore
ViewModels/PatientRegistryViewModel.csimplementuje vo funkciiExportToCsvAsyncfunkcionalitu exportu dát aktuálneho zoznamu pacientov do CSV súboru. Užívateľovi musíte umožniť výber výstupného súboru cez systémový dialóg. - V súbore
Views/Pages/EditPatientPage.xamlvytvorte jednoduchý formulár, ktorý bude aktualizovať pacientské údaje nachádzajúce sa v premennej ViewModel-uCurrentPatient. Vstupné hodnoty nie je potrebné validovať.
Vypracovanie zadania nemusí byť na 100%, urobte toľko, koľko zvládnete.
V prípade, že si nebudete niečím istý, neváhajte ma kontaktovať na e-mailovej adrese lukas.rendvansky@softprogres.sk.
Link na váš repozitár s vypracovaným zadaním po dokončení odošlite na e-mail hr@softprogres.sk do 20.10.2024 (nedeľa)
do polnoci. Uistite sa, že repozitár je verejný.