Ejemplo n.º 1
0
        public async override void OnNavigatedTo(INavigationParameters parameters)
        {
            base.OnNavigatedTo(parameters);
            switch (parameters.GetNavigationMode())
            {
            case NavigationMode.Back:
                break;

            case NavigationMode.New:
                using (var client = new HttpClient())
                {
                    var response = await client.GetAsync(Properties.Resources.BaseUrl + "invoices/GetPaidInvoices");

                    if (response.IsSuccessStatusCode)
                    {
                        var invoices = JsonConvert.DeserializeObject <IEnumerable <InvoiceDto> >(await response.Content.ReadAsStringAsync());
                        ListInvoiceBindProp = new ObservableCollection <InvoiceDto>(invoices);
                    }
                }
                CurrentInvoiceBindProp = ListInvoiceBindProp.FirstOrDefault();
                break;

            case NavigationMode.Forward:
                break;

            case NavigationMode.Refresh:
                break;

            default:
                break;
            }
        }
Ejemplo n.º 2
0
        private async void StartSignalRAsync()
        {
            _connection = new HubConnectionBuilder()
                          .WithUrl(Properties.Resources.SignalR)
                          .Build();

            _connection.Closed += async(error) =>
            {
                await Task.Delay(new Random().Next(0, 5) * 1000);

                await _connection.StartAsync();
            };

            _connection.On <InvoiceDto>("ReceiveInvoice", (invoice) =>
            {
                Device.BeginInvokeOnMainThread(() =>
                {
                    ListInvoiceBindProp.Add(invoice);
                });
            });

            _connection.On <Guid>("DeleteInvoice", (invoiceId) =>
            {
                var invoice = ListInvoiceBindProp.FirstOrDefault(i => i.Id == invoiceId);
                Device.BeginInvokeOnMainThread(() =>
                {
                    ListInvoiceBindProp.Remove(invoice);
                });
            });

            _connection.On <InvoiceDto>("UpdateInvoice", (invoice) =>
            {
                var invoiceToUpdate = ListInvoiceBindProp.FirstOrDefault(i => i.Id == invoice.Id);
                Device.BeginInvokeOnMainThread(() =>
                {
                    invoiceToUpdate.Discounts  = invoice.Discounts;
                    invoiceToUpdate.Items      = invoice.Items;
                    invoiceToUpdate.Table      = invoice.Table;
                    invoiceToUpdate.TableId    = invoice.TableId;
                    invoiceToUpdate.TotalPrice = invoice.TotalPrice;
                });
            });

            try
            {
                await _connection.StartAsync();
            }
            catch (Exception ex)
            {
                await ShowErrorAsync(ex);
            }
        }
Ejemplo n.º 3
0
        public async override void OnNavigatedTo(INavigationParameters parameters)
        {
            switch (parameters.GetNavigationMode())
            {
            case NavigationMode.Back:
                if (parameters.ContainsKey("item"))
                {
                    var item = parameters["item"] as ItemForInvoiceDto;
                    if (InvoiceBindProp == null)
                    {
                        InvoiceBindProp = new InvoiceDto();
                    }
                    InvoiceBindProp.Items.Add(item);
                    InvoiceBindProp.TotalPrice += item.Value;
                }
                if (parameters.ContainsKey(nameof(InvoiceBindProp)))
                {
                    var invoice = parameters[nameof(InvoiceBindProp)] as InvoiceDto;
                    await _connection.InvokeAsync("DeleteInvoice", InvoiceBindProp.Id);

                    InvoiceBindProp     = null;
                    TempInvoiceBindProp = null;
                }
                break;

            case NavigationMode.New:
                using (var client = new HttpClient())
                {
                    var categoryTask = client.GetAsync(Properties.Resources.BaseUrl + "categories/");
                    var discountTask = client.GetAsync(Properties.Resources.BaseUrl + "discounts/");
                    var invoiceTask  = client.GetAsync(Properties.Resources.BaseUrl + "invoices/");
                    var zoneTask     = client.GetAsync(Properties.Resources.BaseUrl + "zones/");

                    var allTasks = new List <Task> {
                        categoryTask, discountTask, invoiceTask, zoneTask
                    };
                    while (allTasks.Any())
                    {
                        Task finished = await Task.WhenAny(allTasks);

                        if (finished == categoryTask)
                        {
                            if (categoryTask.Result.IsSuccessStatusCode)
                            {
                                var categories = JsonConvert.DeserializeObject <IEnumerable <CategoryDto> >(await categoryTask.Result.Content.ReadAsStringAsync());
                                foreach (var category in categories)
                                {
                                    ListCategoryBindProp.Add(category);
                                }
                            }
                            else
                            {
                                await PageDialogService.DisplayAlertAsync("Lỗi", $"{await categoryTask.Result.Content.ReadAsStringAsync()}", "Đóng");
                            }
                        }
                        else if (finished == discountTask)
                        {
                            if (discountTask.Result.IsSuccessStatusCode)
                            {
                                var discounts = JsonConvert.DeserializeObject <IEnumerable <DiscountDto> >(await discountTask.Result.Content.ReadAsStringAsync());
                                foreach (var discount in discounts)
                                {
                                    ListDiscountBindProp.Add(discount);
                                }
                            }
                            else
                            {
                                await PageDialogService.DisplayAlertAsync("Lỗi", $"{await discountTask.Result.Content.ReadAsStringAsync()}", "Đóng");
                            }
                        }
                        else if (finished == invoiceTask)
                        {
                            if (invoiceTask.Result.IsSuccessStatusCode)
                            {
                                var invoices = JsonConvert.DeserializeObject <IEnumerable <InvoiceDto> >(await invoiceTask.Result.Content.ReadAsStringAsync());
                                foreach (var invoice in invoices)
                                {
                                    ListInvoiceBindProp.Add(invoice);
                                }
                            }
                            else
                            {
                                await PageDialogService.DisplayAlertAsync("Lỗi", $"{await invoiceTask.Result.Content.ReadAsStringAsync()}", "Đóng");
                            }
                        }
                        else if (finished == zoneTask)
                        {
                            if (zoneTask.Result.IsSuccessStatusCode)
                            {
                                var zones = JsonConvert.DeserializeObject <IEnumerable <ZoneDto> >(await zoneTask.Result.Content.ReadAsStringAsync());
                                foreach (var zone in zones)
                                {
                                    ListZoneBindProp.Add(zone);
                                }
                            }
                            else
                            {
                                await PageDialogService.DisplayAlertAsync("Lỗi", $"{await zoneTask.Result.Content.ReadAsStringAsync()}", "Đóng");
                            }
                        }
                        allTasks.Remove(finished);
                    }
                    var id       = Xamarin.Essentials.Preferences.Get("token", "token");
                    var response = await client.GetAsync(Properties.Resources.BaseUrl + "users/" + id);

                    if (response.IsSuccessStatusCode)
                    {
                        var user = JsonConvert.DeserializeObject <UserDto>(await response.Content.ReadAsStringAsync());
                        CurrentUserBindProp = user;
                    }
                }
                break;

            case NavigationMode.Forward:
                break;

            case NavigationMode.Refresh:
                break;

            default:
                break;
            }
        }
Ejemplo n.º 4
0
 public CSM_04PageViewModel(InitParamVm initParamVm) : base(initParamVm)
 {
     GetAllInvoice();
     CurrentBillBindProp = ListInvoiceBindProp.First();
 }