@page "/mytransfers/{transferId:guid}" @using AyCode.Core.Extensions @using TIAM.Entities.Transfers @using TIAM.Resources @using TIAMSharedUI.Shared.Components.BaseComponents @using TIAMWebApp.Shared.Application.Interfaces @using AyCode.Services.Loggers @using TIAM.Core.Enums @using TIAMWebApp.Shared.Application.Models.ClientSide.UI.WizardModels @using TIAMWebApp.Shared.Application.Services @using TIAMWebApp.Shared.Application.Utility @using TIAMSharedUI.Pages.User.SysAdmins @using TIAMSharedUI.Pages.Components @inherits BasePageComponent @inject HttpClient Http @inject NavigationManager navManager @inject IEnumerable LogWriters @inject ITransferDataService transferDataService @inject IUserDataService UserDataService @inject SumupService SumUpService @inject NavigationManager navigationManager @inject IStringLocalizer localizer @inject IWizardProcessor wizardProcessor @inject AdminSignalRClient _adminSignalRClient Transfer details

Transfer details

Manage your transfer here

@if (_isLoading) {
} else if (!string.IsNullOrEmpty(_errorMessage)) {
@_errorMessage
} else {
@if (!_editMode) {
Transfer identifier: @_transfer.Id

@_transfer.ContactPhone

Passenger: @_transfer.FullName

E-mail address: @_transfer.ContactEmail

From: @_transfer.FromAddress
To: @_transfer.ToAddress
@_transfer.Appointment.ToString("MMMM dd, yyyy")
@_transfer.Appointment.ToString("hh:mm tt")

Passengers: @_transfer.PassengerCount

Luggage: @_transfer.LuggageCount

Flight number (optional): @_transfer.FlightNumber


License plate: POX-382

Car looks: Silver, Toyota, Prius


Status on: @DateTime.Now.ToString("hh:mm tt"), @DateTime.Today.ToString("MMMM dd, yyyy")

EUR @_transfer.Price

} else {
Transfer identifier: @_transfer.Id


License plate: POX-382

Car looks: Silver, Toyota, Prius


Status on: @DateTime.Now.TimeOfDay, @DateTime.Today.Date

EUR @_transfer.Price via (COD)

}
} @code { [Parameter] public Guid transferId { get; set; } = Guid.Empty; private Transfer _transfer = new Transfer(); private bool _isLoading = true; private string _errorMessage = string.Empty; private LoggerClient _logger = null!; private MessageWizardModel _messageWizardModel = new(); private bool displayCard = true; private bool _popupVisible; public List IgnoreList = [ "ReceiverEmailAddress", "ReceiverFullName", "ReceiverId", "SenderEmailAddress", "SenderFullName", "SenderId", "ContextId", ]; private bool _editMode = false; private readonly List _statusTypes = []; void SendMail(Transfer item) { _logger.Info($"Sending mail to {item.ContactEmail}, {item.Id}"); _messageWizardModel.ReceiverId = item.UserId; _messageWizardModel.ContextId = item.Id; _messageWizardModel.SenderEmailAddress = "info@touriam.com"; _messageWizardModel.ReceiverEmailAddress = item.ContactEmail; _messageWizardModel.ReceiverFullName = item.FullName; _popupVisible = true; } void CancelCreateClick() { _popupVisible = false; } void EulaPopupClosed() { //cancel clicked } void EulaPopupClosing(PopupClosingEventArgs args) { //myModel = new TransferWizardModel(); _messageWizardModel = new MessageWizardModel(); } public async Task SubmitForm(object result) { var messageModel = result as MessageWizardModel; messageModel.ContextId = _messageWizardModel.ContextId; //messageModel.SenderId = sessionService.User.UserId; string FormatEmailContent() { return $@"

Dear {messageModel.SenderFullName},

{messageModel.Content}:

Best regards,
Tour I Am team

"; } messageModel.Content = FormatEmailContent(); _logger.Info(messageModel.Content); var email = await wizardProcessor.ProcessWizardAsync(result.GetType(), messageModel); _logger.Info($"Submitted nested form: {result.GetType().FullName}"); } private async Task Pay() { if (_transfer != null) { var paymentId = ""; if (_transfer.PaymentId != null) { //if we have already paymentId = _transfer.PaymentId; } else { //if we have no paymentId yet paymentId = await SumUpService.CreatePaymentAsync(_transfer); _transfer.PaymentId = paymentId; //and save it to Db var resultTransfer = await UpdateTransfer(false); if (resultTransfer.PaymentId != null) { _logger.Debug("Added paymentId to Db: " + resultTransfer.PaymentId); } } var checkoutUrl = "sumuppayment/" + paymentId; Console.WriteLine($"Payment Link: {paymentId}"); navigationManager.NavigateTo(checkoutUrl); } } protected override async Task OnInitializedAsync() { foreach (var t in Enum.GetValues(typeof(TransferStatusType)).OfType().ToList()) _statusTypes.Add(t.ToString()); _logger = new LoggerClient(LogWriters.ToArray()); _logger.Info($"parameter: {transferId.ToString()}"); await LoadTransfer(); var test = _transfer.UserId; if (!_transfer.UserId.IsNullOrEmpty()) { //get transfer user details var transferUser = await UserDataService.GetUserByEmailAsync(_transfer.ContactEmail); if(transferUser != null) { if(_sessionService.IsAuthenticated) { if (_sessionService.User != null) { if (transferUser.Id == _sessionService.User.UserId) { //I am logged in, and this is my transfer await UserDataService.SetEmailConfirmed(_transfer.UserId); } else { //this is not my transfer, if I am not sysadmin, I should not see the transfer details if(!_sessionService.IsSysAdmin || !_sessionService.IsDevAdmin) { displayCard = false; } } } } } } } protected override async Task OnParametersSetAsync() { _logger.Info($"on parameter set: {transferId.ToString()}"); await base.OnParametersSetAsync(); } private void SetEditMode() { _editMode = true; } private async Task LoadTransfer() { try { //var response = await transferDataService.GetTransferByIdAsync(transferId); var response = await _adminSignalRClient.GetTransferById(transferId); if (response != null) { _transfer = response; } else { _errorMessage = $"Error loading transfer: {_transfer.Id}"; } } catch (Exception ex) { _errorMessage = $"Exception: {ex.Message}"; } _isLoading = false; } private async Task UpdateTransferEventHandler(MouseEventArgs e, bool shouldRedirect = false) { var result = await UpdateTransfer(shouldRedirect); if (result != null && shouldRedirect) navManager.NavigateTo("/mytransfers"); // Redirect to a list or another page after successful update } private async Task UpdateTransfer(bool shouldRedirect = false) { try { var responseTransfer = await transferDataService.UpdateTransferAsync(_transfer); if (responseTransfer != null) { return responseTransfer; } else { _errorMessage = $"Error updating transfer: {_transfer.Id}"; return null; } } catch (Exception ex) { _errorMessage = $"Exception: {ex.Message}"; return null; } } }