From c2eae8ad9ebf9931a55d0f44822362cee9aed984 Mon Sep 17 00:00:00 2001 From: "zaccaria.majid" Date: Wed, 24 May 2023 08:20:46 +0200 Subject: [PATCH] ok pulizia generale --- Resources/ChangeLog.html | 2 +- Resources/VersNum.txt | 2 +- Resources/manifest.xml | 2 +- .../Components/Buttons/ButtonAddRemDoor.razor | 8 - .../Buttons/ButtonAddRemDoor.razor.cs | 47 ----- .../Components/Buttons/ButtonsDoorDef.razor | 1 - .../Buttons/ButtonsDoorDef.razor.cs | 13 -- .../Components/CompMan/CompanyList.razor | 1 - .../Components/CompMan/CompanyList.razor.cs | 17 +- .../Components/DoorDef/BaseParamList.razor.cs | 1 - .../Components/DoorDef/DoorDataBlock.razor | 1 - .../Components/DoorDef/DoorDataBlock.razor.cs | 12 +- .../DoorDef/DoorDefOrderTopRow.razor | 4 - .../DoorDef/DoorDefOrderTopRow.razor.cs | 10 +- .../DoorDef/DoorDefSizingSI.razor.cs | 4 +- .../DoorDef/DoorDefStepList.razor.cs | 31 ++- .../DoorDef}/DoorDefinition.razor | 0 .../DoorDef}/DoorDefinition.razor.cs | 2 +- .../Components/DoorDef/DoorPreview.razor | 5 +- .../Components/DoorDef/DoorPreview.razor.cs | 12 +- .../Components/DoorMan/DoorList.razor | 6 - .../Components/DoorMan/DoorList.razor.cs | 54 +++--- .../Components/DoorMan/DoorModal.razor | 6 - .../Components/DoorMan/DoorModal.razor.cs | 177 ++++++++---------- .../Components/Filters/OrderFilter.razor | 1 - .../Components/Filters/OrderFilter.razor.cs | 62 +++--- .../Components/Gen/NavMenuHorizontal.razor | 41 ---- .../Hardware/HwSingleInstance.razor | 6 - .../Hardware/HwSingleInstance.razor.cs | 20 +- .../Components/Order/OrderList.razor | 127 ++++--------- .../Components/Order/OrderList.razor.cs | 63 +++---- .../Components/Order/OrderStatusStep.razor.cs | 23 +-- .../Components/Report/ReportList.razor.cs | 9 +- WebDoorCreator.UI/Pages/HwPdfConfirm.razor.cs | 123 ++++++------ WebDoorCreator.UI/Pages/Index.razor.cs | 28 +-- WebDoorCreator.UI/Pages/Utils.razor.cs | 103 +++++----- WebDoorCreator.UI/WebDoorCreator.UI.csproj | 2 +- 37 files changed, 380 insertions(+), 646 deletions(-) delete mode 100644 WebDoorCreator.UI/Components/Buttons/ButtonAddRemDoor.razor delete mode 100644 WebDoorCreator.UI/Components/Buttons/ButtonAddRemDoor.razor.cs rename WebDoorCreator.UI/{Pages => Components/DoorDef}/DoorDefinition.razor (100%) rename WebDoorCreator.UI/{Pages => Components/DoorDef}/DoorDefinition.razor.cs (99%) diff --git a/Resources/ChangeLog.html b/Resources/ChangeLog.html index 2207b0b..c871405 100644 --- a/Resources/ChangeLog.html +++ b/Resources/ChangeLog.html @@ -1,6 +1,6 @@ WebDoorCreator - Egalware -

Version: 0.9.2305.2319

+

Version: 0.9.2305.2408


Release note: - @*
-
- @context.User.Identity?.Name -
- @if (listCompanies != null) - { - @if (listCompanies.Count > 1) - { - - } - else - { - @if (compToShow != null) - { -
@compToShow.CompanyName
- } - } - } -
-
- -
-
-
- -
-
*@ diff --git a/WebDoorCreator.UI/Components/Hardware/HwSingleInstance.razor b/WebDoorCreator.UI/Components/Hardware/HwSingleInstance.razor index f3d6b84..3f3ac6e 100644 --- a/WebDoorCreator.UI/Components/Hardware/HwSingleInstance.razor +++ b/WebDoorCreator.UI/Components/Hardware/HwSingleInstance.razor @@ -8,7 +8,6 @@ else
- @*
*@
@($"{translate(DoorOpInst.ObjectId)} #{instanceN}") @@ -155,11 +154,6 @@ else
- @*
- -
*@
- } - - *@ - - - - } + } + + } diff --git a/WebDoorCreator.UI/Components/Order/OrderList.razor.cs b/WebDoorCreator.UI/Components/Order/OrderList.razor.cs index c07f55a..49c9a1f 100644 --- a/WebDoorCreator.UI/Components/Order/OrderList.razor.cs +++ b/WebDoorCreator.UI/Components/Order/OrderList.razor.cs @@ -1,18 +1,11 @@ using EgwCoreLib.Razor; using Microsoft.AspNetCore.Components; -using Microsoft.AspNetCore.Components.Authorization; using Microsoft.AspNetCore.Components.Web; -using Microsoft.AspNetCore.DataProtection; -using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.WebUtilities; -using Microsoft.Build.Framework; using Microsoft.JSInterop; -using NLog.LayoutRenderers; -using System.Linq; using WebDoorCreator.Data.DbModels; using WebDoorCreator.Data.Services; using WebDoorCreator.UI.Data; -using static Microsoft.AspNetCore.Razor.Language.TagHelperMetadata; using static WebDoorCreator.Core.Enum; namespace WebDoorCreator.UI.Components.Order @@ -21,11 +14,17 @@ namespace WebDoorCreator.UI.Components.Order { [Parameter] public bool B_doorChaged { get; set; } + [Parameter] public EventCallback E_currOrderStatus { get; set; } + public int Height { get; set; } + + public string reportBaseUrl { get; set; } = "http://w2019-sql-steam/reportserver?/Test/WebDoor/"; + [Parameter] public int UserCurrCompany { get; set; } + #region Protected Properties private bool sortAsc = true; @@ -35,13 +34,13 @@ namespace WebDoorCreator.UI.Components.Order [Parameter] public OrderSelectFilter actFilter { get; set; } = new OrderSelectFilter(); - [Parameter] - public EventCallback updateRecordCount { get; set; } [Parameter] public EventCallback E_SetOrd2Show { get; set; } public OrderStatusViewModel? Ord2Show { get; set; } + [Parameter] + public EventCallback updateRecordCount { get; set; } protected string currUser { get; set; } = ""; [Inject] @@ -49,6 +48,7 @@ namespace WebDoorCreator.UI.Components.Order [Inject] protected WebDoorCreatorService WDService { get; set; } = null!; + private int _totalCount { get; set; } = 0; private int currPage @@ -106,6 +106,7 @@ namespace WebDoorCreator.UI.Components.Order sortAsc = e.IsAscending; await ReloadData(); } + #endregion Protected Properties #region Protected Methods @@ -131,6 +132,9 @@ namespace WebDoorCreator.UI.Components.Order protected bool isModRole { get; set; } = false; + [Inject] + protected NavigationManager NavManager { get; set; } = null!; + protected bool ordByCode { get; set; } = false; protected bool ordByDate { get; set; } = false; @@ -155,7 +159,6 @@ namespace WebDoorCreator.UI.Components.Order protected async Task deleteRecord(OrderStatusViewModel currRec) { - if (!await JSRuntime.InvokeAsync("confirm", $"Order Deletion requested: are you sure to remove {currRec.OrderExtCode}?")) return; @@ -219,6 +222,7 @@ namespace WebDoorCreator.UI.Components.Order return answ; } + private async Task ReloadData() { ListOrdersStatus = null; @@ -265,6 +269,7 @@ namespace WebDoorCreator.UI.Components.Order ListOrdersStatus = ListOrdersStatus.OrderByDescending(x => x.DateIns).ToList(); } break; + case "OrderNumber": if (sortAsc) { @@ -275,12 +280,12 @@ namespace WebDoorCreator.UI.Components.Order ListOrdersStatus = ListOrdersStatus.OrderByDescending(x => x.OrderExtCode).ToList(); } break; + default: ListOrdersStatus = ListOrdersStatus.OrderByDescending(x => x.DateIns).ToList(); break; } } - } } @@ -293,11 +298,16 @@ namespace WebDoorCreator.UI.Components.Order await Task.Delay(1); await InvokeAsync(StateHasChanged); } + #endregion Private Methods + + public int Width { get; set; } [Inject] - protected NavigationManager NavManager { get; set; } = null!; + protected IJSRuntime JsRuntime { get; set; } = null!; - #endregion Private Methods + protected int screenX { get; set; } = 0; + + protected int screenY { get; set; } = 0; protected string getOrderStatusLabel(int orderStat) { @@ -314,9 +324,6 @@ namespace WebDoorCreator.UI.Components.Order return answ; } - - public string reportBaseUrl { get; set; } = "http://w2019-sql-steam/reportserver?/Test/WebDoor/"; - protected string reportUrl(int orderId) { return $"{reportBaseUrl}ReportOrder&OrderID={orderId}&rs:Command=Render&rs:format=PDF"; @@ -335,22 +342,6 @@ namespace WebDoorCreator.UI.Components.Order } } } - - protected int screenX { get; set; } = 0; - protected int screenY { get; set; } = 0; - - private void getElementCoords(MouseEventArgs e) - { - screenX = (int)(e.ClientX); - screenY = (int)(e.ClientY); - } - - public int Height { get; set; } - public int Width { get; set; } - - [Inject] - protected IJSRuntime JsRuntime { get; set; } = null!; - private async Task getDim() { var dimension = await JsRuntime.InvokeAsync("getWindowDimensions"); @@ -358,11 +349,15 @@ namespace WebDoorCreator.UI.Components.Order Width = dimension.Width; } + private void getElementCoords(MouseEventArgs e) + { + screenX = (int)(e.ClientX); + screenY = (int)(e.ClientY); + } public class WindowDimension { - public int Width { get; set; } public int Height { get; set; } + public int Width { get; set; } } - } } \ No newline at end of file diff --git a/WebDoorCreator.UI/Components/Order/OrderStatusStep.razor.cs b/WebDoorCreator.UI/Components/Order/OrderStatusStep.razor.cs index 67d0361..de68728 100644 --- a/WebDoorCreator.UI/Components/Order/OrderStatusStep.razor.cs +++ b/WebDoorCreator.UI/Components/Order/OrderStatusStep.razor.cs @@ -1,38 +1,29 @@ using Microsoft.AspNetCore.Components; -using Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage; using WebDoorCreator.Data.DbModels; using WebDoorCreator.Data.Services; -using WebDoorCreator.UI.Data; namespace WebDoorCreator.UI.Components.Order { public partial class OrderStatusStep { - - [Inject] - protected WebDoorCreatorService WDService { get; set; } = null!; - [Parameter] public int CurrOrderStatus { get; set; } = 10; [Parameter] public EventCallback E_CurrStepColor { get; set; } - protected override async Task OnParametersSetAsync() - { - await Task.Delay(1); - } + protected string currColor { get; set; } = ""; + protected List? currListOrderStatus { get; set; } = null; + + [Inject] + protected WebDoorCreatorService WDService { get; set; } = null!; protected async Task doChangeStep(string actDoorDefStep) { await Task.Delay(1); - //await E_StepChanged.InvokeAsync(actDoorDefStep); } - protected List? currListOrderStatus { get; set; } = null; - protected string currColor { get; set; } = ""; - protected override async Task OnInitializedAsync() { await Task.Delay(1); @@ -50,5 +41,9 @@ namespace WebDoorCreator.UI.Components.Order } } + protected override async Task OnParametersSetAsync() + { + await Task.Delay(1); + } } } \ No newline at end of file diff --git a/WebDoorCreator.UI/Components/Report/ReportList.razor.cs b/WebDoorCreator.UI/Components/Report/ReportList.razor.cs index 418952e..874f719 100644 --- a/WebDoorCreator.UI/Components/Report/ReportList.razor.cs +++ b/WebDoorCreator.UI/Components/Report/ReportList.razor.cs @@ -1,7 +1,4 @@ using Microsoft.AspNetCore.Components; -using Microsoft.AspNetCore.Razor.Language.Extensions; -using Microsoft.Build.Framework; -using Microsoft.CodeAnalysis.CSharp.Syntax; using WebDoorCreator.Data.DbModels; using WebDoorCreator.Data.Services; using WebDoorCreator.UI.Data; @@ -20,6 +17,7 @@ namespace WebDoorCreator.UI.Components.Report [Inject] protected WebDoorCreatorService WDService { get; set; } = null!; + [Inject] protected WDCVocabularyService WDVService { get; set; } = null!; @@ -37,7 +35,6 @@ namespace WebDoorCreator.UI.Components.Report } return answ; - } protected string getTranslatedLabel(string HwId) @@ -49,14 +46,13 @@ namespace WebDoorCreator.UI.Components.Report var hw2Translate = listHw.FirstOrDefault(); if (hw2Translate != null) { - answ = translate(hw2Translate.Label); } } return answ; } - protected async override Task OnParametersSetAsync() + protected override async Task OnParametersSetAsync() { var result = await WDService.DoorOpGetByDoorId(doorId); if (result != null) @@ -64,6 +60,7 @@ namespace WebDoorCreator.UI.Components.Report DoorOps = result.Where(x => x.ObjectId != "Size" && x.ObjectId != "Profiles" && x.ObjectId != "Swing" && x.ObjectId != "Properties" && x.ObjectId != "Finishing").ToList(); } } + protected string translate(string lemma) { string answ = ""; diff --git a/WebDoorCreator.UI/Pages/HwPdfConfirm.razor.cs b/WebDoorCreator.UI/Pages/HwPdfConfirm.razor.cs index 37bb141..f805d66 100644 --- a/WebDoorCreator.UI/Pages/HwPdfConfirm.razor.cs +++ b/WebDoorCreator.UI/Pages/HwPdfConfirm.razor.cs @@ -9,20 +9,75 @@ namespace WebDoorCreator.UI.Pages { public partial class HwPdfConfirm { + protected int doorId = 0; + + protected string objectId = ""; + + protected List allDoorOps { get; set; } = new List(); + + protected DoorOpModel currDoorOp { get; set; } = new DoorOpModel(); + + protected int doorOpId { get; set; } = 0; + [Inject] protected NavigationManager NavManager { get; set; } = null!; - [Inject] - protected WDCUserService WDCUService { get; set; } = null!; + + protected string userLang + { + get => WDCUService.currLanguage ?? "EN"; + set => WDCUService.currLanguage = value; + } + [Inject] protected WDCRefreshService WDCRService { get; set; } = null!; - protected int doorOpId { get; set; } = 0; - protected int doorId = 0; - protected string objectId = ""; - protected DoorOpModel currDoorOp { get; set; } = new DoorOpModel(); - protected List allDoorOps { get; set; } = new List(); + [Inject] + protected WDCUserService WDCUService { get; set; } = null!; + [Inject] + protected WDCRefreshService WDRService { get; set; } = null!; - protected async override Task OnInitializedAsync() + [Inject] + protected WebDoorCreatorService WDService { get; set; } = null!; + + protected bool checkIfConf() + { + bool answ = false; + if (allDoorOps != null) + { + var rawObj = JsonConvert.DeserializeObject>>(currDoorOp.JsoncActVal!); + if (rawObj != null) + { + foreach (var op in allDoorOps) + { + var opObj = JsonConvert.DeserializeObject>>(op.JsoncActVal!); + if (opObj != null) + { + if (rawObj["template"] == opObj["template"] && op.DtConfirm != null && op.userConfirm != "") + { + answ = true; + } + } + } + } + } + return answ; + } + + protected async Task doConfirm() + { + currDoorOp.userConfirm = WDCUService.userId; + currDoorOp.DtConfirm = DateTime.Now; + + var doorOps2Save = new List() { currDoorOp }; + + var done = await WDService.DoorOpUpdate(doorOps2Save); + if (done) + { + WDRService.ReportDoorOpConf(doorId, doorOpId, objectId); + } + } + + protected override async Task OnInitializedAsync() { await Task.Delay(1); var uri = NavManager.ToAbsoluteUri(NavManager.Uri); @@ -41,7 +96,6 @@ namespace WebDoorCreator.UI.Pages doorOpId = int.Parse(sDoorOpId); await ReloadData(); } - } protected async Task ReloadData() @@ -50,59 +104,8 @@ namespace WebDoorCreator.UI.Pages if (currDoorOp != null) { allDoorOps = await WDService.DoorOpGetByDoorId(currDoorOp.DoorId); - } await Task.Delay(1); } - [Inject] - protected WebDoorCreatorService WDService { get; set; } = null!; - [Inject] - protected WDCRefreshService WDRService { get; set; } = null!; - - protected async Task doConfirm() - { - currDoorOp.userConfirm = WDCUService.userId; - currDoorOp.DtConfirm = DateTime.Now; - - var doorOps2Save = new List() { currDoorOp }; - - var done = await WDService.DoorOpUpdate(doorOps2Save); - if (done) - { - WDRService.ReportDoorOpConf(doorId, doorOpId, objectId); - } - } - - protected string userLang - { - get => WDCUService.currLanguage ?? "EN"; - set => WDCUService.currLanguage = value; - } - - protected bool checkIfConf() - { - bool answ = false; - if (allDoorOps != null) - { - var rawObj = JsonConvert.DeserializeObject>>(currDoorOp.JsoncActVal!); - if (rawObj != null) - { - foreach (var op in allDoorOps) - { - var opObj = JsonConvert.DeserializeObject>>(op.JsoncActVal!); - if (opObj != null) - { - - if (rawObj["template"] == opObj["template"] && op.DtConfirm != null && op.userConfirm != "") - { - answ = true; - } - } - } - } - } - return answ; - } - } } \ No newline at end of file diff --git a/WebDoorCreator.UI/Pages/Index.razor.cs b/WebDoorCreator.UI/Pages/Index.razor.cs index 5fa1a39..d0202e5 100644 --- a/WebDoorCreator.UI/Pages/Index.razor.cs +++ b/WebDoorCreator.UI/Pages/Index.razor.cs @@ -1,31 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; using Microsoft.AspNetCore.Components; -using System.Net.Http; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Components.Authorization; -using Microsoft.AspNetCore.Components.Forms; -using Microsoft.AspNetCore.Components.Routing; -using Microsoft.AspNetCore.Components.Web; -using Microsoft.AspNetCore.Components.Web.Virtualization; -using Microsoft.JSInterop; -using WebDoorCreator.UI; -using WebDoorCreator.UI.Components; -using WebDoorCreator.UI.Components.Buttons; -using WebDoorCreator.UI.Components.CompMan; -using WebDoorCreator.UI.Components.DoorMan; -using WebDoorCreator.UI.Components.DoorDef; -using WebDoorCreator.UI.Components.Gen; -using WebDoorCreator.UI.Components.Order; -using WebDoorCreator.UI.Components.Users; -using WebDoorCreator.UI.Components.Hardware; -using WebDoorCreator.UI.Components.SvgComp; -using WebDoorCreator.UI.Components.Filters; -using WebDoorCreator.UI.Shared; -using WebDoorCreator.Data.DbModels; -using EgwCoreLib.Razor; namespace WebDoorCreator.UI.Pages { @@ -33,6 +6,7 @@ namespace WebDoorCreator.UI.Pages { [Inject] protected NavigationManager NavManager { get; set; } = null!; + protected async Task changePage(bool newPage) { await Task.Delay(1); diff --git a/WebDoorCreator.UI/Pages/Utils.razor.cs b/WebDoorCreator.UI/Pages/Utils.razor.cs index 91012e5..fd2ab64 100644 --- a/WebDoorCreator.UI/Pages/Utils.razor.cs +++ b/WebDoorCreator.UI/Pages/Utils.razor.cs @@ -1,27 +1,62 @@ using Microsoft.AspNetCore.Components; using WebDoorCreator.Data.DbModels; using WebDoorCreator.Data.Services; -using WebDoorCreator.UI.Data; namespace WebDoorCreator.UI.Pages { public partial class Utils { + protected string _keyWord { get; set; } = ""; + [Inject] + protected IConfiguration config { get; set; } = null!; + + protected WebDoorCreator.Data.DDF.Converter currDdfConv { get; set; } = null!; + protected bool done { get; set; } = false; protected List? DoorOpsList { get; set; } protected List DoorsList { get; set; } = new List(); + protected string keyWord + { + get => _keyWord; + set => _keyWord = value; + } + + protected List listOp { get; set; } = new List(); + protected List listOpAll { get; set; } = new List(); + [Inject] + protected NavigationManager NavManager { get; set; } = null!; + protected List? OrdersList { get; set; } protected List ordListVal { get; set; } = new List(); - protected List listOp { get; set; } = new List(); - protected List listOpAll { get; set; } = new List(); - [Inject] protected QueueDataService QDataServ { get; set; } = null!; [Inject] protected WebDoorCreatorService WDCService { get; set; } = null!; + + [Inject] + protected WebDoorCreatorService WDService { get; set; } = null!; + + public async Task flushCache() + { + await Task.Delay(1); + await WDService.FlushRedisCache(); + await Task.Delay(1); + // rimando a pagina corrente + NavManager.NavigateTo("/", true); + } + + public async Task FlushCustomPattern() + { + await Task.Delay(1); + await WDService.FlushCustomPattern(keyWord); + await Task.Delay(1); + // rimando a pagina corrente + NavManager.NavigateTo("/", true); + } + protected async Task doorsGetAll() { await ordersGetAll(); @@ -39,24 +74,7 @@ namespace WebDoorCreator.UI.Pages } } } - } - protected bool done { get; set; } = false; - - [Inject] - protected IConfiguration config { get; set; } = null!; - - protected override void OnInitialized() - { - base.OnInitialized(); - string vers = config.GetValue("ConfDDF:VersNumber"); - bool remDoorOp = config.GetValue("ConfDDF:RemoveDoorOps"); - var headRows = config.GetSection("ConfDDF:Header").Get>(); - var footRows = config.GetSection("ConfDDF:Footer").Get>(); - currDdfConv = new WebDoorCreator.Data.DDF.Converter(vers, remDoorOp, headRows, footRows); - } - - protected WebDoorCreator.Data.DDF.Converter currDdfConv { get; set; } = null!; /// /// Effettua salvataggio record e generazione DDF /// @@ -97,7 +115,6 @@ namespace WebDoorCreator.UI.Pages // versione corrente del DDF generato int currVers = await QDataServ.SendCalcReq(door.DoorId, currDdf); } - } } } @@ -106,44 +123,20 @@ namespace WebDoorCreator.UI.Pages done = true; } + protected override void OnInitialized() + { + base.OnInitialized(); + string vers = config.GetValue("ConfDDF:VersNumber"); + bool remDoorOp = config.GetValue("ConfDDF:RemoveDoorOps"); + var headRows = config.GetSection("ConfDDF:Header").Get>(); + var footRows = config.GetSection("ConfDDF:Footer").Get>(); + currDdfConv = new WebDoorCreator.Data.DDF.Converter(vers, remDoorOp, headRows, footRows); + } protected async Task ordersGetAll() { DateTime adesso = DateTime.Today; OrdersList = await WDCService.OrderStatusGetFilt(0, 0, adesso.AddYears(-200), adesso.AddYears(200)); } - - public async Task flushCache() - { - await Task.Delay(1); - await WDService.FlushRedisCache(); - await Task.Delay(1); - // rimando a pagina corrente - NavManager.NavigateTo("/", true); - } - - protected string _keyWord { get; set; } = ""; - protected string keyWord - { - get => _keyWord; - set => _keyWord = value; - } - - - public async Task FlushCustomPattern() - { - await Task.Delay(1); - await WDService.FlushCustomPattern(keyWord); - await Task.Delay(1); - // rimando a pagina corrente - NavManager.NavigateTo("/", true); - } - - - [Inject] - protected NavigationManager NavManager { get; set; } = null!; - - [Inject] - protected WebDoorCreatorService WDService { get; set; } = null!; } } \ No newline at end of file diff --git a/WebDoorCreator.UI/WebDoorCreator.UI.csproj b/WebDoorCreator.UI/WebDoorCreator.UI.csproj index 448aaaf..0ca9511 100644 --- a/WebDoorCreator.UI/WebDoorCreator.UI.csproj +++ b/WebDoorCreator.UI/WebDoorCreator.UI.csproj @@ -3,7 +3,7 @@ net6.0 enable - 0.9.2305.2319 + 0.9.2305.2408 enable aspnet-WebDoorCreator.UI-dfe95fed-1398-4144-bd43-8b3a765d6608