diff --git a/TIAMSharedUI/Pages/Components/EditComponents/DynamicEditForm.razor b/TIAMSharedUI/Pages/Components/EditComponents/DynamicEditForm.razor index 115f70a4..3798ade2 100644 --- a/TIAMSharedUI/Pages/Components/EditComponents/DynamicEditForm.razor +++ b/TIAMSharedUI/Pages/Components/EditComponents/DynamicEditForm.razor @@ -234,12 +234,9 @@ else editor.AddAttribute(j++, "ValueChanged", EventCallback.Factory.Create(this, str => { property.SetValue(Data, str); })); editor.CloseComponent(); break; - } - - + } else if (property.PropertyType == typeof(string) && string.Compare(attrList.CustomDataType, "TransferDestination", true) == 0) - { - + { editor.OpenComponent(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(j); editor.AddAttribute(j++, "NullText", "Please tell us your name."); editor.AddAttribute(j++, "FirstNameChanged", EventCallback.Factory.Create(this, result => diff --git a/TIAMSharedUI/Pages/User/Hotels/CreateAndManageTransfer.razor b/TIAMSharedUI/Pages/User/Hotels/CreateAndManageTransfer.razor index b344801d..df67c43d 100644 --- a/TIAMSharedUI/Pages/User/Hotels/CreateAndManageTransfer.razor +++ b/TIAMSharedUI/Pages/User/Hotels/CreateAndManageTransfer.razor @@ -1,31 +1,44 @@ @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 LogWriters +@inject AdminSignalRClient _adminSignalRClient -Transfer +Create transfer +
+

Drivers

+

Manage drivers here!

+
-
- - +
+

Selected Hotel:

+
-
-
+
@@ -35,24 +48,35 @@ @code { private LoggerClient _logger; private TransferWizardModel Data; + private List Hotels = new List(); + private Product SelectedHotel; public List TransferIgnorList = new List { - "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(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(result.GetType(), result); - - _logger.Info($"Submitted nested form: {result.GetType().FullName}, {valami.Destination}, {valami.PickupAddress}, {valami.ProductId}"); + var saveResult = await _adminSignalRClient.PostDataAsync(SignalRTags.AddTransfer, valami); + _logger.Info($"Submitted nested form: {result.GetType().FullName}, {valami.ToAddress}, {valami.FromAddress}, {valami.ProductId}"); } } diff --git a/TIAMSharedUI/Shared/ComboboxItemSelector.razor b/TIAMSharedUI/Shared/ComboboxItemSelector.razor index 4695f2ed..12afe5bf 100644 --- a/TIAMSharedUI/Shared/ComboboxItemSelector.razor +++ b/TIAMSharedUI/Shared/ComboboxItemSelector.razor @@ -19,6 +19,9 @@ @@ -99,7 +102,7 @@ public void SetNewDestination(TransferDestination destination) { - OnSliderChanged.InvokeAsync(destination.Name); + OnSliderChanged.InvokeAsync(destination.AddressString); } // RenderFragment GetFieldDescription(string fieldName, object value) diff --git a/TIAMWebApp/Server/Controllers/TransferDataAPIController.cs b/TIAMWebApp/Server/Controllers/TransferDataAPIController.cs index ecdbd0d3..d62ad9fc 100644 --- a/TIAMWebApp/Server/Controllers/TransferDataAPIController.cs +++ b/TIAMWebApp/Server/Controllers/TransferDataAPIController.cs @@ -366,9 +366,93 @@ namespace TIAMWebApp.Server.Controllers //transfer + [NonAction] + [SignalR(SignalRTags.AddTransfer)] + public async Task 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(); + 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 $@" + + +

Dear {transfer.FullName},

+

We are pleased to inform you that a transfer order has been placed. Below are the details of the transfer:

+

{transfer.FromAddress} - {transfer.ToAddress}

+

{transfer.Appointment}

+

{transfer.FullName}

+

{transfer.PassengerCount}

+

Please confirm the transfer by clicking on the following link:

+

Confirm Transfer

+

If you did not request this transfer, please disregard this email.

+

Thank you,
Tour I Am team

+ + "; + } + 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)] + [Route(APIUrls.CreateTransferRouteName)] public async Task CreateTransfer([FromBody] JsonElement serializedTransferModel) { _logger.Info(@"CreateTransfer called!");