public async Task <PagedResultDto <GetVendorForViewDto> > GetAll(GetAllVendorsInput input) { var filteredVendors = _vendorRepository.GetAll() .Include(e => e.VendorCategoryFk) .WhereIf(!string.IsNullOrWhiteSpace(input.Filter), e => false || e.Name.Contains(input.Filter) || e.Description.Contains(input.Filter)) .WhereIf(!string.IsNullOrWhiteSpace(input.NameFilter), e => e.Name == input.NameFilter) .WhereIf(!string.IsNullOrWhiteSpace(input.DescriptionFilter), e => e.Description == input.DescriptionFilter) .WhereIf(!string.IsNullOrWhiteSpace(input.VendorCategoryNameFilter), e => e.VendorCategoryFk != null && e.VendorCategoryFk.Name == input.VendorCategoryNameFilter); var pagedAndFilteredVendors = filteredVendors .OrderBy(input.Sorting ?? "id asc") .PageBy(input); var vendors = from o in pagedAndFilteredVendors join o1 in _lookup_vendorCategoryRepository.GetAll() on o.VendorCategoryId equals o1.Id into j1 from s1 in j1.DefaultIfEmpty() select new GetVendorForViewDto() { Vendor = new VendorDto { Name = o.Name, Description = o.Description, Id = o.Id }, VendorCategoryName = s1 == null || s1.Name == null ? "" : s1.Name.ToString() }; var totalCount = await filteredVendors.CountAsync(); return(new PagedResultDto <GetVendorForViewDto>( totalCount, await vendors.ToListAsync() )); }
public async Task <PagedResultDto <GetVendorForViewDto> > GetAll(GetAllVendorsInput input) { var filteredVendors = _vendorRepository.GetAll() .Include(e => e.SsicCodeFk) .Include(e => e.CurrencyFk) .WhereIf(!string.IsNullOrWhiteSpace(input.Filter), e => false || e.Reference.Contains(input.Filter) || e.Name.Contains(input.Filter) || e.Identifier.Contains(input.Filter) || e.LogoUrl.Contains(input.Filter) || e.Website.Contains(input.Filter) || e.VendorLoc8GUID.Contains(input.Filter)) .WhereIf(!string.IsNullOrWhiteSpace(input.ReferenceFilter), e => e.Reference.ToLower() == input.ReferenceFilter.ToLower().Trim()) .WhereIf(!string.IsNullOrWhiteSpace(input.NameFilter), e => e.Name.ToLower() == input.NameFilter.ToLower().Trim()) .WhereIf(!string.IsNullOrWhiteSpace(input.IdentifierFilter), e => e.Identifier.ToLower() == input.IdentifierFilter.ToLower().Trim()) .WhereIf(!string.IsNullOrWhiteSpace(input.VendorLoc8GUIDFilter), e => e.VendorLoc8GUID.ToLower() == input.VendorLoc8GUIDFilter.ToLower().Trim()) .WhereIf(!string.IsNullOrWhiteSpace(input.SsicCodeCodeFilter), e => e.SsicCodeFk != null && e.SsicCodeFk.Code.ToLower() == input.SsicCodeCodeFilter.ToLower().Trim()) .WhereIf(!string.IsNullOrWhiteSpace(input.CurrencyCodeFilter), e => e.CurrencyFk != null && e.CurrencyFk.Code.ToLower() == input.CurrencyCodeFilter.ToLower().Trim()); var pagedAndFilteredVendors = filteredVendors .OrderBy(input.Sorting ?? "id asc") .PageBy(input); var vendors = from o in pagedAndFilteredVendors join o1 in _lookup_ssicCodeRepository.GetAll() on o.SsicCodeId equals o1.Id into j1 from s1 in j1.DefaultIfEmpty() join o2 in _lookup_currencyRepository.GetAll() on o.CurrencyId equals o2.Id into j2 from s2 in j2.DefaultIfEmpty() select new GetVendorForViewDto() { Vendor = new VendorDto { Reference = o.Reference, Name = o.Name, Identifier = o.Identifier, LogoUrl = o.LogoUrl, Website = o.Website, VendorLoc8GUID = o.VendorLoc8GUID, Id = o.Id }, SsicCodeCode = s1 == null ? "" : s1.Code.ToString(), CurrencyCode = s2 == null ? "" : s2.Code.ToString() }; var totalCount = await filteredVendors.CountAsync(); return(new PagedResultDto <GetVendorForViewDto>( totalCount, await vendors.ToListAsync() )); }