public void GetReferencesBySearchCriteria()
        {
            ReferenceList            references;
            IReferenceSearchCriteria searchCriteria;

            // Test name search criteria.
            searchCriteria = new ReferenceSearchCriteria();
            searchCriteria.NameSearchString = new StringSearchCriteria();
            searchCriteria.NameSearchString.SearchString     = "2003";
            searchCriteria.NameSearchString.CompareOperators = new List <StringCompareOperator>();
            searchCriteria.NameSearchString.CompareOperators.Add(StringCompareOperator.Contains);
            references = GetReferenceManager(true).GetReferences(GetUserContext(), searchCriteria);
            Assert.IsTrue(references.IsNotEmpty());

            // Test title search criteria.
            searchCriteria = new ReferenceSearchCriteria();
            searchCriteria.TitleSearchString = new StringSearchCriteria();
            searchCriteria.TitleSearchString.SearchString     = "2003";
            searchCriteria.TitleSearchString.CompareOperators = new List <StringCompareOperator>();
            searchCriteria.TitleSearchString.CompareOperators.Add(StringCompareOperator.Contains);
            references = GetReferenceManager().GetReferences(GetUserContext(), searchCriteria);
            Assert.IsTrue(references.IsNotEmpty());

            // Test year search criteria.
            searchCriteria       = new ReferenceSearchCriteria();
            searchCriteria.Years = new List <Int32>();
            searchCriteria.Years.Add(2003);
            references = GetReferenceManager().GetReferences(GetUserContext(), searchCriteria);
            Assert.IsTrue(references.IsNotEmpty());
            searchCriteria.Years.Add(2004);
            references = GetReferenceManager().GetReferences(GetUserContext(), searchCriteria);
            Assert.IsTrue(references.IsNotEmpty());

            // Test logical operator.
            searchCriteria = new ReferenceSearchCriteria();
            searchCriteria.NameSearchString = new StringSearchCriteria();
            searchCriteria.NameSearchString.SearchString     = "2003";
            searchCriteria.NameSearchString.CompareOperators = new List <StringCompareOperator>();
            searchCriteria.NameSearchString.CompareOperators.Add(StringCompareOperator.Contains);
            searchCriteria.TitleSearchString = new StringSearchCriteria();
            searchCriteria.TitleSearchString.SearchString     = "2003";
            searchCriteria.TitleSearchString.CompareOperators = new List <StringCompareOperator>();
            searchCriteria.TitleSearchString.CompareOperators.Add(StringCompareOperator.Contains);
            searchCriteria.Years = new List <Int32>();
            searchCriteria.Years.Add(2003);

            searchCriteria.LogicalOperator = LogicalOperator.Or;
            references = GetReferenceManager().GetReferences(GetUserContext(), searchCriteria);
            Assert.IsTrue(references.IsNotEmpty());

            searchCriteria.LogicalOperator = LogicalOperator.And;
            references = GetReferenceManager().GetReferences(GetUserContext(), searchCriteria);
            Assert.IsTrue(references.IsEmpty());
        }
        /// <summary>
        /// Search for a reference.
        /// </summary>
        /// <param name="searchString">
        /// </param>
        /// <returns>
        /// The <see cref="List"/>.
        /// </returns>
        public List <ReferenceViewModel> SearchReference(string searchString)
        {
            IReferenceSearchCriteria searchCriteria = new ReferenceSearchCriteria();

            searchCriteria.LogicalOperator = LogicalOperator.Or;

            int year;

            if (int.TryParse(searchString, out year))
            {
                searchCriteria.Years = new List <int>();
                searchCriteria.Years.Add(year);
            }

            searchCriteria.NameSearchString = new StringSearchCriteria
            {
                SearchString     = searchString,
                CompareOperators = new List <StringCompareOperator> {
                    StringCompareOperator.Contains
                }
            };
            searchCriteria.TitleSearchString = new StringSearchCriteria
            {
                SearchString     = searchString,
                CompareOperators = new List <StringCompareOperator> {
                    StringCompareOperator.Contains
                }
            };
            ReferenceList             list       = CoreData.ReferenceManager.GetReferences(user, searchCriteria);
            List <ReferenceViewModel> references = new List <ReferenceViewModel>();

            foreach (IReference reference in list)
            {
                // todo - handle Year null value
                references.Add(new ReferenceViewModel(reference.Id, reference.Name, reference.Year.GetValueOrDefault(), reference.Title));
            }

            return(references);
        }