示例#1
0
        /// <summary>
        /// Get organizations that matches the search criteria.
        /// </summary>
        /// <param name="context">Web service request context.</param>
        /// <param name="searchCriteria">Search criteria.</param>
        /// <returns>Organizations that matches the search criteria</returns>
        public static List <WebOrganization> GetOrganizationsBySearchCriteria(WebServiceContext context,
                                                                              WebOrganizationSearchCriteria searchCriteria)
        {
            Int32?  organizationCategoryId;
            Boolean?hasSpiecesCollection;
            List <WebOrganization> organizations;
            WebOrganization        organization;

            // Check data.
            searchCriteria.CheckNotNull("searchCriteria");
            searchCriteria.CheckStrings();

            organizationCategoryId = null;
            if (searchCriteria.IsOrganizationCategoryIdSpecified)
            {
                organizationCategoryId = searchCriteria.OrganizationCategoryId;
            }
            hasSpiecesCollection = null;
            if (searchCriteria.IsHasSpeciesCollectionSpecified)
            {
                hasSpiecesCollection = searchCriteria.HasSpeciesCollection;
            }
            // Get information from database.
            using (DataReader dataReader = context.GetUserDatabase().GetOrganizationsBySearchCriteria(searchCriteria.Name,
                                                                                                      searchCriteria.ShortName,
                                                                                                      organizationCategoryId,
                                                                                                      hasSpiecesCollection,
                                                                                                      context.Locale.Id))
            {
                organizations = new List <WebOrganization>();
                while (dataReader.Read())
                {
                    organization = new WebOrganization();
                    organization.LoadData(dataReader);
                    organizations.Add(organization);
                }
            }

            if (organizations.IsNotEmpty())
            {
                foreach (WebOrganization tempOrganization in organizations)
                {
                    // Get organizationCategory for this organization
                    tempOrganization.Category = GetOrganizationCategory(context, tempOrganization.CategoryId);
                    // Set WebAddress + WebPhone
                    tempOrganization.Addresses    = UserManager.GetAddresses(context, 0, tempOrganization.Id);
                    tempOrganization.PhoneNumbers = UserManager.GetPhoneNumbers(context, 0, tempOrganization.Id);
                }
            }
            return(organizations);
        }
        public void GetOrganizationsBySearchCriteria()
        {
            List <WebOrganization> organizations;
            String  name;
            Boolean hasSpiecesCollection;
            Int32   organizationCategoryId;
            WebOrganizationSearchCriteria searchCriteria;

            // Test organization name.
            name                = "M%";
            searchCriteria      = new WebOrganizationSearchCriteria();
            searchCriteria.Name = name;
            organizations       = OrganizationManager.GetOrganizationsBySearchCriteria(GetContext(), searchCriteria);
            Assert.IsFalse(organizations.IsEmpty());

            name                = "Tilt%";
            searchCriteria      = new WebOrganizationSearchCriteria();
            searchCriteria.Name = name;
            organizations       = OrganizationManager.GetOrganizationsBySearchCriteria(GetContext(), searchCriteria);
            Assert.IsTrue(organizations.IsEmpty());

            // Test short name.
            name                     = "A%";
            searchCriteria           = new WebOrganizationSearchCriteria();
            searchCriteria.ShortName = name;
            organizations            = OrganizationManager.GetOrganizationsBySearchCriteria(GetContext(), searchCriteria);
            Assert.IsFalse(organizations.IsEmpty());

            name                     = "Tilt%";
            searchCriteria           = new WebOrganizationSearchCriteria();
            searchCriteria.ShortName = name;
            organizations            = OrganizationManager.GetOrganizationsBySearchCriteria(GetContext(), searchCriteria);
            Assert.IsTrue(organizations.IsEmpty());

            // Test organizationCategoryId
            organizationCategoryId = 3;
            searchCriteria         = new WebOrganizationSearchCriteria();
            searchCriteria.OrganizationCategoryId            = organizationCategoryId;
            searchCriteria.IsOrganizationCategoryIdSpecified = true;
            organizations = OrganizationManager.GetOrganizationsBySearchCriteria(GetContext(), searchCriteria);
            Assert.IsFalse(organizations.IsEmpty());

            organizationCategoryId = -1;
            searchCriteria         = new WebOrganizationSearchCriteria();
            searchCriteria.OrganizationCategoryId            = organizationCategoryId;
            searchCriteria.IsOrganizationCategoryIdSpecified = true; organizations = OrganizationManager.GetOrganizationsBySearchCriteria(GetContext(), searchCriteria);
            Assert.IsTrue(organizations.IsEmpty());

            // Test hasSpiecesCollection
            hasSpiecesCollection = true;
            searchCriteria       = new WebOrganizationSearchCriteria();
            searchCriteria.HasSpeciesCollection            = hasSpiecesCollection;
            searchCriteria.IsHasSpeciesCollectionSpecified = true;
            organizations = OrganizationManager.GetOrganizationsBySearchCriteria(GetContext(), searchCriteria);
            Assert.IsFalse(organizations.IsEmpty());

            // Test with character '.
            searchCriteria           = new WebOrganizationSearchCriteria();
            searchCriteria.Name      = "And'ers något";
            searchCriteria.ShortName = "And'ers";
            organizations            = OrganizationManager.GetOrganizationsBySearchCriteria(GetContext(), searchCriteria);
            Assert.IsTrue(organizations.IsEmpty());
        }