GetProductsJsonByServiceProviderId fixes, improvements...

This commit is contained in:
jozsef.b@aycode.com 2024-01-20 22:30:56 +01:00
parent 0bee047217
commit eccecc65e2
4 changed files with 27 additions and 13 deletions

View File

@ -61,7 +61,7 @@ namespace TIAM.Database.Test
public Product GetProductById_ReturnsProduct_WhenProductExists(string productIdString) public Product GetProductById_ReturnsProduct_WhenProductExists(string productIdString)
{ {
var productId = Guid.Parse(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, "Product is null");
Assert.IsNotNull(product.Profile); Assert.IsNotNull(product.Profile);
@ -70,22 +70,27 @@ namespace TIAM.Database.Test
} }
[DataTestMethod] [DataTestMethod]
public void GetProducts_ReturnProducts_WhenProductsExist() public void GetProducts_ReturnProductsJson_WhenProductsExist()
{ {
var products = JsonConvert.DeserializeObject<IEnumerable<Product>>(Dal.GetProducts()); var products = JsonConvert.DeserializeObject<List<Product>>(Dal.GetProductsJson(false));
Assert.IsNotNull(products, "Products is null"); 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] [DataTestMethod]
[DataRow("3587F169-683C-4EEE-BCB5-E8D57F8C6DCE")] [DataRow("3587F169-683C-4EEE-BCB5-E8D57F8C6DCE")]
public void GetProductsByServiceProviderId_ReturnProducts_WhenProductsExist(string serviceProviderId) public void GetProductsByServiceProviderId_ReturnProductsJson_WhenProductsExist(string serviceProviderId)
{ {
var products = JsonConvert.DeserializeObject<IEnumerable<Product>>(Dal.GetProductsByServiceProviderId(Guid.Parse(serviceProviderId))); var products = JsonConvert.DeserializeObject<List<Product>>(Dal.GetProductsJsonByServiceProviderId(Guid.Parse(serviceProviderId), true));
Assert.IsNotNull(products, "Products is null");
Assert.IsTrue(products.Count() > 0, "No products found");
Assert.IsNotNull(products, "Products is null");
Assert.IsTrue(products.Count > 0, "No products found");
Assert.IsNotNull(products[0].ServiceProvider, "ServiceProvider is null");
} }
[DataTestMethod] [DataTestMethod]

View File

@ -1,6 +1,8 @@
using AyCode.Database.DbSets.Users; using System.Security.Cryptography.X509Certificates;
using AyCode.Database.DbSets.Users;
using AyCode.Models.Enums; using AyCode.Models.Enums;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using TIAM.Core; using TIAM.Core;
//using TIAM.Database.DataLayers.ServiceProviders; //using TIAM.Database.DataLayers.ServiceProviders;
using TIAM.Database.DbContexts.Admins; 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? GetUserJsonById(Guid userId) => Session(ctx => ctx.GetUserById(userId)?.ToJson());
public string GetUsersJson() => Session(ctx => ctx.Users.ToJson()); public string GetUsersJson() => Session(ctx => ctx.Users.ToJson());
public Product? GetProductById(Guid contextId) => Session(ctx => ctx.GetProductById(contextId)); public Product? GetProductById(Guid contextId, bool includeUsers = true) => Session(ctx => ctx.GetProductById(contextId, includeUsers));
public string GetProducts() => Session(ctx => ctx.Products.ToJson());
public string GetProductsByServiceProviderId(Guid serviceProviderId) => Session(ctx => ctx.Products.Where(x => x.ServiceProviderId == serviceProviderId).ToJson()); public string GetProductsJson(bool includeUsers = true) => Session(ctx => ctx.ProductsWithUserRelations(includeUsers).ToJson());
public List<Product> 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<bool> AddProduct(Product product) => TransactionAsync(ctx => ctx.AddProduct(product) && ctx.SaveChanges() > 0); public Task<bool> AddProduct(Product product) => TransactionAsync(ctx => ctx.AddProduct(product) && ctx.SaveChanges() > 0);
public Task<bool> UpdateProduct(Product product) => TransactionAsync(ctx => ctx.UpdateProduct(product) && ctx.SaveChanges() > 0); public Task<bool> UpdateProduct(Product product) => TransactionAsync(ctx => ctx.UpdateProduct(product) && ctx.SaveChanges() > 0);

View File

@ -1,4 +1,5 @@
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using TIAM.Entities.Products; using TIAM.Entities.Products;
namespace TIAM.Database.DbSets.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) public static Product? GetProductById(this IProductDbSet ctx, Guid productId, bool includeUsers = true)
=> ctx.ProductsWithUserRelations(includeUsers).FirstOrDefault(x => x.Id == productId); => ctx.ProductsWithUserRelations(includeUsers).FirstOrDefault(x => x.Id == productId);
public static IQueryable<Product> GetProductsByServiceProviderId(this IProductDbSet ctx, Guid serviceProviderId, bool includeUsers = true)
=> ctx.ProductsWithUserRelations(includeUsers).Where(x => x.ServiceProviderId == serviceProviderId);
} }

View File

@ -227,7 +227,7 @@ namespace TIAMWebApp.Server.Controllers
} }
else else
{ {
var products = _adminDal.GetProductsByServiceProviderId(serviceProviderId); var products = _adminDal.GetProductsJsonByServiceProviderId(serviceProviderId);
if (products != null) if (products != null)
{ {
return Ok(products); return Ok(products);