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