заготовки реализаций

This commit is contained in:
2025-02-26 16:00:50 +04:00
parent af9e774126
commit 46f94f62b9
11 changed files with 289 additions and 50 deletions

View File

@@ -0,0 +1,30 @@
using SmallSoftwareContracts.BusinessLogicsContracts;
using SmallSoftwareContracts.DataModels;
using SmallSoftwareContracts.StoragesContracts;
using Microsoft.Extensions.Logging;
namespace SmallSoftwareBusinessLogic.Implementations;
internal class ManufacturerBusinessLogicContract(IManufacturerStorageContract manufacturerStorageContract, ILogger logger) : IManufacturerBusinessLogicContract
{
private readonly ILogger _logger = logger;
private readonly IManufacturerStorageContract _manufacturerStorageContract
= manufacturerStorageContract;
public List<ManufacturerDataModel> GetAllManufacturers()
{
return [];
}
public ManufacturerDataModel GetManufacturerByData(string data)
{
return new("", "", "", "'");
}
public void InsertManufacturer(ManufacturerDataModel manufacturerDataModel)
{
}
public void UpdateManufacturer(ManufacturerDataModel manufacturerDataModel)
{
}
public void DeleteManufacturer(string id)
{
}
}

View File

@@ -0,0 +1,44 @@
using Microsoft.Extensions.Logging;
using SmallSoftwareContracts.BusinessLogicsContracts;
using SmallSoftwareContracts.DataModels;
using SmallSoftwareContracts.Enums;
using SmallSoftwareContracts.StoragesContracts;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SmallSoftwareBusinessLogic.Implementations;
internal class PostBusinessLogicContract(IPostStorageContract postStorageContract, ILogger logger) : IPostBusinessLogicContract
{
private readonly ILogger _logger = logger;
private readonly IPostStorageContract _postStorageContract =
postStorageContract;
public List<PostDataModel> GetAllPosts(bool onlyActive = true)
{
return [];
}
public List<PostDataModel> GetAllDataOfPost(string postId)
{
return [];
}
public PostDataModel GetPostByData(string data)
{
return new("", "", PostType.None, 0, true, DateTime.UtcNow);
}
public void InsertPost(PostDataModel postDataModel)
{
}
public void UpdatePost(PostDataModel postDataModel)
{
}
public void DeletePost(string id)
{
}
public void RestorePost(string id)
{
}
}

View File

@@ -0,0 +1,49 @@
using Microsoft.Extensions.Logging;
using SmallSoftwareContracts.BusinessLogicsContracts;
using SmallSoftwareContracts.DataModels;
using SmallSoftwareContracts.StoragesContracts;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SmallSoftwareBusinessLogic.Implementations;
internal class RequestBusinessLogicContract(IRequestStorageContract requestStorageContract, ILogger logger) : IRequestBusinessLogicContract
{
private readonly ILogger _logger = logger;
private readonly IRequestStorageContract _requestStorageContract =
requestStorageContract;
public List<RequestDataModel> GetAllRequestsByPeriod(DateTime fromDate, DateTime
toDate)
{
return [];
}
public List<RequestDataModel> GetAllRequestsByWorkerByPeriod(string workerId,
DateTime fromDate, DateTime toDate)
{
return [];
}
public List<RequestDataModel> GetAllRequestsByBuyerByPeriod(string? buyerId,
DateTime fromDate, DateTime toDate)
{
return [];
}
public List<RequestDataModel> GetAllRequestsByProductByPeriod(string productId,
DateTime fromDate, DateTime toDate)
{
return [];
}
public RequestDataModel GetRequestByData(string data)
{
return new("", "", "", 0, false, []);
}
public void InsertRequest(RequestDataModel requestDataModel)
{
}
public void CancelRequest(string id)
{
}
}

View File

@@ -0,0 +1,35 @@
using Microsoft.Extensions.Logging;
using SmallSoftwareContracts.BusinessLogicsContracts;
using SmallSoftwareContracts.DataModels;
using SmallSoftwareContracts.StoragesContracts;
namespace SmallSoftwareBusinessLogic.Implementations;
internal class SalaryBusinessLogicContract(ISalaryStorageContract salaryStorageContract,
IRequestStorageContract requestStorageContract, IPostStorageContract postStorageContract,
IWorkerStorageContract workerStorageContract, ILogger logger) : ISalaryBusinessLogicContract
{
private readonly ILogger _logger = logger;
private readonly ISalaryStorageContract _salaryStorageContract =
salaryStorageContract;
private readonly IRequestStorageContract _requestStorageContract =
requestStorageContract;
private readonly IPostStorageContract _postStorageContract =
postStorageContract;
private readonly IWorkerStorageContract _workerStorageContract =
workerStorageContract;
public List<SalaryDataModel> GetAllSalariesByPeriod(DateTime fromDate, DateTime toDate)
{
return [];
}
public List<SalaryDataModel> GetAllSalariesByPeriodByWorker(DateTime fromDate, DateTime toDate, string workerId)
{
return [];
}
public void CalculateSalaryByMonth(DateTime date)
{
}
}

View File

@@ -0,0 +1,43 @@
using Microsoft.Extensions.Logging;
using SmallSoftwareContracts.BusinessLogicsContracts;
using SmallSoftwareContracts.DataModels;
using SmallSoftwareContracts.Enums;
using SmallSoftwareContracts.StoragesContracts;
namespace SmallSoftwareBusinessLogic.Implementations;
internal class SoftwareBusinessLogicContract(ISoftwareStorageContract
softwareStorageContract, ILogger logger) : ISoftwareBusinessLogicContract
{
private readonly ILogger _logger = logger;
private readonly ISoftwareStorageContract _softwareStorageContract =
softwareStorageContract;
public List<SoftwareDataModel> GetAllSoftwares(bool onlyActive)
{
return [];
}
public List<SoftwareDataModel> GetAllSoftwaresByManufacturer(string
manufacturerId, bool onlyActive = true)
{
return [];
}
public List<SoftwareHistoryDataModel> GetSoftwareHistoryBySoftware(string
softwareId)
{
return [];
}
public SoftwareDataModel GetSoftwareByData(string data)
{
return new("", "", SoftwareType.None, "", 0, true);
}
public void InsertSoftware(SoftwareDataModel softwareDataModel)
{
}
public void UpdateSoftware(SoftwareDataModel softwareDataModel)
{
}
public void DeleteSoftware(string id)
{
}
}

View File

@@ -0,0 +1,51 @@
using Microsoft.Extensions.Logging;
using SmallSoftwareContracts.BusinessLogicsContracts;
using SmallSoftwareContracts.DataModels;
using SmallSoftwareContracts.StoragesContracts;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SmallSoftwareBusinessLogic.Implementations;
internal class WorkerBusinessLogicContract(IWorkerStorageContract
workerStorageContract, ILogger logger) : IWorkerBusinessLogicContract
{
private readonly ILogger _logger = logger;
private readonly IWorkerStorageContract _workerStorageContract =
workerStorageContract;
public List<WorkerDataModel> GetAllWorkers(bool onlyActive = true)
{
return [];
}
public List<WorkerDataModel> GetAllWorkersByPost(string postId, bool
onlyActive = true)
{
return [];
}
public List<WorkerDataModel> GetAllWorkersByBirthDate(DateTime fromDate,
DateTime toDate, bool onlyActive = true)
{
return [];
}
public List<WorkerDataModel> GetAllWorkersByEmploymentDate(DateTime
fromDate, DateTime toDate, bool onlyActive = true)
{
return [];
}
public WorkerDataModel GetWorkerByData(string data)
{
return new("", "", "", DateTime.Now, DateTime.Now, true);
}
public void InsertWorker(WorkerDataModel workerDataModel)
{
}
public void UpdateWorker(WorkerDataModel workerDataModel)
{
}
public void DeleteWorker(string id)
{
}
}

View File

@@ -0,0 +1,17 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Logging" Version="9.0.2" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\SmallSoftwareContracts\SmallSoftwareContracts.csproj" />
</ItemGroup>
</Project>

View File

@@ -5,11 +5,10 @@ using SmallSoftwareContracts.Infrastructure;
namespace SmallSoftwareContracts.DataModels; namespace SmallSoftwareContracts.DataModels;
public class PostDataModel(string id, string postId, string postName, PostType public class PostDataModel(string id, string postName, PostType
postType, double salary, bool isActual, DateTime changeDate) : IValidation postType, double salary, bool isActual, DateTime changeDate) : IValidation
{ {
public string Id { get; private set; } = id; public string Id { get; private set; } = id;
public string PostId { get; private set; } = postId;
public string PostName { get; private set; } = postName; public string PostName { get; private set; } = postName;
public PostType PostType { get; private set; } = postType; public PostType PostType { get; private set; } = postType;
public double Salary { get; private set; } = salary; public double Salary { get; private set; } = salary;
@@ -23,12 +22,6 @@ public class PostDataModel(string id, string postId, string postName, PostType
if (!Id.IsGuid()) if (!Id.IsGuid())
throw new ValidationException("The value in the field Id is not a unique identifier"); throw new ValidationException("The value in the field Id is not a unique identifier");
if (PostId.IsEmpty())
throw new ValidationException("Field PostId is empty");
if (!PostId.IsGuid())
throw new ValidationException("The value in the field PostId is not a unique identifier");
if (PostName.IsEmpty()) if (PostName.IsEmpty())
throw new ValidationException("Field PostName is empty"); throw new ValidationException("Field PostName is empty");

View File

@@ -7,12 +7,10 @@ using System.Text.RegularExpressions;
namespace SmallSoftwareContracts.DataModels; namespace SmallSoftwareContracts.DataModels;
public class RequestDataModel(string id, string workerId, string email, double sum, public class RequestDataModel(string id, string workerId, string email, double sum, bool isCancel, List<InstallationRequestDataModel> softwares) : IValidation
bool isCancel, List<InstallationRequestDataModel> softwares) : IValidation
{ {
public string Id { get; private set; } = id; public string Id { get; private set; } = id;
public string WorkerId { get; private set; } = workerId; public string WorkerId { get; private set; } = workerId;
public DateTime RequestDate { get; private set; } = DateTime.UtcNow;
public string Email { get; private set; } = email; public string Email { get; private set; } = email;
public double Sum { get; private set; } = sum; public double Sum { get; private set; } = sum;
public bool IsCancel { get; private set; } = isCancel; public bool IsCancel { get; private set; } = isCancel;

View File

@@ -1,12 +1,14 @@
 
Microsoft Visual Studio Solution File, Format Version 12.00 Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17 # Visual Studio Version 17
VisualStudioVersion = 17.12.35728.132 d17.12 VisualStudioVersion = 17.12.35728.132
MinimumVisualStudioVersion = 10.0.40219.1 MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SmallSoftwareContracts", "SmallSoftwareContracts\SmallSoftwareContracts.csproj", "{07D2A792-3603-47CB-B5A3-9736E582F496}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SmallSoftwareContracts", "SmallSoftwareContracts\SmallSoftwareContracts.csproj", "{07D2A792-3603-47CB-B5A3-9736E582F496}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SmallSoftwareTests", "SmallSoftwareTests\SmallSoftwareTests.csproj", "{A98AC101-F5F5-4270-97D6-B5FA766D3E64}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SmallSoftwareTests", "SmallSoftwareTests\SmallSoftwareTests.csproj", "{A98AC101-F5F5-4270-97D6-B5FA766D3E64}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SmallSoftwareBusinessLogic", "SmallSoftwareBusinessLogic\SmallSoftwareBusinessLogic.csproj", "{C4E0D33E-8DBB-4BB5-8CCE-D2888F754EC7}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
@@ -21,6 +23,10 @@ Global
{A98AC101-F5F5-4270-97D6-B5FA766D3E64}.Debug|Any CPU.Build.0 = Debug|Any CPU {A98AC101-F5F5-4270-97D6-B5FA766D3E64}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A98AC101-F5F5-4270-97D6-B5FA766D3E64}.Release|Any CPU.ActiveCfg = Release|Any CPU {A98AC101-F5F5-4270-97D6-B5FA766D3E64}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A98AC101-F5F5-4270-97D6-B5FA766D3E64}.Release|Any CPU.Build.0 = Release|Any CPU {A98AC101-F5F5-4270-97D6-B5FA766D3E64}.Release|Any CPU.Build.0 = Release|Any CPU
{C4E0D33E-8DBB-4BB5-8CCE-D2888F754EC7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C4E0D33E-8DBB-4BB5-8CCE-D2888F754EC7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C4E0D33E-8DBB-4BB5-8CCE-D2888F754EC7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C4E0D33E-8DBB-4BB5-8CCE-D2888F754EC7}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE

View File

@@ -15,40 +15,18 @@ internal class PostDataModelTests
[Test] [Test]
public void IdIsNullOrEmptyTest() public void IdIsNullOrEmptyTest()
{ {
var post = CreateDataModel(null, Guid.NewGuid().ToString(), "name", var post = CreateDataModel(null, "name",
PostType.SoftInstaller, 10, true, DateTime.UtcNow); PostType.SoftInstaller, 10, true, DateTime.UtcNow);
Assert.That(() => post.Validate(), Assert.That(() => post.Validate(),
Throws.TypeOf<ValidationException>()); Throws.TypeOf<ValidationException>());
post = CreateDataModel(string.Empty, Guid.NewGuid().ToString(), post = CreateDataModel(string.Empty, "name", PostType.SoftInstaller, 10, true, DateTime.UtcNow);
"name", PostType.SoftInstaller, 10, true, DateTime.UtcNow);
Assert.That(() => post.Validate(), Assert.That(() => post.Validate(),
Throws.TypeOf<ValidationException>()); Throws.TypeOf<ValidationException>());
} }
[Test] [Test]
public void IdIsNotGuidTest() public void IdIsNotGuidTest()
{ {
var post = CreateDataModel("id", Guid.NewGuid().ToString(), "name", var post = CreateDataModel("id", "name", PostType.SoftInstaller, 10, true, DateTime.UtcNow);
PostType.SoftInstaller, 10, true, DateTime.UtcNow);
Assert.That(() => post.Validate(),
Throws.TypeOf<ValidationException>());
}
[Test]
public void PostIdIsNullEmptyTest()
{
var post = CreateDataModel(Guid.NewGuid().ToString(), null, "name",
PostType.SoftInstaller, 10, true, DateTime.UtcNow);
Assert.That(() => post.Validate(),
Throws.TypeOf<ValidationException>());
post = CreateDataModel(Guid.NewGuid().ToString(), string.Empty,
"name", PostType.SoftInstaller, 10, true, DateTime.UtcNow);
Assert.That(() => post.Validate(),
Throws.TypeOf<ValidationException>());
}
[Test]
public void PostIdIsNotGuidTest()
{
var post = CreateDataModel(Guid.NewGuid().ToString(), "postId",
"name", PostType.SoftInstaller, 10, true, DateTime.UtcNow);
Assert.That(() => post.Validate(), Assert.That(() => post.Validate(),
Throws.TypeOf<ValidationException>()); Throws.TypeOf<ValidationException>());
} }
@@ -56,12 +34,10 @@ internal class PostDataModelTests
public void PostNameIsEmptyTest() public void PostNameIsEmptyTest()
{ {
var manufacturer = CreateDataModel(Guid.NewGuid().ToString(), var manufacturer = CreateDataModel(Guid.NewGuid().ToString(), null, PostType.SoftInstaller, 10, true, DateTime.UtcNow);
Guid.NewGuid().ToString(), null, PostType.SoftInstaller, 10, true, DateTime.UtcNow);
Assert.That(() => manufacturer.Validate(), Assert.That(() => manufacturer.Validate(),
Throws.TypeOf<ValidationException>()); Throws.TypeOf<ValidationException>());
manufacturer = CreateDataModel(Guid.NewGuid().ToString(), manufacturer = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, PostType.SoftInstaller, 10, true,
Guid.NewGuid().ToString(), string.Empty, PostType.SoftInstaller, 10, true,
DateTime.UtcNow); DateTime.UtcNow);
Assert.That(() => manufacturer.Validate(), Assert.That(() => manufacturer.Validate(),
Throws.TypeOf<ValidationException>()); Throws.TypeOf<ValidationException>());
@@ -69,8 +45,7 @@ internal class PostDataModelTests
[Test] [Test]
public void PostTypeIsNoneTest() public void PostTypeIsNoneTest()
{ {
var post = CreateDataModel(Guid.NewGuid().ToString(), var post = CreateDataModel(Guid.NewGuid().ToString(), "name", PostType.None, 10, true, DateTime.UtcNow);
Guid.NewGuid().ToString(), "name", PostType.None, 10, true, DateTime.UtcNow);
Assert.That(() => post.Validate(), Assert.That(() => post.Validate(),
Throws.TypeOf<ValidationException>()); Throws.TypeOf<ValidationException>());
} }
@@ -78,11 +53,10 @@ internal class PostDataModelTests
public void SalaryIsLessOrZeroTest() public void SalaryIsLessOrZeroTest()
{ {
var post = CreateDataModel(Guid.NewGuid().ToString(), var post = CreateDataModel(Guid.NewGuid().ToString(),
Guid.NewGuid().ToString(), "name", PostType.SoftInstaller, 0, true, DateTime.UtcNow); "name", PostType.SoftInstaller, 0, true, DateTime.UtcNow);
Assert.That(() => post.Validate(), Assert.That(() => post.Validate(),
Throws.TypeOf<ValidationException>()); Throws.TypeOf<ValidationException>());
post = CreateDataModel(Guid.NewGuid().ToString(), post = CreateDataModel(Guid.NewGuid().ToString(), "name", PostType.SoftInstaller, -10, true,
Guid.NewGuid().ToString(), "name", PostType.SoftInstaller, -10, true,
DateTime.UtcNow); DateTime.UtcNow);
Assert.That(() => post.Validate(), Assert.That(() => post.Validate(),
Throws.TypeOf<ValidationException>()); Throws.TypeOf<ValidationException>());
@@ -97,13 +71,12 @@ internal class PostDataModelTests
var salary = 10; var salary = 10;
var isActual = false; var isActual = false;
var changeDate = DateTime.UtcNow.AddDays(-1); var changeDate = DateTime.UtcNow.AddDays(-1);
var post = CreateDataModel(postId, postPostId, postName, postType, var post = CreateDataModel(postId, postName, postType,
salary, isActual, changeDate); salary, isActual, changeDate);
Assert.That(() => post.Validate(), Throws.Nothing); Assert.That(() => post.Validate(), Throws.Nothing);
Assert.Multiple(() => Assert.Multiple(() =>
{ {
Assert.That(post.Id, Is.EqualTo(postId)); Assert.That(post.Id, Is.EqualTo(postId));
Assert.That(post.PostId, Is.EqualTo(postPostId));
Assert.That(post.PostName, Is.EqualTo(postName)); Assert.That(post.PostName, Is.EqualTo(postName));
Assert.That(post.PostType, Is.EqualTo(postType)); Assert.That(post.PostType, Is.EqualTo(postType));
Assert.That(post.Salary, Is.EqualTo(salary)); Assert.That(post.Salary, Is.EqualTo(salary));
@@ -111,8 +84,8 @@ internal class PostDataModelTests
Assert.That(post.ChangeDate, Is.EqualTo(changeDate)); Assert.That(post.ChangeDate, Is.EqualTo(changeDate));
}); });
} }
private static PostDataModel CreateDataModel(string? id, string? postId, private static PostDataModel CreateDataModel(string? id,
string? postName, PostType postType, double salary, bool isActual, DateTime string? postName, PostType postType, double salary, bool isActual, DateTime
changeDate) => changeDate) =>
new (id, postId, postName, postType, salary, isActual, changeDate); new (id, postName, postType, salary, isActual, changeDate);
} }