@using AyCode.Core.Enums @using AyCode.Core.Loggers @using AyCode.Services.Loggers @using BlazorAnimation @using TIAM.Core.Consts @using TIAM.Core.Enums @using TIAM.Entities.Transfers @using TIAM.Models.Dtos.Users @using TIAM.Services @using TIAMSharedUI.Pages.Components.EditComponents @using TIAMSharedUI.Pages.User.SysAdmins @using TIAMSharedUI.Shared.Components.Cards @using TIAMWebApp.Shared.Application.Interfaces @using TIAMWebApp.Shared.Application.Models.ClientSide.UI @using TIAMWebApp.Shared.Application.Models.ClientSide.UI.WizardModels @using TIAMWebApp.Shared.Application.Services @using TIAMWebApp.Shared.Application.Utility @inject IEnumerable LogWriters @inject IServiceProviderDataService ServiceProviderDataService @inject AdminSignalRClient AdminSignalRClient; @inject IWizardProcessor wizardProcessor @{ if (showResultMessage) {
@resultMessage
} else { } }
@{ if (showResultMessage) { } else { } }
@($"{Context.FullName}")

@Context.ContactEmail

@Context.ContactPhone


@RenderDetailsItem("fa-solid fa-location-dot", "From", Context.FromAddress)
@RenderDetailsItem("fa-solid fa-location-dot", "To", Context.ToAddress)

@RenderDetailsItem("fa-solid fa-users", "Passengers", Context.PassengerCount.ToString())
@RenderDetailsItem("fa-solid fa-suitcase-rolling", "Luggage", Context.LuggageCount.ToString())
@RenderDetailsItem("fa-solid fa-hashtag", "Flight number", Context.FlightNumber)

@RenderDetailsItem("fa-solid fa-hashtag", "Comment", Context.Comment)
@RenderDetailsItem("fa-solid fa-list-check", "Status", TransferStatusModel.GetStatusModel(Context.TransferStatusType).StatusName)
Save
@if (!Context.Paid) {
Paid in car

To be paid:

€@Context.Price
}

@msg

@code { [Parameter] public Transfer Context { get; set; } [Parameter] public EventCallback DataChanged { get; set; } [Parameter] public string Role { get; set; } private LoggerClient _logger = null!; //Email private bool showResultMessage = false; private string resultMessage = string.Empty; private List sysAdmins = []; private MessageWizardModel _messageWizardModel = new(); private bool displayCard = true; private bool _popupVisible; public List IgnoreList = [ "ReceiverEmailAddress", "ReceiverFullName", "ReceiverId", "SenderEmailAddress", "SenderFullName", "SenderId", "ContextId", "ContextType" ]; private static readonly IEnumerable DriverStatuses = TransferStatusModel.AllStatuses.Values.Where(x => x.StatusValue is TransferStatusType.DriverConfirmed or TransferStatusType.DriverEnRoute or TransferStatusType.PassengerPickup or TransferStatusType.Finished or TransferStatusType.UserCanceled); // private static readonly IEnumerable Statuses = new[] // { // new TransferStatusModel(TransferStatusType.DriverConfirmed, "Driver confirmed"), // new TransferStatusModel(TransferStatusType.DriverEnRoute, "Driver enroute"), // new TransferStatusModel(TransferStatusType.PassengerPickup, "Passenger in car"), // new TransferStatusModel(TransferStatusType.Finished, "Finished"), // new TransferStatusModel(TransferStatusType.UserCanceled, "User cancelled"), // }; private TransferStatusModel _currentStatusType; public TransferStatusModel CurrentStatusType { get => _currentStatusType; set { if (_currentStatusType != value) { _currentStatusType = value; OnSelectedStatusChanged(value); } } } string msg; private bool isSaveActive = false; void OnSelectedStatusChanged(TransferStatusModel status) { if (status == null) { isSaveActive = false; msg = "Status is null"; } else { isSaveActive = true; Context.TransferStatusType = (TransferStatusType)(Convert.ToInt16(status.StatusValue)); msg = $"Status changed: {status.StatusName} - {Context.TransferStatusType} !"; } } protected async Task SaveStatus() { isSaveActive = false; var result = await AdminSignalRClient.PostDataAsync(SignalRTags.UpdateTransfer, Context); if (result != null) { if (TransferStatusModel.GetStatusModel(result.TransferStatusType) == CurrentStatusType) { msg = $"Stataus saved"; StateHasChanged(); } else { msg = "Some error occured, please try again later"; } } else { msg = "Some error occured during saving, please try again later"; } await DataChanged.InvokeAsync(msg); } protected async Task PaidByCash() { Context.Paid = true; var result = await AdminSignalRClient.PostDataAsync(SignalRTags.UpdateTransfer, Context); if (result != null) { msg = $"Payment status saved"; StateHasChanged(); } else { msg = "Some error occured during saving, please try again later"; } await DataChanged.InvokeAsync(msg); } protected override async Task OnInitializedAsync() { _logger = new LoggerClient(LogWriters.ToArray()); sysAdmins = (await AdminSignalRClient.GetByIdAsync>(SignalRTags.GetAllUserModelDtoDetails, TiamConstClient.SysAdmins[0]))!; await base.OnInitializedAsync(); } protected override Task OnParametersSetAsync() { CurrentStatusType = TransferStatusModel.GetStatusModel(Context.TransferStatusType); return base.OnParametersSetAsync(); } RenderFragment RenderDetailsItem(string iconCssClass, string caption, string value) { return @
@value
; } void SendMail(Transfer item) { _logger.Info($"Preparing mail to {item.ContactEmail}, {item.Id}"); _messageWizardModel.Subject = $"[#{item.OrderId}] New message from {Role}"; _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}"); } }