navbar fix, transfer changes, emailmessage context type

This commit is contained in:
Adam 2024-08-18 15:58:03 +02:00
parent fd002486cb
commit 9418e52eed
13 changed files with 128 additions and 93 deletions

View File

@ -1,10 +1,11 @@
@using AyCode.Blazor.Components.Components @using AyCode.Blazor.Components.Components
@using AyCode.Core.Helpers
@using TIAMWebApp.Shared.Application.Services @using TIAMWebApp.Shared.Application.Services
@inject GooglePlacesService GooglePlacesService @inject GooglePlacesService GooglePlacesService
<div class="p-3">
<DxTextBox @bind-Text="Address" <DxTextBox @bind-Text="Address"
CssClass="form-field" CssClass="@CssClass"
@oninput="OnInputChanged" @oninput="OnInputChanged"
BindValueMode="BindValueMode.OnDelayedInput" BindValueMode="BindValueMode.OnDelayedInput"
InputDelay="700"> InputDelay="700">
@ -22,7 +23,7 @@ else
{ {
<p>No address found</p> <p>No address found</p>
} }
</div>
@code { @code {
@ -30,6 +31,8 @@ else
[Parameter] public EventCallback<string> AddressChanged { get; set; } [Parameter] public EventCallback<string> AddressChanged { get; set; }
[Parameter] public string CssClass { get; set; }
private string Address { get; set; } private string Address { get; set; }
private List<PredictionItem> Predictions { get; set; } = new(); private List<PredictionItem> Predictions { get; set; } = new();
private PredictionItem selectedPrediction { get; set; } private PredictionItem selectedPrediction { get; set; }
@ -38,7 +41,7 @@ else
get => selectedPrediction; get => selectedPrediction;
set set
{ {
SetNewDestination(value.Description); SetNewDestination(value.Description).Forget();
selectedPrediction = value; selectedPrediction = value;
} }
} }

View File

@ -53,7 +53,7 @@ else
[Parameter] public bool isEditing { get; set; } = false; [Parameter] public bool isEditing { get; set; } = false;
[Parameter] public bool userAvailable { get; set; } [Parameter] public bool userAvailable { get; set; }
[Parameter] public UserModelDtoDetail userModelDtodetail { get; set; } [Parameter] public UserModelDtoDetail userModelDtodetail { get; set; }
[Parameter] public Product CurrentProduct { get; set; } [Parameter] public Product? CurrentProduct { get; set; } = null;
string _formSubmitResult = ""; string _formSubmitResult = "";
private string _spinnerClass = ""; private string _spinnerClass = "";

View File

@ -24,8 +24,8 @@
<AuthComponent /> <AuthComponent />
<HeroSlider SliderItems="@sliders" PBottom="50px" Height="50vh"></HeroSlider> <HeroSlider SliderItems="@sliders" PBottom="50px" Height="30vh"></HeroSlider>
<div class="container-fluid" style="position: relative; z-index: 2;"> @* <div class="container-fluid" style="position: relative; z-index: 2;">
<div class="row d-flex justify-content-center"> <div class="row d-flex justify-content-center">
<div class="col-12 col-lg-6"> <div class="col-12 col-lg-6">
<div class="card bg-white p-3"> <div class="card bg-white p-3">
@ -39,10 +39,10 @@
</div> </div>
</div> </div>
</div> </div> *@
<div class="container" style="align-content: center;"> <div class="container-fluid" style="align-content: center;">

View File

@ -1,4 +1,4 @@
@page "/transfer2" @page "/transfer2/{transferId:guid}"
<PageTitle>Transferdetails</PageTitle> <PageTitle>Transferdetails</PageTitle>
@inject NavigationManager navManager @inject NavigationManager navManager
@ -67,6 +67,8 @@
@code { @code {
[Parameter] public Guid? transferId { get; set; }
public void next() => navManager.NavigateTo("/transfer"); public void next() => navManager.NavigateTo("/transfer");
public void previous() => navManager.NavigateTo("/transfer3"); public void previous() => navManager.NavigateTo("/transfer3");
} }

View File

@ -1,5 +1,6 @@
@page "/transfer" @page "/transfer"
@using TIAMSharedUI.Pages.Components @using TIAMSharedUI.Pages.Components
@using TIAMSharedUI.Pages.Components.EditComponents
@using TIAMSharedUI.Shared @using TIAMSharedUI.Shared
@using TIAMWebApp.Shared.Application.Interfaces @using TIAMWebApp.Shared.Application.Interfaces
@using TIAMWebApp.Shared.Application.Models.ClientSide.UI @using TIAMWebApp.Shared.Application.Models.ClientSide.UI
@ -10,18 +11,18 @@
@inject IWizardProcessor WizardProcessor @inject IWizardProcessor WizardProcessor
<PageTitle>Transfer</PageTitle> <PageTitle>Transfer</PageTitle>
<HeroSlider SliderItems="sliders"></HeroSlider> <HeroSlider SliderItems="sliders" Height="30vh"></HeroSlider>
<div class="container" style="position: relative; z-index: 2;"> <div class="container-fluid" style="position: relative; z-index: 2;">
<div class="row d-flex justify-content-center"> <div class="row d-flex justify-content-center">
<div class="col-12 col-lg-6"> <div class="col-12 col-lg-6">
<div class="card bg-white p-3"> <div class="card bg-white p-3">
<InputWizard Data=@myModel @* <InputWizard Data=@myModel
OnSubmit="SubmitForm" OnSubmit="SubmitForm"
IgnoreReflection="@TransferIgnorList" IgnoreReflection="@TransferIgnorList"
SubmitButtonText="ButtonSend" SubmitButtonText="ButtonSend"
TitleResourceString="TransferTitle" TitleResourceString="TransferTitle"
SubtitleResourceString="TransferSubtitle"></InputWizard> SubtitleResourceString="TransferSubtitle"></InputWizard> *@
<DynamicEditForm Data="myModel" isEditing="true" IgnoreReflection="TransferIgnorList" OnSubmit="SubmitForm"></DynamicEditForm>
</div> </div>
</div> </div>

View File

@ -17,7 +17,6 @@
@inherits BasePageComponent @inherits BasePageComponent
@layout AdminLayout @layout AdminLayout
@inject IPopulationStructureDataProvider DataProvider @inject IPopulationStructureDataProvider DataProvider
@inject ISessionService SessionService
@inject IUserDataService UserDataService @inject IUserDataService UserDataService
@inject IEnumerable<IAcLogWriterClientBase> LogWriters @inject IEnumerable<IAcLogWriterClientBase> LogWriters
@inject AdminSignalRClient _adminSignalRClient @inject AdminSignalRClient _adminSignalRClient
@ -100,19 +99,22 @@
protected override void OnInitialized() protected override void OnInitialized()
{ {
_logger = new LoggerClient<CreateAndManageTransfer>(LogWriters.ToArray()); _logger = new LoggerClient<CreateAndManageTransfer>(LogWriters.ToArray());
if (_sessionService.User != null)
{
if (SessionService.User.UserModelDto.Products.Count() > 0) if (_sessionService.User.UserModelDto.Products.Count() > 0)
{ {
if (SessionService.User.UserModelDto.Products.Any(x => x.ProductType == TIAM.Core.Enums.ProductType.Hotel)) if (_sessionService.User.UserModelDto.Products.Any(x => x.ProductType == TIAM.Core.Enums.ProductType.Hotel))
{ {
Hotels = SessionService.GetHotels(); Hotels = _sessionService.GetHotels();
if(!SelectedHotelInitialized) if (!SelectedHotelInitialized)
{ {
SelectedHotel = Hotels[0]; SelectedHotel = Hotels[0];
SelectedHotelInitialized = true; SelectedHotelInitialized = true;
} }
} }
} }
}
Data = new TransferWizardModel(); Data = new TransferWizardModel();
base.OnInitialized(); base.OnInitialized();

View File

@ -18,14 +18,13 @@
@using TIAMWebApp.Shared.Application.Services @using TIAMWebApp.Shared.Application.Services
@inject GooglePlacesService GooglePlacesService @inject GooglePlacesService GooglePlacesService
<label for="cbOverview" class="demo-text cw-480 mb-1">
Select a destination <DxTabs CssClass="bg-light">
</label>
<DxTabs>
<DxTabPage Text="Preset addresses"> <DxTabPage Text="Preset addresses">
<DxComboBox Data="@Data" <DxComboBox Data="@Data"
CssClass="p-3"
InputCssClass="@CssClass" InputCssClass="@CssClass"
@bind-Value="@SelectedDestination" @bind-Value="@SelectedDestination"
SearchMode="@ListSearchMode.AutoSearch" SearchMode="@ListSearchMode.AutoSearch"
@ -38,7 +37,7 @@
</DxTabPage> </DxTabPage>
<DxTabPage Text="Address locator"> <DxTabPage Text="Address locator">
<AddressSearchAndSelectComponent AddressChanged="@OnSelectedAddressChanged"> <AddressSearchAndSelectComponent AddressChanged="@OnSelectedAddressChanged" CssClass="@CssClass">
</AddressSearchAndSelectComponent> </AddressSearchAndSelectComponent>
@* <DxFormLayoutItem Caption="Type a custom address"> @* <DxFormLayoutItem Caption="Type a custom address">

View File

@ -12,10 +12,10 @@
<img height="25" src="_content/TIAMSharedUI/images/logo_wide.png" alt="TourIam Logo" title="TourIAm Logo" /> <img height="25" src="_content/TIAMSharedUI/images/logo_wide.png" alt="TourIam Logo" title="TourIAm Logo" />
</NavLink> </NavLink>
<button @onclick="ToggleNavMenu" class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="@expandNavMenu" aria-label="Toggle navigation"> <button @onclick="ToggleNavMenu" class="navbar-toggler">
<img src="_content/TIAMSharedUI/images/navbar-toggler.png" width="40" /> <img src="_content/TIAMSharedUI/images/navbar-toggler.png" width="40" />
</button> </button>
<div class="collapse navbar-collapse" id="navbarSupportedContent"> <div class="@NavMenuCssClass navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0"> <ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item"> <li class="nav-item">
<!--NavLink class="nav-link" href="" Match="NavLinkMatch.All"--> <!--NavLink class="nav-link" href="" Match="NavLinkMatch.All"-->
@ -131,7 +131,7 @@
} }
<li class="nav-item"> <li class="nav-item">
<div class="btn-nav"> <div class="btn-nav">
<NavLink class="btn btn-primary btn-small navbar-btn" href="#" @onclick="SignOut"> <NavLink class="btn btn-primary btn-small navbar-btn" href="#" @onclick="SignOut" data-bs-target=".navbar-collapse.show">
@localizer.GetString("NavMenu.SignOut") @localizer.GetString("NavMenu.SignOut")
</NavLink> </NavLink>
</div> </div>
@ -149,7 +149,7 @@
</div> </div>
</nav> </nav>
<script> @* <script>
function toggleBootstrapNavMenu(isExpanded) { function toggleBootstrapNavMenu(isExpanded) {
var navMenu = document.getElementById('navbarNav'); var navMenu = document.getElementById('navbarNav');
if (navMenu) { if (navMenu) {
@ -165,7 +165,7 @@
} }
} }
} }
</script> </script> *@
@code { @code {

View File

@ -58,7 +58,8 @@ namespace TIAMSharedUI.Shared.Components
private bool enableApi = true; private bool enableApi = true;
private bool enableChat = true; private bool enableChat = true;
private bool expandNavMenu = true; private string? NavMenuCssClass => collapseNavMenu ? "collapse" : "show";
private bool collapseNavMenu = true;
private bool myUser = false; private bool myUser = false;
private bool hasProperty = false; private bool hasProperty = false;
@ -71,11 +72,6 @@ namespace TIAMSharedUI.Shared.Components
} }
private async Task ExpandNavMenu()
{
await JsRuntime.InvokeVoidAsync("toggleBootstrapNavMenu");
}
private void RefreshMe() private void RefreshMe()
{ {
_logger.Debug($"Navbar refresh called! {DateTime.Now} "); _logger.Debug($"Navbar refresh called! {DateTime.Now} ");
@ -87,9 +83,9 @@ namespace TIAMSharedUI.Shared.Components
private void ToggleNavMenu() private void ToggleNavMenu()
{ {
expandNavMenu = !expandNavMenu; collapseNavMenu = !collapseNavMenu;
_logger.Debug($"{NavMenuCssClass}");
JsRuntime.InvokeVoidAsync("toggleBootstrapNavMenu", expandNavMenu); //JsRuntime.InvokeVoidAsync("toggleBootstrapNavMenu", expandNavMenu);
} }
private async Task SignOut() private async Task SignOut()
@ -127,10 +123,10 @@ namespace TIAMSharedUI.Shared.Components
private void OnLocationChanged(object sender, LocationChangedEventArgs e) private void OnLocationChanged(object sender, LocationChangedEventArgs e)
{ {
// Collapse the navbar on navigation // Collapse the navbar on navigation
collapseNavMenu=true;
expandNavMenu = false; _logger.Debug($"{NavMenuCssClass}");
JsRuntime.InvokeVoidAsync("toggleBootstrapNavMenu", false); //JsRuntime.InvokeVoidAsync("toggleBootstrapNavMenu", false);
StateHasChanged();
} }
public void Dispose() public void Dispose()

View File

@ -2,7 +2,7 @@
@using TIAMWebApp.Shared.Application.Models.ClientSide.UI @using TIAMWebApp.Shared.Application.Models.ClientSide.UI
<header style="padding-bottom: @PBottom;"> <header style="padding-bottom: @PBottom;">
<div id="owl-demo" class="owl-carousel owl-theme" style="position:absolute; z-index: 1;"> <div id="owl-demo" class="owl-carousel owl-theme" style="/* position:absolute; */ z-index: 1;">
@{ @{
foreach (var slider in SliderItems) foreach (var slider in SliderItems)

View File

@ -213,7 +213,7 @@ select {
/*box-shadow: 0 8px 32px 0 rgba( 31, 38, 135, 0.37 ); /*box-shadow: 0 8px 32px 0 rgba( 31, 38, 135, 0.37 );
backdrop-filter: blur( 6px );*/ backdrop-filter: blur( 6px );*/
-webkit-backdrop-filter: blur( 6px ); -webkit-backdrop-filter: blur( 6px );
border-radius: 10px; /*border-radius: 10px;*/
} }
.dxbl-modal > .dxbl-modal-root > .dxbl-popup > .dxbl-modal-content { .dxbl-modal > .dxbl-modal-root > .dxbl-popup > .dxbl-modal-content {
@ -530,7 +530,7 @@ select:focus-visible {
} }
#owl-demo .item { #owl-demo .item {
height: 50vh; height: 30vh;
overflow-y: hidden; overflow-y: hidden;
flex-wrap: wrap; flex-wrap: wrap;
vertical-align: middle; vertical-align: middle;

View File

@ -31,6 +31,7 @@ using System;
using TIAM.Database.DbSets.Transfers; using TIAM.Database.DbSets.Transfers;
using TIAM.Services.Interfaces; using TIAM.Services.Interfaces;
using TIAM.Entities.Products; using TIAM.Entities.Products;
using AyCode.Core.Enums;
namespace TIAMWebApp.Server.Controllers namespace TIAMWebApp.Server.Controllers
{ {
@ -536,28 +537,39 @@ namespace TIAMWebApp.Server.Controllers
message.Message.Id = Guid.NewGuid(); message.Message.Id = Guid.NewGuid();
message.Message.Subject = "[Tour I Am] New transfer in Budapest"; message.Message.Subject = "[Tour I Am] New transfer in Budapest";
message.Message.ContextId = transfer.Id; message.Message.ContextId = transfer.Id;
message.Message.ContextType = MessageContextType.Transfer;
message.Message.SenderId = Guid.Empty; message.Message.SenderId = Guid.Empty;
message.Message.Recipients.Add(new EmailRecipient(Guid.NewGuid(), transfer.UserId, Guid.NewGuid(), transfer.ContactEmail)); message.Message.Recipients.Add(new EmailRecipient(Guid.NewGuid(), transfer.UserId, Guid.NewGuid(), transfer.ContactEmail));
string FormatEmailContent() //string FormatEmailContent()
{ //{
return $@" // return $@"
<html> // <html>
<body> // <body>
<p>Dear {transfer.FullName},</p> // <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>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.FromAddress} - {transfer.ToAddress}</p>
<p>{transfer.Appointment}</p> // <p>{transfer.Appointment}</p>
<p>{transfer.FullName}</p> // <p>{transfer.FullName}</p>
<p>{transfer.PassengerCount}</p> // <p>{transfer.PassengerCount}</p>
<p>Please confirm the transfer by clicking on the following link:</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><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>If you did not request this transfer, please disregard this email.</p>
<p>Thank you,<br/>Tour I Am team</p> // <p>Thank you,<br/>Tour I Am team</p>
</body> // </body>
</html>"; // </html>";
} //}
message.Message.Text = FormatEmailContent(); //message.Message.Text = FormatEmailContent();
message.Message.Text = EmailTemplateHelper.GenerateNewTransferEmail(
transfer.FullName,
transfer.FromAddress,
transfer.ToAddress,
transfer.Appointment.ToString(),
transfer.FullName,
transfer.PassengerCount.ToString(),
transfer.LuggageCount.ToString(),
Setting.BaseUrl,
transfer.Id.ToString());
_logger.Info(message.Message.Text); _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}"; //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 messageElement = message.Message;
@ -625,28 +637,41 @@ namespace TIAMWebApp.Server.Controllers
message.MessageType = AyCode.Models.Enums.MessageTypesEnum.email; message.MessageType = AyCode.Models.Enums.MessageTypesEnum.email;
message.Message.Subject = "[Tour I Am] New transfer in Budapest"; message.Message.Subject = "[Tour I Am] New transfer in Budapest";
message.Message.ContextId = createdTransfer.Id; message.Message.ContextId = createdTransfer.Id;
message.Message.ContextType = MessageContextType.Transfer;
message.Message.SenderId = Guid.Empty; message.Message.SenderId = Guid.Empty;
message.Message.Recipients.Add(new EmailRecipient(Guid.NewGuid(), createdTransfer.UserId, Guid.NewGuid(), createdTransfer.ContactEmail)); message.Message.Recipients.Add(new EmailRecipient(Guid.NewGuid(), createdTransfer.UserId, Guid.NewGuid(), createdTransfer.ContactEmail));
string FormatEmailContent() //string FormatEmailContent()
{ //{
return $@" // return $@"
<html> // <html>
<body> // <body>
<p>Dear {createdTransfer.FullName},</p> // <p>Dear {createdTransfer.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>We are pleased to inform you that a transfer order has been placed. Below are the details of the transfer:</p>
<p> // <p>
{createdTransfer.FromAddress} - {createdTransfer.ToAddress}</p> // {createdTransfer.FromAddress} - {createdTransfer.ToAddress}</p>
<p>{createdTransfer.Appointment}</p> // <p>{createdTransfer.Appointment}</p>
<p>{createdTransfer.FullName}</p> // <p>{createdTransfer.FullName}</p>
<p>{createdTransfer.PassengerCount}</p> // <p>{createdTransfer.PassengerCount}</p>
<p>Please confirm the transfer by clicking on the following link:</p> // <p>Please confirm the transfer by clicking on the following link:</p>
<p><a href=""{Setting.BaseUrl}/mytransfers/{createdTransfer.Id}"">Confirm Transfer</a></p> // <p><a href=""{Setting.BaseUrl}/mytransfers/{createdTransfer.Id}"">Confirm Transfer</a></p>
<p>If you did not request this transfer, please disregard this email.</p> // <p>If you did not request this transfer, please disregard this email.</p>
<p>Thank you,<br/>Tour I Am team</p> // <p>Thank you,<br/>Tour I Am team</p>
</body> // </body>
</html>"; // </html>";
} //}
message.Message.Text = FormatEmailContent(); //message.Message.Text = FormatEmailContent();
message.Message.Text = EmailTemplateHelper.GenerateNewTransferEmail(
createdTransfer.FullName,
createdTransfer.FromAddress,
createdTransfer.ToAddress,
createdTransfer.Appointment.ToString(),
createdTransfer.FullName,
createdTransfer.PassengerCount.ToString(),
createdTransfer.LuggageCount.ToString(),
Setting.BaseUrl,
createdTransfer.Id.ToString());
_logger.Info(message.Message.Text); _logger.Info(message.Message.Text);
var messageElement = message.Message; var messageElement = message.Message;
Console.WriteLine(message.Message); Console.WriteLine(message.Message);

View File

@ -24,6 +24,8 @@ using System.Net;
using TIAM.Services.Server; using TIAM.Services.Server;
using TIAM.Services.Server.Logins; using TIAM.Services.Server.Logins;
using TIAMWebApp.Server.Services; using TIAMWebApp.Server.Services;
using AyCode.Core.Enums;
using AyCode.Models.Enums;
namespace TIAMWebApp.Server.Controllers namespace TIAMWebApp.Server.Controllers
{ {
@ -471,13 +473,18 @@ namespace TIAMWebApp.Server.Controllers
message.Message = new EmailMessage(); message.Message = new EmailMessage();
message.Message.EmailAddress = email; message.Message.EmailAddress = email;
message.Message.Id = Guid.NewGuid(); message.Message.Id = Guid.NewGuid();
message.MessageType = AyCode.Models.Enums.MessageTypesEnum.email; message.MessageType = MessageTypesEnum.email;
message.Message.Subject = "[Tour I Am] New transfer in Budapest"; message.Message.Subject = "[Tour I Am] New transfer in Budapest";
message.Message.ContextId = user.Id; message.Message.ContextId = user.Id;
message.Message.ContextType = MessageContextType.System;
message.Message.SenderId = Guid.Empty; message.Message.SenderId = Guid.Empty;
message.Message.Recipients.Add(new EmailRecipient(Guid.NewGuid(), user.Id, Guid.NewGuid(), email)); message.Message.Recipients.Add(new EmailRecipient(Guid.NewGuid(), user.Id, Guid.NewGuid(), email));
message.Message.Text = EmailTemplateHelper.GenerateForgotPasswordEmail(user.FullName, Setting.BaseUrl, user.Id.ToString(), user.ConfirmToken); message.Message.Text = EmailTemplateHelper.GenerateForgotPasswordEmail(
user.FullName,
Setting.BaseUrl,
user.Id.ToString(),
user.ConfirmToken);
_logger.Info(message.Message.Text); _logger.Info(message.Message.Text);
var messageElement = message.Message; var messageElement = message.Message;
Console.WriteLine(message.Message); Console.WriteLine(message.Message);