diff --git a/MagicCarpetProject/MagicCarpetBusinessLogic/Implementations/SalaryBusinessLogicContract.cs b/MagicCarpetProject/MagicCarpetBusinessLogic/Implementations/SalaryBusinessLogicContract.cs index 74ae088..d47dfa6 100644 --- a/MagicCarpetProject/MagicCarpetBusinessLogic/Implementations/SalaryBusinessLogicContract.cs +++ b/MagicCarpetProject/MagicCarpetBusinessLogic/Implementations/SalaryBusinessLogicContract.cs @@ -61,7 +61,7 @@ public class SalaryBusinessLogicContract(ISalaryStorageContract salaryStorageCon throw new NullListException(); var salary = post.Salary + sales * 0.1; _logger.LogDebug("The employee {employeeId} was paid a salary of {salary}", employee.Id, salary); - _salaryStorageContract.AddElement(new SalaryDataModel(employee.Id, finishDate, salary)); + _salaryStorageContract.AddElement(new SalaryDataModel(employee.Id, DateTime.SpecifyKind(finishDate, DateTimeKind.Utc), salary)); } } } diff --git a/MagicCarpetProject/MagicCarpetTests/WebApiControllersTests/SalaryWebApiControllerTests.cs b/MagicCarpetProject/MagicCarpetTests/WebApiControllersTests/SalaryControllerTests.cs similarity index 77% rename from MagicCarpetProject/MagicCarpetTests/WebApiControllersTests/SalaryWebApiControllerTests.cs rename to MagicCarpetProject/MagicCarpetTests/WebApiControllersTests/SalaryControllerTests.cs index dca7a88..7e3dac5 100644 --- a/MagicCarpetProject/MagicCarpetTests/WebApiControllersTests/SalaryWebApiControllerTests.cs +++ b/MagicCarpetProject/MagicCarpetTests/WebApiControllersTests/SalaryControllerTests.cs @@ -16,7 +16,6 @@ internal class SalaryControllerTests : BaseWebApiControllerTest public void TearDown() { MagicCarpetDbContext.RemovePostsFromDatabase(); - MagicCarpetDbContext.RemoveToursFromDatabase(); MagicCarpetDbContext.RemoveEmployeesFromDatabase(); MagicCarpetDbContext.RemoveSalariesFromDatabase(); } @@ -30,7 +29,7 @@ internal class SalaryControllerTests : BaseWebApiControllerTest MagicCarpetDbContext.InsertSalaryToDatabaseAndReturn(employee.Id); MagicCarpetDbContext.InsertSalaryToDatabaseAndReturn(employee.Id); //Act - var response = await HttpClient.GetAsync($"/api/salaries/getrecords?fromDate={DateTime.UtcNow.AddDays(-1):MM/dd/yyyy HH:mm:ss}&toDate={DateTime.UtcNow.AddDays(1):MM/dd/yyyy HH:mm:ss}"); + var response = await HttpClient.GetAsync($"/api/salary/getrecords?fromDate={DateTime.UtcNow.AddDays(-10):MM/dd/yyyy HH:mm:ss}&toDate={DateTime.UtcNow.AddDays(10):MM/dd/yyyy HH:mm:ss}"); //Assert Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK)); var data = await GetModelFromResponseAsync>(response); @@ -45,7 +44,7 @@ internal class SalaryControllerTests : BaseWebApiControllerTest public async Task GetList_WhenNoRecords_ShouldSuccess_Test() { //Act - var response = await HttpClient.GetAsync($"/api/salaries/getrecords?fromDate={DateTime.UtcNow.AddDays(-1):MM/dd/yyyy HH:mm:ss}&toDate={DateTime.UtcNow.AddDays(1):MM/dd/yyyy HH:mm:ss}"); + var response = await HttpClient.GetAsync($"/api/salary/getrecords?fromDate={DateTime.UtcNow.AddDays(-1):MM/dd/yyyy HH:mm:ss}&toDate={DateTime.UtcNow.AddDays(1):MM/dd/yyyy HH:mm:ss}"); //Assert Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK)); var data = await GetModelFromResponseAsync>(response); @@ -66,7 +65,7 @@ internal class SalaryControllerTests : BaseWebApiControllerTest MagicCarpetDbContext.InsertSalaryToDatabaseAndReturn(employee.Id, salaryDate: DateTime.UtcNow.AddDays(1).AddMinutes(-5)); MagicCarpetDbContext.InsertSalaryToDatabaseAndReturn(employee.Id, salaryDate: DateTime.UtcNow.AddDays(-2)); //Act - var response = await HttpClient.GetAsync($"/api/salaries/getrecords?fromDate={DateTime.UtcNow.AddDays(-1):MM/dd/yyyy HH:mm:ss}&toDate={DateTime.UtcNow.AddDays(1):MM/dd/yyyy HH:mm:ss}"); + var response = await HttpClient.GetAsync($"/api/salary/getrecords?fromDate={DateTime.UtcNow.AddDays(-1):MM/dd/yyyy HH:mm:ss}&toDate={DateTime.UtcNow.AddDays(1):MM/dd/yyyy HH:mm:ss}"); //Assert Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK)); var data = await GetModelFromResponseAsync>(response); @@ -81,7 +80,7 @@ internal class SalaryControllerTests : BaseWebApiControllerTest public async Task GetList_WhenDateIsIncorrect_ShouldBadRequest_Test() { //Act - var response = await HttpClient.GetAsync($"/api/salaries/getemployeerecords?fromDate={DateTime.UtcNow.AddDays(1):MM/dd/yyyy HH:mm:ss}&toDate={DateTime.UtcNow.AddDays(-1):MM/dd/yyyy HH:mm:ss}"); + var response = await HttpClient.GetAsync($"/api/salary/getemployeerecords?fromDate={DateTime.UtcNow.AddDays(1):MM/dd/yyyy HH:mm:ss}&toDate={DateTime.UtcNow.AddDays(-1):MM/dd/yyyy HH:mm:ss}"); //Assert Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.BadRequest)); } @@ -96,7 +95,7 @@ internal class SalaryControllerTests : BaseWebApiControllerTest MagicCarpetDbContext.InsertSalaryToDatabaseAndReturn(employee1.Id); MagicCarpetDbContext.InsertSalaryToDatabaseAndReturn(employee2.Id); //Act - var response = await HttpClient.GetAsync($"/api/salaries/getemployeerecords?fromDate={DateTime.UtcNow.AddDays(-1):MM/dd/yyyy HH:mm:ss}&toDate={DateTime.UtcNow.AddDays(1):MM/dd/yyyy HH:mm:ss}&id={employee1.Id}"); + var response = await HttpClient.GetAsync($"/api/salary/getemployeerecords?fromDate={DateTime.UtcNow.AddDays(-1):MM/dd/yyyy HH:mm:ss}&toDate={DateTime.UtcNow.AddDays(1):MM/dd/yyyy HH:mm:ss}&id={employee1.Id}"); //Assert Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK)); var data = await GetModelFromResponseAsync>(response); @@ -121,7 +120,7 @@ internal class SalaryControllerTests : BaseWebApiControllerTest MagicCarpetDbContext.InsertSalaryToDatabaseAndReturn(employee2.Id, salaryDate: DateTime.UtcNow.AddDays(1).AddMinutes(-5)); MagicCarpetDbContext.InsertSalaryToDatabaseAndReturn(employee1.Id, salaryDate: DateTime.UtcNow.AddDays(-2)); //Act - var response = await HttpClient.GetAsync($"/api/salaries/getemployeerecords?fromDate={DateTime.UtcNow.AddDays(-1):MM/dd/yyyy HH:mm:ss}&toDate={DateTime.UtcNow.AddDays(1):MM/dd/yyyy HH:mm:ss}&id={employee1.Id}"); + var response = await HttpClient.GetAsync($"/api/salary/getemployeerecords?fromDate={DateTime.UtcNow.AddDays(-1):MM/dd/yyyy HH:mm:ss}&toDate={DateTime.UtcNow.AddDays(1):MM/dd/yyyy HH:mm:ss}&id={employee1.Id}"); //Assert Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK)); var data = await GetModelFromResponseAsync>(response); @@ -139,7 +138,7 @@ internal class SalaryControllerTests : BaseWebApiControllerTest //Arrange var employee = MagicCarpetDbContext.InsertEmployeeToDatabaseAndReturn(fio: "Иванов И.И."); //Act - var response = await HttpClient.GetAsync($"/api/salaries/getemployeerecords?fromDate={DateTime.UtcNow.AddDays(1):MM/dd/yyyy HH:mm:ss}&toDate={DateTime.UtcNow.AddDays(-1):MM/dd/yyyy HH:mm:ss}&id={employee.Id}"); + var response = await HttpClient.GetAsync($"/api/salary/getemployeerecords?fromDate={DateTime.UtcNow.AddDays(1):MM/dd/yyyy HH:mm:ss}&toDate={DateTime.UtcNow.AddDays(-1):MM/dd/yyyy HH:mm:ss}&id={employee.Id}"); //Assert Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.BadRequest)); } @@ -148,7 +147,7 @@ internal class SalaryControllerTests : BaseWebApiControllerTest public async Task GetList_ByEmployee_WhenIdIsNotGuid_ShouldBadRequest_Test() { //Act - var response = await HttpClient.GetAsync($"/api/salaries/getemployeerecords?fromDate={DateTime.UtcNow.AddDays(-1):MM/dd/yyyy HH:mm:ss}&toDate={DateTime.UtcNow.AddDays(1):MM/dd/yyyy HH:mm:ss}&id=id"); + var response = await HttpClient.GetAsync($"/api/salary/getemployeerecords?fromDate={DateTime.UtcNow.AddDays(-1):MM/dd/yyyy HH:mm:ss}&toDate={DateTime.UtcNow.AddDays(1):MM/dd/yyyy HH:mm:ss}&id=id"); //Assert Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.BadRequest)); } @@ -159,16 +158,18 @@ internal class SalaryControllerTests : BaseWebApiControllerTest //Arrange var post = MagicCarpetDbContext.InsertPostToDatabaseAndReturn(salary: 1000); var employee = MagicCarpetDbContext.InsertEmployeeToDatabaseAndReturn(fio: "Иванов И.И.", postId: post.PostId); - var furniture = MagicCarpetDbContext.InsertTourToDatabaseAndReturn(); + var sale = MagicCarpetDbContext.InsertSaleToDatabaseAndReturn(employee.Id); + + var expectedSum = sale.Sum * 0.1 + post.Salary; //Act - var response = await HttpClient.PostAsync($"/api/salaries/calculate?date={DateTime.UtcNow:MM/dd/yyyy}", null); + var response = await HttpClient.PostAsync($"/api/salary/calculate?date={DateTime.UtcNow:MM/dd/yyyy}", null); //Assert Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.NoContent)); var salaries = MagicCarpetDbContext.GetSalariesFromDatabaseByEmployeeId(employee.Id); Assert.Multiple(() => { Assert.That(salaries, Has.Length.EqualTo(1)); - Assert.That(salaries.First().EmployeeSalary, Is.EqualTo(1000.5)); + Assert.That(salaries.First().EmployeeSalary, Is.EqualTo(expectedSum)); Assert.That(salaries.First().SalaryDate.Month, Is.EqualTo(DateTime.UtcNow.Month)); }); } @@ -177,7 +178,7 @@ internal class SalaryControllerTests : BaseWebApiControllerTest public async Task Calculate_WithoutEmployees_ShouldSuccess_Test() { //Act - var response = await HttpClient.PostAsync($"/api/salaries/calculate?date={DateTime.UtcNow:MM/dd/yyyy}", null); + var response = await HttpClient.PostAsync($"/api/salary/calculate?date={DateTime.UtcNow:MM/dd/yyyy}", null); //Assert Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.NoContent)); var salaries = MagicCarpetDbContext.Salaries.ToArray(); @@ -191,9 +192,9 @@ internal class SalaryControllerTests : BaseWebApiControllerTest var post = MagicCarpetDbContext.InsertPostToDatabaseAndReturn(salary: 1000); var employee1 = MagicCarpetDbContext.InsertEmployeeToDatabaseAndReturn(fio: "name 1", postId: post.PostId); var employee2 = MagicCarpetDbContext.InsertEmployeeToDatabaseAndReturn(fio: "name 2", postId: post.PostId); - var man = MagicCarpetDbContext.InsertTourToDatabaseAndReturn(); + var sale = MagicCarpetDbContext.InsertSaleToDatabaseAndReturn(employee1.Id); //Act - var response = await HttpClient.PostAsync($"/api/salaries/calculate?date={DateTime.UtcNow:MM/dd/yyyy}", null); + var response = await HttpClient.PostAsync($"/api/salary/calculate?date={DateTime.UtcNow:MM/dd/yyyy}", null); //Assert Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.NoContent)); var salary1 = MagicCarpetDbContext.GetSalariesFromDatabaseByEmployeeId(employee1.Id).First().EmployeeSalary; @@ -207,9 +208,9 @@ internal class SalaryControllerTests : BaseWebApiControllerTest //Arrange MagicCarpetDbContext.InsertPostToDatabaseAndReturn(); var employee = MagicCarpetDbContext.InsertEmployeeToDatabaseAndReturn(fio: "name", postId: Guid.NewGuid().ToString()); - var furniture = MagicCarpetDbContext.InsertTourToDatabaseAndReturn(); + var sale = MagicCarpetDbContext.InsertSaleToDatabaseAndReturn(employee.Id); //Act - var response = await HttpClient.PostAsync($"/api/salaries/calculate?date={DateTime.UtcNow:MM/dd/yyyy}", null); + var response = await HttpClient.PostAsync($"/api/salary/calculate?date={DateTime.UtcNow:MM/dd/yyyy}", null); //Assert Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.NotFound)); } diff --git a/MagicCarpetProject/MagicCarpetTests/WebApiControllersTests/SaleControllerTests.cs b/MagicCarpetProject/MagicCarpetTests/WebApiControllersTests/SaleControllerTests.cs index 74b7ced..62cdc2a 100644 --- a/MagicCarpetProject/MagicCarpetTests/WebApiControllersTests/SaleControllerTests.cs +++ b/MagicCarpetProject/MagicCarpetTests/WebApiControllersTests/SaleControllerTests.cs @@ -40,13 +40,12 @@ internal class SaleControllerTests : BaseWebApiControllerTest public async Task GetList_WhenHaveRecords_ShouldSuccess_Test() { //Arrange - var sale = MagicCarpetDbContext.InsertSaleToDatabaseAndReturn(_employeeId, clientId: _clientId, sum: 10, tours: [(_tourId, 10, 1.1)]); - MagicCarpetDbContext.InsertSaleToDatabaseAndReturn(_employeeId, tours: [(_tourId, 10, 1.1)]); - MagicCarpetDbContext.InsertSaleToDatabaseAndReturn(_employeeId, tours: [(_tourId, 10, 1.1)]); + var sale = MagicCarpetDbContext.InsertSaleToDatabaseAndReturn(_employeeId, _clientId, sum: 10, tours: [(_tourId, 10, 1.1)]); + MagicCarpetDbContext.InsertSaleToDatabaseAndReturn(_employeeId, _clientId, tours: [(_tourId, 10, 1.1)]); + MagicCarpetDbContext.InsertSaleToDatabaseAndReturn(_employeeId, _clientId, tours: [(_tourId, 10, 1.1)]); //Act var response = await HttpClient.GetAsync($"/api/sales/getrecords?fromDate={DateTime.UtcNow.AddDays(-1):MM/dd/yyyy HH:mm:ss}&toDate={DateTime.UtcNow.AddDays(1):MM/dd/yyyy HH:mm:ss}"); //Assert - Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK)); var data = await GetModelFromResponseAsync>(response); Assert.Multiple(() => { diff --git a/MagicCarpetProject/MagicCarpetWebApi/Controllers/SalariesController.cs b/MagicCarpetProject/MagicCarpetWebApi/Controllers/SalaryController.cs similarity index 92% rename from MagicCarpetProject/MagicCarpetWebApi/Controllers/SalariesController.cs rename to MagicCarpetProject/MagicCarpetWebApi/Controllers/SalaryController.cs index 745ad2e..a7c8fc8 100644 --- a/MagicCarpetProject/MagicCarpetWebApi/Controllers/SalariesController.cs +++ b/MagicCarpetProject/MagicCarpetWebApi/Controllers/SalaryController.cs @@ -9,7 +9,7 @@ namespace MagicCarpetWebApi.Controllers; [Route("api/[controller]/[action]")] [ApiController] [Produces("application/json")] -public class SalariesController(ISalaryAdapter adapter) : ControllerBase +public class SalaryController(ISalaryAdapter adapter) : ControllerBase { private readonly ISalaryAdapter _adapter = adapter; diff --git a/MagicCarpetProject/MagicCarpetWebApi/Controllers/ToursController.cs b/MagicCarpetProject/MagicCarpetWebApi/Controllers/ToursController.cs index 6adcddd..b6c5c9e 100644 --- a/MagicCarpetProject/MagicCarpetWebApi/Controllers/ToursController.cs +++ b/MagicCarpetProject/MagicCarpetWebApi/Controllers/ToursController.cs @@ -1,7 +1,6 @@ using MagicCarpetContracts.AdapterContracts; using MagicCarpetContracts.BindingModels; using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; namespace MagicCarpetWebApi.Controllers; diff --git a/MagicCarpetProject/MagicCarpetWebApi/MagicCarpetWebApi.csproj b/MagicCarpetProject/MagicCarpetWebApi/MagicCarpetWebApi.csproj index 39c7096..b893207 100644 --- a/MagicCarpetProject/MagicCarpetWebApi/MagicCarpetWebApi.csproj +++ b/MagicCarpetProject/MagicCarpetWebApi/MagicCarpetWebApi.csproj @@ -9,6 +9,7 @@ + diff --git a/MagicCarpetProject/MagicCarpetWebApi/Program.cs b/MagicCarpetProject/MagicCarpetWebApi/Program.cs index 5045cf7..fadfa84 100644 --- a/MagicCarpetProject/MagicCarpetWebApi/Program.cs +++ b/MagicCarpetProject/MagicCarpetWebApi/Program.cs @@ -70,6 +70,7 @@ builder.Services.AddTransient(); builder.Services.AddTransient(); builder.Services.AddTransient(); builder.Services.AddTransient(); +builder.Services.AddTransient(); // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle builder.Services.AddOpenApi();