using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using SlnMesnac.Model.domain; using SlnMesnac.Repository.service; using SlnMesnac.WPF.ViewModel.Base; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Linq.Expressions; using System.Text; using System.Threading.Tasks; using SlnMesnac.Common; using SlnMesnac.WPF.Attribute; using Prism.Events; using SlnMesnac.WPF.Event; using Microsoft.Extensions.DependencyInjection; namespace SlnMesnac.WPF.ViewModel { [RegisterAsSingletonAttribute] public partial class ProductInfoViewModel : BaseViewModel { private readonly Ibase_product_infoServices _services; private readonly IEventAggregator _eventAggregator; [ObservableProperty] public string productCodeStr = string.Empty; [ObservableProperty] public string productNameStr = string.Empty; [ObservableProperty] public ObservableCollection productInfoItems = new ObservableCollection(); public ProductInfoViewModel(Ibase_product_infoServices services, IEventAggregator eventAggregator) { _services = services; _eventAggregator = eventAggregator; QueryProductInfo(); } [RelayCommand] private void QueryProductInfo() { Expression> exp = s1 => true; if(!string.IsNullOrEmpty(productCodeStr)) { exp = exp.And(x => x.productCode == productCodeStr); } if (!string.IsNullOrEmpty(productNameStr)) { exp = exp.And(x=>x.productName == productNameStr); } var infos = _services.Query(exp); ProductInfoItems = new ObservableCollection(infos); } [RelayCommand] private void EditProductInfo(string productCode) { var info = _services.Query(x=>x.productCode == productCode).First(); _eventAggregator.GetEvent().Publish(info); var mainWindow = App.ServiceProvider.GetService(); mainWindow.ControlOnClick("EditDetails"); } } }