Distribute profits by employee based on admission time weight, occupational area weight and salary weight.
- .NET 5
- REST API
- Firebase Realtime Database
- Swagger
- XUnit
- Moq, Bogus
- AutoMapper
- Clean Code
- Clean Architecture
Prerequisites: .NET 5 Runtime, Visual Studio / Visual Studio Code
$ git clone https://github.com/lucasdsalves/profits-distribution.git
cd profits-distribution
profits-distribution.sln
It's already created and available to use through Firebase Realtime Database.
This API is already connected to it.
Although, connection settings are available on appsettings.json
API: RESTful communication layer;
CrossCutting: Funcionalities for the entire application, such as Dependency Injection config;
Domain: Core entities layer;
Infra: Data persistence layer;
Service: Application business rules layer;
Tests: Tests layer using XUnit, Moq, Bogus.
EmployeeController.cs
[HttpGet("get-all")]
[SwaggerOperation(
Summary = "Get users collection from Firebase realtime database."
)]
public async Task<IActionResult> GetAllEmployees()
{
return Ok(await _employeeService.GetAllEmployeesAsync());
}
ProfitsDistributionController.cs
[HttpGet("distribute-profits")]
[SwaggerOperation(
Summary = "Distribute profits by employee and get its participation value."
)]
public async Task<IActionResult> DistributeProfits()
{
return Ok(await _profitsDistributionService.DistributeProfitsAsync());
}