Пример #1
0
 protected override async Task OnInitializedAsync()
 {
     stage         = CheckoutStages.Idle;
     hubConnection = MessageHub.SetupMessageHub(NavigationManager);
     ConfigureMessageHub();
     await hubConnection.StartAsync();
 }
Пример #2
0
        public async Task ShowModal(CustomerVm customerVm)
        {
            await CoseTerminal();

            stage                = CheckoutStages.Idle;
            AvalibleTerminals    = new List <string>();
            TerminalId           = null;
            SelectedCustomerId   = customerVm.Id;
            SelectedCustomerName = customerVm.Name;

            modalRef.Show();

            StartScanner();
        }
Пример #3
0
 private async Task RequestTerminal()
 {
     if ((stage == CheckoutStages.TerminalScanning || stage == CheckoutStages.TerminalFound || stage == CheckoutStages.Idle) && !string.IsNullOrEmpty(SelectedCustomerId))
     {
         if (stage == CheckoutStages.Idle)
         {
             stage = CheckoutStages.TerminalScanning;
         }
         await hubConnection.SendAsync(nameof(MessageHub.SendFindTerminal), new FindTerminalEvent
         {
             StoreId    = posState.StoreId,
             CustomerId = SelectedCustomerId
         });
     }
 }
Пример #4
0
        public void ConfigureMessageHub()
        {
            hubConnection.On <OpenTerminalConfirmationEvent>(SendMethods.TerminalOpenConfirmation.ToString(), async(Event) => {
                if (posState.StoreId == Event.StoreId)
                {
                    if (SelectedCustomerId == Event.CustomerId)
                    {
                        //open terminal
                        stage      = CheckoutStages.TerminalSelected;
                        TerminalId = Event.TerminalId;
                        var orders = posState.GetCustomerOrders(SelectedCustomerId);

                        await hubConnection.SendAsync(nameof(MessageHub.SendTerminalSummary), new TerminalSummaryEvent {
                            StoreId    = posState.StoreId,
                            CustomerId = SelectedCustomerId,
                            Orders     = orders,
                            TerminalId = TerminalId
                        });

                        StateHasChanged();
                    }
                    else
                    {
                        //terminal take by another customer
                        AvalibleTerminals = AvalibleTerminals.Where(_ => _ != Event.TerminalId).ToList();
                        StateHasChanged();
                    }
                }
            });

            hubConnection.On <TerminalFoundEvent>(SendMethods.TerminalFound.ToString(), (Event) => {
                if (posState.StoreId == Event.StoreId &&
                    SelectedCustomerId == Event.CustomerId &&
                    (stage == CheckoutStages.TerminalFound || stage == CheckoutStages.TerminalScanning)
                    )
                {
                    if (!AvalibleTerminals.Any(_ => _ == Event.TerminalId))
                    {
                        AvalibleTerminals.Add(Event.TerminalId);
                        stage = CheckoutStages.TerminalFound;
                        StateHasChanged();
                    }
                }
            });
        }
Пример #5
0
 public void HideModal()
 {
     stage = CheckoutStages.Idle;
     modalRef.Hide();
 }