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

View File

@ -1,28 +1,41 @@
@page "/user/createAndManageTransfer"
@using TIAM.Entities.Products
@using TIAM.Entities.Transfers
@using TIAM.Services
@using TIAMSharedUI.Pages.Components.EditComponents
@using TIAMSharedUI.Shared
@using AyCode.Services.Loggers
@using TIAMWebApp.Shared.Application.Interfaces;
@using TIAMWebApp.Shared.Application.Models.ClientSide.UI.WizardModels
@using TIAMWebApp.Shared.Application.Services
@using TIAMWebApp.Shared.Application.Utility
@layout AdminLayout
@inject IPopulationStructureDataProvider DataProvider
@inject ISessionService SessionService
@inject IUserDataService UserDataService
@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-->
<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=" col-12 col-xl-3">
</div>
<DynamicEditForm Data="Data" isEditing="true" IgnoreReflection="TransferIgnorList" OnSubmit="SubmitForm"></DynamicEditForm>
</div>
@ -35,24 +48,35 @@
@code {
private LoggerClient<CreateAndManageTransfer> _logger;
private TransferWizardModel Data;
private List<Product> Hotels = new List<Product>();
private Product SelectedHotel;
public List<string> TransferIgnorList = new List<string>
{
"Id",
"UserId",
"ProductId",
"PaymentId",
"FirstName",
"LastName",
"UserProductMappingId",
"UserProductToCarId",
"ReferralId",
"Price"
nameof(TransferWizardModel.Id),
nameof(TransferWizardModel.UserId),
nameof(TransferWizardModel.ProductId),
nameof(TransferWizardModel.FirstName),
nameof(TransferWizardModel.LastName),
nameof(TransferWizardModel.UserProductMappingId),
nameof(TransferWizardModel.UserProductToCarId),
nameof(TransferWizardModel.ReferralId),
nameof(TransferWizardModel.Price)
};
protected override void OnInitialized()
{
_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();
base.OnInitialized();
@ -60,11 +84,13 @@
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!
// await WizardProcessor.ProcessWizardAsync<TransferDestinationWizardModel>(result.GetType(), result);
_logger.Info($"Submitted nested form: {result.GetType().FullName}, {valami.Destination}, {valami.PickupAddress}, {valami.ProductId}");
var saveResult = await _adminSignalRClient.PostDataAsync<Transfer>(SignalRTags.AddTransfer, valami);
_logger.Info($"Submitted nested form: {result.GetType().FullName}, {valami.ToAddress}, {valami.FromAddress}, {valami.ProductId}");
}
}

View File

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

View File

@ -366,6 +366,90 @@ namespace TIAMWebApp.Server.Controllers
//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]
[HttpPost]
[Route(APIUrls.CreateTransferRouteName)]