diff --git a/ElectricalRepairService/ElectricalRepairServiceContract/DataModels/DetailDeliveryDataModel.cs b/ElectricalRepairService/ElectricalRepairServiceContract/DataModels/DetailDeliveryDataModel.cs new file mode 100644 index 0000000..886be81 --- /dev/null +++ b/ElectricalRepairService/ElectricalRepairServiceContract/DataModels/DetailDeliveryDataModel.cs @@ -0,0 +1,37 @@ +using ElectricalRepairServiceContract.Exceptions; +using ElectricalRepairServiceContract.Extensions; +using ElectricalRepairServiceContract.Interfaces; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ElectricalRepairServiceContract.DataModels +{ + public class DetailDeliveryDataModel : IValidation + { + public string Id { get; private set; } + public string DetailId { get; private set; } + public int Amount { get; private set; } + public DateTime Date { get; private set; } + + public DetailDeliveryDataModel(string id, string detailId, int amount, DateTime date) + { + Id = id; + DetailId = detailId; + Amount = amount; + Date = date; + } + + public void Validate() + { + if (Id.IsEmpty()) + throw new ValidationException("Field Id is empty"); + if (!Id.IsGuid()) + throw new ValidationException("The value in the field Id is not a unique identifier"); + if (Amount <= 0) + throw new ValidationException("The Amount must be more then 0"); + } + } +} diff --git a/ElectricalRepairService/ElectricalRepairServiceContract/DataModels/DetailsDataModel.cs b/ElectricalRepairService/ElectricalRepairServiceContract/DataModels/DetailsDataModel.cs index fc1ffb5..9b7adb0 100644 --- a/ElectricalRepairService/ElectricalRepairServiceContract/DataModels/DetailsDataModel.cs +++ b/ElectricalRepairService/ElectricalRepairServiceContract/DataModels/DetailsDataModel.cs @@ -16,16 +16,20 @@ namespace ElectricalRepairServiceContract.DataModels public string Name { get; private set; } public int Count { get; private set; } public int OldCount { get; private set; } - public DateTime UpdateDate { get; private set; } + public List? DetailsDelivery { get; private set; } + public List? DetailsUses { get; private set; } - public DetailsDataModel(string id, string name, int count, int oldCount, DateTime updateDate) + public DetailsDataModel(string id, string name, int count, int oldCount, + DateTime updateDate, List? detailsDelivery, List? detailsUses) { Id = id; Name = name; Count = count; OldCount = oldCount; UpdateDate = updateDate; + DetailsDelivery = detailsDelivery; + DetailsUses = detailsUses; } public void Validate() @@ -37,9 +41,9 @@ namespace ElectricalRepairServiceContract.DataModels if (Name.IsEmpty()) throw new ValidationException("Field Description is empty"); if (Count < 0) - throw new ValidationException("The count must be more then 0"); + throw new ValidationException("The count must be positive"); if (OldCount < 0) - throw new ValidationException("The count must be more then 0"); + throw new ValidationException("The count must be positive"); } } } diff --git a/ElectricalRepairService/ElectricalRepairServiceTests/DataModelsTests/DetailsDataModelTest.cs b/ElectricalRepairService/ElectricalRepairServiceTests/DataModelsTests/DetailsDataModelTest.cs index 3df99f5..2588f63 100644 --- a/ElectricalRepairService/ElectricalRepairServiceTests/DataModelsTests/DetailsDataModelTest.cs +++ b/ElectricalRepairService/ElectricalRepairServiceTests/DataModelsTests/DetailsDataModelTest.cs @@ -10,41 +10,41 @@ namespace ElectricalRepairServiceTests.DataModelsTests [Test] public void IdIsNullOrEmptyTest() { - var details = CreateDataModel(null, "name", 1, 1, DateTime.Now); + var details = CreateDataModel(null, "name", 1, 1, DateTime.Now, null, null); Assert.That(() => details.Validate(), Throws.TypeOf()); - details = CreateDataModel(string.Empty, "name", 1, 1, DateTime.Now); + details = CreateDataModel(string.Empty, "name", 1, 1, DateTime.Now, null, null); Assert.That(() => details.Validate(), Throws.TypeOf()); } [Test] public void IdIsNotGuidTest() { - var details = CreateDataModel("invalid-id", "name", 1, 1, DateTime.Now); + var details = CreateDataModel("invalid-id", "name", 1, 1, DateTime.Now, null, null); Assert.That(() => details.Validate(), Throws.TypeOf()); } [Test] public void NameIsNullOrEmptyTest() { - var details = CreateDataModel(Guid.NewGuid().ToString(), null, 1, 1, DateTime.Now); + var details = CreateDataModel(Guid.NewGuid().ToString(), null, 1, 1, DateTime.Now, null, null); Assert.That(() => details.Validate(), Throws.TypeOf()); - details = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, 1, 1, DateTime.Now); + details = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, 1, 1, DateTime.Now, null, null); Assert.That(() => details.Validate(), Throws.TypeOf()); } [Test] public void CountIsNegativeTest() { - var details = CreateDataModel(Guid.NewGuid().ToString(), "name", -1, 10, DateTime.Now); + var details = CreateDataModel(Guid.NewGuid().ToString(), "name", -1, 10, DateTime.Now, null, null); Assert.That(() => details.Validate(), Throws.TypeOf()); } [Test] public void OldCountIsNegativeTest() { - var details = CreateDataModel(Guid.NewGuid().ToString(), "name", 10, -1, DateTime.Now); + var details = CreateDataModel(Guid.NewGuid().ToString(), "name", 10, -1, DateTime.Now, null, null); Assert.That(() => details.Validate(), Throws.TypeOf()); } @@ -56,17 +56,23 @@ namespace ElectricalRepairServiceTests.DataModelsTests var count = 10; var oldCount = 10; var dateTime = DateTime.Now; + List detailsDelivery = [new DetailDeliveryDataModel(null, null, 0, DateTime.Now)]; + List detailsUses = [new DetailsUseDataModel(null, null, 0)]; - var details = CreateDataModel(id, name, count, oldCount, dateTime); + var details = CreateDataModel(id, name, count, oldCount, dateTime, detailsDelivery, detailsUses); Assert.That(details.Id, Is.EqualTo(id)); Assert.That(details.Name, Is.EqualTo(name)); Assert.That(details.Count, Is.EqualTo(count)); Assert.That(details.OldCount, Is.EqualTo(oldCount)); Assert.That(details.UpdateDate, Is.EqualTo(dateTime)); + Assert.That(details.DetailsDelivery, Is.EqualTo(detailsDelivery)); + Assert.That(details.DetailsUses, Is.EqualTo(detailsUses)); } - private DetailsDataModel CreateDataModel(string id, string name, int count, int oldCount, DateTime dateTime) - => new DetailsDataModel(id, name, count, oldCount, dateTime); + private DetailsDataModel CreateDataModel(string id, string name, int count, int oldCount, + DateTime dateTime, List? detailsDelivery, List? detailsUses) + => new DetailsDataModel(id, name, count, oldCount, + dateTime, detailsDelivery, detailsUses); } }