Example #1
0
        public async Task <LicenseSearchResult> SearchAsync(LicenseSearchCriteria criteria)
        {
            using (var repository = _licenseRepositoryFactory())
            {
                var result = AbstractTypeFactory <LicenseSearchResult> .TryCreateInstance();

                var query = repository.Licenses;

                if (criteria.Keyword != null)
                {
                    query = query.Where(x => x.CustomerName.Contains(criteria.Keyword));
                }

                var sortInfos = criteria.SortInfos;
                if (sortInfos.IsNullOrEmpty())
                {
                    sortInfos = new[] { new SortInfo {
                                            SortColumn = ReflectionUtility.GetPropertyName <License>(x => x.CreatedDate), SortDirection = SortDirection.Descending
                                        } };
                }
                query = query.OrderBySortInfos(sortInfos);
                var arrayLicense = await query.Skip(criteria.Skip).Take(criteria.Take).ToArrayAsync();

                result.TotalCount = await query.CountAsync();

                result.Results = arrayLicense.Select(x => x.ToModel(AbstractTypeFactory <License> .TryCreateInstance())).ToArray();

                return(result);
            }
        }
        public async Task <ActionResult <LicenseSearchResult> > SearchLicenses(LicenseSearchCriteria request)
        {
            if (request == null)
            {
                return(BadRequest("request is null"));
            }

            var searchResponse = await _licenseService.SearchAsync(request);

            return(Ok(searchResponse));
        }