示例#1
0
        public static async Task <IEnumerable <FundInvestor> > SearchFundInvestorsAsync(this MasterSideLetterDataAccess dataAccess, SearchRequest request)
        {
            var preparedQuery = new PreparedQuery(request);

            preparedQuery.Sql.Append("select");
            if (request.SideLetterSearchLimit > 0)
            {
                preparedQuery.Sql.Append($" TOP {request.SideLetterSearchLimit} ");
            }

            preparedQuery.Sql.Append(" fi.* ");
            preparedQuery.Sql.Append(" from v_FundInvestor fi ");
            preparedQuery.Sql.Append(" where 1=1 ");
            // apply target text to all text columns
            if (!string.IsNullOrEmpty(request.TargetText))
            {
                SearchHelper.AppendSearchCondition(request.TargetText,
                                                   new List <string>
                {
                    "fi.FundName",
                    "fi.FundSponsorName",
                    "fi.FundBusinessUnitName",
                    "fi.FundStrategyName",
                    "fi.InvestorName",
                    "fi.InvestorType",
                    "fi.Entity",
                    "fi.Counsel",
                    "fi.Notes",
                    "fi.SideLetterFileName"
                },
                                                   preparedQuery);
            }
            // apply relevant filters
            if (request.FundValues != null && request.FundValues.Length > 0)
            {
                preparedQuery.Sql.Append(" and fi.FundName in @FundValues ");
            }

            if (request.InvestorValues != null && request.InvestorValues.Length > 0)
            {
                preparedQuery.Sql.Append(" and fi.InvestorName in @InvestorValues ");
            }

            if (request.SponsorValues != null && request.SponsorValues.Length > 0)
            {
                preparedQuery.Sql.Append(" and fi.FundSponsorName in @SponsorValues ");
            }

            if (request.BusinessUnitValues != null && request.BusinessUnitValues.Length > 0)
            {
                preparedQuery.Sql.Append(" and fi.FundBusinessUnitName in @BusinessUnitValues ");
            }

            if (request.StrategyValues != null && request.StrategyValues.Length > 0)
            {
                preparedQuery.Sql.Append(" and fi.FundStrategyName in @StrategyValues ");
            }

            if (request.InvestorTypeValues != null && request.InvestorTypeValues.Length > 0)
            {
                preparedQuery.Sql.Append(" and fi.InvestorType in @InvestorTypeValues ");
            }

            if (request.EntityValues != null && request.EntityValues.Length > 0)
            {
                preparedQuery.Sql.Append(" and fi.Entity in @EntityValues ");
            }

            if (request.CounselValues != null && request.CounselValues.Length > 0)
            {
                preparedQuery.Sql.Append(" and fi.Counsel in @CounselValues ");
            }

            if (request.SizeMin.HasValue)
            {
                preparedQuery.Sql.Append(" and fi.FundSize >= @SizeMin ");
            }

            if (request.SizeMax.HasValue)
            {
                preparedQuery.Sql.Append(" and fi.FundSize <= @SizeMax ");
            }

            if (request.YearMin.HasValue)
            {
                preparedQuery.Sql.Append(" and fi.FundYear >= @YearMin ");
            }

            if (request.YearMax.HasValue)
            {
                preparedQuery.Sql.Append(" and fi.FundYear <= @YearMax ");
            }

            if (request.CommitmentMin.HasValue)
            {
                preparedQuery.Sql.Append(" and fi.Commitment >= @CommitmentMin ");
            }

            if (request.CommitmentMax.HasValue)
            {
                preparedQuery.Sql.Append(" and fi.Commitment <= @CommitmentMax ");
            }

            if (request.AggregateSizeMin.HasValue)
            {
                preparedQuery.Sql.Append(" and fi.Aggregated >= @AggregateSizeMin ");
            }

            if (request.AggregateSizeMax.HasValue)
            {
                preparedQuery.Sql.Append(" and fi.Aggregated <= @AggregateSizeMax ");
            }

            if (request.InvestorId.HasValue)
            {
                preparedQuery.Sql.Append(" and fi.InvestorId = @InvestorId ");
            }

            if (request.FundId.HasValue)
            {
                preparedQuery.Sql.Append(" and fi.FundId = @FundId");
            }
            return(await dataAccess.QueryAsync <FundInvestor>(preparedQuery.Sql.ToString(), preparedQuery.Parameters));
        }
示例#2
0
        public static async Task <List <Investor> > SearchInvestorsAsync(this MasterSideLetterDataAccess dataAccess, SearchRequest request)
        {
            var preparedQuery = new PreparedQuery(request);

            preparedQuery.Sql.Append("select");
            if (request.InvestorSearchLimit > 0)
            {
                preparedQuery.Sql.Append($" TOP {request.InvestorSearchLimit} ");
            }

            preparedQuery.Sql.Append(" i.* , ui.IsFavorite, ui.LastAccessedDate ");
            preparedQuery.Sql.Append(" from v_Investor i ");
            preparedQuery.Sql.Append(" left join UserInvestor ui ");
            preparedQuery.Sql.Append(" on i.Id = ui.InvestorId ");
            preparedQuery.Sql.Append(" and ui.UserName = @UserName ");
            preparedQuery.Sql.Append(" where 1=1 ");
            // apply target text to all text columns
            if (!string.IsNullOrEmpty(request.TargetText))
            {
                SearchHelper.AppendSearchCondition(request.TargetText,
                                                   new List <string>
                {
                    "i.Name",
                    "i.InvestorType"
                },
                                                   preparedQuery);
            }

            // apply relevant filters

            if (request.InvestorValues != null && request.InvestorValues.Length > 0)
            {
                preparedQuery.Sql.Append(" and i.Name in @InvestorValues ");
            }

            if (request.InvestorTypeValues != null && request.InvestorTypeValues.Length > 0)
            {
                preparedQuery.Sql.Append(" and i.InvestorType in @InvestorTypeValues ");
            }

            if (request.AggregateSizeMin.HasValue)
            {
                preparedQuery.Sql.Append(" and i.Aggregated >= @AggregateSizeMin ");
            }

            if (request.AggregateSizeMax.HasValue)
            {
                preparedQuery.Sql.Append(" and i.Aggregated <= @AggregateSizeMax ");
            }


            IEnumerable <Investor> results = await dataAccess.QueryAsync <Investor>(preparedQuery.Sql.ToString(), preparedQuery.Parameters);

            var investors = results.ToList();

            foreach (var investor in investors)
            {
                await dataAccess.AddRecentInvestmentsAsync(investor);
            }
            return(investors);
        }
        private static PreparedQuery GetProvisionSearchQuery(SearchRequest request, bool?hasType = null)
        {
            var preparedQuery = new PreparedQuery(request);

            preparedQuery.Sql.Append("select");
            if (request != null && request.ProvisionSearchLimit > 0)
            {
                preparedQuery.Sql.Append($" TOP {request.ProvisionSearchLimit} ");
            }

            preparedQuery.Sql.Append(" p.* ");
            preparedQuery.Sql.Append("  from v_Provision p ");
            preparedQuery.Sql.Append(" where 1=1 ");

            if (hasType.HasValue)
            {
                preparedQuery.Sql.Append(hasType == true ? " and p.ProvisionType is not null " : "  and p.ProvisionType is null ");
            }

            if (request != null)
            {
                // apply target text to all text columns
                if (!string.IsNullOrEmpty(request.TargetText))
                {
                    SearchHelper.AppendSearchCondition(request.TargetText,
                                                       new List <string>
                    {
                        "p.ProvisionType",
                        "p.Content",
                        "p.FundName",
                        "p.FundSponsorName",
                        "p.FundBusinessUnitName",
                        "p.FundStrategyName",
                        "p.InvestorName",
                        "p.InvestorType",
                        "p.Entity",
                        "p.Counsel",
                        "p.Notes",
                        "p.SideLetterFileName"
                    },
                                                       preparedQuery);
                }

                if (request.FundValues != null && request.FundValues.Length > 0)
                {
                    preparedQuery.Sql.Append(" and p.FundName in @FundValues ");
                }

                if (request.InvestorValues != null && request.InvestorValues.Length > 0)
                {
                    preparedQuery.Sql.Append(" and p.InvestorName in @InvestorValues ");
                }

                if (request.SponsorValues != null && request.SponsorValues.Length > 0)
                {
                    preparedQuery.Sql.Append(" and p.FundSponsorName in @SponsorValues ");
                }

                if (request.BusinessUnitValues != null && request.BusinessUnitValues.Length > 0)
                {
                    preparedQuery.Sql.Append(" and p.FundBusinessUnitName in @BusinessUnitValues ");
                }

                if (request.StrategyValues != null && request.StrategyValues.Length > 0)
                {
                    preparedQuery.Sql.Append(" and p.FundStrategyName in @StrategyValues ");
                }

                if (request.InvestorTypeValues != null && request.InvestorTypeValues.Length > 0)
                {
                    preparedQuery.Sql.Append(" and p.InvestorType in @InvestorTypeValues ");
                }

                if (request.ProvisionTypeValues != null && request.ProvisionTypeValues.Length > 0)
                {
                    preparedQuery.Sql.Append(" and p.ProvisionType in @ProvisionTypeValues ");
                }

                if (request.EntityValues != null && request.EntityValues.Length > 0)
                {
                    preparedQuery.Sql.Append(" and p.Entity in @EntityValues ");
                }

                if (request.CounselValues != null && request.CounselValues.Length > 0)
                {
                    preparedQuery.Sql.Append(" and p.Counsel in @counselValues ");
                }

                if (request.SizeMin.HasValue)
                {
                    preparedQuery.Sql.Append(" and p.FundSize >= @SizeMin ");
                }

                if (request.SizeMax.HasValue)
                {
                    preparedQuery.Sql.Append(" and p.FundSize <= @SizeMax ");
                }

                if (request.YearMin.HasValue)
                {
                    preparedQuery.Sql.Append(" and p.FundYear >= @YearMin ");
                }

                if (request.YearMax.HasValue)
                {
                    preparedQuery.Sql.Append(" and p.FundYear <= @YearMax ");
                }

                if (request.CommitmentMin.HasValue)
                {
                    preparedQuery.Sql.Append(" and p.Commitment >= @CommitmentMin ");
                }

                if (request.CommitmentMax.HasValue)
                {
                    preparedQuery.Sql.Append(" and p.Commitment <= @CommitmentMax ");
                }

                if (request.AggregateSizeMin.HasValue)
                {
                    preparedQuery.Sql.Append(" and p.Aggregated >= @AggregateSizeMin ");
                }

                if (request.AggregateSizeMax.HasValue)
                {
                    preparedQuery.Sql.Append(" and p.Aggregated <= @AggregateSizeMax ");
                }

                if (request.FundId.HasValue)
                {
                    preparedQuery.Sql.Append(" and p.FundId = @fundId ");
                }

                if (request.InvestorId.HasValue)
                {
                    preparedQuery.Sql.Append(" and p.InvestorId = @investorId ");
                }

                if (request.FundInvestorIds != null && request.FundInvestorIds.Length > 0)
                {
                    preparedQuery.Sql.Append(" and p.FundInvestorId in @fundInvestorIds ");
                }
            }
            preparedQuery.Sql.Append("  order by p.Content ");
            return(preparedQuery);
        }
        public static async Task <IEnumerable <Fund> > SearchFundsAsync(this MasterSideLetterDataAccess dataAccess, SearchRequest request)
        {
            var preparedQuery = new PreparedQuery(request);

            preparedQuery.Sql.Append("select");
            if (request.FundSearchLimit > 0)
            {
                preparedQuery.Sql.Append($" TOP {request.FundSearchLimit}  ");
            }

            preparedQuery.Sql.Append(" f.*, uf.IsFavorite, uf.LastAccessedDate ");
            preparedQuery.Sql.Append(" from v_Fund f ");
            preparedQuery.Sql.Append(" left join UserFund uf ");
            preparedQuery.Sql.Append(" on f.Id = uf.FundId ");
            preparedQuery.Sql.Append(" and uf.UserName = @UserName ");
            preparedQuery.Sql.Append(" where 1=1 ");
            // apply target text to all text columns
            if (!string.IsNullOrEmpty(request.TargetText))
            {
                SearchHelper.AppendSearchCondition(request.TargetText,
                                                   new List <string>
                {
                    "f.Name",
                    "f.SponsorName",
                    "f.BusinessUnitName",
                    "f.StrategyName"
                },
                                                   preparedQuery);
            }

            // apply relevant filters
            if (request.FundValues != null && request.FundValues.Length > 0)
            {
                preparedQuery.Sql.Append(" and f.Name in @FundValues ");
            }

            // apply relevant filters
            if (request.SponsorValues != null && request.SponsorValues.Length > 0)
            {
                preparedQuery.Sql.Append(" and f.SponsorName in @SponsorValues ");
            }

            if (request.BusinessUnitValues != null && request.BusinessUnitValues.Length > 0)
            {
                preparedQuery.Sql.Append(" and f.BusinessUnitName in @BusinessUnitValues ");
            }

            if (request.StrategyValues != null && request.StrategyValues.Length > 0)
            {
                preparedQuery.Sql.Append(" and f.StrategyName in @StrategyValues ");
            }

            if (request.SizeMin.HasValue)
            {
                preparedQuery.Sql.Append(" and f.Size >= @SizeMin ");
            }
            if (request.SizeMax.HasValue)
            {
                preparedQuery.Sql.Append(" and f.Size <= @SizeMax ");
            }

            if (request.YearMin.HasValue)
            {
                preparedQuery.Sql.Append(" and f.Year >= @YearMin ");
            }

            if (request.YearMax.HasValue)
            {
                preparedQuery.Sql.Append(" and f.Year <= @YearMax ");
            }

            preparedQuery.Sql.Append(" ORDER BY uf.LastAccessedDate DESC ");
            return(await dataAccess.QueryAsync <Fund>(preparedQuery.Sql.ToString(), preparedQuery.Parameters));
        }