Example #1
0
        public static coreModel.SearchCriteria ToCoreModel(this webModel.SearchCriteria criteria)
        {
            var retVal = new coreModel.SearchCriteria();

            retVal.InjectFrom(criteria);
            return(retVal);
        }
		public static webModel.SearchCriteria ToWebModel(this coreModel.SearchCriteria criteria)
		{
			var retVal = new webModel.SearchCriteria();
			retVal.InjectFrom(criteria);

			return retVal;
		}
		public bool BindModel(System.Web.Http.Controllers.HttpActionContext actionContext, ModelBindingContext bindingContext)
		{
			if (bindingContext.ModelType != typeof(SearchCriteria))
			{
				return false;
			}

			var qs = HttpUtility.ParseQueryString(actionContext.Request.RequestUri.Query as string);

			var result = new SearchCriteria();

			result.Keyword = qs["q"].EmptyToNull();

			result.OrganizationId = qs["organization"].EmptyToNull();
			result.Count = qs["count"].TryParse(20);
			result.Start = qs["start"].TryParse(0);
			bindingContext.Model = result;
			return true;
		}
        public IHttpActionResult Search([ModelBinder(typeof(SearchCriteriaBinder))] webModel.SearchCriteria criteria)
        {
            var result = _contactSearchService.Search(criteria.ToCoreModel());

            var retVal = new webModel.SearchResult();

            var start = criteria.Start;
            var count = criteria.Count;

            // all organizations
            var organizations = result.Organizations.Select(x => x.ToWebModel());
            var contacts      = result.Contacts.Select(x => x.ToWebModel());

            retVal.TotalCount = organizations.Count() + result.TotalCount;
            retVal.Members.AddRange(organizations.Skip(start).Take(count));

            count -= organizations.Count();

            retVal.Members.AddRange(contacts.Take(count));

            return(Ok(retVal));
        }