Пример #1
0
        public async Task <PaginatedListResult <Company> > Search(CompaniesRequestViewModel viewModel)
        {
            if (viewModel == null)
            {
                throw new ArgumentNullException(nameof(viewModel));
            }

            var query = BaseQuery();

            query = SearchFilter(query, viewModel);
            query = SearchSort(query, viewModel);

            return(await query.ToPaginatedListResultAsync(viewModel));
        }
Пример #2
0
        protected IQueryable <Company> SearchSort(IQueryable <Company> query, CompaniesRequestViewModel viewModel)
        {
            string sortName = viewModel.SortName?.ToUpper();

            if (sortName == CompaniesRequestViewModel.OrderFields.CompanyName)
            {
                query = query.OrderUsingSearchOptions(viewModel, x => x.Name);
            }
            else if (sortName == CompaniesRequestViewModel.OrderFields.ClientCode)
            {
                query = query.OrderUsingSearchOptions(viewModel, x => x.ClientCode);
            }
            else if (sortName == CompaniesRequestViewModel.OrderFields.ContactPerson)
            {
                query = query.OrderUsingSearchOptions(viewModel, x => x.ContactPerson);
            }
            else if (sortName == CompaniesRequestViewModel.OrderFields.ContactPhone)
            {
                query = query.OrderUsingSearchOptions(viewModel, x => x.ContactPhone);
            }
            else if (sortName == CompaniesRequestViewModel.OrderFields.ContactEmail)
            {
                query = query.OrderUsingSearchOptions(viewModel, x => x.ContactEmail);
            }
            else if (sortName == CompaniesRequestViewModel.OrderFields.InvoiceFrequency)
            {
                query = query.OrderUsingSearchOptions(viewModel, x => x.InvoiceFrequency);
            }
            else if (sortName == CompaniesRequestViewModel.OrderFields.InvoiceEmail)
            {
                query = query.OrderUsingSearchOptions(viewModel, x => x.InvoiceEmail);
            }
            else if (sortName == CompaniesRequestViewModel.OrderFields.LastLoginTime)
            {
                query = query.OrderUsingSearchOptions(viewModel, x => x.LastInfoUpdateDate);
            }
            else
            {
                query = query.OrderBy(x => x.Id);
            }
            return(query);
        }
Пример #3
0
 protected IQueryable <Company> SearchFilter(IQueryable <Company> query, CompaniesRequestViewModel viewModel)
 {
     return(query);
 }
Пример #4
0
 public async Task <IActionResult> Search([FromQuery] CompaniesRequestViewModel viewModel)
 => await HandleResultAsync(() => _service.Search(viewModel));
Пример #5
0
        public async Task <ServiceResult <PaginatedListResult <CompaniesResponseViewModel> > > Search(CompaniesRequestViewModel viewModel)
        {
            var paginatedListWithModel = await _repository.Search(viewModel);

            // Mapping
            List <CompaniesResponseViewModel> Mapping(List <Company> list)
            {
                return(list?
                       .Select(model => new CompaniesResponseViewModel
                {
                    Id = model.Id,
                    CompanyName = model.Name,
                    ClientCode = model.ClientCode,
                    ContactPerson = model.ContactPerson,
                    ContactPhone = model.ContactPhone,
                    ContactEmail = model.ContactEmail,
                    InvoiceFrequency = model.InvoiceFrequency,
                    InvoiceEmail = model.InvoiceEmail,
                    LastLoginTime = model.LastInfoUpdateDate,     // ?
                    IsActive = model.IsActive
                })
                       .ToList());
            }

            var paginatedListWithViewModel = paginatedListWithModel.Copy(Mapping);

            return(ServiceResultFactory.Success(paginatedListWithViewModel));
        }