Example #1
0
        private async Task SetChain(Bug.Logic.DomainModel.SearchParameter SearchParameter, KeyValuePair <string, StringValues> SingleChainedParameter, bool IsChainedReferance)
        {
            IList <ISearchQueryBase> SearchQueryBaseList = await ISearchQueryFactory.Create(this.ResourceContext, SearchParameter, SingleChainedParameter, IsChainedReferance);

            foreach (ISearchQueryBase SearchQueryBase in SearchQueryBaseList)
            {
                if (SearchQueryBase.IsValid)
                {
                    if (SearchQueryBase.CloneDeep() is ISearchQueryBase SearchQueryBaseClone)
                    {
                        if (ParentChainSearchParameter is null)
                        {
                            ParentChainSearchParameter = SearchQueryBaseClone;
                        }
                        else
                        {
                            if (ParentChainSearchParameter.ChainedSearchParameter is null)
                            {
                                ParentChainSearchParameter.ChainedSearchParameter = SearchQueryBaseClone;
                            }

                            if (PreviousChainSearchParameter is object)
                            {
                                PreviousChainSearchParameter.ChainedSearchParameter = SearchQueryBaseClone;
                            }
                            else
                            {
                                throw new NullReferenceException(nameof(PreviousChainSearchParameter));
                            }
                        }

                        PreviousChainSearchParameter = SearchQueryBaseClone;
                        if (IsChainedReferance)
                        {
                            PreviousChainSearchParameter.Modifier = SearchModifierCode.Type;
                        }
                    }
                    else
                    {
                        throw new InvalidCastException($"Internal Server Error: Unable to cast cloned SearchQueryBase to ISearchQueryBase");
                    }
                }
                else
                {
                    string Message = $"Failed to parse the value of the chain search query. Additional information: {SearchQueryBase.InvalidMessage}";
                    ErrorInSearchParameterProcessing = true;
                    InvalidSearchQueryParameterList.Add(new InvalidSearchQueryParameter(this.RawParameter, Message));
                    break;
                }
            }
        }
Example #2
0
        public IList <Founder> Search(SearchQueryBase <Founder> searchQuery)
        {
            FounderSerachQuery   query = searchQuery as FounderSerachQuery;
            IQueryable <Founder> result;

            if (query.Tin != null)
            {
                result = context
                         .GetDbSet <Founder>()
                         .Where(f => f.Tin == query.Tin.Value);
            }
            else
            {
                if (query.RelatedCompanyId != null)
                {
                    result = context
                             .GetDbSet <FounderToCompany>()
                             .Where(r => r.Company.Id == query.RelatedCompanyId.Value && !r.IsDeleted)
                             .Select(r => r.Founder)
                             .Where(f => !f.IsDeleted);
                }
                else
                {
                    result = context.Founders.Where(f => !f.IsDeleted);
                }

                if (!string.IsNullOrEmpty(query.LastName))
                {
                    result = result.Where(f => f.LastName.Contains(query.LastName));
                }

                if (!string.IsNullOrEmpty(query.FirstName))
                {
                    result = result.Where(f => f.FirstName.Contains(query.FirstName));
                }

                if (!string.IsNullOrEmpty(query.MiddleName))
                {
                    result = result.Where(f => f.MiddleName.Contains(query.MiddleName));
                }
            }

            return(result
                   .Page(searchQuery.PageNumber, searchQuery.PageSize)
                   .ToArray());
        }
Example #3
0
        public IList <Company> Search(SearchQueryBase <Company> searchQuery)
        {
            CompanySearchQuery   query = searchQuery as CompanySearchQuery;
            IQueryable <Company> result;

            if (query.Tin != null)
            {
                result = context
                         .GetDbSet <Company>()
                         .Where(c => c.Tin == query.Tin.Value && !c.IsDeleted);
            }
            else
            {
                if (query.FounderId != null)
                {
                    result = context
                             .GetDbSet <FounderToCompany>()
                             .Where(r => r.Founder.Id == query.FounderId && !r.IsDeleted)
                             .Select(r => r.Company)
                             .Where(c => !c.IsDeleted);
                }
                else
                {
                    result = context
                             .GetDbSet <Company>()
                             .Where(c => !c.IsDeleted);
                }

                if (!string.IsNullOrEmpty(query.Title))
                {
                    result = result.Where(c => c.Title.Contains(query.Title));
                }
                if (query.CompanyType != null)
                {
                    result = result.Where(c => c.Type == query.CompanyType.Value);
                }
            }

            return(result
                   .Page(searchQuery.PageNumber, searchQuery.PageSize)
                   .ToArray());
        }