async Task ExecuteLoadItemsCommand() { if (IsBusy) { return; } IsBusy = true; try { Consumos.Clear(); var dbItems = await App.Database.GetConsumosForClienteAsync(ClienteSeleccionado); if (dbItems.Count == 0) { //Si no hay consumos, inserto todos los productos con consumo // cero por defecto dbItems = await App.Database.InsertarConsumosDefaultAsync(ClienteSeleccionado); } //Inserto consumos con su respectivo producto en la estructura // para poder hacer el binding y mostrar nombres en pantalla foreach (var item in dbItems) { var prod = await App.Database.Get <Producto>(p => p.Id == item.ProductoId); var detalleConsumo = new DetalleConsumo(); detalleConsumo.P = prod; detalleConsumo.C = item; Consumos.Add(detalleConsumo); } } catch (Exception ex) { Debug.WriteLine(ex); } finally { IsBusy = false; } }
public ConsumoClientesViewModel(Cliente cliente) { ClienteSeleccionado = cliente; Title = $"Consumos del Cliente: {ClienteSeleccionado.Nombre}"; Consumos = new ObservableCollection <DetalleConsumo>(); LoadItemsCommand = new Command(async() => await ExecuteLoadItemsCommand()); MessagingCenter.Subscribe <NewConsumoPage, Consumo>(this, "AgregarConsumo", async(obj, item) => { MessagingCenter.Unsubscribe <NewConsumoPage, Consumo>(this, "AgregarConsumo"); var _item = item as Consumo; var prod = await App.Database.Get <Producto>(p => p.Id == _item.ProductoId); var detalleConsumo = new DetalleConsumo(); detalleConsumo.P = prod; detalleConsumo.C = _item; Consumos.Add(detalleConsumo); await App.Database.InsertItemAsync(_item); }); }