public IEnumerable <ContractInfo> GetContracts( KeyValuePair <string, string> orderBy, ContractInfoFilter filters, Paging paging, out int totalCount) { var contract = _contractRepository .GetByFilters(filters) .Include(x => x.Status) .WithPagination(paging, out totalCount); var sql = contract.ToSql(); // TODO прикрутить мапер var result = contract .Select(x => new ContractInfo { Id = x.Id, Description = x.Description, Initiator = x.Initiator, Name = x.Name, Performer = x.Performer, StatusName = x.Status.Name }) .CustomOrderBy(orderBy); return(result); }
public IQueryable <DbContract> GetByFilters(ContractInfoFilter filters) { var contracts = _context.Contracts.AsQueryable(); if (filters == null) { return(contracts); } if (!string.IsNullOrWhiteSpace(filters.Name)) { contracts = contracts.Where(x => x.Name.Contains(filters.Name)); } if (!string.IsNullOrWhiteSpace(filters.Performer)) { contracts = contracts.Where(x => x.Performer.Contains(filters.Performer)); } if (!string.IsNullOrWhiteSpace(filters.Initiator)) { contracts = contracts.Where(x => x.Initiator.Contains(filters.Initiator)); } if (filters.StatusId.HasValue) { contracts = contracts.Where(x => x.StatusId == filters.StatusId.Value); } return(contracts); }
public async Task <ActionResult> GetContracts( [FromQuery] KeyValuePair <string, string> orderBy, [FromBody] ContractInfoFilter filters, [FromQuery] Paging paging) { var data = _contractService.GetContracts(orderBy, filters, paging, out int totalCount); var result = new PagingWrapper <ContractInfo> { DataCollection = data, TotalCount = totalCount }; return(new JsonResult(result)); }