This commit is contained in:
Adam 2024-01-20 21:07:53 +01:00
parent 4742a37610
commit 8651b52dae
12 changed files with 138 additions and 37 deletions

View File

@ -80,6 +80,25 @@ namespace TIAM.Database.Test
return product;
}
[DataTestMethod]
public void GetProducts_ReturnProducts_WhenProductsExist()
{
var products = JsonConvert.DeserializeObject<IEnumerable<Product>>(Dal.GetProducts());
Assert.IsNotNull(products, "Products is null");
Assert.IsTrue(products.Count() > 0, "No products found");
}
[DataTestMethod]
[DataRow("3587F169-683C-4EEE-BCB5-E8D57F8C6DCE")]
public void GetProductsByServiceProviderId_ReturnProducts_WhenProductsExist(string serviceProviderId)
{
var products = JsonConvert.DeserializeObject<IEnumerable<Product>>(Dal.GetProductsByServiceProviderId(Guid.Parse(serviceProviderId)));
Assert.IsNotNull(products, "Products is null");
Assert.IsTrue(products.Count() > 0, "No products found");
}
[DataTestMethod]
[DataRow("814b5495-c2e9-4f1d-a73f-37cd5d353078")]
public void GeProductById_ReturnsProduct_WhenHasUserProductMappingRelation(string productIdString)

View File

@ -49,6 +49,8 @@ namespace TIAM.Database.DataLayers.Admins
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 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);

View File

@ -23,7 +23,13 @@ public class Product : ProductBase
public Product(Guid ownerId, ProductType productType, string name, string description, float price, string jsonDetails) : this(Guid.NewGuid(), ownerId, productType, name, description, price, jsonDetails) { }
public Product(Guid id, Guid serviceProviderId, ProductType productType, string name, string description, float price, string jsonDetails) : base(id, productType, name, description, price, jsonDetails)
{
ServiceProviderId = serviceProviderId;
}
public Product(Guid ownerId, TiamServiceProvider serviceProvider, ProductType productType, string name, string description, float price, string jsonDetails) : this(Guid.NewGuid(), ownerId, serviceProvider, productType, name, description, price, jsonDetails) { }
public Product(Guid id, Guid serviceProviderId, TiamServiceProvider serviceProvider, ProductType productType, string name, string description, float price, string jsonDetails) : base(id, productType, name, description, price, jsonDetails)
{
ServiceProviderId = serviceProviderId;
ServiceProvider = serviceProvider;
}
}

View File

@ -1,4 +1,4 @@
@page "/user/destinations"
@page "/user/products"
@using AyCode.Models.Messages
@using TIAM.Entities.ServiceProviders
@using TIAM.Resources
@ -48,6 +48,7 @@
<DxGridCommandColumn Width="8%" FixedPosition="GridColumnFixedPosition.Left" />
<DxGridDataColumn FieldName="Id" MinWidth="80" Width="20%" Visible="false" />
<DxGridDataColumn FieldName="ServiceProviderId" MinWidth="80" Width="20%" Visible="false" />
<DxGridDataColumn FieldName="Name" FixedPosition="GridColumnFixedPosition.Left" MinWidth="80" Width="20%">
<CellDisplayTemplate>
@{
@ -57,8 +58,8 @@
</CellDisplayTemplate>
</DxGridDataColumn>
<DxGridDataColumn FieldName="Description" FixedPosition="GridColumnFixedPosition.Left" MinWidth="80" Width="20%" />
<DxGridDataColumn FieldName="AddressString" MinWidth="80" Width="20%" />
<DxGridDataColumn FieldName="Price" MinWidth="80" Width="20%" />
<DxGridDataColumn FieldName="JsonDetails" MinWidth="80" Width="20%" />
</Columns>

View File

@ -8,8 +8,9 @@ using TIAMWebApp.Shared.Application.Models.ClientSide.UI.WizardModels;
using TIAMWebApp.Shared.Application.Models;
using TIAMWebApp.Shared.Application.Interfaces;
using Microsoft.AspNetCore.Components;
using TIAM.Entities.TransferDestinations;
using TIAM.Entities.ServiceProviders;
using TIAM.Core.Enums;
using TIAMWebApp.Shared.Application.Services;
namespace TIAMSharedUI.Pages.User.SysAdmins
{
@ -25,14 +26,14 @@ namespace TIAMSharedUI.Pages.User.SysAdmins
public MessageWizardModel messageWizardModel = new MessageWizardModel();
[Inject]
public ITransferDataService transferDataService { get; set; }
public IServiceProviderDataService serviceProviderDataService { get; set; }
object? ProductArray = new ProductWizardModel[]
{
new ProductWizardModel(ProductType.Hotel, "XY hotel", "XYHotel description is here ", 10.0f, ""),
new ProductWizardModel(ProductType.Hotel, "XY hotel", "XYHotel description is here ", 10.0f, ""),
new ProductWizardModel(ProductType.Hotel, "XY hotel", "XYHotel description is here ", 10.0f, ""),
new ProductWizardModel(new TiamServiceProvider(), ProductType.Hotel, "XY hotel", "XYHotel description is here ", 10.0f, ""),
new ProductWizardModel(new TiamServiceProvider(), ProductType.Hotel, "XY hotel", "XYHotel description is here ", 10.0f, ""),
new ProductWizardModel(new TiamServiceProvider(), ProductType.Hotel, "XY hotel", "XYHotel description is here ", 10.0f, ""),
};
object? TransferDataFromDb = new ProductWizardModel[] { };
@ -146,13 +147,13 @@ namespace TIAMSharedUI.Pages.User.SysAdmins
protected override async Task OnInitializedAsync()
{
base.OnInitialized();
var a = await transferDataService.GetDestinationsAsync();
logToBrowserConsole.LogToBC($"TransferDataFromDb: {((TransferDestinationWizardModel[])TransferDataFromDb).Length}");
var a = await serviceProviderDataService.GetProductsForServiceProviderAsync(Guid.NewGuid());
logToBrowserConsole.LogToBC($"ProductDataFromDb: {((ProductWizardModel[])TransferDataFromDb).Length}");
foreach (var item in a)
{
//add new transferwizardmodel to transferData array
TransferDataFromDb = ((TransferDestinationWizardModel[])TransferDataFromDb).Append(
new TransferDestinationWizardModel(Guid.NewGuid(), item.Name, item.Description, item.AddressString));
TransferDataFromDb = ((ProductWizardModel[])TransferDataFromDb).Append(
new ProductWizardModel(item.ServiceProvider, item.ProductType, item.Name, item.Description, item.Price, item.JsonDetails));
logToBrowserConsole.LogToBC($"TransferDataFromDb: {item.Name}");
}
}

View File

@ -33,7 +33,12 @@
<div class="nav-item px-3">
<NavLink class="nav-link" href="user/properties">
Properties
My companies
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="user/products">
Services
</NavLink>
</div>

View File

@ -1,40 +1,40 @@
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:28749",
"sslPort": 44368
}
},
"profiles": {
"http": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}",
"applicationUrl": "http://localhost:5175",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"dotnetRunMessages": true,
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}",
"applicationUrl": "http://localhost:5175"
},
"https": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}",
"applicationUrl": "https://localhost:7116;http://localhost:5175",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"dotnetRunMessages": true,
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}",
"applicationUrl": "https://localhost:7116;http://localhost:5175"
},
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}"
}
},
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:60505/",
"sslPort": 44395
}
}
}
}

View File

@ -7,6 +7,7 @@ using SkiaSharp;
using SkiaSharp.Views.Desktop;
using System.Drawing;
using System.Drawing.Imaging;
using System.Net;
using System.Text.Json;
using TIAM.Database.DataLayers.Admins;
//using TIAM.Database.DataLayers.ServiceProviders;
@ -124,8 +125,7 @@ namespace TIAMWebApp.Server.Controllers
//22.
[AllowAnonymous]
[HttpPost]
[Route(APIUrls.CreateUserProductMappingRouteName)]
[Route("CreateUserProductMapping")]
[Route(APIUrls.CreateUserProductMappingRouteName)]
[Tags("Finished", "ServiceProvider")]
[EndpointSummary("Create assigned user to product")]
public async Task<IActionResult> CreateUserProductMapping(CreateUserProductMappingModel createUserProductMappingModel)
@ -212,5 +212,35 @@ namespace TIAMWebApp.Server.Controllers
return Ok(sigBase64);
}
}
[AllowAnonymous]
[HttpPost]
[Route(APIUrls.GetProductsByServiceProviderIdRouteName)]
[Tags("In-Progress", "Product")]
public IActionResult GetProductsByServiceProviderId(Guid serviceProviderId)
{
Console.WriteLine($"GetProductsByServiceProviderId called with serviceProviderId: {serviceProviderId}");
if (serviceProviderId == Guid.Empty)
{
return BadRequest("Invalid request");
}
else
{
var products = _adminDal.GetProductsByServiceProviderId(serviceProviderId);
if (products != null)
{
return Ok(products);
}
else
{
//some Iactionresult that explains that there were errors
return StatusCode(500);
}
}
}
}
}

View File

@ -52,5 +52,7 @@ namespace TIAMWebApp.Shared.Application.Interfaces
//25. (IServiceProviderDataService) Get QRCode by ProductId
public Task<string> GetQRCodeByProductIdAsync(Guid productId);
public Task<IEnumerable<Product>> GetProductsForServiceProviderAsync(Guid serviceProviderId);
}
}

View File

@ -77,6 +77,9 @@ namespace TIAMWebApp.Shared.Application.Models
public const string AddProductRouteName = "AddProduct";
public const string AddProductRouteUrl = ServiceProviderAPI + AddProductRouteName;
public const string GetProductsByServiceProviderIdRouteName = "GetProductsByServiceProviderId";
public const string GetProductsByServiceProviderId = ServiceProviderAPI + GetProductsByServiceProviderIdRouteName;
public const string CreateUserProductMappingRouteName = "CreateUserProductMapping";
public const string CreateUserProductMapping = ServiceProviderAPI + CreateUserProductMappingRouteName;

View File

@ -5,6 +5,8 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using TIAM.Core.Enums;
using TIAM.Entities.Products;
using TIAM.Entities.ServiceProviders;
using TIAM.Resources;
namespace TIAMWebApp.Shared.Application.Models.ClientSide.UI.WizardModels
@ -29,21 +31,27 @@ namespace TIAMWebApp.Shared.Application.Models.ClientSide.UI.WizardModels
public float Price { get; set; }
public string? JsonDetails { get; set; }
public DateTime Created { get; set; }
public DateTime Modified { get; set; }
public TiamServiceProvider TiamServiceProvider { get; set; }
public ProductWizardModel() { }
public ProductWizardModel(ProductType productType, string name, string description, float price, string? jsonDetails) : this(Guid.NewGuid(), productType, name, description, price, jsonDetails) { }
public ProductWizardModel(TiamServiceProvider tiamServiceProvider, ProductType productType, string name, string description, float price, string? jsonDetails) : this(Guid.NewGuid(), tiamServiceProvider, productType, name, description, price, jsonDetails) { }
public ProductWizardModel(Guid id, ProductType productType, string name, string description, float price, string? jsonDetails)
public ProductWizardModel(Guid id, TiamServiceProvider tiamServiceProvider, ProductType productType, string name, string description, float price, string? jsonDetails)
{
Id = id;
TiamServiceProvider = tiamServiceProvider;
ProductType = productType;
Name = name;
Description = description;
Price = price;
JsonDetails = jsonDetails;
}
public Product SaveToProduct(TiamServiceProvider tiamServiceProvider)
{
Product NewProduct = new(this.Id, tiamServiceProvider.Id, tiamServiceProvider, this.ProductType, this.Name, this.Description, this.Price, this.JsonDetails);
return NewProduct;
}
}
}

View File

@ -1,5 +1,6 @@
using AyCode.Interfaces.StorageHandlers;
using Microsoft.JSInterop;
using Newtonsoft.Json;
using SkiaSharp;
using System.Net.Http.Json;
using TIAM.Database.DataLayers.Users;
@ -129,5 +130,28 @@ namespace TIAMWebApp.Shared.Application.Services
return null;
}
}
public async Task<IEnumerable<Product>> GetProductsForServiceProviderAsync(Guid serviceProviderId)
{
var url = APIUrls.GetProductsByServiceProviderId;
var response = await http.PostAsJsonAsync(url, serviceProviderId);
if (response.IsSuccessStatusCode)
{
var result = await response.Content.ReadAsStringAsync();
logToBrowserConsole.LogToBC("Json: " + result);
var data = JsonConvert.DeserializeObject<IEnumerable<Product>>(result);
if (data != null)
{
return data;
}
else {
return null;
}
}
else
{
return null;
}
}
}
}