public List <CoachesResponse> SearchSchools(CoachesSearchRequest request) { if (request == null) { throw new Exception("Bad request - missing search criteria"); } if (string.IsNullOrEmpty(request.PartitionKey)) { request.PartitionKey = "M_SOCCER_NCAA_D1"; } _cloudTable = _cloudTableClient.GetTableReference("COACHES"); var queryCondition = TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, request.PartitionKey); var schoolNameFilter1 = TableQuery.GenerateFilterCondition("SchoolName", QueryComparisons.GreaterThanOrEqual, request.SchoolName); var schoolNameFilter2 = TableQuery.GenerateFilterCondition("SchoolName", QueryComparisons.LessThan, request.SchoolName + "~"); var schoolNameFilter = TableQuery.CombineFilters(schoolNameFilter1, TableOperators.And, schoolNameFilter2); var schoolNameShortFilter1 = TableQuery.GenerateFilterCondition("SchoolNameShort", QueryComparisons.GreaterThanOrEqual, request.SchoolName); var schoolNameShortFilter2 = TableQuery.GenerateFilterCondition("SchoolNameShort", QueryComparisons.LessThan, request.SchoolName + "~"); var schoolNameShortFilter = TableQuery.CombineFilters(schoolNameShortFilter1, TableOperators.And, schoolNameShortFilter2); var schoolFilter = TableQuery.CombineFilters(schoolNameFilter, TableOperators.Or, schoolNameShortFilter); var filters = TableQuery.CombineFilters(queryCondition, TableOperators.And, schoolFilter); var queryTask = Task.Run(async() => await AzureHelper.QueryTable <CoachesResponse>(_cloudTable, filters)); var result = queryTask.GetAwaiter().GetResult().ToList(); return(result); }
public IActionResult SearchSchools([FromBody] CoachesSearchRequest request) { try { var schools = _schoolService.SearchSchools(request); // translate to search school response object var translatedSchoolsResponse = TranslateCoachesToSchoolsResponse(schools); return(Ok(translatedSchoolsResponse)); } catch (Exception ex) { return(Helper.CreateHttpResponse(ex)); //return BadRequest(ex); } }