This commit is contained in:
Adam 2024-05-20 15:29:01 +02:00
commit 3140c1bed6
12 changed files with 332 additions and 347 deletions

View File

@ -39,8 +39,8 @@ namespace TIAM.Database.DataLayers.Admins
#region Transfer #region Transfer
public Task<List<Transfer>> GetTransfersAsync() => SessionAsync(ctx => ctx.GetTransfers().ToList()); public Task<List<Transfer>> GetTransfersAsync() => SessionAsync(ctx => ctx.GetTransfers().OrderBy(x => x.TransferStatusType).ThenByDescending(x => x.OrderId).ToList());
public Task<string> GetTransfersJsonAsync() => SessionAsync(ctx => ctx.GetTransfers().ToJson()); public Task<string> GetTransfersJsonAsync() => SessionAsync(ctx => ctx.GetTransfers().OrderBy(x => x.TransferStatusType).ThenByDescending(x => x.OrderId).ToJson());
public Transfer? GetTransferById(Guid transferId) => Session(ctx => ctx.GetTransferById(transferId)); public Transfer? GetTransferById(Guid transferId) => Session(ctx => ctx.GetTransferById(transferId));
public string? GetTransferJsonById(Guid transferId) => Session(ctx => ctx.GetTransferById(transferId)?.ToJson()); public string? GetTransferJsonById(Guid transferId) => Session(ctx => ctx.GetTransferById(transferId)?.ToJson());

View File

@ -6,7 +6,7 @@
@using TIAM.Core.Loggers @using TIAM.Core.Loggers
@using AyCode.Core.Loggers @using AyCode.Core.Loggers
@using AyCode.Services.Loggers @using AyCode.Services.Loggers
@inject IUserDataService NwindDataService @inject IUserDataService UserDataService
@inject IEnumerable<IAcLogWriterClientBase> LogWriters @inject IEnumerable<IAcLogWriterClientBase> LogWriters
@ -42,10 +42,10 @@
[Parameter] [Parameter]
public Transfer Customer { get; set; } public Transfer Customer { get; set; }
private ILogger _logger; private LoggerClient<Grid_MasterDetail_NestedGrid_DetailContent> _logger;
List<TransferToDriver> DetailGridData { get; set; } List<TransferToDriver> DetailGridData { get; set; }
public UserModelDtoDetail UserInfo; public UserModelDtoDetail? UserModelDtoDetail;
public string PhoneNumber = ""; public string PhoneNumber = "";
public string EmailAddress = ""; public string EmailAddress = "";
@ -53,27 +53,28 @@
{ {
_logger = new LoggerClient<Grid_MasterDetail_NestedGrid_DetailContent>(LogWriters.ToArray()); _logger = new LoggerClient<Grid_MasterDetail_NestedGrid_DetailContent>(LogWriters.ToArray());
UserInfo = await NwindDataService.GetUserDetailByIdAsync(Customer.UserId); UserModelDtoDetail = await UserDataService.GetUserDetailByIdAsync(Customer.UserId);
PhoneNumber = UserInfo.UserDto.PhoneNumber;
EmailAddress = UserInfo.UserDto.EmailAddress; if (UserModelDtoDetail == null) return;
PhoneNumber = UserModelDtoDetail.UserDto.PhoneNumber;
EmailAddress = UserModelDtoDetail.UserDto.EmailAddress;
DetailGridData = Customer.TransferToDrivers; DetailGridData = Customer.TransferToDrivers;
_logger.Info($"DetailGridData: {DetailGridData.Count}"); _logger.Info($"DetailGridData: {DetailGridData.Count}");
} }
void CustomizeEditModel(GridCustomizeEditModelEventArgs e) void CustomizeEditModel(GridCustomizeEditModelEventArgs e)
{ {
if (e.IsNew) if (!e.IsNew) return;
{
var newDriver = (TransferToDriver)e.EditModel;
newDriver.Id = Guid.NewGuid();
newDriver.CarId = Guid.Empty;
newDriver.LicencePlate = "";
newDriver.Car = new Car();
newDriver.Price = 0;
newDriver.TransferId = Customer.Id;
var newDriver = (TransferToDriver)e.EditModel;
} newDriver.Id = Guid.NewGuid();
newDriver.CarId = Guid.Empty;
newDriver.LicencePlate = "";
newDriver.Car = new Car();
newDriver.Price = 0;
newDriver.TransferId = Customer.Id;
} }
async Task EditModelSaving(GridEditModelSavingEventArgs e) async Task EditModelSaving(GridEditModelSavingEventArgs e)
@ -81,26 +82,22 @@
if (e.IsNew) if (e.IsNew)
//add new orderData to orderData array //add new orderData to orderData array
_logger.Info("New orderData added"); _logger.Info("New orderData added");
//await NwindDataService.InsertEmployeeAsync((EditableEmployee)e.EditModel);
else else
_logger.Info("orderData updated"); _logger.Info("orderData updated");
//await NwindDataService.UpdateEmployeeAsync((EditableEmployee)e.DataItem, (EditableEmployee)e.EditModel);
await UpdateDataAsync(); await UpdateDataAsync();
} }
async Task DataItemDeleting(GridDataItemDeletingEventArgs e) async Task DataItemDeleting(GridDataItemDeletingEventArgs e)
{ {
//await NwindDataService.RemoveEmployeeAsync((EditableEmployee)e.DataItem);
//remove orderData from orderData array //remove orderData from orderData array
_logger.Info("orderData deleted"); _logger.Info("orderData deleted");
//await UpdateDataAsync(); //await UpdateDataAsync();
} }
async Task UpdateDataAsync() async Task UpdateDataAsync()
{ {
//DataSource = await NwindDataService.GetEmployeesEditableAsync();
//refresh grid //refresh grid
_logger.Info("orderData grid refreshed"); _logger.Info("orderData grid refreshed");
} }
} }

View File

@ -30,7 +30,7 @@
Click="ColumnChooserButton_Click" /> Click="ColumnChooserButton_Click" />
</div> </div>
<DxGrid @ref="Grid" <DxGrid @ref="Grid"
Data="ProductDataFromDb" Data="_productWizardModels"
PageSize="8" PageSize="8"
KeyFieldName="Id" KeyFieldName="Id"
ValidationEnabled="false" ValidationEnabled="false"

View File

@ -18,33 +18,33 @@ namespace TIAMSharedUI.Pages.User.SysAdmins
{ {
public partial class ManageProducts :ComponentBase public partial class ManageProducts :ComponentBase
{ {
private ILogger _logger; private LoggerClient<ManageProducts> _logger;
IGrid Grid { get; set; } IGrid Grid { get; set; }
object? ProductData { get; set; } private List<ProductWizardModel> ProductWizardModels { get; set; } = [];
public void ColumnChooserButton_Click() public void ColumnChooserButton_Click()
{ {
Grid.ShowColumnChooser(); Grid.ShowColumnChooser();
} }
public ProductWizardModel myModel = new ProductWizardModel(); //public ProductWizardModel productWizardModel = new();
public MessageWizardModel messageWizardModel = new MessageWizardModel(); public MessageWizardModel MessageWizardModel = new();
[Inject] [Inject]
public IServiceProviderDataService serviceProviderDataService { get; set; } public IServiceProviderDataService ServiceProviderDataService { get; set; }
object? ProductArray = new ProductWizardModel[] //List<ProductWizardModel> _productArray =
{ //[
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, ""), // 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? ProductDataFromDb = new ProductWizardModel[] { }; private readonly List<ProductWizardModel> _productWizardModels = [];
void CancelCreateClick() void CancelCreateClick()
{ {
@ -53,12 +53,12 @@ namespace TIAMSharedUI.Pages.User.SysAdmins
void EulaPopupClosed() void EulaPopupClosed()
{ {
//cancel clicked //cancel clicked
} }
void EulaPopupClosing(PopupClosingEventArgs args) void EulaPopupClosing(PopupClosingEventArgs args)
{ {
//myModel = new TransferWizardModel(); //myModel = new TransferWizardModel();
messageWizardModel = new MessageWizardModel(); MessageWizardModel = new MessageWizardModel();
} }
//----------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------
@ -79,16 +79,13 @@ namespace TIAMSharedUI.Pages.User.SysAdmins
void Grid_CustomizeEditModel(GridCustomizeEditModelEventArgs e) void Grid_CustomizeEditModel(GridCustomizeEditModelEventArgs e)
{ {
if (e.IsNew) if (!e.IsNew) return;
{
var newProduct = (ProductWizardModel)e.EditModel;
newProduct.Id = Guid.NewGuid();
newProduct.Name = "ghjgkg hkgh ghjkghgkjgh";
newProduct.Description = "ghjgkg hkgh ghjkghgkjgh";
newProduct.ProductType = ProductType.NotDefined;
} var newProduct = (ProductWizardModel)e.EditModel;
newProduct.Id = Guid.NewGuid();
newProduct.Name = "ghjgkg hkgh ghjkghgkjgh";
newProduct.Description = "ghjgkg hkgh ghjkghgkjgh";
newProduct.ProductType = ProductType.NotDefined;
} }
void Grid_CustomizeElement(GridCustomizeElementEventArgs e) void Grid_CustomizeElement(GridCustomizeElementEventArgs e)
@ -98,12 +95,12 @@ namespace TIAMSharedUI.Pages.User.SysAdmins
async Task Grid_EditModelSaving(GridEditModelSavingEventArgs e) async Task Grid_EditModelSaving(GridEditModelSavingEventArgs e)
{ {
var productWizardModel = (ProductWizardModel)e.EditModel;
if (e.IsNew) if (e.IsNew)
{ {
//add new row to grid
myModel = (ProductWizardModel)e.EditModel;
//add mymodel to transferData array //add mymodel to transferData array
ProductData = ((ProductWizardModel[])ProductData).Append(myModel); ProductWizardModels.Add(productWizardModel);
//add new orderData to orderData array //add new orderData to orderData array
_logger.Info("New orderData added"); _logger.Info("New orderData added");
@ -116,28 +113,24 @@ namespace TIAMSharedUI.Pages.User.SysAdmins
//modify transferData where transferData.Id == e.EditModel.Id //modify transferData where transferData.Id == e.EditModel.Id
//get transfer from TransferData by Id //get transfer from TransferData by Id
foreach (var productToModify in (ProductWizardModel[])ProductData) foreach (var productToModify in ProductWizardModels)
{ {
myModel = (ProductWizardModel)e.EditModel; if (productToModify.Id != productWizardModel.Id) continue;
if (productToModify.Id == myModel.Id) productToModify.ProductType = productWizardModel.ProductType;
{ productToModify.Name = productWizardModel.Name;
myModel = (ProductWizardModel)e.EditModel; productToModify.Description = productWizardModel.Description;
productToModify.ProductType = myModel.ProductType; productToModify.Price = productWizardModel.Price;
productToModify.Name = myModel.Name; productToModify.JsonDetails = productWizardModel.JsonDetails;
productToModify.Description = myModel.Description;
productToModify.Price = myModel.Price;
productToModify.JsonDetails = myModel.JsonDetails;
}
} }
} }
//await NwindDataService.UpdateEmployeeAsync((EditableEmployee)e.DataItem, (EditableEmployee)e.EditModel); //await NwindDataService.UpdateEmployeeAsync((EditableEmployee)e.DataItem, (EditableEmployee)e.EditModel);
//TODO: ne a teljes grid-et refresh-eljük, elég lenne csak az adott sort! - J.
await UpdateDataAsync(); await UpdateDataAsync();
} }
async Task Grid_DataItemDeleting(GridDataItemDeletingEventArgs e) async Task Grid_DataItemDeleting(GridDataItemDeletingEventArgs e)
{ {
//await NwindDataService.RemoveEmployeeAsync((EditableEmployee)e.DataItem); //await NwindDataService.RemoveEmployeeAsync((EditableEmployee)e.DataItem);
@ -145,10 +138,12 @@ namespace TIAMSharedUI.Pages.User.SysAdmins
_logger.Info("orderData deleted"); _logger.Info("orderData deleted");
//await UpdateDataAsync(); //await UpdateDataAsync();
} }
async Task UpdateDataAsync() async Task UpdateDataAsync()
{ {
//DataSource = await NwindDataService.GetEmployeesEditableAsync();
//refresh grid //refresh grid
await FillGridDataSource();
_logger.Info("orderData grid refreshed"); _logger.Info("orderData grid refreshed");
} }
@ -158,18 +153,21 @@ namespace TIAMSharedUI.Pages.User.SysAdmins
_logger = new LoggerClient<ManageProducts>(LogWriters.ToArray()); _logger = new LoggerClient<ManageProducts>(LogWriters.ToArray());
var a = await serviceProviderDataService.GetProductsForServiceProviderAsync(Guid.Parse("3587F169-683C-4EEE-BCB5-E8D57F8C6DCE")); await FillGridDataSource();
_logger.Info($"ProductDataFromDb: {((ProductWizardModel[])ProductDataFromDb).Length}");
foreach (var item in a)
{
//add new transferwizardmodel to transferData array
ProductDataFromDb = ((ProductWizardModel[])ProductDataFromDb).Append(
new ProductWizardModel(item.ServiceProvider, item.ProductType, item.Name, item.Description, item.Price, item.JsonDetails));
_logger.Info($"TransferDataFromDb: {item.Name}");
}
} }
private async Task FillGridDataSource()
{
var productForServiceProcvider = await ServiceProviderDataService.GetProductsForServiceProviderAsync(Guid.Parse("3587F169-683C-4EEE-BCB5-E8D57F8C6DCE"));
foreach (var item in productForServiceProcvider)
{
_productWizardModels.Add(new ProductWizardModel(item.ServiceProvider, item.ProductType, item.Name, item.Description, item.Price, item.JsonDetails));
_logger.DetailConditional($"_productWizardModels add: {item.Name}");
}
_logger.Info($"_productWizardModels: {_productWizardModels.Count}");
}
} }
} }

View File

@ -41,9 +41,9 @@
Closing="EulaPopupClosing" Closing="EulaPopupClosing"
Closed="EulaPopupClosed"> Closed="EulaPopupClosed">
<BodyContentTemplate> <BodyContentTemplate>
<InputWizard Data=@messageWizardModel <InputWizard Data=@MessageWizardModel
OnSubmit="SubmitForm" OnSubmit="SubmitForm"
IgnoreReflection=@ignoreList IgnoreReflection=@IgnoreList
TitleResourceString="NewMessage" TitleResourceString="NewMessage"
SubtitleResourceString="NewMessageSubtitle" SubtitleResourceString="NewMessageSubtitle"
SubmitButtonText="@localizer.GetString("ButtonSend")"></InputWizard> SubmitButtonText="@localizer.GetString("ButtonSend")"></InputWizard>
@ -75,7 +75,7 @@
</div> </div>
<DxGrid @ref="Grid2" <DxGrid @ref="Grid2"
Data="TransferData" Data="TransferDataList"
AutoCollapseDetailRow="AutoCollapseDetailRow" AutoCollapseDetailRow="AutoCollapseDetailRow"
KeyboardNavigationEnabled="true" KeyboardNavigationEnabled="true"
CustomizeElement="Grid_CustomizeElement" CustomizeElement="Grid_CustomizeElement"
@ -166,7 +166,7 @@
<DxTabPage Text="Calendar"> <DxTabPage Text="Calendar">
<div class="d-flex flex-column mb-4 pb-2"> <div class="d-flex flex-column mb-4 pb-2">
<DxScheduler @bind-StartDate="@StartDate" <DxScheduler @bind-StartDate="@StartDate"
DataStorage="@DataStorage" DataStorage="@_dataStorage"
CssClass="w-100"> CssClass="w-100">
<DxSchedulerTimelineView Duration="@TimeSpan.FromHours(48)" CellMinWidth="80"> <DxSchedulerTimelineView Duration="@TimeSpan.FromHours(48)" CellMinWidth="80">
<Scales> <Scales>
@ -199,15 +199,15 @@
@code { @code {
private ILogger _logger; private LoggerClient<ManageTransfers> _logger;
public Transfer myModel = new Transfer(); //public Transfer myModel = new Transfer();
public List<Transfer> TransferData { get; set; } public List<Transfer> TransferDataList { get; set; }
bool PopupVisible { get; set; } bool PopupVisible { get; set; }
public List<string> ignoreList = new List<string> public List<string> IgnoreList =
{ [
"ReceiverEmailAddress", "ReceiverEmailAddress",
"ReceiverFullName", "ReceiverFullName",
"ReceiverId", "ReceiverId",
@ -217,28 +217,33 @@
"ContextId" "ContextId"
}; };
public List<TransferStatusModel>? Statuses { get; set; } public List<TransferStatusModel> Statuses { get; set; } =
[
new(Convert.ToInt16(TransferStatusType.OrderSubmitted), "Order submitted"),
new(Convert.ToInt16(TransferStatusType.OrderConfirmed), "Order confirmed"),
new(Convert.ToInt16(TransferStatusType.AssignedToDriver), "Assigned to driver"),
new(Convert.ToInt16(TransferStatusType.DriverConfirmed), "Driver confirmed"),
new(Convert.ToInt16(TransferStatusType.DriverEnRoute), "Driver enroute"),
new(Convert.ToInt16(TransferStatusType.PassengerPickup), "Passenger in car"),
new(Convert.ToInt16(TransferStatusType.Finished), "Finished"),
new(Convert.ToInt16(TransferStatusType.UserCanceled), "User cancelled"),
new(Convert.ToInt16(TransferStatusType.AdminDenied), "Admin cancelled")
];
public MessageWizardModel messageWizardModel = new MessageWizardModel(); public MessageWizardModel MessageWizardModel = new();
public List<AppointmentModel>? AppoinmentData { get; set; } public List<AppointmentModel> AppointmentModels { get; set; }
DateTime StartDate { get; set; } = DateTime.Today; DateTime StartDate { get; set; } = DateTime.Today;
DxSchedulerDataStorage DataStorage = new DxSchedulerDataStorage(); DxSchedulerDataStorage _dataStorage = new();
void SendMail(Transfer Item) void SendMail(Transfer item)
{ {
_logger.Info($"Sending mail to {Item.ContactEmail}, {Item.Id}"); _logger.Info($"Sending mail to {item.ContactEmail}, {item.Id}");
Guid? nullableGuid = Item.Id; MessageWizardModel.ContextId = item.Id;
if (nullableGuid.HasValue) MessageWizardModel.SenderFullName = item.FullName; //Miért nullable a FullName? - J.
{
Guid nonNullableGuid = nullableGuid.Value;
messageWizardModel.ContextId = nonNullableGuid;
}
messageWizardModel.ReceiverEmailAddress = Item.ContactEmail;
messageWizardModel.ReceiverFullName = Item.FullName;
PopupVisible = true; PopupVisible = true;
} }
@ -255,16 +260,16 @@
void EulaPopupClosing(PopupClosingEventArgs args) void EulaPopupClosing(PopupClosingEventArgs args)
{ {
//myModel = new TransferWizardModel(); //myModel = new TransferWizardModel();
messageWizardModel = new MessageWizardModel(); MessageWizardModel = new MessageWizardModel();
} }
//----------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------
public async Task SubmitForm(object Result) public async Task SubmitForm(object result)
{ {
var messageModel = Result as MessageWizardModel; var messageModel = result as MessageWizardModel;
messageModel.ContextId = messageWizardModel.ContextId; messageModel.ContextId = MessageWizardModel.ContextId;
//messageModel.SenderId = sessionService.User.UserId; //messageModel.SenderId = sessionService.User.UserId;
string FormatEmailContent() string FormatEmailContent()
@ -281,9 +286,9 @@
messageModel.Content = FormatEmailContent(); messageModel.Content = FormatEmailContent();
_logger.Info(messageModel.Content); _logger.Info(messageModel.Content);
var email = await wizardProcessor.ProcessWizardAsync<MessageWizardModel>(Result.GetType(), messageModel); var email = await wizardProcessor.ProcessWizardAsync<MessageWizardModel>(result.GetType(), messageModel);
_logger.Info($"Submitted nested form: {Result.GetType().FullName}"); _logger.Info($"Submitted nested form: {result.GetType().FullName}");
} }
void Grid_CustomizeElement(GridCustomizeElementEventArgs e) void Grid_CustomizeElement(GridCustomizeElementEventArgs e)
@ -313,19 +318,18 @@
void Grid_CustomizeEditModel(GridCustomizeEditModelEventArgs e) void Grid_CustomizeEditModel(GridCustomizeEditModelEventArgs e)
{ {
if (e.IsNew) if (!e.IsNew) return;
{
var transferEditModel = (Transfer)e.EditModel; //TODO not valid cast var transferEditModel = (Transfer)e.EditModel; //TODO not valid cast
transferEditModel.Id = Guid.NewGuid(); transferEditModel.Id = Guid.NewGuid();
transferEditModel.ToAddress = "Where to?"; transferEditModel.ToAddress = "Where to?";
transferEditModel.FromAddress = "From where?"; transferEditModel.FromAddress = "From where?";
transferEditModel.Appointment = DateTime.UtcNow.AddDays(3); transferEditModel.Appointment = DateTime.UtcNow.AddDays(3);
transferEditModel.PassengerCount = 1; transferEditModel.PassengerCount = 1;
transferEditModel.FirstName = "John"; transferEditModel.FirstName = "John";
transferEditModel.LastName = "Doe"; transferEditModel.LastName = "Doe";
transferEditModel.ContactPhone = "+00000000000"; transferEditModel.ContactPhone = "+00000000000";
transferEditModel.ContactEmail = "your@email.address"; transferEditModel.ContactEmail = "your@email.address";
}
} }
async Task Grid_EditModelSaving(GridEditModelSavingEventArgs e) async Task Grid_EditModelSaving(GridEditModelSavingEventArgs e)
@ -355,9 +359,14 @@
// //transferToModify.Driver = myModel.Driver; // //transferToModify.Driver = myModel.Driver;
// } // }
// } // }
if (success) if (success)
{
//TODO: ne a teljes grid-et refresh-eljük, elég lenne csak az adott sort! - J.
await UpdateDataAsync(); await UpdateDataAsync();
}
} }
async Task Grid_DataItemDeleting(GridDataItemDeletingEventArgs e) async Task Grid_DataItemDeleting(GridDataItemDeletingEventArgs e)
{ {
//await NwindDataService.RemoveEmployeeAsync((EditableEmployee)e.DataItem); //await NwindDataService.RemoveEmployeeAsync((EditableEmployee)e.DataItem);
@ -365,10 +374,10 @@
_logger.Info("orderData deleted"); _logger.Info("orderData deleted");
//await UpdateDataAsync(); //await UpdateDataAsync();
} }
async Task UpdateDataAsync() async Task UpdateDataAsync()
{ {
//refresh grid TransferDataList = await transferDataService.GetTransfersAsync();
TransferData = await transferDataService.GetTransfersAsync();
_logger.Info("orderData grid refreshed"); _logger.Info("orderData grid refreshed");
} }
@ -376,21 +385,10 @@
{ {
_logger = new LoggerClient<ManageTransfers>(LogWriters.ToArray()); _logger = new LoggerClient<ManageTransfers>(LogWriters.ToArray());
Statuses = new List<TransferStatusModel> TransferDataList = await transferDataService.GetTransfersAsync();
{ AppointmentModels = new List<AppointmentModel>(TransferDataList.Count);
new TransferStatusModel(Convert.ToInt16(TransferStatusType.OrderSubmitted), "Order submitted"),
new TransferStatusModel(Convert.ToInt16(TransferStatusType.OrderConfirmed), "Order confirmed"), foreach (var transfer in TransferDataList)
new TransferStatusModel(Convert.ToInt16(TransferStatusType.AssignedToDriver), "Assigned to driver"),
new TransferStatusModel(Convert.ToInt16(TransferStatusType.DriverConfirmed), "Driver confirmed"),
new TransferStatusModel(Convert.ToInt16(TransferStatusType.DriverEnRoute), "Driver enroute"),
new TransferStatusModel(Convert.ToInt16(TransferStatusType.PassengerPickup), "Passenger in car"),
new TransferStatusModel(Convert.ToInt16(TransferStatusType.Finished), "Finished"),
new TransferStatusModel(Convert.ToInt16(TransferStatusType.UserCanceled), "User cancelled"),
new TransferStatusModel(Convert.ToInt16(TransferStatusType.AdminDenied), "Admin cancelled")
};
TransferData = (await transferDataService.GetTransfersAsync()).OrderBy(x => x.TransferStatusType).ThenByDescending(x => x.OrderId).ToList();
AppoinmentData = new List<AppointmentModel>();
foreach (var transfer in TransferData)
{ {
// var bnm = DataStorage.CreateAppointmentItem(); // var bnm = DataStorage.CreateAppointmentItem();
// bnm.Start = transfer.Appointment; // bnm.Start = transfer.Appointment;
@ -398,11 +396,12 @@
// bnm.Location = transfer.FromAddress; // bnm.Location = transfer.FromAddress;
// bnm.Subject = "Simple transfer"; // bnm.Subject = "Simple transfer";
AppoinmentData.Add(new AppointmentModel { StartDate = transfer.Appointment, EndDate=transfer.Appointment.AddMinutes(30), Description = $"{transfer.FullName}, {transfer.ToAddress}", Location = transfer.FromAddress, Caption = "Simple transfer" }); AppointmentModels.Add(new AppointmentModel { StartDate = transfer.Appointment, EndDate=transfer.Appointment.AddMinutes(30), Description = $"{transfer.FullName}, {transfer.ToAddress}", Location = transfer.FromAddress, Caption = "Simple transfer" });
} }
DataStorage = new DxSchedulerDataStorage(); _dataStorage = new DxSchedulerDataStorage
DataStorage.AppointmentMappings = new DxSchedulerAppointmentMappings() {
AppointmentMappings = new DxSchedulerAppointmentMappings()
{ {
Type = "AppointmentType", Type = "AppointmentType",
Start = "StartDate", Start = "StartDate",
@ -414,12 +413,13 @@
LabelId = "Label", LabelId = "Label",
StatusId = "Status", StatusId = "Status",
RecurrenceInfo = "Recurrence" RecurrenceInfo = "Recurrence"
}; },
DataStorage.AppointmentsSource = AppoinmentData;
AppointmentsSource = AppointmentModels
};
base.OnInitialized(); base.OnInitialized();
} }
void ColumnChooserButton_Click() void ColumnChooserButton_Click()
@ -441,13 +441,12 @@
void AutoCollapseDetailRow_Changed(bool newValue) void AutoCollapseDetailRow_Changed(bool newValue)
{ {
AutoCollapseDetailRow = newValue; AutoCollapseDetailRow = newValue;
if (newValue) if (!newValue) return;
{
Grid2.BeginUpdate(); Grid2.BeginUpdate();
Grid2.CollapseAllDetailRows(); Grid2.CollapseAllDetailRows();
Grid2.ExpandDetailRow(0); Grid2.ExpandDetailRow(0);
Grid2.EndUpdate(); Grid2.EndUpdate();
}
} }
} }

View File

@ -22,10 +22,10 @@
@using TIAM.Core.Loggers @using TIAM.Core.Loggers
@layout AdminLayout @layout AdminLayout
@inject IEnumerable<IAcLogWriterClientBase> LogWriters @inject IEnumerable<IAcLogWriterClientBase> LogWriters
@inject IStringLocalizer<TIAMResources> localizer @inject IStringLocalizer<TIAMResources> Localizer
@inject ISessionService sessionService @inject ISessionService SessionService
@inject IWizardProcessor wizardProcessor @inject IWizardProcessor WizardProcessor
@inject IUserDataService userDataService @inject IUserDataService UserDataService
<PageTitle>Transfers</PageTitle> <PageTitle>Transfers</PageTitle>
<div class="text-center m-5"> <div class="text-center m-5">
@ -43,9 +43,9 @@
Closing="EulaPopupClosing" Closing="EulaPopupClosing"
Closed="EulaPopupClosed"> Closed="EulaPopupClosed">
<BodyContentTemplate> <BodyContentTemplate>
<InputWizard Data=@messageWizardModel <InputWizard Data=@MessageWizardModel
OnSubmit="SubmitForm" OnSubmit="SubmitForm"
IgnoreReflection=@ignoreList IgnoreReflection=@IgnoreList
TitleResourceString="NewMessage" TitleResourceString="NewMessage"
SubtitleResourceString="NewMessageSubtitle" SubtitleResourceString="NewMessageSubtitle"
SubmitButtonText="ButtonSend"></InputWizard> SubmitButtonText="ButtonSend"></InputWizard>
@ -99,36 +99,36 @@
var keyField = context.Value; var keyField = context.Value;
var keyItem = (UserModelDtoDetail)context.DataItem; var keyItem = (UserModelDtoDetail)context.DataItem;
string buttonText = "Contact"; var buttonText = "Contact";
<DxButton Click="() => SendMail(keyItem)" Text="@buttonText" RenderStyle="ButtonRenderStyle.Primary" /> <DxButton Click="() => SendMail(keyItem)" Text="@buttonText" RenderStyle="ButtonRenderStyle.Primary" />
} }
</CellDisplayTemplate> </CellDisplayTemplate>
</DxGridDataColumn> </DxGridDataColumn>
</Columns> </Columns>
<DetailRowTemplate> <DetailRowTemplate>
<UserGrid_MasterDetail_NestedGrid_UserProductMapping Customer="(UserModelDtoDetail)context.DataItem" KeyboardNavigationEnabled="true" /> <UserGrid_MasterDetail_NestedGrid_UserProductMapping UserModelDtoDetail="(UserModelDtoDetail)context.DataItem" KeyboardNavigationEnabled="true" />
</DetailRowTemplate> </DetailRowTemplate>
<EditFormTemplate Context="EditFormContext"> <EditFormTemplate Context="EditFormContext">
@{ @{
var transfer2 = (UserModelDtoDetail)EditFormContext.EditModel; var transfer2 = (UserModelDtoDetail)EditFormContext.EditModel;
} }
<DxFormLayout CssClass="w-100"> <DxFormLayout CssClass="w-100">
<DxFormLayoutItem Caption=@localizer.GetString(ResourceKeys.EmailAddress) ColSpanMd="4"> <DxFormLayoutItem Caption=@Localizer.GetString(ResourceKeys.EmailAddress) ColSpanMd="4">
@EditFormContext.GetEditor("UserDto.EmailAddress") @EditFormContext.GetEditor("UserDto.EmailAddress")
</DxFormLayoutItem> </DxFormLayoutItem>
<DxFormLayoutItem Caption=@localizer.GetString(ResourceKeys.EmailAddress) ColSpanMd="4"> <DxFormLayoutItem Caption=@Localizer.GetString(ResourceKeys.EmailAddress) ColSpanMd="4">
@EditFormContext.GetEditor("UserDto.EmailAddress") @EditFormContext.GetEditor("UserDto.EmailAddress")
</DxFormLayoutItem> </DxFormLayoutItem>
<DxFormLayoutItem Caption=@localizer.GetString(ResourceKeys.ConfirmEmail) ColSpanMd="4"> <DxFormLayoutItem Caption=@Localizer.GetString(ResourceKeys.ConfirmEmail) ColSpanMd="4">
@EditFormContext.GetEditor("UserDto.EmailConfirmed") @EditFormContext.GetEditor("UserDto.EmailConfirmed")
</DxFormLayoutItem> </DxFormLayoutItem>
<DxFormLayoutItem Caption=@localizer.GetString(ResourceKeys.PhoneNumber) ColSpanMd="4"> <DxFormLayoutItem Caption=@Localizer.GetString(ResourceKeys.PhoneNumber) ColSpanMd="4">
@EditFormContext.GetEditor("UserDto.PhoneNumber") @EditFormContext.GetEditor("UserDto.PhoneNumber")
</DxFormLayoutItem> </DxFormLayoutItem>
<DxFormLayoutItem Caption=@localizer.GetString(ResourceKeys.FirstName) ColSpanMd="4"> <DxFormLayoutItem Caption=@Localizer.GetString(ResourceKeys.FirstName) ColSpanMd="4">
@EditFormContext.GetEditor("Profile.FirstName") @EditFormContext.GetEditor("Profile.FirstName")
</DxFormLayoutItem> </DxFormLayoutItem>
<DxFormLayoutItem Caption=@localizer.GetString(ResourceKeys.LastName) ColSpanMd="4"> <DxFormLayoutItem Caption=@Localizer.GetString(ResourceKeys.LastName) ColSpanMd="4">
@EditFormContext.GetEditor("Profile.LastName") @EditFormContext.GetEditor("Profile.LastName")
</DxFormLayoutItem> </DxFormLayoutItem>
@ -152,68 +152,68 @@
</div> </div>
@code { @code {
private ILogger _logger; private LoggerClient<ManageUsers> _logger;
public UserModelDtoDetail myModel = new UserModelDtoDetail(); //public UserModelDtoDetail UserModelDtoDetail = new();
public List<UserModelDtoDetail>? UserData { get; set; } public List<UserModelDtoDetail> UserData { get; set; }
bool PopupVisible { get; set; } bool PopupVisible { get; set; }
IGrid? Grid { get; set; } IGrid Grid { get; set; }
object? MasterGridData { get; set; } //object? MasterGridData { get; set; }
bool AutoCollapseDetailRow { get; set; } bool AutoCollapseDetailRow { get; set; }
public List<string> ignoreList = new List<string> public List<string> IgnoreList =
{ [
"ReceiverEmailAddress", "ReceiverEmailAddress",
"ReceiverId", "ReceiverId",
"SenderEmailAddress", "SenderEmailAddress",
"SenderId", "SenderId",
"ContextId" "ContextId"
}; ];
public MessageWizardModel messageWizardModel = new MessageWizardModel(); public MessageWizardModel MessageWizardModel = new MessageWizardModel();
async void SendMail(UserModelDtoDetail item)
async void SendMail(UserModelDtoDetail Item)
{ {
var user = await userDataService.GetUserDetailByIdAsync(Item.Id); var user = await UserDataService.GetUserDetailByIdAsync(item.Id);
_logger.Info($"Sending mail to {user.UserDto.EmailAddress}"); _logger.Info($"Sending mail to {user.UserDto.EmailAddress}");
messageWizardModel.ReceiverId = user.Id; MessageWizardModel.ReceiverId = user.Id;
messageWizardModel.ReceiverEmailAddress = user.UserDto.EmailAddress; MessageWizardModel.ReceiverEmailAddress = user.UserDto.EmailAddress;
messageWizardModel.SenderId = sessionService.User.UserId; MessageWizardModel.SenderId = SessionService.User.UserId;
messageWizardModel.SenderEmailAddress = sessionService.User.Email; MessageWizardModel.SenderEmailAddress = SessionService.User.Email;
_logger.Info($"Sending mail to {messageWizardModel.ReceiverEmailAddress} from {messageWizardModel.SenderId}");
_logger.Info($"Sending mail to {MessageWizardModel.ReceiverEmailAddress} from {MessageWizardModel.SenderId}");
PopupVisible = true; PopupVisible = true;
} }
void CancelCreateClick() void CancelCreateClick()
{ {
PopupVisible = false; PopupVisible = false;
} }
void EulaPopupClosed() void EulaPopupClosed()
{ {
//cancel clicked //cancel clicked
} }
void EulaPopupClosing(PopupClosingEventArgs args) void EulaPopupClosing(PopupClosingEventArgs args)
{ {
//myModel = new TransferWizardModel(); //myModel = new TransferWizardModel();
messageWizardModel = new MessageWizardModel(); MessageWizardModel = new MessageWizardModel();
} }
//----------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------
public async Task SubmitForm(object Result) public async Task SubmitForm(object result)
{ {
var email = await wizardProcessor.ProcessWizardAsync<MessageWizardModel>(Result.GetType(), Result); var email = await WizardProcessor.ProcessWizardAsync<MessageWizardModel>(result.GetType(), result);
_logger.Info($"Submitted nested form: {Result.GetType().FullName}"); _logger.Info($"Submitted nested form: {result.GetType().FullName}");
} }
void Grid_CustomizeElement(GridCustomizeElementEventArgs e) void Grid_CustomizeElement(GridCustomizeElementEventArgs e)
@ -222,7 +222,7 @@
{ {
e.CssClass = "bg-alt"; e.CssClass = "bg-alt";
} }
if (e.ElementType == GridElementType.HeaderCell) else if (e.ElementType == GridElementType.HeaderCell)
{ {
e.Style = "background-color: rgba(0, 0, 0, 0.08); font-style=bold"; e.Style = "background-color: rgba(0, 0, 0, 0.08); font-style=bold";
@ -232,50 +232,54 @@
void Grid_CustomizeEditModel(GridCustomizeEditModelEventArgs e) void Grid_CustomizeEditModel(GridCustomizeEditModelEventArgs e)
{ {
if (e.IsNew) if (!e.IsNew) return;
var userEditModel = (UserModelDtoDetail)e.EditModel; //TODO not valid cast
userEditModel.Id = Guid.NewGuid();
userEditModel.UserDto = new UserDtoDetail
{ {
var userEditModel = (UserModelDtoDetail)e.EditModel; //TODO not valid cast AffiliateId = Guid.NewGuid(),
userEditModel.Id = Guid.NewGuid(); EmailAddress = "",
PhoneNumber = ""
};
userEditModel.UserDto = new UserDtoDetail(); userEditModel.Profile = new ProfileDto
userEditModel.UserDto.AffiliateId = Guid.NewGuid(); {
userEditModel.UserDto.EmailAddress = ""; Name = "New user"
userEditModel.UserDto.PhoneNumber = ""; };
userEditModel.Profile = new ProfileDto();
userEditModel.Profile.Name = "New user";
userEditModel.Products = new List<Product>(); userEditModel.Products = [];
userEditModel.ServiceProviders = [];
userEditModel.ServiceProviders = new List<TiamServiceProvider>(); userEditModel.UserProductMappings = [];
userEditModel.UserProductMappings = new List<UserProductMapping>();
}
} }
async Task Grid_EditModelSaving(GridEditModelSavingEventArgs e) async Task Grid_EditModelSaving(GridEditModelSavingEventArgs e)
{ {
var userModelDtoDetail = ((UserModelDtoDetail)e.EditModel);
if (e.IsNew) if (e.IsNew)
{ {
//add new orderData to orderData array //add new orderData to orderData array
RegistrationModel registration = new RegistrationModel(); var registration = new RegistrationModel();
//TODO: Refractor to userDataService //TODO: Refractor to userDataService
Random random = new Random();
string chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; var random = new Random();
string password = new string(Enumerable.Repeat(chars, 10) const string chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
var password = new string(Enumerable.Repeat(chars, 10)
.Select(s => s[random.Next(s.Length)]).ToArray()); .Select(s => s[random.Next(s.Length)]).ToArray());
registration.Email = ((UserModelDtoDetail)e.EditModel).UserDto.EmailAddress; registration.Email = userModelDtoDetail.UserDto.EmailAddress;
registration.PhoneNumber = ((UserModelDtoDetail)e.EditModel).UserDto.PhoneNumber; registration.PhoneNumber = userModelDtoDetail.UserDto.PhoneNumber;
registration.Password = password; registration.Password = password;
registration.ReferralId = null; registration.ReferralId = null;
await UserDataService.CreateGuestUser(registration);
await userDataService.CreateGuestUser(registration);
_logger.Info("New user created added"); _logger.Info("New user created added");
} }
else else
{ {
_logger.Info("orderData updated at id " + ((UserModelDtoDetail)e.EditModel).Id); _logger.Info("orderData updated at id " + userModelDtoDetail.Id);
//await transferDataService.UpdateTransferAsync((TransferWizardModel)e.EditModel); //await transferDataService.UpdateTransferAsync((TransferWizardModel)e.EditModel);
//modify transferData where transferData.Id == e.EditModel.Id //modify transferData where transferData.Id == e.EditModel.Id
@ -292,8 +296,10 @@
// } // }
// } // }
//TODO: ne a teljes grid-et refresh-eljük, elég lenne csak az adott sort! - J.
await UpdateDataAsync(); await UpdateDataAsync();
} }
async Task Grid_DataItemDeleting(GridDataItemDeletingEventArgs e) async Task Grid_DataItemDeleting(GridDataItemDeletingEventArgs e)
{ {
//await NwindDataService.RemoveEmployeeAsync((EditableEmployee)e.DataItem); //await NwindDataService.RemoveEmployeeAsync((EditableEmployee)e.DataItem);
@ -301,10 +307,11 @@
_logger.Info("orderData deleted"); _logger.Info("orderData deleted");
//await UpdateDataAsync(); //await UpdateDataAsync();
} }
async Task UpdateDataAsync() async Task UpdateDataAsync()
{ {
//refresh grid //refresh grid
UserData = await userDataService.GetUsersWithDetailsAsync(); UserData = (await UserDataService.GetUsersWithDetailsAsync()).OrderBy(x => x.Profile?.Name).ToList();
_logger.Info("orderData grid refreshed"); _logger.Info("orderData grid refreshed");
} }
@ -312,31 +319,31 @@
{ {
_logger = new LoggerClient<ManageUsers>(LogWriters.ToArray()); _logger = new LoggerClient<ManageUsers>(LogWriters.ToArray());
UserData = (await userDataService.GetUsersWithDetailsAsync())?.OrderBy(x => x.Profile?.Name).ToList(); UserData = (await UserDataService.GetUsersWithDetailsAsync()).OrderBy(x => x.Profile?.Name).ToList();
base.OnInitialized(); base.OnInitialized();
} }
void ColumnChooserButton_Click() void ColumnChooserButton_Click()
{ {
Grid?.ShowColumnChooser(); Grid.ShowColumnChooser();
} }
protected override void OnAfterRender(bool firstRender) protected override void OnAfterRender(bool firstRender)
{ {
if (firstRender) if (firstRender)
{ {
Grid?.ExpandDetailRow(0); Grid.ExpandDetailRow(0);
} }
} }
void AutoCollapseDetailRow_Changed(bool newValue) void AutoCollapseDetailRow_Changed(bool newValue)
{ {
AutoCollapseDetailRow = newValue; AutoCollapseDetailRow = newValue;
if (newValue)
{ if (!newValue) return;
Grid?.BeginUpdate();
Grid?.CollapseAllDetailRows(); Grid.BeginUpdate();
Grid?.ExpandDetailRow(0); Grid.CollapseAllDetailRows();
Grid?.EndUpdate(); Grid.ExpandDetailRow(0);
} Grid.EndUpdate();
} }
} }

View File

@ -35,7 +35,7 @@
Click="ColumnChooserButton_Click" /> Click="ColumnChooserButton_Click" />
</div> </div>
<DxGrid @ref="Grid" <DxGrid @ref="Grid"
Data="TransferDataFromDb" Data="_transferDestinationWizardModels"
PageSize="8" PageSize="8"
KeyFieldName="Id" KeyFieldName="Id"
ValidationEnabled="false" ValidationEnabled="false"

View File

@ -20,39 +20,46 @@ namespace TIAMSharedUI.Pages.User.SysAdmins
IGrid Grid { get; set; } IGrid Grid { get; set; }
//object? TransferData { get; set; } //object? TransferData { get; set; }
public TransferDestinationWizardModel myModel = new TransferDestinationWizardModel(); //public TransferDestinationWizardModel TransferDestinationWizardModel = new();
bool PopupVisible { get; set; } bool PopupVisible { get; set; }
public List<string> ignoreList = new List<string> public List<string> IgnoreList = ["ReceiverId"];
{
"ReceiverId"
};
public MessageWizardModel messageWizardModel = new MessageWizardModel(); public MessageWizardModel MessageWizardModel = new();
[Inject] [Inject]
public ITransferDataService transferDataService { get; set; } public ITransferDataService TransferDataService { get; set; }
/*object? TransferData = new TransferDestinationWizardModel[]
{
new TransferDestinationWizardModel(Guid.NewGuid(), "Liszt Ferenc Airport", "International airport of Budapest", "1185, Budapest, Liszt Ferenc Repülőtér" ),
new TransferDestinationWizardModel(Guid.NewGuid(), "Buda Castle", "Historical site in the heart of Budapest", "1014 Budapest, Szent György tér 2" ),
new TransferDestinationWizardModel(Guid.NewGuid(), "Hungarian National Museum", "Historical site in the heart of Budapest", "1088 Budapest, Múzeum krt. 14-16" ),
new TransferDestinationWizardModel(Guid.NewGuid(), "Parliament of Hungary", "Historical site in the heart of Budapest", "1055 Budapest, Kossuth Lajos tér 1-3" ),
new TransferDestinationWizardModel(Guid.NewGuid(), "Heroes square", "Historical site in the heart of Budapest", "1146 Budapest, Hősök tere" ),
new TransferDestinationWizardModel(Guid.NewGuid(), "Gellert Hill", "Historical site in the heart of Budapest", "1118 Budapest, Gellérthegy" ),
new TransferDestinationWizardModel(Guid.NewGuid(), "Margaret Island", "Historical site in the heart of Budapest", "1138 Budapest, Margitsziget" ),
};*/
private LoggerClient<TransferDestinations> _logger; private LoggerClient<TransferDestinations> _logger;
object? TransferDataFromDb = new TransferDestinationWizardModel[] { }; private readonly List<TransferDestinationWizardModel> _transferDestinationWizardModels = [];
void CancelCreateClick() void CancelCreateClick()
{ {
PopupVisible = false; PopupVisible = false;
} }
void EulaPopupClosed() void EulaPopupClosed()
{ {
//cancel clicked //cancel clicked
} }
void EulaPopupClosing(PopupClosingEventArgs args) void EulaPopupClosing(PopupClosingEventArgs args)
{ {
//myModel = new TransferWizardModel(); //myModel = new TransferWizardModel();
messageWizardModel = new MessageWizardModel(); MessageWizardModel = new MessageWizardModel();
} }
//----------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------
@ -73,15 +80,13 @@ namespace TIAMSharedUI.Pages.User.SysAdmins
void Grid_CustomizeEditModel(GridCustomizeEditModelEventArgs e) void Grid_CustomizeEditModel(GridCustomizeEditModelEventArgs e)
{ {
if (e.IsNew) if (!e.IsNew) return;
{
var newDestination = (TransferDestinationWizardModel)e.EditModel;
newDestination.Id = Guid.NewGuid().ToString();
newDestination.Name = "Destination name";
newDestination.Description = "Type some description here";
newDestination.AddressString = "The address of the destination";
} var newDestination = (TransferDestinationWizardModel)e.EditModel;
newDestination.Id = Guid.NewGuid().ToString();
newDestination.Name = "Destination name";
newDestination.Description = "Type some description here";
newDestination.AddressString = "The address of the destination";
} }
void Grid_CustomizeElement(GridCustomizeElementEventArgs e) void Grid_CustomizeElement(GridCustomizeElementEventArgs e)
@ -91,14 +96,11 @@ namespace TIAMSharedUI.Pages.User.SysAdmins
async Task Grid_EditModelSaving(GridEditModelSavingEventArgs e) async Task Grid_EditModelSaving(GridEditModelSavingEventArgs e)
{ {
var transferDestinationWizardModel = (TransferDestinationWizardModel)e.EditModel;
if (e.IsNew) if (e.IsNew)
{ {
//add new row to grid await TransferDataService.CreateTransferDestination(TransferDestinationWizardModel.CopyToTransferDestination(transferDestinationWizardModel));
myModel = (TransferDestinationWizardModel)e.EditModel;
//add new orderData to orderData array
//await NwindDataService.InsertEmployeeAsync((EditableEmployee)e.EditModel);
await transferDataService.CreateTransferDestination(TransferDestinationWizardModel.CopyToTransferDestination(myModel));
//await transferDataService.CreateTransferDestination(new TransferDestination //await transferDataService.CreateTransferDestination(new TransferDestination
/*{ /*{
Id = Guid.NewGuid(), Id = Guid.NewGuid(),
@ -111,7 +113,7 @@ namespace TIAMSharedUI.Pages.User.SysAdmins
_logger.Info("New orderData added"); _logger.Info("New orderData added");
//add mymodel to transferData array //add mymodel to transferData array
TransferDataFromDb = ((TransferDestinationWizardModel[])TransferDataFromDb).Append(myModel).ToArray(); _transferDestinationWizardModels.Add(transferDestinationWizardModel);
} }
else else
{ {
@ -119,45 +121,41 @@ namespace TIAMSharedUI.Pages.User.SysAdmins
//modify transferData where transferData.Id == e.EditModel.Id //modify transferData where transferData.Id == e.EditModel.Id
//get transfer from TransferData by Id //get transfer from TransferData by Id
var abg = ((TransferDestinationWizardModel[])TransferDataFromDb).Length; //var abg = ((TransferDestinationWizardModel[])TransferDataFromDb).Length;
foreach (var transferToModify in (TransferDestinationWizardModel[])TransferDataFromDb) foreach (var transferToModify in _transferDestinationWizardModels)
{ {
myModel = (TransferDestinationWizardModel)e.EditModel; if (transferToModify.Id != transferDestinationWizardModel.Id)
continue;
if (transferToModify.Id == myModel.Id) transferToModify.Id = transferDestinationWizardModel.Id;
{ transferToModify.Name = transferDestinationWizardModel.Name;
transferToModify.Description = transferDestinationWizardModel.Description;
transferToModify.Id = myModel.Id; transferToModify.AddressString = transferDestinationWizardModel.AddressString;
transferToModify.Name = myModel.Name; transferToModify.Price = transferDestinationWizardModel.Price;
transferToModify.Description = myModel.Description; transferToModify.PriceType = transferDestinationWizardModel.PriceType;
transferToModify.AddressString = myModel.AddressString;
transferToModify.Price = myModel.Price;
transferToModify.PriceType = myModel.PriceType;
await transferDataService.UpdateTransferDestination(TransferDestinationWizardModel.CopyToTransferDestination(transferToModify)); await TransferDataService.UpdateTransferDestination(TransferDestinationWizardModel.CopyToTransferDestination(transferToModify));
}
} }
} }
//await NwindDataService.UpdateEmployeeAsync((EditableEmployee)e.DataItem, (EditableEmployee)e.EditModel); //TODO: ne a teljes grid-et refresh-eljük, elég lenne csak az adott sort! - J.
await UpdateDataAsync(); await UpdateDataAsync();
} }
async Task Grid_DataItemDeleting(GridDataItemDeletingEventArgs e) async Task Grid_DataItemDeleting(GridDataItemDeletingEventArgs e)
{ {
//await NwindDataService.RemoveEmployeeAsync((EditableEmployee)e.DataItem);
//remove orderData from orderData array //remove orderData from orderData array
_logger.Info("orderData deleted"); _logger.Info("orderData deleted");
//await UpdateDataAsync(); //await UpdateDataAsync();
} }
async Task UpdateDataAsync() async Task UpdateDataAsync()
{ {
//DataSource = await NwindDataService.GetEmployeesEditableAsync(); //await TransferDataService.GetDestinationsAsync();
await transferDataService.GetDestinationsAsync();
//refresh grid //refresh grid
await FillGridDataSource();
_logger.Info("orderData grid refreshed"); _logger.Info("orderData grid refreshed");
} }
@ -167,24 +165,26 @@ namespace TIAMSharedUI.Pages.User.SysAdmins
_logger = new LoggerClient<TransferDestinations>(LogWriters.ToArray()); _logger = new LoggerClient<TransferDestinations>(LogWriters.ToArray());
var a = await transferDataService.GetDestinationsAsync(); await FillGridDataSource();
_logger.Info($"TransferDataFromDb: {((TransferDestinationWizardModel[])TransferDataFromDb).Length}"); }
foreach (var item in a)
private async Task FillGridDataSource()
{
var destinations = await TransferDataService.GetDestinationsAsync();
foreach (var item in destinations)
{ {
//add new transferwizardmodel to transferData array _transferDestinationWizardModels.Add(new TransferDestinationWizardModel(item.Id, item.Name, item.Description, item.AddressString, item.Price, item.Price2, item.Price3, item.Address));
TransferDataFromDb = ((TransferDestinationWizardModel[])TransferDataFromDb).Append(
new TransferDestinationWizardModel(item.Id, item.Name, item.Description, item.AddressString, item.Price, item.Price2, item.Price3, item.Address)).ToArray();
_logger.DetailConditional($"TransferDataFromDb: {item.Name}");
_logger.DetailConditional($"_transferDestinationWizardModels add: {item.Name}");
} }
_logger.Info($"TransferDataFromDb: {((TransferDestinationWizardModel[])TransferDataFromDb).Length}");
_logger.Info($"_transferDestinationWizardModels: {_transferDestinationWizardModels.Count}");
} }
void ColumnChooserButton_Click() void ColumnChooserButton_Click()
{ {
Grid.ShowColumnChooser(); Grid.ShowColumnChooser();
} }
} }
} }

View File

@ -8,13 +8,13 @@
@using TIAMWebApp.Shared.Application.Utility @using TIAMWebApp.Shared.Application.Utility
@using AyCode.Services.Loggers @using AyCode.Services.Loggers
@using TIAM.Core.Loggers @using TIAM.Core.Loggers
@inject IServiceProviderDataService serviceProviderDataService @inject IServiceProviderDataService ServiceProviderDataService
@inject IEnumerable<IAcLogWriterClientBase> LogWriters @inject IEnumerable<IAcLogWriterClientBase> LogWriters
<div class="mb-2"> <div class="mb-2">
UserProductMapping UserProductMapping
</div> </div>
<DxGrid Data="DetailGridData" <DxGrid Data="_detailGridData"
PageSize="5" PageSize="5"
AutoExpandAllGroupRows="true" AutoExpandAllGroupRows="true"
KeyboardNavigationEnabled="KeyboardNavigationEnabled" KeyboardNavigationEnabled="KeyboardNavigationEnabled"
@ -42,7 +42,7 @@
@EditFormContext.GetEditor("UserId") @EditFormContext.GetEditor("UserId")
</DxFormLayoutItem> </DxFormLayoutItem>
<DxFormLayoutItem Caption="Product:" ColSpanMd="4"> <DxFormLayoutItem Caption="Product:" ColSpanMd="4">
<DxComboBox Data="@AvailableServices" TextFieldName="Name" @bind-Value="((UserProductMapping)EditFormContext.EditModel).ProductId" /> <DxComboBox Data="@_availableServices" TextFieldName="Name" @bind-Value="((UserProductMapping)EditFormContext.EditModel).ProductId" />
</DxFormLayoutItem> </DxFormLayoutItem>
<DxFormLayoutItem Caption="Permissions" ColSpanMd="4"> <DxFormLayoutItem Caption="Permissions" ColSpanMd="4">
@EditFormContext.GetEditor("Permissions") @EditFormContext.GetEditor("Permissions")
@ -59,11 +59,11 @@
[Parameter] [Parameter]
public bool KeyboardNavigationEnabled { get; set; } public bool KeyboardNavigationEnabled { get; set; }
[Parameter] [Parameter]
public UserModelDtoDetail Customer { get; set; } public UserModelDtoDetail UserModelDtoDetail { get; set; }
List<TiamServiceProvider> DetailGridData; List<TiamServiceProvider> _detailGridData;
List<TiamServiceProvider> AvailableServices; List<TiamServiceProvider> _availableServices;
public UserModelDtoDetail UserInfo; public UserModelDtoDetail UserInfo;
@ -73,27 +73,24 @@
{ {
_logger = new LoggerClient<UserGrid_MasterDetail_NestedGrid_ServiceProviders>(LogWriters.ToArray()); _logger = new LoggerClient<UserGrid_MasterDetail_NestedGrid_ServiceProviders>(LogWriters.ToArray());
//get userproductmappings by customer id _detailGridData = UserModelDtoDetail.ServiceProviders ?? new List<TiamServiceProvider>();
if (Customer.ServiceProviders == null) _availableServices = await ServiceProviderDataService.GetServiceProvidersAsync();
DetailGridData = new List<TiamServiceProvider>();
else
DetailGridData = Customer.ServiceProviders;
AvailableServices = await serviceProviderDataService.GetServiceProvidersAsync(); _logger.Info($"DetailGridData: {_detailGridData.Count}");
_logger.Info($"DetailGridData: {DetailGridData.Count}");
} }
void CustomizeEditModel(GridCustomizeEditModelEventArgs e) void CustomizeEditModel(GridCustomizeEditModelEventArgs e)
{ {
if (e.IsNew) if (!e.IsNew) return;
{
UserProductMapping newProductMapping = new UserProductMapping();
newProductMapping.ProductId = Guid.NewGuid();
newProductMapping.UserId = Customer.Id;
newProductMapping.Permissions = 1;
e.EditModel = newProductMapping; var newProductMapping = new UserProductMapping
} {
ProductId = Guid.NewGuid(),
UserId = UserModelDtoDetail.Id,
Permissions = 1
};
e.EditModel = newProductMapping;
} }
async Task EditModelSaving(GridEditModelSavingEventArgs e) async Task EditModelSaving(GridEditModelSavingEventArgs e)
@ -101,24 +98,21 @@
if (e.IsNew) if (e.IsNew)
//add new orderData to orderData array //add new orderData to orderData array
_logger.Info("New orderData added"); _logger.Info("New orderData added");
//await NwindDataService.InsertEmployeeAsync((EditableEmployee)e.EditModel);
else else
_logger.Info("orderData updated"); _logger.Info("orderData updated");
//await NwindDataService.UpdateEmployeeAsync((EditableEmployee)e.DataItem, (EditableEmployee)e.EditModel);
await UpdateDataAsync(); await UpdateDataAsync();
} }
async Task DataItemDeleting(GridDataItemDeletingEventArgs e) async Task DataItemDeleting(GridDataItemDeletingEventArgs e)
{ {
//await NwindDataService.RemoveEmployeeAsync((EditableEmployee)e.DataItem);
//remove orderData from orderData array //remove orderData from orderData array
_logger.Info("orderData deleted"); _logger.Info("orderData deleted");
//await UpdateDataAsync(); //await UpdateDataAsync();
} }
async Task UpdateDataAsync() async Task UpdateDataAsync()
{ {
//DataSource = await NwindDataService.GetEmployeesEditableAsync();
//refresh grid //refresh grid
_logger.Info("orderData grid refreshed"); _logger.Info("orderData grid refreshed");
} }

View File

@ -8,14 +8,13 @@
@using TIAM.Core.Loggers @using TIAM.Core.Loggers
@using AyCode.Core.Loggers @using AyCode.Core.Loggers
@using AyCode.Services.Loggers @using AyCode.Services.Loggers
@inject IUserDataService NwindDataService @inject IServiceProviderDataService ServiceProviderDataService
@inject IServiceProviderDataService serviceProviderDataService
@inject IEnumerable<IAcLogWriterClientBase> LogWriters @inject IEnumerable<IAcLogWriterClientBase> LogWriters
<div class="mb-2"> <div class="mb-2">
UserProductMapping UserProductMapping
</div> </div>
<DxGrid Data="DetailGridData" <DxGrid Data="_detailGridData"
PageSize="5" PageSize="5"
AutoExpandAllGroupRows="true" AutoExpandAllGroupRows="true"
KeyboardNavigationEnabled="KeyboardNavigationEnabled" KeyboardNavigationEnabled="KeyboardNavigationEnabled"
@ -43,7 +42,7 @@
@EditFormContext.GetEditor("UserId") @EditFormContext.GetEditor("UserId")
</DxFormLayoutItem> </DxFormLayoutItem>
<DxFormLayoutItem Caption="Product:" ColSpanMd="4"> <DxFormLayoutItem Caption="Product:" ColSpanMd="4">
<DxComboBox Data="@AvailableProducts" TextFieldName="Name" @bind-Value="((UserProductMapping)EditFormContext.EditModel).ProductId" /> <DxComboBox Data="@_availableProducts" TextFieldName="Name" @bind-Value="((UserProductMapping)EditFormContext.EditModel).ProductId" />
</DxFormLayoutItem> </DxFormLayoutItem>
<DxFormLayoutItem Caption="Permissions" ColSpanMd="4"> <DxFormLayoutItem Caption="Permissions" ColSpanMd="4">
@EditFormContext.GetEditor("Permissions") @EditFormContext.GetEditor("Permissions")
@ -60,40 +59,35 @@
[Parameter] [Parameter]
public bool KeyboardNavigationEnabled { get; set; } public bool KeyboardNavigationEnabled { get; set; }
[Parameter] [Parameter]
public UserModelDtoDetail Customer { get; set; } public UserModelDtoDetail UserModelDtoDetail { get; set; }
private ILogger _logger; private LoggerClient<UserGrid_MasterDetail_NestedGrid_UserProductMapping> _logger;
List<UserProductMapping> DetailGridData;
List<Product> AvailableProducts; List<UserProductMapping> _detailGridData;
List<Product> _availableProducts;
public UserModelDtoDetail UserInfo;
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
_logger = new LoggerClient<UserGrid_MasterDetail_NestedGrid_UserProductMapping>(LogWriters.ToArray()); _logger = new LoggerClient<UserGrid_MasterDetail_NestedGrid_UserProductMapping>(LogWriters.ToArray());
//get userproductmappings by customer id _detailGridData = UserModelDtoDetail.UserProductMappings ?? new List<UserProductMapping>();
if (Customer.UserProductMappings == null) _availableProducts = await ServiceProviderDataService.GetAllProductsAsync();
DetailGridData = new List<UserProductMapping>();
else
DetailGridData = Customer.UserProductMappings;
AvailableProducts = await serviceProviderDataService.GetAllProductsAsync(); _logger.Info($"DetailGridData: {_detailGridData.Count}");
_logger.Info($"DetailGridData: {DetailGridData.Count}");
} }
void CustomizeEditModel(GridCustomizeEditModelEventArgs e) void CustomizeEditModel(GridCustomizeEditModelEventArgs e)
{ {
if (e.IsNew) if (!e.IsNew) return;
{
UserProductMapping newProductMapping = new UserProductMapping();
newProductMapping.ProductId = Guid.NewGuid();
newProductMapping.UserId = Customer.Id;
newProductMapping.Permissions = 1;
e.EditModel = newProductMapping; var newProductMapping = new UserProductMapping
} {
ProductId = Guid.NewGuid(),
UserId = UserModelDtoDetail.Id,
Permissions = 1
};
e.EditModel = newProductMapping;
} }
async Task EditModelSaving(GridEditModelSavingEventArgs e) async Task EditModelSaving(GridEditModelSavingEventArgs e)
@ -101,24 +95,21 @@
if (e.IsNew) if (e.IsNew)
//add new orderData to orderData array //add new orderData to orderData array
_logger.Info("New orderData added"); _logger.Info("New orderData added");
//await NwindDataService.InsertEmployeeAsync((EditableEmployee)e.EditModel);
else else
_logger.Info("orderData updated"); _logger.Info("orderData updated");
//await NwindDataService.UpdateEmployeeAsync((EditableEmployee)e.DataItem, (EditableEmployee)e.EditModel);
await UpdateDataAsync(); await UpdateDataAsync();
} }
async Task DataItemDeleting(GridDataItemDeletingEventArgs e) async Task DataItemDeleting(GridDataItemDeletingEventArgs e)
{ {
//await NwindDataService.RemoveEmployeeAsync((EditableEmployee)e.DataItem);
//remove orderData from orderData array //remove orderData from orderData array
_logger.Info("orderData deleted"); _logger.Info("orderData deleted");
//await UpdateDataAsync(); //await UpdateDataAsync();
} }
async Task UpdateDataAsync() async Task UpdateDataAsync()
{ {
//DataSource = await NwindDataService.GetEmployeesEditableAsync();
//refresh grid //refresh grid
_logger.Info("orderData grid refreshed"); _logger.Info("orderData grid refreshed");
} }

View File

@ -169,16 +169,15 @@ namespace TIAMWebApp.Client.Services
return await http.GetFromJsonAsync<List<UserModelDto>>(APIUrls.GetUsers); return await http.GetFromJsonAsync<List<UserModelDto>>(APIUrls.GetUsers);
} }
public async Task<List<UserModelDtoDetail>?> GetUsersWithDetailsAsync() public async Task<List<UserModelDtoDetail>> GetUsersWithDetailsAsync()
{ {
var url = $"{Setting.ApiBaseUrl}/{APIUrls.GetUsersWithDetails}"; var url = $"{Setting.ApiBaseUrl}/{APIUrls.GetUsersWithDetails}";
_logger.Info("GetUserByEmailAsync url: " + url + "!"); _logger.Info("GetUserByEmailAsync url: " + url + "!");
var response = await http.GetFromJsonAsync<List<UserModelDtoDetail>>(APIUrls.GetUsersWithDetails); var response = await http.GetFromJsonAsync<List<UserModelDtoDetail>>(APIUrls.GetUsersWithDetails);
//var result = await response.Content.ReadAsStringAsync(); //var result = await response.Content.ReadAsStringAsync();
//var user = JsonConvert.DeserializeObject<UserModelDto>(result); //var user = JsonConvert.DeserializeObject<UserModelDto>(result);
return response; return response ?? [];
} }

View File

@ -25,7 +25,7 @@ namespace TIAMWebApp.Shared.Application.Interfaces
public Task<List<UserModelDto>?> GetUsersAsync(); public Task<List<UserModelDto>?> GetUsersAsync();
public Task<List<UserModelDtoDetail>?> GetUsersWithDetailsAsync(); public Task<List<UserModelDtoDetail>> GetUsersWithDetailsAsync();
public Task<UserModelDto?> GetUserByIdAsync(Guid id); public Task<UserModelDto?> GetUserByIdAsync(Guid id);
public Task<UserModelDtoDetail?> GetUserDetailByIdAsync(Guid id); public Task<UserModelDtoDetail?> GetUserDetailByIdAsync(Guid id);