using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; using Tango.BL; using Tango.BL.Builders; using Tango.BL.Entities; using Tango.BL.Enumerations; using Tango.Core.Commands; using Tango.MachineStudio.Common; using Tango.SharedUI.Components; namespace Tango.MachineStudio.ActionLogs.ViewModels { public class MainViewVM : StudioViewModel { private DateTime _startSelectedDate; public DateTime StartSelectedDate { get { return _startSelectedDate; } set { _startSelectedDate = value; RaisePropertyChangedAuto(); } } private DateTime _endSelectedDate; public DateTime EndSelectedDate { get { return _endSelectedDate; } set { _endSelectedDate = value; RaisePropertyChangedAuto(); } } private string _searchFilter; public string SearchFilter { get { return _searchFilter; } set { _searchFilter = value; RaisePropertyChangedAuto(); } } private ObservableCollection _actionLogs; public ObservableCollection ActionLogs { get { return _actionLogs; } set { _actionLogs = value; RaisePropertyChanged(nameof(ActionLogs)); } } private SelectedObjectCollection _selectedActionLogTypes; public SelectedObjectCollection SelectedActionLogTypes { get { return _selectedActionLogTypes; } set { _selectedActionLogTypes = value; RaisePropertyChanged(nameof(SelectedActionLogTypes)); } } public RelayCommand SearchCommand { get; set; } public RelayCommand CopyToClipBoardCommand { get; set; } public MainViewVM() { ActionLogs = new ObservableCollection(); SearchCommand = new RelayCommand(Search); CopyToClipBoardCommand = new RelayCommand(CopyToClipBoard); DateTime now = DateTime.Now; ; StartSelectedDate = now.AddMonths(-1); EndSelectedDate = now; var source = Enum.GetValues(typeof(ActionLogType)).Cast().ToObservableCollection(); var syncedSource = Enum.GetValues(typeof(ActionLogType)).Cast().ToObservableCollection(); SelectedActionLogTypes = new SelectedObjectCollection(source, syncedSource); //SelectedActionLogTypes.ToList().ForEach(x => x.IsSelected = true); } public override void OnApplicationReady() { } private void Search() { GetActionLogs(); } private void CopyToClipBoard() { } private async void GetActionLogs() { string filter = SearchFilter?.ToLower(); using (ObservablesContext db = ObservablesContext.CreateDefault()) { ActionLogs = await new ActionLogsCollectionBuilder(db).Set(x => x.LastUpdated < EndSelectedDate && x.LastUpdated >= StartSelectedDate) .WithUsers() .WithActionType(SelectedActionLogTypes.SynchedSource.ToArray()) .Query(y => y.Where (x => filter == null || (x.ID.ToString().ToLower().StartsWith(filter) || (x.RelatedObjectName != null && x.RelatedObjectName.ToLower().StartsWith(filter)) || (x.User != null && x.User.Contact != null && x.User.Contact.FullName.ToLower().StartsWith(filter))))) .BuildAsync(); } } } }