Combobox chnages transfer create test

This commit is contained in:
Adam 2024-07-08 12:49:02 +02:00
parent efeedff96e
commit 2bab0971d2
4 changed files with 136 additions and 27 deletions

View File

@ -235,11 +235,8 @@ else
editor.CloseComponent(); editor.CloseComponent();
break; break;
} }
else if (property.PropertyType == typeof(string) && string.Compare(attrList.CustomDataType, "TransferDestination", true) == 0) else if (property.PropertyType == typeof(string) && string.Compare(attrList.CustomDataType, "TransferDestination", true) == 0)
{ {
editor.OpenComponent<ComboboxItemSelector>(j); editor.OpenComponent<ComboboxItemSelector>(j);
editor.AddAttribute(j++, "TextValue", property.GetValue(Data)); editor.AddAttribute(j++, "TextValue", property.GetValue(Data));
editor.AddAttribute(j++, "CssClass", "form-field"); editor.AddAttribute(j++, "CssClass", "form-field");
@ -258,7 +255,6 @@ else
else if (property.PropertyType == typeof(string) && string.Compare(attrList.CustomDataType, "FullName", true) == 0) else if (property.PropertyType == typeof(string) && string.Compare(attrList.CustomDataType, "FullName", true) == 0)
{ {
editor.OpenComponent<FullNameEditor>(j); editor.OpenComponent<FullNameEditor>(j);
editor.AddAttribute(j++, "NullText", "Please tell us your name."); editor.AddAttribute(j++, "NullText", "Please tell us your name.");
editor.AddAttribute(j++, "FirstNameChanged", EventCallback.Factory.Create<string>(this, result => editor.AddAttribute(j++, "FirstNameChanged", EventCallback.Factory.Create<string>(this, result =>

View File

@ -1,28 +1,41 @@
@page "/user/createAndManageTransfer" @page "/user/createAndManageTransfer"
@using TIAM.Entities.Products
@using TIAM.Entities.Transfers
@using TIAM.Services
@using TIAMSharedUI.Pages.Components.EditComponents @using TIAMSharedUI.Pages.Components.EditComponents
@using TIAMSharedUI.Shared @using TIAMSharedUI.Shared
@using AyCode.Services.Loggers @using AyCode.Services.Loggers
@using TIAMWebApp.Shared.Application.Interfaces; @using TIAMWebApp.Shared.Application.Interfaces;
@using TIAMWebApp.Shared.Application.Models.ClientSide.UI.WizardModels @using TIAMWebApp.Shared.Application.Models.ClientSide.UI.WizardModels
@using TIAMWebApp.Shared.Application.Services
@using TIAMWebApp.Shared.Application.Utility @using TIAMWebApp.Shared.Application.Utility
@layout AdminLayout @layout AdminLayout
@inject IPopulationStructureDataProvider DataProvider @inject IPopulationStructureDataProvider DataProvider
@inject ISessionService SessionService @inject ISessionService SessionService
@inject IUserDataService UserDataService @inject IUserDataService UserDataService
@inject IEnumerable<IAcLogWriterClientBase> LogWriters @inject IEnumerable<IAcLogWriterClientBase> LogWriters
@inject AdminSignalRClient _adminSignalRClient
<PageTitle>Transfer</PageTitle> <PageTitle>Create transfer</PageTitle>
<div class="text-center m-5">
<h1>Drivers</h1>
<h2 style="font-size:small">Manage drivers here!</h2>
</div>
<!--We need to check if the user is owner of a swerviceprovider--> <!--We need to check if the user is owner of a swerviceprovider-->
<div class="container"> <div class="container-fluid">
<h3>Selected Hotel:</h3>
<DxComboBox Data="@Hotels"
@bind-Value="@SelectedHotel"
SearchMode="@ListSearchMode.AutoSearch"
SearchFilterCondition="@ListSearchFilterCondition.Contains"
ListRenderMode="ListRenderMode.Virtual"
TextFieldName="Name"></DxComboBox>
<div class="row py-3"> <div class="row py-3">
<div class=" col-12 col-xl-3"> <div class=" col-12 col-xl-3">
</div> </div>
<DynamicEditForm Data="Data" isEditing="true" IgnoreReflection="TransferIgnorList" OnSubmit="SubmitForm"></DynamicEditForm> <DynamicEditForm Data="Data" isEditing="true" IgnoreReflection="TransferIgnorList" OnSubmit="SubmitForm"></DynamicEditForm>
</div> </div>
@ -35,24 +48,35 @@
@code { @code {
private LoggerClient<CreateAndManageTransfer> _logger; private LoggerClient<CreateAndManageTransfer> _logger;
private TransferWizardModel Data; private TransferWizardModel Data;
private List<Product> Hotels = new List<Product>();
private Product SelectedHotel;
public List<string> TransferIgnorList = new List<string> public List<string> TransferIgnorList = new List<string>
{ {
"Id", nameof(TransferWizardModel.Id),
"UserId", nameof(TransferWizardModel.UserId),
"ProductId", nameof(TransferWizardModel.ProductId),
"PaymentId", nameof(TransferWizardModel.FirstName),
"FirstName", nameof(TransferWizardModel.LastName),
"LastName", nameof(TransferWizardModel.UserProductMappingId),
"UserProductMappingId", nameof(TransferWizardModel.UserProductToCarId),
"UserProductToCarId", nameof(TransferWizardModel.ReferralId),
"ReferralId", nameof(TransferWizardModel.Price)
"Price"
}; };
protected override void OnInitialized() protected override void OnInitialized()
{ {
_logger = new LoggerClient<CreateAndManageTransfer>(LogWriters.ToArray()); _logger = new LoggerClient<CreateAndManageTransfer>(LogWriters.ToArray());
if (SessionService.User.UserModelDto.Products.Count() > 0)
{
if (SessionService.User.UserModelDto.Products.Any(x => x.ProductType == TIAM.Core.Enums.ProductType.Hotel))
{
Hotels = SessionService.User.UserModelDto.Products.Where(x => x.ProductType == TIAM.Core.Enums.ProductType.Hotel).ToList();
SelectedHotel = Hotels[0];
}
}
Data = new TransferWizardModel(); Data = new TransferWizardModel();
base.OnInitialized(); base.OnInitialized();
@ -60,11 +84,13 @@
public async Task SubmitForm(object result) public async Task SubmitForm(object result)
{ {
var valami = (TransferWizardModel)result; var valami = ((TransferWizardModel)result).CopyToTransfer();
valami.Id = Guid.NewGuid();
valami.ProductId = SelectedHotel.Id;
//valami.ProductId = SessionService.User.UserId; //TODO ProductID! //valami.ProductId = SessionService.User.UserId; //TODO ProductID!
// await WizardProcessor.ProcessWizardAsync<TransferDestinationWizardModel>(result.GetType(), result); // await WizardProcessor.ProcessWizardAsync<TransferDestinationWizardModel>(result.GetType(), result);
var saveResult = await _adminSignalRClient.PostDataAsync<Transfer>(SignalRTags.AddTransfer, valami);
_logger.Info($"Submitted nested form: {result.GetType().FullName}, {valami.Destination}, {valami.PickupAddress}, {valami.ProductId}"); _logger.Info($"Submitted nested form: {result.GetType().FullName}, {valami.ToAddress}, {valami.FromAddress}, {valami.ProductId}");
} }
} }

View File

@ -19,6 +19,9 @@
<DxComboBox Data="@Data" <DxComboBox Data="@Data"
InputCssClass="@CssClass" InputCssClass="@CssClass"
@bind-Value="@SelectedDestination" @bind-Value="@SelectedDestination"
SearchMode="@ListSearchMode.AutoSearch"
SearchFilterCondition="@ListSearchFilterCondition.Contains"
ListRenderMode="ListRenderMode.Virtual"
TextFieldName="@nameof(TransferDestination.Name)" TextFieldName="@nameof(TransferDestination.Name)"
CssClass="cw-480" CssClass="cw-480"
InputId="cbOverview" /> InputId="cbOverview" />
@ -99,7 +102,7 @@
public void SetNewDestination(TransferDestination destination) public void SetNewDestination(TransferDestination destination)
{ {
OnSliderChanged.InvokeAsync(destination.Name); OnSliderChanged.InvokeAsync(destination.AddressString);
} }
// RenderFragment GetFieldDescription(string fieldName, object value) // RenderFragment GetFieldDescription(string fieldName, object value)

View File

@ -366,6 +366,90 @@ namespace TIAMWebApp.Server.Controllers
//transfer //transfer
[NonAction]
[SignalR(SignalRTags.AddTransfer)]
public async Task<Transfer?> AddTransfer(Transfer transfer)
{
_logger.Info(@"CreateTransfer via SignalR called!");
if (transfer != null)
{
var id = Guid.NewGuid();
//TransferDestination transferDestination = new TransferDestination(id, transferDestinationModel.Name, transferDestinationModel.Description, transferDestinationModel.AddressString);
if (string.IsNullOrEmpty(transfer.FromAddress) || string.IsNullOrEmpty(transfer.ToAddress))
{
return null;
}
else
{
_logger.Info($@"TransferDestination to be created: {id}");
_logger.Info($@"TransferDestination to be created: {transfer.FromAddress}");
_logger.Info($@"TransferDestination to be created: {transfer.ToAddress}");
_logger.Info($@"TransferDestination to be created: {transfer.ProductId}");
_logger.Info($@"TransferDestination to be created: {transfer.Price}");
var destList = _adminDal.GetTransferDestinations();
var from = destList.FirstOrDefault(x => x.AddressString == transfer.FromAddress);
var to = destList.FirstOrDefault(x => x.AddressString == transfer.ToAddress);
//TODO
if (!transfer.ProductId.IsNullOrEmpty())
transfer.Price = _transferBackendService.GetTransferPrice(transfer.ProductId.Value, from, to, transfer.PassengerCount);
transfer.TransferStatusType = TransferStatusType.OrderSubmitted;
await _adminDal.AddTransferAsync(transfer);
_logger.Info($"Created transfer, send emailMessage!!!");
var message = new MessageSenderModel<EmailMessage>();
message.Message.Id = Guid.NewGuid();
message.Message.Subject = "[Tour I Am] New transfer in Budapest";
message.Message.ContextId = transfer.Id;
message.Message.SenderId = Guid.Empty;
message.Message.Recipients.Add(new EmailRecipient(Guid.NewGuid(), transfer.UserId, Guid.NewGuid(), transfer.ContactEmail));
string FormatEmailContent()
{
return $@"
<html>
<body>
<p>Dear {transfer.FullName},</p>
<p>We are pleased to inform you that a transfer order has been placed. Below are the details of the transfer:</p>
<p>{transfer.FromAddress} - {transfer.ToAddress}</p>
<p>{transfer.Appointment}</p>
<p>{transfer.FullName}</p>
<p>{transfer.PassengerCount}</p>
<p>Please confirm the transfer by clicking on the following link:</p>
<p><a href=""{Setting.BaseUrl}/mytransfers/{transfer.Id}"">Confirm Transfer</a></p>
<p>If you did not request this transfer, please disregard this email.</p>
<p>Thank you,<br/>Tour I Am team</p>
</body>
</html>";
}
message.Message.Text = FormatEmailContent();
_logger.Info(message.Message.Text);
//message.Message.Text = $"Dear {transfer.FullName}! /n We have received an order from you, please confirm the details here: https://www.touriam.com/mytransfer?{transfer.Id}";
var messageElement = message.Message;
var result = await _messageSenderService.SendMessageAsync(messageElement, (int)message.MessageType);
await _adminDal.AddEmailMessageAsync(messageElement);
_logger.Info("SendEmail result: " + result);
return transfer;
}
}
else
{
return null;
}
}
[AllowAnonymous] [AllowAnonymous]
[HttpPost] [HttpPost]
[Route(APIUrls.CreateTransferRouteName)] [Route(APIUrls.CreateTransferRouteName)]