Requires PostgreSQL database:
Database configuration in file: App.config.
IVMS
was created as a term project at university Wyższa Szkoła Ekonomii i Informatyki w Krakowie
as a subject of Programming in C#
labs.
C#
- Programing language.WPF
- Desktop application.GitHub
- Project VC.Team
- Of 2 or more.Invoice Management Studio
is a simple desktop application created to manage invoices. Provides simple CRUD operations on its resources and local persistance in database.
We aimed to use as few frameworks and libraries as possible to grasp as mutch of vanilla C# as possible.
C#
,WPF
.Postgresql
database,Npgsql
- As connection and operation library for managing PostgreSQL database.To keep our code clean and well organized we spend quite a lot of time designing application architecture.
We used Hexagonal architecture
to separate different layers of logic.
Core
An application root and definition, provides:
By using this approach we can simplify project structure in a way that Service
layer does not know about existence of Repository
layer. It only knows of abstract interface provided by Core
. Thanks to that if we ever decide to replace repository managing postgresql database, and use xml files instead we do not have to change any of Service
layer logic, as it only uses abstractions provided in Core
.
Repository
It is a layer responsible for management and communication with PostgreSQL
database.
Entity
objects
FromDomain
creates entity
representing a database row from a domain object.ToDomain
a method that supplied with object relations can create a domain obejct out of entity.RowMapper
entity
object.Command
Repository
Service
It is a layer concluding application business logic. Gives access to resources, and delegates user action results to specific logic engines.
Infrastructure
And application context and dependency provider. Presumably an IoC
container with Dependency Injection
factory. Depends on time we will be able to dedicate into project.
ViewModel
Manages and binds application domain objects with Desktop application view.
View
Provides graphical desktop interface to user.
Invoice
- application root aggregate. Represents an invoice in system with all related data.Invoice Item
- Subject of invoice.Invoice Payment
- Way invoice was payed off.Supplier
- Company issuing an invoice.Receiver
- To whom invoice is issued.Contact Info
- Data representing a person to contact with about invoice.Billing Info
- Company data needed to issue a invoice.Address
- Physical address of invoice receiver.