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); }
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); }