@page "/mytransfers/{transferId:guid}" @using AyCode.Core.Enums @using AyCode.Core.Extensions @using TIAM.Core.Consts @using TIAM.Entities.Drivers @using TIAM.Entities.Transfers @using TIAM.Models.Dtos.Users @using TIAM.Resources @using TIAM.Services @using TIAMSharedUI.Pages.Components.EditComponents @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(showResultMessage) {
@resultMessage
} else { } }
@{ if(showResultMessage) { } else { } }
@if (_isLoading) {
} else if (!string.IsNullOrEmpty(_errorMessage)) {
@_errorMessage
} else {
@if (!_editMode) {
Transfer identifier: #@_transfer.OrderId

@_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


@{ if(_drivers.Count < 1) {

No car information available yet

} else { foreach (var _car in _cars) {

License plate: @_car.LicencePlate

Car looks: @_car.Color, @_car.Manufacture, @_car.CarModel

} } }

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

@Enum.GetName(typeof(TransferStatusType), _transfer.TransferStatusType)

EUR @_transfer.Price

} else {
Transfer identifier: @_transfer.Id

}
} @code { [Parameter] public Guid transferId { get; set; } = Guid.Empty; private Transfer _transfer = new Transfer(); private List _drivers = new List(); private List _cars = new List(); private bool _isLoading = true; private string _errorMessage = string.Empty; private bool showResultMessage = false; private string resultMessage = string.Empty; private List sysAdmins = []; 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", "ContextType" ]; private bool _editMode = false; private readonly List _statusTypes = []; void SendMail(Transfer item) { _logger.Info($"Preparing mail to {item.ContactEmail}, {item.Id}"); _messageWizardModel.Subject = $"[#{item.OrderId}] New message from guest"; _messageWizardModel.ReceiverId = TiamConstClient.SysAccounts["SystemEmailSender"]; //get first sysadmin _messageWizardModel.ReceiverEmailAddress = sysAdmins[0].UserDto.EmailAddress; _messageWizardModel.ReceiverFullName = "Admin user"; _messageWizardModel.SenderId = item.UserId; _messageWizardModel.SenderEmailAddress = TiamConstClient.SystemEmailAddress; _messageWizardModel.ContextId = item.Id; _messageWizardModel.ContextType = MessageContextType.Transfer; _popupVisible = true; } void CancelCreateClick() { showResultMessage = false; resultMessage = ""; _popupVisible = false; } void EmailPopupClosed() { //cancel clicked } void EmailPopupClosing(PopupClosingEventArgs args) { //myModel = new TransferWizardModel(); _messageWizardModel = new MessageWizardModel(); } public async Task SubmitForm(object result) { var messageModel = (result as MessageWizardModel)!; _logger.Info(messageModel.Content); var email = await wizardProcessor.ProcessWizardAsync(result.GetType(), messageModel); if(email != null) { resultMessage = "Message sent"; } else { resultMessage = $"Something went wrong, please try again later, or contact us by regular email at {TiamConstClient.SystemEmailAddress}!"; } showResultMessage = true; _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(); sysAdmins = await _adminSignalRClient.GetByIdAsync>(SignalRTags.GetAllUserModelDtoDetails, TiamConstClient.SysAdmins[0]); 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; _drivers = await _adminSignalRClient.GetByIdAsync>(SignalRTags.GetTransferDriversByTransferId, _transfer.Id); if(_drivers.Count > 0) { foreach (var _transferToDriver in _drivers) { _cars.Add(_transferToDriver.Car); } _logger.DebugConditional($"{_drivers.FirstOrDefault().Id}"); } } 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; } } }