@using BlazorAnimation @using TIAM.Core.Enums @using TIAM.Entities.Transfers @using TIAM.Services @using TIAMSharedUI.Shared.Components.Cards @using TIAMWebApp.Shared.Application.Interfaces @using TIAMWebApp.Shared.Application.Models.ClientSide.UI @using TIAMWebApp.Shared.Application.Services @inject IServiceProviderDataService ServiceProviderDataService @inject AdminSignalRClient AdminSignalRClient;
@($"{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", AllStatuses.FirstOrDefault(x => x.StatusValue == (byte)Context.TransferStatusType).StatusName)
Save
@if(!Context.Paid) {
Paid in car
}

@msg

@code { [Parameter] public Transfer Context { get; set; } [Parameter] public EventCallback DataChanged { get; set; } private static readonly IEnumerable Statuses = new[] { new TransferStatusModel(Convert.ToByte(TransferStatusType.DriverConfirmed), "Driver confirmed"), new TransferStatusModel(Convert.ToByte(TransferStatusType.DriverEnRoute), "Driver enroute"), new TransferStatusModel(Convert.ToByte(TransferStatusType.PassengerPickup), "Passenger in car"), new TransferStatusModel(Convert.ToByte(TransferStatusType.Finished), "Finished"), new TransferStatusModel(Convert.ToByte(TransferStatusType.UserCanceled), "User cancelled"), }; private static readonly List AllStatuses = new() { new TransferStatusModel(Convert.ToByte(TransferStatusType.OrderSubmitted), "Order submitted"), new TransferStatusModel(Convert.ToByte(TransferStatusType.OrderConfirmed), "Order confirmed"), new TransferStatusModel(Convert.ToByte(TransferStatusType.AssignedToDriver), "Assigned to driver"), new TransferStatusModel(Convert.ToByte(TransferStatusType.DriverConfirmed), "Driver confirmed"), new TransferStatusModel(Convert.ToByte(TransferStatusType.DriverEnRoute), "Driver enroute"), new TransferStatusModel(Convert.ToByte(TransferStatusType.PassengerPickup), "Passenger in car"), new TransferStatusModel(Convert.ToByte(TransferStatusType.Finished), "Finished"), new TransferStatusModel(Convert.ToByte(TransferStatusType.UserCanceled), "User cancelled"), new TransferStatusModel(Convert.ToByte(TransferStatusType.AdminDenied), "Admin 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 (AllStatuses.FirstOrDefault(x => x.StatusValue == (byte)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() { await base.OnInitializedAsync(); } protected override Task OnParametersSetAsync() { CurrentStatusType = AllStatuses.FirstOrDefault(x => x.StatusValue == (byte)Context.TransferStatusType); return base.OnParametersSetAsync(); } RenderFragment RenderDetailsItem(string iconCssClass, string caption, string value) { return @
@value
; } }