public ActionResult SiteOrganisationSearch(int page = 1) { //Create model OrganisationSearchVM model = new OrganisationSearchVM(); //Repopulate search criteria if already entered if (null == model.SearchCriteria && sessionManager.OrganisationSearchCriteria != null) { model.SearchCriteria = sessionManager.OrganisationSearchCriteria; } else { // Add criteria to search only on Organisation Type of Site model.SearchCriteria = new OrganisationSearchCriteriaModel(); model.SearchCriteria.OrganisationType = "Site"; } // Create service instance IUcbService sc = UcbService; try { // Convert search criteria to data contract OrganisationSearchCriteriaDC organisationSearch = Mapper.Map <OrganisationSearchCriteriaDC>(model.SearchCriteria); // Call service OrganisationSearchVMDC response = sc.SearchOrganisation(CurrentUser, CurrentUser, appID, "", organisationSearch, page, PageSize, true); // Close service communication ((ICommunicationObject)sc).Close(); //Map response back to view model model.MatchList = Mapper.Map <IEnumerable <OrganisationSearchMatchDC>, List <OrganisationSearchMatchModel> >(response.MatchList); // Set paging values model.TotalRows = response.RecordCount; model.PageSize = sessionManager.PageSize; model.PageNumber = page; // Store the page number we were on sessionManager.OrganisationPageNumber = model.PageNumber; return(View(model)); } catch (Exception e) { // Handle the exception string message = ExceptionManager.HandleException(e, (ICommunicationObject)sc); model.Message = message; return(View(model)); } }
public ActionResult SiteOrganisationSearchCriteriaPost(OrganisationSearchVM model, int page = 1) { // Add Organisation Type search to ensure we only search within Site model.SearchCriteria.OrganisationType = "Site"; // Create service instance IUcbService sc = UcbService; try { // Convert search criteria to data contract OrganisationSearchCriteriaDC organisationSearch = Mapper.Map <OrganisationSearchCriteriaDC>(model.SearchCriteria); // Call service OrganisationSearchVMDC response = sc.SearchOrganisation(CurrentUser, CurrentUser, appID, "", organisationSearch, page, PageSize, true); // Close service communication ((ICommunicationObject)sc).Close(); //Map response back to view model model.MatchList = Mapper.Map <IEnumerable <OrganisationSearchMatchDC>, List <OrganisationSearchMatchModel> >(response.MatchList); // Set paging values model.TotalRows = response.RecordCount; model.PageSize = sessionManager.PageSize; model.PageNumber = page; // Store the page number we were on sessionManager.OrganisationPageNumber = model.PageNumber; sessionManager.OrganisationSearchCriteria = model.SearchCriteria; return(View("SiteOrganisationSearch", model)); } catch (Exception e) { // Handle the exception string message = ExceptionManager.HandleException(e, (ICommunicationObject)sc); model.Message = message; return(View("SiteOrganisationSearch", model)); } }
/* * /// <summary> * /// Search for Site Organisation items * /// </summary> * /// <param name="currentUser"></param> * /// <param name="user"></param> * /// <param name="appID"></param> * /// <param name="overrideID"></param> * /// <param name="searchCriteria"></param> * /// <param name="page"></param> * /// <param name="pageSize"></param> * /// <param name="includeInActive"></param> * /// <returns></returns> * public OrganisationSearchVMDC SearchSiteOrganisations(string currentUser, string user, string appID, string overrideID, OrganisationSearchCriteriaDC searchCriteria, int page, int pageSize, bool includeInActive) * { * // Create unit of work * IUnitOfWork uow = new UnitOfWork(); * * // Create repository * IRepository<Organisation> dataRepository = new Repository<Organisation>(uow.ObjectContext, currentUser, user, appID, overrideID); * * // Create specification for filtering * ISpecification<Organisation> specification = new Specification<Organisation>(); * * // Call overload with injected objects * return SearchSiteOrganisations(currentUser, user, appID, overrideID, searchCriteria, page, pageSize, includeInActive, specification, dataRepository, uow); * } * * /// <summary> * /// Search for Site Organisation items * /// </summary> * /// <param name="currentUser"></param> * /// <param name="user"></param> * /// <param name="appID"></param> * /// <param name="overrideID"></param> * /// <param name="searchCriteria"></param> * /// <param name="page"></param> * /// <param name="pageSize"></param> * /// <param name="includeInActive"></param> * /// <param name="specification"></param> * /// <param name="dataRepository"></param> * /// <param name="uow"></param> * /// <returns></returns> * public OrganisationSearchVMDC SearchSiteOrganisations(string currentUser, string user, string appID, string overrideID, OrganisationSearchCriteriaDC searchCriteria, int page, int pageSize, bool includeInActive, * ISpecification<Organisation> specification, IRepository<Organisation> dataRepository, IUnitOfWork uow) * { * try * { #region Parameter validation * * // Validate parameters * if (string.IsNullOrEmpty(currentUser)) throw new ArgumentOutOfRangeException("currentUser"); * if (string.IsNullOrEmpty(user)) throw new ArgumentOutOfRangeException("user"); * if (string.IsNullOrEmpty(appID)) throw new ArgumentOutOfRangeException("appID"); * if (null == dataRepository) throw new ArgumentOutOfRangeException("dataRepository"); * if (null == specification) throw new ArgumentOutOfRangeException("specification"); * if (null == uow) throw new ArgumentOutOfRangeException("uow"); * #endregion * * using (uow) * { * // Evaluate search criteria if supplied * if (null != searchCriteria) * { * * } * * if (!includeInActive) * { * ISpecification<Organisation> isActiveSpecification = new Specification<Organisation>(x => x.IsActive == true); * specification = specification.And(isActiveSpecification); * } * * // Set default sort expression * System.Linq.Expressions.Expression<Func<Organisation, Object>> sortExpression = x => x.Name; * * // Find all items that satisfy the specification created above. * IEnumerable<Organisation> dataEntities = dataRepository.Find(specification, sortExpression, page, pageSize); * * // Get total count of items for search critera * int itemCount = dataRepository.Count(specification); * * OrganisationSearchVMDC results = new OrganisationSearchVMDC(); * * // Convert to data contracts * List<OrganisationSearchMatchDC> destinations = Mapper.Map<IEnumerable<Organisation>, List<OrganisationSearchMatchDC>>(dataEntities); * * results.MatchList = destinations; * results.SearchCriteria = searchCriteria; * results.RecordCount = itemCount; * * return results; * } * } * catch (Exception e) * { * //Prevent exception from propogating across the service interface * ExceptionManager.ShieldException(e); * * return null; * } * } */ #endregion /// <summary> /// Provides a specification based on search criteria provided /// </summary> /// <param name="searchCriteria"></param> /// <param name="specification"></param> partial void EvaluateOrganisationSearchCriteria(OrganisationSearchCriteriaDC searchCriteria, ref ISpecification <Organisation> specification) { #region Parameter validation // Validate parameters if (null == searchCriteria) { throw new ArgumentNullException("searchCriteria"); } #endregion // Specification for searching on organisation name ISpecification <Organisation> organisationNameSpecification = new Specification <Organisation>(x => x.Name.StartsWith(searchCriteria.Name)); // Specification for searchingfor organisations based on Organisation Type ISpecification <Organisation> siteOrgansiationSpecification = new Specification <Organisation>(x => x.OrganisationType.Name == searchCriteria.OrganisationType); ISpecification <Organisation> organisationSpecification = null; #region Build specification based on the search criteria if (!string.IsNullOrEmpty(searchCriteria.Name)) { organisationSpecification = organisationNameSpecification; } if (!string.IsNullOrEmpty(searchCriteria.OrganisationType)) { organisationSpecification = organisationSpecification == null ? siteOrgansiationSpecification : organisationSpecification.And(siteOrgansiationSpecification); } if (null == organisationSpecification) { organisationSpecification = new Specification <Organisation>(); } #endregion specification = organisationSpecification; }
// Partial method for evaluation of Organisation search criteria partial void EvaluateOrganisationSearchCriteria(OrganisationSearchCriteriaDC searchCriteria, ref ISpecification <Organisation> specification);
/// <summary> /// Search for Organisation items /// </summary> /// <param name="currentUser"></param> /// <param name="user"></param> /// <param name="appID"></param> /// <param name="overrideID"></param> /// <param name="searchCriteria"></param> /// <param name="page"></param> /// <param name="pageSize"></param> /// <param name="includeInActive"></param> /// <param name="specification"></param> /// <param name="dataRepository"></param> /// <param name="uow"></param> /// <returns></returns> public OrganisationSearchVMDC SearchOrganisation(string currentUser, string user, string appID, string overrideID, OrganisationSearchCriteriaDC searchCriteria, int page, int pageSize, bool includeInActive, ISpecification <Organisation> specification, IRepository <Organisation> dataRepository, IUnitOfWork uow) { try { #region Parameter validation // Validate parameters if (string.IsNullOrEmpty(currentUser)) { throw new ArgumentOutOfRangeException("currentUser"); } if (string.IsNullOrEmpty(user)) { throw new ArgumentOutOfRangeException("user"); } if (string.IsNullOrEmpty(appID)) { throw new ArgumentOutOfRangeException("appID"); } if (null == dataRepository) { throw new ArgumentOutOfRangeException("dataRepository"); } if (null == specification) { throw new ArgumentOutOfRangeException("specification"); } if (null == uow) { throw new ArgumentOutOfRangeException("uow"); } #endregion using (uow) { // Evaluate search criteria if supplied if (null != searchCriteria) { EvaluateOrganisationSearchCriteria(searchCriteria, ref specification); } if (!includeInActive) { ISpecification <Organisation> isActiveSpecification = new Specification <Organisation>(x => x.IsActive == true); specification = specification.And(isActiveSpecification); } // Set default sort expression System.Linq.Expressions.Expression <Func <Organisation, Object> > sortExpression = x => x.Name; // Find all items that satisfy the specification created above. IEnumerable <Organisation> dataEntities = dataRepository.Find(specification, sortExpression, page, pageSize); // Get total count of items for search critera int itemCount = dataRepository.Count(specification); OrganisationSearchVMDC results = new OrganisationSearchVMDC(); // Convert to data contracts List <OrganisationSearchMatchDC> destinations = Mapper.Map <IEnumerable <Organisation>, List <OrganisationSearchMatchDC> >(dataEntities); results.MatchList = destinations; results.SearchCriteria = searchCriteria; results.RecordCount = itemCount; return(results); } } catch (Exception e) { //Prevent exception from propogating across the service interface ExceptionManager.ShieldException(e); return(null); } }
/// <summary> /// Search for Organisation items /// </summary> /// <param name="currentUser"></param> /// <param name="user"></param> /// <param name="appID"></param> /// <param name="overrideID"></param> /// <param name="searchCriteria"></param> /// <param name="page"></param> /// <param name="pageSize"></param> /// <param name="includeInActive"></param> /// <returns></returns> public OrganisationSearchVMDC SearchOrganisation(string currentUser, string user, string appID, string overrideID, OrganisationSearchCriteriaDC searchCriteria, int page, int pageSize, bool includeInActive) { // Create unit of work IUnitOfWork uow = new UnitOfWork(currentUser); // Create repository IRepository <Organisation> dataRepository = new Repository <Organisation>(uow.ObjectContext, currentUser, user, appID, overrideID); // Create specification for filtering ISpecification <Organisation> specification = new Specification <Organisation>(); // Call overload with injected objects return(SearchOrganisation(currentUser, user, appID, overrideID, searchCriteria, page, pageSize, includeInActive, specification, dataRepository, uow)); }