private void GetAllExecute(List <KeyValuePair <string, string> > filterList)
        {
            var predicate = GeneratePredicate(filterList);
            var result    = businessSet.GetAll(predicate);

            if (result.HasException == false)
            {
                ItemsSource = new ObservableCollection <Person>(result.Data);
            }
            else
            {
                Billboard.ShowMessage(result.Message.MessageType, result.Message.Message);
            }
        }
        private void GetAllExecute(List <KeyValuePair <string, string> > filterList)
        {
            try
            {
                var      predicate = GeneratePredicate(filterList);
                object[] values    = null;

                var typeId = filterList?.FirstOrDefault(x => x.Key == "TypeId");
                if (typeId != null && typeId.HasValue)
                {
                    var typeIdString = typeId.Value.Value;
                    if (!string.IsNullOrEmpty(typeIdString))
                    {
                        var typeIdValue = Enum.Parse(typeof(TransactionGroupType), typeIdString.Substring(typeIdString.IndexOf("=") + 2));
                        values = new object[] { typeIdValue };
                    }
                }

                var transactoinGroupListResult = businessSet.GetAll(predicate, values);

                if (transactoinGroupListResult.HasException == false)
                {
                    var costNode = new TransactionGroupTypeNode()
                    {
                        Type       = TransactionGroupType.Cost,
                        Members    = FillTransactionGroupList(transactoinGroupListResult.Data, null, TransactionGroupType.Cost, predicate.Contains("Title")),
                        IsExpanded = true
                    };
                    var IncomeNode = new TransactionGroupTypeNode()
                    {
                        Type       = TransactionGroupType.Income,
                        Members    = FillTransactionGroupList(transactoinGroupListResult.Data, null, TransactionGroupType.Income, predicate.Contains("Title")),
                        IsExpanded = true
                    };
                    ItemsSource = new System.Collections.ObjectModel.ObservableCollection <TransactionGroupTypeNode>()
                    {
                        costNode, IncomeNode
                    };
                }
                else
                {
                    Billboard.ShowMessage(transactoinGroupListResult.Message.MessageType, transactoinGroupListResult.Message.Message);
                }
            }
            catch (Exception ex)
            {
                Billboard.ShowMessage(Infra.Wpf.Controls.MessageType.Error, "در سامانه خطایی رخ داده است.");
                accountingUow?.Logger.Log(ex, "TransactionGroupListVM.GetAllExecute", (Thread.CurrentPrincipal.Identity as Identity).Id);
            }
        }
        private void UpExecute(Person model)
        {
            if (model.OrderItem != 1)
            {
                model.OrderItem--;
                businessSet.SetOrderItems(true, model);

                BusinessResult <int> saveResult = accountingUow.SaveChange();
                if (saveResult.HasException)
                {
                    Billboard.ShowMessage(saveResult.Message.MessageType, saveResult.Message.Message);
                }
                else
                {
                    Messenger.Default.Send(model.PersonId, "PersonListView_SaveItemId");
                    LoadedEventExecute();
                }
            }
        }
        private void DownExecute(Person model)
        {
            var resultCount = accountingUow.PersonRepository.GetCount(x => x.RecordStatusId == DataAccess.Enums.RecordStatus.Exist);

            if (model.OrderItem < resultCount)
            {
                model.OrderItem++;
                businessSet.SetOrderItems(true, model);

                BusinessResult <int> saveResult = accountingUow.SaveChange();
                if (saveResult.HasException)
                {
                    Billboard.ShowMessage(saveResult.Message.MessageType, saveResult.Message.Message);
                }
                else
                {
                    Messenger.Default.Send(model.PersonId, "PersonListView_SaveItemId");
                    LoadedEventExecute();
                }
            }
        }
        private void ChangeStatusExecute(Person model)
        {
            if (ShowMessageBox("آیا از حذف شخص مطمئین هستید؟", "حذف", Infra.Wpf.Controls.MsgButton.YesNo, Infra.Wpf.Controls.MsgIcon.Question, Infra.Wpf.Controls.MsgResult.No) == Infra.Wpf.Controls.MsgResult.Yes)
            {
                Messenger.Default.Send(model, "PersonListView_SaveItemIndex");

                var result = businessSet.Delete(model);
                if (result.HasException == false)
                {
                    BusinessResult <int> saveResult = accountingUow.SaveChange();
                    if (saveResult.HasException)
                    {
                        result.Message = saveResult.Message;
                    }
                    GetAllExecute(SearchPhraseList);
                    Messenger.Default.Send("index", "PersonListView_SetScrollView");
                }

                Billboard.ShowMessage(result.Message.MessageType, result.Message.Message);
            }
        }
        private void SubmitExecute()
        {
            ValidationResult validationResult = Model.Validate();

            if (!validationResult.IsValid)
            {
                Billboard.ShowMessage(Infra.Wpf.Controls.MessageType.Error, validationResult.Errors[0].ErrorMessage);
                FocusByPropertyName(validationResult.Errors[0].PropertyName);
                return;
            }

            BusinessResult <bool> result;

            if (isEdit)
            {
                result = businessSet.Update(Model);
            }
            else
            {
                result = businessSet.Add(Model);
            }

            if (result.HasException == false && result.IsOnBeforExecute)
            {
                BusinessResult <int> saveResult = accountingUow.SaveChange();
                if (saveResult.HasException)
                {
                    result.Message = saveResult.Message;
                }
                else
                {
                    NavigationService.GoBack();
                    Messenger.Default.Send(Model.PersonId, "PersonListView_SaveItemId");
                }
            }

            Billboard.ShowMessage(result.Message.MessageType, result.Message.Message);
        }