public async Task <TypeaheadResults> GetTypeAheadResults(TypeaheadParms parms) { string field = parms.Name; string value = parms.Value; if (!(new[] { "Name", "Type", "PolicyID" }.Contains(field))) { throw new ArgumentOutOfRangeException("Typeahead not available for the specified field!"); } string sqlCmd = "searchTypeAhead"; var results = new List <string>(); var parmsList = new List <SqlParameter>() { new SqlParameter("@name", SqlDbType.NVarChar) { Value = field ?? (object)DBNull.Value }, new SqlParameter("@value", SqlDbType.NVarChar) { Value = value ?? (object)DBNull.Value } }; using (var connection = GetDBContext()) { Task open = connection.OpenAsync(); var command = new SqlCommand(sqlCmd, connection); command.CommandType = CommandType.StoredProcedure; command.Parameters.AddRange(parmsList.ToArray()); await open; SqlDataReader reader = await command.ExecuteReaderAsync(); while (await reader.ReadAsync()) { results.Add(reader.IsDBNull(0) ? null : reader.GetString(0)); } reader.Dispose(); } return(new TypeaheadResults { Results = results }); }
public async Task <IActionResult> SearchTA([FromServices] IReportsRepository data, [FromBody] TypeaheadParms parms) { if (!ModelState.IsValid) { return(new BadRequestResult()); } TypeaheadResults results = await data.GetTypeAheadResults(parms); return(Content(JsonConvert.SerializeObject(results), "application/json")); }