private void AddNewCondition() { if (ValidateInput()) { string sql = string.Empty; string condition = string.Empty; if (txtFieldValue.Enabled) { string columnName = cmbFieldName.SelectedItem.ToString(); string paramName = "@" + columnName + runningParamIndex.ToString(); sql = columnName; sql = sql + TranslateOperator(cmbFieldOperator.SelectedItem.ToString()); sql = sql + paramName; IRowFilterCondition rowFc = GetRowFilterCondition(sql, paramName, columnName); // e.g. LastName = @LastName0 // The runningParamIndex is prefixed into the param name in case there are multiple params // using the same field name. For example, LastName = 'Smith' AND LastName = 'Smythe' string friendlyOp = cmbFieldOperator.SelectedItem.ToString(); condition = cmbFieldName.SelectedItem.ToString(); if (friendlyOp.ToLowerInvariant().Contains("is less than n days")) { condition = condition + StringLiterals.SPACE + friendlyOp.Replace(" N ", " " + txtFieldValue.Text + " "); } else { condition = condition + StringLiterals.SPACE + friendlyOp + StringLiterals.SPACE; condition = condition + rowFc.Value.ToString(); } runningParamIndex++; if (!lbxRecordFilters.Items.Contains(condition) && !rowFilterConditions.Contains(rowFc)) { rowFc.Description = condition; lbxRecordFilters.Items.Add(condition); rowFilterConditions.Add(rowFc); } else { Epi.Windows.MsgBox.ShowInformation(ImportExportSharedStrings.CONDITION_ALREADY_ADDED); } } else { // do nothing at the moment; not implemented } } }
private IRowFilterCondition GetRowFilterCondition(string conditionSql, string conditionParamName, string conditionColumnName) { IRowFilterCondition rowFc = null; object value = GetValue(); switch (selectedFieldType) { case MetaFieldType.Text: case MetaFieldType.TextUppercase: case MetaFieldType.PhoneNumber: case MetaFieldType.Multiline: case MetaFieldType.LegalValues: case MetaFieldType.CommentLegal: case MetaFieldType.Codes: case MetaFieldType.GUID: rowFc = new TextRowFilterCondition(conditionSql, conditionColumnName, conditionParamName, value); break; case MetaFieldType.Date: case MetaFieldType.DateTime: case MetaFieldType.Time: rowFc = new DateRowFilterCondition(conditionSql, conditionColumnName, conditionParamName, value); break; case MetaFieldType.Option: case MetaFieldType.Number: rowFc = new NumberRowFilterCondition(conditionSql, conditionColumnName, conditionParamName, value); break; case MetaFieldType.YesNo: rowFc = new YesNoRowFilterCondition(conditionSql, conditionColumnName, conditionParamName, value); break; case MetaFieldType.Checkbox: rowFc = new CheckboxRowFilterCondition(conditionSql, conditionColumnName, conditionParamName, value); break; default: throw new ApplicationException("Not a valid field type"); } return(rowFc); }