diff --git a/TIAM.Services/SignalRTags.cs b/TIAM.Services/SignalRTags.cs index 8cd33a83..d486d58c 100644 --- a/TIAM.Services/SignalRTags.cs +++ b/TIAM.Services/SignalRTags.cs @@ -75,4 +75,18 @@ public class SignalRTags : AcSignalRTags public const int AddProduct = 74; public const int RemoveProduct = 75; public const int GetProductsById = 76; + public const int GetAllProducts = 77; + + public const int CreateTransferDestination = 80; + public const int UpdateTransferDestination = 81; + public const int DeleteTransferDestination = 82; //set permissions to 0 + public const int GetAllTransferDestinations = 83; + + public const int CreateTransferDestinationToProduct = 90; + public const int UpdateTransferDestinationToProduct = 91; + public const int DeleteTransferDestinationToProduct = 92; //set permissions to 0 + public const int GetAllTransferDestinationToProducts = 93; + public const int GetTransferDestinationToProductByProductId = 94; + public const int GetTransferDestinationToProductByTransferDestinationId = 95; + } diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ManageProducts.razor b/TIAMSharedUI/Pages/User/SysAdmins/ManageProducts.razor index 97af5c64..2d8d9c5d 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/ManageProducts.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/ManageProducts.razor @@ -14,10 +14,10 @@ @inject IEnumerable LogWriters @inject IServiceProviderDataService ServiceProviderDataService - +
@@ -31,7 +31,7 @@ IconCssClass="btn-column-chooser" Click="ColumnChooserButton_Click" />
- +
@@ -64,13 +64,6 @@ public MessageWizardModel MessageWizardModel = new(); - //List _productArray = - //[ - // new ProductWizardModel(new Company(), ProductType.Hotel, "XY hotel", "XYHotel description is here ", 10.0f, ""), - // new ProductWizardModel(new Company(), ProductType.Hotel, "XY hotel", "XYHotel description is here ", 10.0f, ""), - // new ProductWizardModel(new Company(), ProductType.Hotel, "XY hotel", "XYHotel description is here ", 10.0f, "") - //]; - private readonly List _productWizardModels = []; void CancelCreateClick() diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ManageTransferDestinationToProducts.razor b/TIAMSharedUI/Pages/User/SysAdmins/ManageTransferDestinationToProducts.razor new file mode 100644 index 00000000..3e6d63c3 --- /dev/null +++ b/TIAMSharedUI/Pages/User/SysAdmins/ManageTransferDestinationToProducts.razor @@ -0,0 +1,168 @@ +@page "/sysadmin/prices" +@using BlazorAnimation +@using TIAM.Models.Dtos.Users +@using TIAM.Resources +@using TIAM.Services +@using TIAMSharedUI.Pages.Components +@using TIAMSharedUI.Shared +@using TIAMWebApp.Shared.Application.Interfaces +@using TIAMWebApp.Shared.Application.Models.ClientSide.UI.WizardModels +@using TIAMWebApp.Shared.Application.Models.PageModels +@using TIAMWebApp.Shared.Application.Utility +@using AyCode.Services.Loggers +@layout AdminLayout +@inject IEnumerable LogWriters +@inject IStringLocalizer Localizer +@inject ISessionService SessionService +@inject IWizardProcessor WizardProcessor +@inject IUserDataService UserDataService +User permissions + +
+

User permissions

+

Manage transfers here!

+
+ + +
+
+
+ +
+
+
+ +
+ + + +
+ +
+
+
+ +
+
+ +
+
+ +@code { + private LoggerClient _logger; + //public UserModelDtoDetail UserModelDtoDetail = new(); + + + bool PopupVisible { get; set; } + + IGrid Grid { get; set; } + //object? MasterGridData { get; set; } + bool AutoCollapseDetailRow { get; set; } + + public List IgnoreList = + [ + "ReceiverEmailAddress", + "ReceiverId", + "SenderEmailAddress", + "SenderId", + "ContextId" + ]; + + + + void Grid_CustomizeElement(GridCustomizeElementEventArgs e) + { + if (e.ElementType == GridElementType.DataRow && e.VisibleIndex % 2 == 1) + { + e.CssClass = "bg-alt"; + } + else if (e.ElementType == GridElementType.HeaderCell) + { + e.Style = "background-color: rgba(0, 0, 0, 0.08); font-style=bold"; + + } + } + + void Grid_CustomizeEditModel(GridCustomizeEditModelEventArgs e) + { + if (!e.IsNew) return; + + var userEditModel = (UserModelDtoDetail)e.EditModel; //TODO not valid cast + userEditModel.Id = Guid.NewGuid(); + + userEditModel.UserDto = new UserDtoDetail + { + AffiliateId = Guid.NewGuid(), + EmailAddress = "", + PhoneNumber = "" + }; + + userEditModel.ProfileDto = new TIAM.Entities.Profiles.Profile + { + Name = "New user" + }; + + userEditModel.Products = []; + userEditModel.ServiceProviders = []; + userEditModel.UserProductMappings = []; + } + + async Task Grid_EditModelSaving(GridEditModelSavingEventArgs e) + { + var userModelDtoDetail = ((UserModelDtoDetail)e.EditModel); + + if (e.IsNew) + { + //add new orderData to orderData array + var registration = new RegistrationModel(); + //TODO: Refractor to userDataService + + var random = new Random(); + const string chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; + var password = new string(Enumerable.Repeat(chars, 10) + .Select(s => s[random.Next(s.Length)]).ToArray()); + + registration.Email = userModelDtoDetail.UserDto.EmailAddress; + registration.PhoneNumber = userModelDtoDetail.UserDto.PhoneNumber; + registration.Password = password; + registration.ReferralId = null; + + await UserDataService.CreateGuestUser(registration); + _logger.Info("New user created added"); + } + else + { + _logger.Info("orderData updated at id " + userModelDtoDetail.Id); + + //await transferDataService.UpdateTransferAsync((TransferWizardModel)e.EditModel); + //modify transferData where transferData.Id == e.EditModel.Id + } + //get transfer from TransferData by Id + + // foreach (var transferToModify in (List)TransferData) + // { + // myModel = (Transfer)e.EditModel; + + // if (transferToModify.Id == myModel.Id) + // { + // //transferToModify.Driver = myModel.Driver; + // } + // } + } + + protected override void OnInitialized() + { + _logger = new LoggerClient(LogWriters.ToArray()); + + base.OnInitialized(); + } + + void ColumnChooserButton_Click() + { + Grid.ShowColumnChooser(); + } + +} diff --git a/TIAMSharedUI/Pages/User/SysAdmins/TransferDestinationToProductGridComponent.razor b/TIAMSharedUI/Pages/User/SysAdmins/TransferDestinationToProductGridComponent.razor new file mode 100644 index 00000000..cff12132 --- /dev/null +++ b/TIAMSharedUI/Pages/User/SysAdmins/TransferDestinationToProductGridComponent.razor @@ -0,0 +1,143 @@ +@using TIAM.Entities.Products +@using TIAM.Entities.ServiceProviders +@using TIAM.Entities.Transfers +@using TIAM.Entities.Drivers +@using TIAM.Entities.Users +@using TIAM.Models.Dtos.Users +@using TIAMWebApp.Shared.Application.Interfaces +@using TIAMWebApp.Shared.Application.Services +@using TIAMWebApp.Shared.Application.Utility +@using AyCode.Services.Loggers +@using TIAM.Core.Loggers +@using AyCode.Core +@using TIAMSharedUI.Shared.Components.Grids +@inject IServiceProviderDataService ServiceProviderDataService +@inject IEnumerable LogWriters +@inject AdminSignalRClient AdminSignalRClient; + + + + + + + + + + + + + + + + + + + + + + + + + @{ + var serviceProvider = (Company)EditFormContext.EditModel; + } + + + @EditFormContext.GetEditor("Price") + + + @EditFormContext.GetEditor("Price2") + + + @EditFormContext.GetEditor("Price3") + + + + @EditFormContext.GetEditor("ProductCommis") + + + + + + + + + +@code { + [Parameter] public bool KeyboardNavigationEnabled { get; set; } + + [Parameter] public Guid? ContextId { get; set; } + + [Parameter] public int GetAllTag { get; set; } + + public Guid[]? ContextIds = new Guid[1]; + + private LoggerClient _logger = null!; + + protected override async Task OnInitializedAsync() + { + _logger = new LoggerClient(LogWriters.ToArray()); + + // ReSharper disable once NullCoalescingConditionIsAlwaysNotNullAccordingToAPIContract + //_detailGridData = UserModelDtoDetail.ServiceProviders ?? []; + //_availableServices = await ServiceProviderDataService.GetServiceProvidersAsync(); + + //_logger.Info($"DetailGridData: {_detailGridData.Count}"); + } + + protected override void OnParametersSet() + { + ContextIds[0] = (Guid)ContextId!; + base.OnParametersSet(); + } + + // void CustomizeEditModel(GridCustomizeEditModelEventArgs e) + // { + // if (!e.IsNew) return; + + // var newProductMapping = new UserProductMapping + // { + // ProductId = Guid.NewGuid(), + // UserId = UserModelDtoDetail.Id, + // Permissions = 1 + // }; + + // e.EditModel = newProductMapping; + // } + + // async Task EditModelSaving(GridEditModelSavingEventArgs e) + // { + // if (e.IsNew) + // //add new orderData to orderData array + // _logger.Info("New orderData added"); + // else + // _logger.Info("orderData updated"); + + // await UpdateDataAsync(); + // } + + // async Task DataItemDeleting(GridDataItemDeletingEventArgs e) + // { + // //remove orderData from orderData array + // _logger.Info("orderData deleted"); + // //await UpdateDataAsync(); + // } + + // async Task UpdateDataAsync() + // { + // //refresh grid + // _logger.Info("orderData grid refreshed"); + // } + +} \ No newline at end of file diff --git a/TIAMSharedUI/Shared/Components/Grids/TransferDestinationToProductGrid.cs b/TIAMSharedUI/Shared/Components/Grids/TransferDestinationToProductGrid.cs new file mode 100644 index 00000000..d77c845a --- /dev/null +++ b/TIAMSharedUI/Shared/Components/Grids/TransferDestinationToProductGrid.cs @@ -0,0 +1,31 @@ +using Microsoft.AspNetCore.Components; +using TIAM.Entities.Products; +using TIAM.Entities.Transfers; +using TIAM.Services; + +namespace TIAMSharedUI.Shared.Components.Grids; + +public class TransferDestinationToProductGrid : TiamGrid +{ + public TransferDestinationToProductGrid() : base() + { + GetAllMessageTag = SignalRTags.GetProductsByContextId; + AddMessageTag = SignalRTags.AddProduct; + UpdateMessageTag = SignalRTags.UpdateProduct; + RemoveMessageTag = SignalRTags.RemoveProduct; + } + + protected override Task SetParametersAsyncCore(ParameterView parameters) + { + if (!IsFirstInitializeParameters) + { + //ShowFilterRow = true; + //ShowGroupPanel = true; + //AllowSort = false; + + //etc... + } + + return base.SetParametersAsyncCore(parameters); + } +} \ No newline at end of file diff --git a/TIAMSharedUI/Shared/Users/AdminNavMenu.razor b/TIAMSharedUI/Shared/Users/AdminNavMenu.razor index 762dc440..5c7c4d1e 100644 --- a/TIAMSharedUI/Shared/Users/AdminNavMenu.razor +++ b/TIAMSharedUI/Shared/Users/AdminNavMenu.razor @@ -18,6 +18,7 @@ + diff --git a/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs b/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs index fe16c273..5c900a22 100644 --- a/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs +++ b/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs @@ -438,12 +438,13 @@ namespace TIAMWebApp.Server.Controllers [HttpGet] [Route(APIUrls.GetAllProductsRouteName)] [Tags("In-Progress", "Product")] - public Task GetAllProducts() + [SignalR(SignalRTags.GetAllProducts)] + public async Task GetAllProducts() { _logger.Info("GetAllProducts called"); var products = adminDal.GetProductsJson(); - return Task.FromResult(products); + return products; } [AllowAnonymous]