public void FilterByApplicationId()
        {
            if (!this.connected)
            {
                Assert.Inconclusive("Could not connect to database instance '{0}'", this.client.GetServer().Instance.Address);
            }

            ApplicationSearchQuery query = new ApplicationSearchQuery
            {
                ApplicationIds = new List<string>
                {
                    MockTestData.Applications[5][2],
                    MockTestData.Applications[6][2],
                    MockTestData.Applications[7][2],
                    MockTestData.Applications[8][2],
                    MockTestData.Applications[9][2],
                    MockTestData.Applications[10][2],
                    MockTestData.Applications[11][2]
                }
            };

            ApplicationSearchResult result = this.dataAccess.FindApplications(query);

            IEnumerable<Application> applications = result.Forms.SelectMany(f => f.Applications);
            int expected = query.ApplicationIds.Count;
            Assert.AreEqual(expected, applications.Count());
        }
        public void ApplicationWithLikertData()
        {
            if (!this.connected)
            {
                Assert.Inconclusive("Could not connect to database instance '{0}'", this.client.GetServer().Instance.Address);
            }

            ApplicationSearchQuery query = new ApplicationSearchQuery
            {
                ApplicationIds = new List<string>
                {
                    MockTestData.Applications[0][2]
                }
            };

            ApplicationSearchResult result = this.dataAccess.FindApplications(query);

            IEnumerable<Application> applications = result.Forms.SelectMany(f => f.Applications);
            Assert.AreEqual(1, applications.Count());
        }
        /// <summary>
        /// Finds all applications matching the search parameters.
        /// </summary>
        /// <param name="query">The search parameters.</param>
        /// <returns>All applications matching the search parameters.</returns>
        protected override ApplicationSearchResult DoFindApplications(ApplicationSearchQuery query)
        {
            MongoCollection<BsonDocument> productCollection = this.database.GetCollection(iApplyDb.Metadata._COLLECTION_NAME);
            IMongoQuery mongoQuery = Query.Null;
            mongoQuery = this.AddIfNotEmpty(mongoQuery, iApplyDb.Metadata.PRODUCT_ID, query.FormIds);
            MongoCursor<BsonDocument> productDocs = (mongoQuery == Query.Null) ? productCollection.FindAll() : productCollection.Find(mongoQuery);

            ApplicationSearchResult results = new ApplicationSearchResult();
            foreach (BsonDocument p in productDocs)
            {
                Form form = new Form
                {
                    Id = p[iApplyDb.Metadata.PRODUCT_ID].AsString,
                    Name = p[iApplyDb.Metadata.NAME].AsString,
                    OrganisationId = p[iApplyDb.Metadata.ORGANISATION_ID].AsString
                };

                results.Forms.Add(form);
            }

            MongoCollection<BsonDocument> applicationCollection = this.database.GetCollection(iApplyDb.Application._COLLECTION_NAME);
            mongoQuery = Query.Null;
            mongoQuery = this.AddIfNotEmpty(mongoQuery, iApplyDb.Application.FORM_ID, query.FormIds);
            mongoQuery = this.AddIfNotEmpty(mongoQuery, iApplyDb.Application._ID, query.ApplicationIds);
            mongoQuery = this.AddIfNotEmpty(mongoQuery, iApplyDb.Application.APPLICATION_STATE, query.WorkflowStates);
            mongoQuery = this.AddIfNotEmpty(mongoQuery, iApplyDb.Application.MODIFIED, query.From, Operator.GreaterThan);
            mongoQuery = this.AddIfNotEmpty(mongoQuery, iApplyDb.Application.MODIFIED, query.To, Operator.LessThan);

            MongoCursor<BsonDocument> applicationDocs = (mongoQuery == Query.Null) ? applicationCollection.FindAll() : applicationCollection.Find(mongoQuery);

            foreach (BsonDocument document in applicationDocs)
            {
                Application app = BsonConverter.ConvertToObjectViaJson<Application>(document);
                app.ApplicationData = this.ToApplicationValueList(document[iApplyDb.Application.DATA].AsBsonDocument);
                string formId = document[iApplyDb.Application.FORM_ID].AsString;
                results.Forms[formId].Applications.Add(app);
            }

            return results;
        }
        public XmlDocument FindApplications(string username, string password, string[] productIds, string[] applicationIds, DateTime? modifiedFrom, DateTime? modifiedTo, string[] workflowStates)
        {
            try
            {
                this.apiManager.Authenticate(username, password);

                ApplicationSearchQuery query = new ApplicationSearchQuery
                {
                    ApplicationIds = applicationIds.ToList(),
                    FormIds = productIds.ToList(),
                    From = modifiedFrom,
                    To = modifiedTo,
                    WorkflowStates = workflowStates.ToList()
                };
                ApplicationSearchResult result = this.apiManager.FindApplications(query);

                StringBuilder xml = new StringBuilder();
                DataContractSerializer serializer = new DataContractSerializer(result.GetType());
                using (XmlWriter xmlWriter = XmlWriter.Create(xml))
                {
                    serializer.WriteObject(xmlWriter, result);
                }

                XmlDocument document = new XmlDocument();
                document.LoadXml(xml.ToString());
                return document;
            }
            catch (SecurityException e)
            {
                return this.HandleWebServiceException(e, HttpStatusCode.BadRequest, e.Message);
            }
            catch (Exception e)
            {
                return this.HandleWebServiceException(e, HttpStatusCode.InternalServerError, e.Message);
            }
        }
Esempio n. 5
0
 /// <summary>
 /// Finds all applications matching the search parameters.
 /// </summary>
 /// <param name="query">The search parameters.</param>
 /// <returns>
 /// All applications matching the search parameters.
 /// </returns>
 protected abstract ApplicationSearchResult DoFindApplications(ApplicationSearchQuery query);
Esempio n. 6
0
 /// <summary>
 /// Finds all applications matching the search parameters.
 /// </summary>
 /// <param name="query">The search parameters.</param>
 /// <returns>All applications matching the search parameters.</returns>
 public ApplicationSearchResult FindApplications(ApplicationSearchQuery query)
 {
     return this.DoFindApplications(query);
 }
Esempio n. 7
0
 /// <summary>
 /// Finds the applications.
 /// </summary>
 /// <param name="query">The search parameters.</param>
 /// <returns>All applications matching the search parameters.</returns>
 public ApplicationSearchResult FindApplications(ApplicationSearchQuery query)
 {
     return this.apiDataAccess.FindApplications(query);
 }
        public void FilterByStateAndModified()
        {
            if (!this.connected)
            {
                Assert.Inconclusive("Could not connect to database instance '{0}'", this.client.GetServer().Instance.Address);
            }

            ApplicationSearchQuery query = new ApplicationSearchQuery
            {
                WorkflowStates = new List<string>
                {
                    MockTestData.StateNew,
                    MockTestData.StateFinished
                },
                From = new DateTime(2013, 7, 1, 0, 0, 0, DateTimeKind.Utc),
                To = new DateTime(2013, 8, 31, 23, 59, 59, DateTimeKind.Utc)
            };

            ApplicationSearchResult result = this.dataAccess.FindApplications(query);

            IEnumerable<Application> applications = result.Forms.SelectMany(f => f.Applications);
            int expected = MockTestData.Applications.Count(f => DateTime.Parse(f[3]) > query.From && DateTime.Parse(f[3]) < query.To && query.WorkflowStates.Contains(f[4]));
            Assert.AreEqual(expected, applications.Count());
        }
        public void FilterByFormAndState()
        {
            if (!this.connected)
            {
                Assert.Inconclusive("Could not connect to database instance '{0}'", this.client.GetServer().Instance.Address);
            }

            ApplicationSearchQuery query = new ApplicationSearchQuery
            {
                FormIds = new List<string>
                {
                    MockTestData.Form01Id
                },
                WorkflowStates = new List<string>
                {
                    MockTestData.StateNew,
                    MockTestData.StateProcessing
                }
            };

            ApplicationSearchResult result = this.dataAccess.FindApplications(query);

            IEnumerable<Application> applications = result.Forms.SelectMany(f => f.Applications);
            int expected = MockTestData.Applications.Count(f => query.FormIds.Contains(f[1]) && query.WorkflowStates.Contains(f[4]));
            Assert.AreEqual(expected, applications.Count());
        }