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