/// <summary>
        /// GetAllResponsesWithCriteria
        /// </summary>
        /// <param name="responseGridQueryCriteria"></param>
        /// <returns></returns>
        public ResponseGridQueryPropertiesResult GetAllResponsesWithCriteria(ResponseGridQueryCriteria responseGridQueryCriteria)
        {
            ResponseGridQueryPropertiesResult responseGridQueryPropertiesResult = null;

            try
            {
                responseGridQueryPropertiesResult = ReadAllResponsesWithCriteria(responseGridQueryCriteria);
            }
            catch (DocumentQueryException ex)
            {
                Console.WriteLine(ex.ToString());
            }
            return(responseGridQueryPropertiesResult);
        }
        private ResponseGridQueryPropertiesResult ReadAllResponsesWithCriteria(ResponseGridQueryCriteria responseGridQueryCriteria)
        {
            ResponseGridQueryPropertiesResult responseGridQueryPropertiesResult = new ResponseGridQueryPropertiesResult();

            if (responseGridQueryCriteria.ResponseContext.IsChildResponse)
            {
                //if (responseGridQueryCriteria.SearchQualifiers != null && responseGridQueryCriteria.SearchQualifiers.Count > 0)
                //    throw new ArgumentException("Search not available on child forms");

                responseGridQueryPropertiesResult.ResponsePropertiesList = ReadAllChildResponses(responseGridQueryCriteria, /*includeChildrenOfChild*/ false);
            }
            else
            {
                try
                {
                    responseGridQueryPropertiesResult = ReadAllRootResponses(responseGridQueryCriteria, false);
                }
                catch (DocumentQueryException ex)
                {
                    Console.WriteLine(ex.ToString());
                }
            }
            return(responseGridQueryPropertiesResult);
        }
Exemple #3
0
        private ResponseGridQueryPropertiesResult ExecuteQuery(string spId, Uri spUri, string query,
                                                               string sortKey, bool isSortAscending,
                                                               int pageNumber, int responsesPerPage,
                                                               string querySetToken)
        {
            var         responsePropertiesList = new List <FormResponseProperties>();
            QueryResult queryResult            = Client.ExecuteStoredProcedureAsync <QueryResult>(spUri, query, sortKey, isSortAscending,
                                                                                                  pageNumber, responsesPerPage, querySetToken).Result;

            foreach (var doc in queryResult.Result)
            {
                FormResponseProperties formResponse = (dynamic)doc;
                responsePropertiesList.Add(formResponse);
            }
            var responseGridQueryPropertiesResult = new ResponseGridQueryPropertiesResult
            {
                ResponsePropertiesList           = responsePropertiesList,
                QuerySetToken                    = queryResult.QuerySetToken,
                NumberOfResponsesReturnedByQuery = queryResult.NumberOfResponsesReturnedByQuery,
                NumberOfResponsesPerPage         = queryResult.NumberOfResponsesPerPage,
                NumberOfResponsesOnSelectedPage  = queryResult.NumberOfResponsesOnSelectedPage,
                PageNumber    = pageNumber,
                NumberOfPages = queryResult.NumberOfPages
            };

            if (queryResult.Message == "Completed")
            {
                return(responseGridQueryPropertiesResult);
            }
            else
            {
                throw new Exception(queryResult.Message);
                // ----------------------------------Error Handling ----------------------------------

                //string continuationToken = string.Empty;
                //int skip = 0;
                //bool isContinuationRequired = false;
                //bool isPostProcessingRequired = false;

                //do
                //{
                //queryResult = Client.ExecuteStoredProcedureAsync<QueryResult>(spUri, query, sortKey, isSortAscending,
                //                         pageNumber, responsesPerPage, querySetToken/*, continuationToken, skip,
                //                         isPostProcessingRequired).Result;

                //foreach (var doc in queryResult.Result)
                //{
                //    FormResponseProperties formResponse = (dynamic)doc;
                //    responsePropertiesList.Add(formResponse);
                //}
                //continuationToken = queryResult.ContinuationToken;
                //skip = queryResult.Skip;
                //    isContinuationRequired = !string.IsNullOrEmpty(continuationToken);
                //    isPostProcessingRequired |= isContinuationRequired;
                //} while (isContinuationRequired);

                //var responseGridQueryPropertiesResult = new ResponseGridQueryPropertiesResult
                //{
                //    ResponsePropertiesList = responsePropertiesList,
                //    QuerySetToken = queryResult.QuerySetToken,
                //    NumberOfResponsesReturnedByQuery = queryResult.NumberOfResponsesReturnedByQuery,
                //    NumberOfResponsesPerPage = queryResult.NumberOfResponsesPerPage,
                //    NumberOfResponsesOnSelectedPage = queryResult.NumberOfResponsesOnSelectedPage,
                //    PageNumber = pageNumber,
                //    NumberOfPages = queryResult.NumberOfPages
                //    //IsPostProcessingRequired = isPostProcessingRequired
                //};

                //if (isPostProcessingRequired)
                //{
                //    List<FormResponseProperties> pageResult = null;

                //    skip = pageNumber * responsesPerPage - responsesPerPage;
                //    sortKey = string.IsNullOrWhiteSpace(sortKey) ? MetaColumn.DateUpdated : sortKey;
                //    switch (sortKey)
                //    {
                //        case MetaColumn.UserEmail:
                //            pageResult = (isSortAscending
                //                         ? responsePropertiesList.OrderBy(r => r.UserName.ToUpperInvariant())
                //                         : responsePropertiesList.OrderByDescending(r => r.UserName.ToUpperInvariant()))
                //                         .Skip(skip).Take(responsesPerPage).ToList();

                //            break;
                //        case MetaColumn.IsDraftMode:
                //        case MetaColumn.Mode:
                //            pageResult = (isSortAscending
                //                         ? responsePropertiesList.OrderBy(r => r.IsDraftMode)
                //                         : responsePropertiesList.OrderByDescending(r => r.IsDraftMode))
                //                         .Skip(skip).Take(responsesPerPage).ToList();

                //            break;
                //        case MetaColumn.DateCreated:
                //            pageResult = (isSortAscending
                //                         ? responsePropertiesList.OrderBy(r => r.FirstSaveTime)
                //                         : responsePropertiesList.OrderByDescending(r => r.FirstSaveTime))
                //                         .Skip(skip).Take(responsesPerPage).ToList();

                //            break;
                //        case MetaColumn.DateUpdated:
                //            pageResult = (isSortAscending
                //                         ? responsePropertiesList.OrderBy(r => r.LastSaveTime)
                //                         : responsePropertiesList.OrderByDescending(r => r.LastSaveTime))
                //                         .Skip(skip).Take(responsesPerPage).ToList();

                //            break;
                //        default:
                //            pageResult = (isSortAscending
                //                         ? responsePropertiesList.OrderBy(r => r.ResponseQA.ContainsKey(sortKey) && r.ResponseQA[sortKey] != null ? r.ResponseQA[sortKey].ToUpperInvariant() : string.Empty)
                //                         : responsePropertiesList.OrderByDescending(r => r.ResponseQA.ContainsKey(sortKey) && r.ResponseQA[sortKey] != null ? r.ResponseQA[sortKey].ToUpperInvariant() : string.Empty))
                //                         .Skip(skip).Take(responsesPerPage).ToList();
                //            break;
                //    }
                //    var totalResponseCount = responsePropertiesList.Count();
                //    responseGridQueryPropertiesResult.NumberOfResponsesReturnedByQuery = totalResponseCount;
                //    responseGridQueryPropertiesResult.NumberOfResponsesOnSelectedPage = pageResult.Count();
                //    responseGridQueryPropertiesResult.ResponsePropertiesList = pageResult;
                //    responseGridQueryPropertiesResult.NumberOfPages = totalResponseCount / responsesPerPage + 1;
                //}
                return(responseGridQueryPropertiesResult);
            }
        }