public bool StockMatch(Stock stock, ScreenerCriteriaViewModel viewModel)
        {
            if (ValueType == CellKind.Number || ValueType == CellKind.Percentage)
            {
                switch (viewModel.Operation)
                {
                case CriteriaConstants.Greater: return(GetDecimalValue(stock) > viewModel.NumberValue);

                case CriteriaConstants.Lower: return(GetDecimalValue(stock) < viewModel.NumberValue);

                case CriteriaConstants.IsEqual: return(GetDecimalValue(stock) == viewModel.NumberValue);

                case CriteriaConstants.Different: return(GetDecimalValue(stock) != viewModel.NumberValue);

                default: return(true);
                }
            }
            else if (ValueType == CellKind.Text)
            {
                switch (viewModel.Operation)
                {
                case CriteriaConstants.IsEqual: return(!string.IsNullOrEmpty(GetStringValue(stock)) && !string.IsNullOrEmpty(viewModel.StringValue) && GetStringValue(stock) == viewModel.StringValue);

                case CriteriaConstants.Different: return(string.IsNullOrEmpty(GetStringValue(stock)) || string.IsNullOrEmpty(viewModel.StringValue) || GetStringValue(stock) != viewModel.StringValue);

                default: return(true);
                }
            }
            return(true);
        }
예제 #2
0
        private GenericScreenerViewModel ManageCriterias(GenericScreenerViewModel viewModel)
        {
            GenericScreenerViewModel newViewModel;

            if (viewModel != null)
            {
                newViewModel = viewModel;
                if (newViewModel.Criterias == null)
                {
                    newViewModel.Criterias = new List <ScreenerCriteriaViewModel>();
                }
                if (!string.IsNullOrEmpty(viewModel.CriteriaToAdd) && _criteriaFactory.CriteriaExists(viewModel.CriteriaToAdd))
                {
                    var criteria          = _criteriaFactory.GetCriteria(viewModel.CriteriaToAdd);
                    var criteriaViewModel = new ScreenerCriteriaViewModel
                    {
                        Name      = criteria.DisplayName,
                        Id        = criteria.Id,
                        Operation = criteria.DefaultOperator,
                        ValueType = criteria.ValueType
                    };
                    newViewModel.Criterias.Add(criteriaViewModel);
                }
            }
            else
            {
                newViewModel = new GenericScreenerViewModel {
                    Criterias = new List <ScreenerCriteriaViewModel>()
                };
            }
            if (!string.IsNullOrEmpty(newViewModel.CriteriaToRemove) &&
                newViewModel.Criterias.Any(x => x.Id == newViewModel.CriteriaToRemove))
            {
                var criteria = newViewModel.Criterias.First(x => x.Id == newViewModel.CriteriaToRemove);
                newViewModel.Criterias.Remove(criteria);
            }
            return(newViewModel);
        }