improvements, fixes, etc...
This commit is contained in:
parent
e918a77db3
commit
3ce49ab578
|
|
@ -0,0 +1,10 @@
|
||||||
|
namespace FruitBank.Common;
|
||||||
|
|
||||||
|
public enum DocumentType : byte
|
||||||
|
{
|
||||||
|
NotSet = 0,
|
||||||
|
Unknown = 5,
|
||||||
|
ShippingDocument = 10,
|
||||||
|
OrderForm = 15,
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
using FruitBank.Common.Interfaces;
|
||||||
|
using LinqToDB.Mapping;
|
||||||
|
using Mango.Nop.Core.Entities;
|
||||||
|
|
||||||
|
namespace FruitBank.Common.Entities;
|
||||||
|
|
||||||
|
[Table(Name = FruitBankConstClient.FilesDbTableName)]
|
||||||
|
[System.ComponentModel.DataAnnotations.Schema.Table(FruitBankConstClient.FilesDbTableName)]
|
||||||
|
public class Files : MgEntityBase, IFiles
|
||||||
|
{
|
||||||
|
public string FileName { get; set; }
|
||||||
|
public string FileExtension { get; set; }
|
||||||
|
public string RawText { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
[SkipValuesOnUpdate]
|
||||||
|
public DateTime Created { get; set; }
|
||||||
|
public DateTime Modified { get; set; }
|
||||||
|
}
|
||||||
|
|
@ -23,7 +23,6 @@ public class Partner : MgEntityBase, IPartner
|
||||||
public List<ShippingDocument>? ShippingDocuments { get; set; }
|
public List<ShippingDocument>? ShippingDocuments { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[SkipValuesOnUpdate]
|
[SkipValuesOnUpdate]
|
||||||
public DateTime Created { get; set; }
|
public DateTime Created { get; set; }
|
||||||
public DateTime Modified { get; set; }
|
public DateTime Modified { get; set; }
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,9 @@ public class ShippingDocument : MgEntityBase, IShippingDocument
|
||||||
[Association(ThisKey = nameof(Id), OtherKey = nameof(ShippingItem.ShippingDocumentId), CanBeNull = true)]
|
[Association(ThisKey = nameof(Id), OtherKey = nameof(ShippingItem.ShippingDocumentId), CanBeNull = true)]
|
||||||
public List<ShippingItem>? ShippingItems { get; set; }
|
public List<ShippingItem>? ShippingItems { get; set; }
|
||||||
|
|
||||||
|
[Association(ThisKey = nameof(Id), OtherKey = nameof(FruitBank.Common.Entities.ShippingDocumentToFiles.ShippingDocumentId), CanBeNull = true)]
|
||||||
|
public List<ShippingDocumentToFiles>? ShippingDocumentToFiles { get; set; }
|
||||||
|
|
||||||
|
|
||||||
[SkipValuesOnUpdate]
|
[SkipValuesOnUpdate]
|
||||||
public DateTime Created { get; set; }
|
public DateTime Created { get; set; }
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
using FruitBank.Common.Interfaces;
|
||||||
|
using LinqToDB.Mapping;
|
||||||
|
using Mango.Nop.Core.Entities;
|
||||||
|
|
||||||
|
namespace FruitBank.Common.Entities;
|
||||||
|
|
||||||
|
[Table(Name = FruitBankConstClient.ShippingDocumentToFilesDbTableName)]
|
||||||
|
[System.ComponentModel.DataAnnotations.Schema.Table(FruitBankConstClient.ShippingDocumentToFilesDbTableName)]
|
||||||
|
public class ShippingDocumentToFiles : MgEntityBase, IShippingDocumentToFiles
|
||||||
|
{
|
||||||
|
public int FilesId { get; set; }
|
||||||
|
public int ShippingDocumentId { get; set; }
|
||||||
|
public DocumentType DocumentType { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
[Association(ThisKey = nameof(FilesId), OtherKey = nameof(Files.Id), CanBeNull = true)]
|
||||||
|
public Files? ShippingDocumentFile { get; set; }
|
||||||
|
|
||||||
|
[Association(ThisKey = nameof(ShippingDocumentId), OtherKey = nameof(ShippingDocument.Id), CanBeNull = true)]
|
||||||
|
public ShippingDocument? ShippingDocument { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
[SkipValuesOnUpdate] public DateTime Created { get; set; }
|
||||||
|
public DateTime Modified { get; set; }
|
||||||
|
}
|
||||||
|
|
@ -15,11 +15,14 @@ public static class FruitBankConstClient
|
||||||
public static string DefaultHubName = "fbHub";
|
public static string DefaultHubName = "fbHub";
|
||||||
public static string LoggerHubName = "loggerHub";
|
public static string LoggerHubName = "loggerHub";
|
||||||
|
|
||||||
|
public const string FilesDbTableName = "fbFiles";
|
||||||
public const string PartnerDbTableName = "fbPartner";
|
public const string PartnerDbTableName = "fbPartner";
|
||||||
public const string ShippingDbTableName = "fbShipping";
|
public const string ShippingDbTableName = "fbShipping";
|
||||||
public const string ShippingItemDbTableName = "fbShippingItem";
|
public const string ShippingItemDbTableName = "fbShippingItem";
|
||||||
public const string ShippingItemPalletDbTableName = "fbShippingItemPallet";
|
public const string ShippingItemPalletDbTableName = "fbShippingItemPallet";
|
||||||
public const string ShippingDocumentDbTableName = "fbShippingDocument";
|
public const string ShippingDocumentDbTableName = "fbShippingDocument";
|
||||||
|
public const string ShippingDocumentToFilesDbTableName = "fbShippingDocumentToFiles";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//public static Guid[] DevAdminIds = new Guid[2] { Guid.Parse("dcf451d2-cc4c-4ac2-8c1f-da00041be1fd"), Guid.Parse("4cbaed43-2465-4d99-84f1-c8bc6b7025f7") };
|
//public static Guid[] DevAdminIds = new Guid[2] { Guid.Parse("dcf451d2-cc4c-4ac2-8c1f-da00041be1fd"), Guid.Parse("4cbaed43-2465-4d99-84f1-c8bc6b7025f7") };
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
using AyCode.Interfaces.Entities;
|
||||||
|
using AyCode.Interfaces.TimeStampInfo;
|
||||||
|
|
||||||
|
namespace FruitBank.Common.Interfaces;
|
||||||
|
|
||||||
|
public interface IFiles: IEntityInt, ITimeStampInfo
|
||||||
|
{
|
||||||
|
public string FileName { get; set; }
|
||||||
|
public string FileExtension { get; set; }
|
||||||
|
public string RawText { get; set; }
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
using AyCode.Interfaces.Entities;
|
||||||
|
using AyCode.Interfaces.TimeStampInfo;
|
||||||
|
using FruitBank.Common.Entities;
|
||||||
|
using LinqToDB.DataProvider.SapHana;
|
||||||
|
|
||||||
|
namespace FruitBank.Common.Interfaces;
|
||||||
|
|
||||||
|
public interface IShippingDocumentToFiles : IEntityInt, ITimeStampInfo
|
||||||
|
{
|
||||||
|
int FilesId { get; set; }
|
||||||
|
int ShippingDocumentId { get; set; }
|
||||||
|
DocumentType DocumentType { get; set; }
|
||||||
|
|
||||||
|
Files? ShippingDocumentFile { get; set; }
|
||||||
|
ShippingDocument? ShippingDocument { get; set; }
|
||||||
|
}
|
||||||
|
|
@ -7,9 +7,9 @@ public class MeasuringAttributeValues : IMeasuringAttributeValues
|
||||||
{
|
{
|
||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
|
|
||||||
public double NetWeight { get; set; }
|
public double NetWeight { get; set; } = int.MinValue;
|
||||||
public double GrossWeight { get; set; }
|
public double GrossWeight { get; set; } = int.MinValue;
|
||||||
public bool IsMeasurable { get; set; }
|
public bool IsMeasurable { get; set; } = false;
|
||||||
|
|
||||||
public MeasuringAttributeValues()
|
public MeasuringAttributeValues()
|
||||||
{
|
{
|
||||||
|
|
@ -28,7 +28,7 @@ public class MeasuringAttributeValues : IMeasuringAttributeValues
|
||||||
IsMeasurable = isMeasurable;
|
IsMeasurable = isMeasurable;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool HasMeasuringValues() => Id > 0 && NetWeight > 0 && GrossWeight > 0 && IsMeasurable;
|
public bool HasMeasuringValues() => Id > 0 && NetWeight > int.MinValue && GrossWeight > int.MinValue && IsMeasurable;
|
||||||
|
|
||||||
public override string ToString()
|
public override string ToString()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -151,10 +151,25 @@ namespace FruitBankHybrid.Shared.Tests
|
||||||
Assert.IsTrue(shippingItems.All(si=>si.Product?.Id == si.ProductId), "shippingItem.Product == null");
|
Assert.IsTrue(shippingItems.All(si=>si.Product?.Id == si.ProductId), "shippingItem.Product == null");
|
||||||
}
|
}
|
||||||
|
|
||||||
//[TestMethod]
|
[TestMethod]
|
||||||
//[DataRow(1)]
|
[DataRow(1, true)]
|
||||||
|
[DataRow(2, true)]
|
||||||
|
[DataRow(3, false)]
|
||||||
|
[DataRow(4, false)]
|
||||||
|
public async Task GetShippingItemByIdTest(int shippingItemId, bool shippingDocumentFileExcepted)
|
||||||
|
{
|
||||||
|
var shippingItem = await GetShippingItemByIdAsync(shippingItemId);
|
||||||
|
|
||||||
|
if (shippingDocumentFileExcepted) Assert.IsTrue(shippingItem.ShippingDocument?.ShippingDocumentToFiles?.FirstOrDefault()?.ShippingDocumentFile?.Id == 1);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Assert.IsNotNull(shippingItem.ShippingDocument);
|
||||||
|
Assert.IsTrue(shippingItem.ShippingDocument.ShippingDocumentToFiles?.Count == 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
[return: NotNull]
|
[return: NotNull]
|
||||||
public async Task<ShippingItem> GetShippingItemByIdTest(int shippingItemId)
|
public async Task<ShippingItem> GetShippingItemByIdAsync(int shippingItemId)
|
||||||
{
|
{
|
||||||
var shippingItem = await _signalRClient.GetShippingItemById(shippingItemId);
|
var shippingItem = await _signalRClient.GetShippingItemById(shippingItemId);
|
||||||
|
|
||||||
|
|
@ -170,23 +185,19 @@ namespace FruitBankHybrid.Shared.Tests
|
||||||
}
|
}
|
||||||
|
|
||||||
[DataTestMethod]
|
[DataTestMethod]
|
||||||
[DataRow(1)]
|
[DataRow(1, -1, -2.137563300001, -3.75238200001)]
|
||||||
[DataRow(2)]
|
[DataRow(2, -1, -2.137563300001, 3.75238200001)]
|
||||||
[DataRow(3)]
|
[DataRow(3, 1, 2.137563300001, -3.75238200001)]
|
||||||
[DataRow(4)]
|
[DataRow(4, -1, 2.137563300001, 3.75238200001)]
|
||||||
[DataRow(5)]
|
[DataRow(5, 1, 2.137563300001, 3.75238200001)]
|
||||||
public async Task UpdateShippingItemTest(int shippingItemId)
|
public async Task UpdateShippingItemTest(int shippingItemId, int incQuantity, double incNetWeight, double incGrossWeight)
|
||||||
{
|
{
|
||||||
const int incQuantity = 1;
|
var originalShippingItem = await GetShippingItemByIdAsync(shippingItemId);
|
||||||
var incNetWeight = 2.137563300001;
|
var originalMeasuringProductDto = await GetMeasuringProductDtoByIdAsync(originalShippingItem.ProductId!.Value, originalShippingItem.IsMeasurable);
|
||||||
var incGrossWeight = 3.75238200001;
|
|
||||||
|
|
||||||
var originalShippingItem = await GetShippingItemByIdTest(shippingItemId);
|
|
||||||
var originalMeasuringProductDto = await GetMeasuringProductDtoByIdTest(originalShippingItem.ProductId!.Value, originalShippingItem.IsMeasurable);
|
|
||||||
|
|
||||||
Assert.IsTrue(originalShippingItem.IsMeasurable == originalMeasuringProductDto.IsMeasurable);
|
Assert.IsTrue(originalShippingItem.IsMeasurable == originalMeasuringProductDto.IsMeasurable);
|
||||||
|
|
||||||
var shippingItem = await GetShippingItemByIdTest(shippingItemId);
|
var shippingItem = await GetShippingItemByIdAsync(shippingItemId);
|
||||||
|
|
||||||
shippingItem.MeasuredQuantity += incQuantity;
|
shippingItem.MeasuredQuantity += incQuantity;
|
||||||
shippingItem.MeasuredNetWeight += incNetWeight;
|
shippingItem.MeasuredNetWeight += incNetWeight;
|
||||||
|
|
@ -207,7 +218,7 @@ namespace FruitBankHybrid.Shared.Tests
|
||||||
Assert.IsTrue(shippingItem.MeasuredQuantity == originalShippingItem.MeasuredQuantity + incQuantity);
|
Assert.IsTrue(shippingItem.MeasuredQuantity == originalShippingItem.MeasuredQuantity + incQuantity);
|
||||||
|
|
||||||
|
|
||||||
var measuringProductDto = await GetMeasuringProductDtoByIdTest(originalShippingItem.ProductId!.Value, shippingItem.IsMeasurable);
|
var measuringProductDto = await GetMeasuringProductDtoByIdAsync(originalShippingItem.ProductId!.Value, shippingItem.IsMeasurable);
|
||||||
|
|
||||||
Assert.IsTrue(measuringProductDto.StockQuantity == originalMeasuringProductDto.StockQuantity + incQuantity);
|
Assert.IsTrue(measuringProductDto.StockQuantity == originalMeasuringProductDto.StockQuantity + incQuantity);
|
||||||
|
|
||||||
|
|
@ -229,11 +240,26 @@ namespace FruitBankHybrid.Shared.Tests
|
||||||
|
|
||||||
Assert.IsNotNull(shippingDocuments);
|
Assert.IsNotNull(shippingDocuments);
|
||||||
Assert.IsTrue(shippingDocuments.Count != 0);
|
Assert.IsTrue(shippingDocuments.Count != 0);
|
||||||
|
Assert.IsTrue(shippingDocuments.Any(x => x.ShippingDocumentToFiles?.Count > 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
//[TestMethod]
|
[TestMethod]
|
||||||
//[DataRow(2)]
|
[DataRow(2, true)]
|
||||||
public async Task<ShippingDocument> GetShippingDocumentByIdTest(int shippingDocumentId)
|
[DataRow(3, false)]
|
||||||
|
[DataRow(4, false)]
|
||||||
|
public async Task GetShippingDocumentByIdTest(int shippingDocumentId, bool shippingDocumentFileExcepted)
|
||||||
|
{
|
||||||
|
var shippingDocument = await GetShippingDocumentByIdAsync(shippingDocumentId);
|
||||||
|
|
||||||
|
if (shippingDocumentFileExcepted) Assert.IsTrue(shippingDocument.ShippingDocumentToFiles?.FirstOrDefault()?.ShippingDocumentFile?.Id == 1);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Assert.IsTrue(shippingDocument.ShippingDocumentToFiles?.Count == 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[return: NotNull]
|
||||||
|
public async Task<ShippingDocument> GetShippingDocumentByIdAsync(int shippingDocumentId)
|
||||||
{
|
{
|
||||||
var shippingDocument = await _signalRClient.GetShippingDocumentById(shippingDocumentId);
|
var shippingDocument = await _signalRClient.GetShippingDocumentById(shippingDocumentId);
|
||||||
|
|
||||||
|
|
@ -247,14 +273,16 @@ namespace FruitBankHybrid.Shared.Tests
|
||||||
[DataRow(2)]
|
[DataRow(2)]
|
||||||
public async Task UpdateShippingDocumentTest(int shippingDocumentId)
|
public async Task UpdateShippingDocumentTest(int shippingDocumentId)
|
||||||
{
|
{
|
||||||
var shippingDocument = await GetShippingDocumentByIdTest(shippingDocumentId);
|
var shippingDocument = await GetShippingDocumentByIdAsync(shippingDocumentId);
|
||||||
var newCountry = GetFixtureName(shippingDocument.Country);
|
var newCountry = GetFixtureName(shippingDocument.Country);
|
||||||
|
|
||||||
shippingDocument.Country = newCountry;
|
shippingDocument.Country = newCountry;
|
||||||
await _signalRClient.UpdateShippingDocument(shippingDocument);
|
await _signalRClient.UpdateShippingDocument(shippingDocument);
|
||||||
|
|
||||||
shippingDocument = await GetShippingDocumentByIdTest(shippingDocumentId);
|
shippingDocument = await GetShippingDocumentByIdAsync(shippingDocumentId);
|
||||||
|
|
||||||
Assert.IsTrue(shippingDocument.Country == newCountry);
|
Assert.IsTrue(shippingDocument.Country == newCountry);
|
||||||
|
Assert.IsTrue(shippingDocument!.ShippingDocumentToFiles?.FirstOrDefault()?.ShippingDocumentFile?.Id == 1);
|
||||||
|
|
||||||
shippingDocument.Country = GetOriginalName(shippingDocument.Country);
|
shippingDocument.Country = GetOriginalName(shippingDocument.Country);
|
||||||
await _signalRClient.UpdateShippingDocument(shippingDocument);
|
await _signalRClient.UpdateShippingDocument(shippingDocument);
|
||||||
|
|
@ -311,11 +339,17 @@ namespace FruitBankHybrid.Shared.Tests
|
||||||
Assert.IsTrue(measuringProductDtos.All(x => !x.IsMeasurable || x.HasMeasuringValues()));
|
Assert.IsTrue(measuringProductDtos.All(x => !x.IsMeasurable || x.HasMeasuringValues()));
|
||||||
}
|
}
|
||||||
|
|
||||||
//[TestMethod]
|
[TestMethod]
|
||||||
//[DataRow(1)]
|
[DataRow(1, true)]
|
||||||
//[DataRow(5)]
|
[DataRow(5, true)]
|
||||||
//[DataRow(33)]
|
[DataRow(6, false)]
|
||||||
public async Task<MeasuringProductDto> GetMeasuringProductDtoByIdTest(int productId, bool isMeasurableExcepted)
|
[DataRow(33, true)]
|
||||||
|
public async Task GetMeasuringProductDtoByIdTest(int productId, bool isMeasurableExcepted)
|
||||||
|
{
|
||||||
|
await GetMeasuringProductDtoByIdAsync(productId, isMeasurableExcepted);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<MeasuringProductDto> GetMeasuringProductDtoByIdAsync(int productId, bool isMeasurableExcepted)
|
||||||
{
|
{
|
||||||
var measuringProductDto = await _signalRClient.GetMeasuringProductDtoById(productId);
|
var measuringProductDto = await _signalRClient.GetMeasuringProductDtoById(productId);
|
||||||
|
|
||||||
|
|
@ -328,6 +362,8 @@ namespace FruitBankHybrid.Shared.Tests
|
||||||
Assert.IsTrue(measuringProductDto.StockQuantity > 0);
|
Assert.IsTrue(measuringProductDto.StockQuantity > 0);
|
||||||
Assert.IsTrue(measuringProductDto.NetWeight == 0);
|
Assert.IsTrue(measuringProductDto.NetWeight == 0);
|
||||||
Assert.IsTrue(measuringProductDto.GrossWeight == 0);
|
Assert.IsTrue(measuringProductDto.GrossWeight == 0);
|
||||||
|
|
||||||
|
Assert.IsFalse(measuringProductDto.IsMeasurable);
|
||||||
}
|
}
|
||||||
|
|
||||||
return measuringProductDto;
|
return measuringProductDto;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue