示例#1
0
 public IResult <IQueryable <ICompanySummaryReturn> > GetCompanies(FilterCompanyParameters parameters = null)
 {
     try
     {
         return(_companyServiceProvider.GetCompanies(parameters));
     }
     catch (Exception ex)
     {
         _exceptionLogger.LogException(ex);
         return(new FailureResult <IQueryable <ICompanySummaryReturn> >(null, ex.Message));
     }
 }
        public IResult<IQueryable<ICompanySummaryReturn>> GetCompanies(FilterCompanyParameters parameters)
        {
            var parsedParameters = parameters.ToParsedParameters();
            if(!parsedParameters.Success)
            {
                return parsedParameters.ConvertTo<IQueryable<ICompanySummaryReturn>>();
            }

            var predicateResult = CompanyPredicateBuilder.BuildPredicate(parsedParameters.ResultingObject);
            if(!predicateResult.Success)
            {
                return predicateResult.ConvertTo<IQueryable<ICompanySummaryReturn>>();
            }

            var results = _companyUnitOfWork.CompanyRepository
                .Filter(predicateResult.ResultingObject)
                .SplitSelect(CompanyProjectors.SplitSelectSummary());
            return new SuccessResult<IQueryable<ICompanySummaryReturn>>(results);
        }
        internal static IResult <CompanyPredicateBuilder.PredicateBuilderFilters> ToParsedParameters(this FilterCompanyParameters parameters)
        {
            var result = new CompanyPredicateBuilder.PredicateBuilderFilters();

            if (parameters != null)
            {
                result.CompanyType     = parameters.CompanyType;
                result.IncludeInactive = parameters.IncludeInactive ?? false;

                if (parameters.BrokerKey != null)
                {
                    var brokerKeyResult = KeyParserHelper.ParseResult <ICompanyKey>(parameters.BrokerKey);
                    if (!brokerKeyResult.Success)
                    {
                        return(brokerKeyResult.ConvertTo <CompanyPredicateBuilder.PredicateBuilderFilters>());
                    }

                    result.BrokerKey = brokerKeyResult.ResultingObject.ToCompanyKey();
                }
            }

            return(new SuccessResult <CompanyPredicateBuilder.PredicateBuilderFilters>(result));
        }