diff --git a/TIAM.Database.Test/AdminDalTest.cs b/TIAM.Database.Test/AdminDalTest.cs index 66543405..da2fcdf6 100644 --- a/TIAM.Database.Test/AdminDalTest.cs +++ b/TIAM.Database.Test/AdminDalTest.cs @@ -61,7 +61,7 @@ namespace TIAM.Database.Test public Product GetProductById_ReturnsProduct_WhenProductExists(string productIdString) { var productId = Guid.Parse(productIdString); - var product = Dal.GetProductById(productId); + var product = Dal.GetProductById(productId, true); Assert.IsNotNull(product, "Product is null"); Assert.IsNotNull(product.Profile); @@ -70,22 +70,27 @@ namespace TIAM.Database.Test } [DataTestMethod] - public void GetProducts_ReturnProducts_WhenProductsExist() + public void GetProducts_ReturnProductsJson_WhenProductsExist() { - var products = JsonConvert.DeserializeObject>(Dal.GetProducts()); + var products = JsonConvert.DeserializeObject>(Dal.GetProductsJson(false)); + Assert.IsNotNull(products, "Products is null"); - Assert.IsTrue(products.Count() > 0, "No products found"); + Assert.IsTrue(products.Count > 0, "No products found"); + + Assert.IsNotNull(products[0].ServiceProvider, "ServiceProvider is null"); } [DataTestMethod] [DataRow("3587F169-683C-4EEE-BCB5-E8D57F8C6DCE")] - public void GetProductsByServiceProviderId_ReturnProducts_WhenProductsExist(string serviceProviderId) + public void GetProductsByServiceProviderId_ReturnProductsJson_WhenProductsExist(string serviceProviderId) { - var products = JsonConvert.DeserializeObject>(Dal.GetProductsByServiceProviderId(Guid.Parse(serviceProviderId))); - Assert.IsNotNull(products, "Products is null"); - Assert.IsTrue(products.Count() > 0, "No products found"); + var products = JsonConvert.DeserializeObject>(Dal.GetProductsJsonByServiceProviderId(Guid.Parse(serviceProviderId), true)); + Assert.IsNotNull(products, "Products is null"); + Assert.IsTrue(products.Count > 0, "No products found"); + + Assert.IsNotNull(products[0].ServiceProvider, "ServiceProvider is null"); } [DataTestMethod] diff --git a/TIAM.Database/DataLayers/Admins/AdminDal.cs b/TIAM.Database/DataLayers/Admins/AdminDal.cs index 989be7c8..c722f39b 100644 --- a/TIAM.Database/DataLayers/Admins/AdminDal.cs +++ b/TIAM.Database/DataLayers/Admins/AdminDal.cs @@ -1,6 +1,8 @@ -using AyCode.Database.DbSets.Users; +using System.Security.Cryptography.X509Certificates; +using AyCode.Database.DbSets.Users; using AyCode.Models.Enums; using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.DependencyInjection; using TIAM.Core; //using TIAM.Database.DataLayers.ServiceProviders; using TIAM.Database.DbContexts.Admins; @@ -49,9 +51,11 @@ namespace TIAM.Database.DataLayers.Admins public string? GetUserJsonById(Guid userId) => Session(ctx => ctx.GetUserById(userId)?.ToJson()); public string GetUsersJson() => Session(ctx => ctx.Users.ToJson()); - public Product? GetProductById(Guid contextId) => Session(ctx => ctx.GetProductById(contextId)); - public string GetProducts() => Session(ctx => ctx.Products.ToJson()); - public string GetProductsByServiceProviderId(Guid serviceProviderId) => Session(ctx => ctx.Products.Where(x => x.ServiceProviderId == serviceProviderId).ToJson()); + public Product? GetProductById(Guid contextId, bool includeUsers = true) => Session(ctx => ctx.GetProductById(contextId, includeUsers)); + + public string GetProductsJson(bool includeUsers = true) => Session(ctx => ctx.ProductsWithUserRelations(includeUsers).ToJson()); + public List GetProductsByServiceProviderId(Guid serviceProviderId, bool includeUsers = true) => Session(ctx => ctx.GetProductsByServiceProviderId(serviceProviderId, includeUsers).ToList()); + public string GetProductsJsonByServiceProviderId(Guid serviceProviderId, bool includeUsers = true) => Session(ctx => ctx.GetProductsByServiceProviderId(serviceProviderId, includeUsers).ToJson()); public Task AddProduct(Product product) => TransactionAsync(ctx => ctx.AddProduct(product) && ctx.SaveChanges() > 0); public Task UpdateProduct(Product product) => TransactionAsync(ctx => ctx.UpdateProduct(product) && ctx.SaveChanges() > 0); diff --git a/TIAM.Database/DbSets/Products/ProductDbSetExtensins.cs b/TIAM.Database/DbSets/Products/ProductDbSetExtensins.cs index 7728a7ee..097a11b2 100644 --- a/TIAM.Database/DbSets/Products/ProductDbSetExtensins.cs +++ b/TIAM.Database/DbSets/Products/ProductDbSetExtensins.cs @@ -1,4 +1,5 @@ using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.DependencyInjection; using TIAM.Entities.Products; namespace TIAM.Database.DbSets.Products; @@ -27,4 +28,8 @@ public static class ProductDbSetExtensins public static Product? GetProductById(this IProductDbSet ctx, Guid productId, bool includeUsers = true) => ctx.ProductsWithUserRelations(includeUsers).FirstOrDefault(x => x.Id == productId); + + public static IQueryable GetProductsByServiceProviderId(this IProductDbSet ctx, Guid serviceProviderId, bool includeUsers = true) + => ctx.ProductsWithUserRelations(includeUsers).Where(x => x.ServiceProviderId == serviceProviderId); + } \ No newline at end of file diff --git a/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs b/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs index 320a29f0..4757fcc4 100644 --- a/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs +++ b/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs @@ -227,7 +227,7 @@ namespace TIAMWebApp.Server.Controllers } else { - var products = _adminDal.GetProductsByServiceProviderId(serviceProviderId); + var products = _adminDal.GetProductsJsonByServiceProviderId(serviceProviderId); if (products != null) { return Ok(products);