public async Task <IActionResult> Index(SearchEmployeeQuery query) { _builder.Link(RelTypes.Nav, "Employees", SearchUri(query)) .Link(Url.AppLink(RelTypes.Nav, "Client", "index", "client")) .Link(RelTypes.Breadcrumb, "Employees", SearchUri(query)) .Link(RelTypes.Action, "+ new employee", AddUri()) .Link(RelTypes.Self, "Employees", SearchUri(query)) .Link(RelTypes.Search, "Search", SearchUri(new SearchEmployeeQuery(nameof(SearchEmployeeQuery.EmployeeNo)))); var queryExecutionResult = await _employeeService.HandleAsync(query); if (queryExecutionResult.HasError == false) { if (queryExecutionResult.Result.PageNo > queryExecutionResult.Result.FirstPageNo) { _builder.Link(RelTypes.First, "First", SearchUri(new SearchEmployeeQuery(query.EmployeeNo, queryExecutionResult.Result.FirstPageNo))) .Link(RelTypes.Prev, "Previous", SearchUri(new SearchEmployeeQuery(query.EmployeeNo, queryExecutionResult.Result.PageNo - 1))); } if (queryExecutionResult.Result.PageNo < queryExecutionResult.Result.LastPageNo) { _builder.Link(RelTypes.Next, "Next", SearchUri(new SearchEmployeeQuery(query.EmployeeNo, queryExecutionResult.Result.PageNo + 1))) .Link(RelTypes.Last, "Last", SearchUri(new SearchEmployeeQuery(query.EmployeeNo, queryExecutionResult.Result.LastPageNo))); } foreach (var employee in queryExecutionResult.Result) { _builder.Embedded(RelTypes.Row) .Property("name", "Name", employee.FullName) .Property(nameof(employee.EmployeeNo), "Employee No", employee.EmployeeNo) .Property(nameof(employee.Created), "Created", employee.Created) .Link(RelTypes.Self, employee.FullName, GeneralInfoUri(new UpdateEmployeeGeneralInfoQuery(employee.EmployeeId))) .Link(Url.AppLink(RelTypes.Nav, "+ new client", nameof(ClientController.Add), nameof(ClientController), new CreateClientQuery(employee.EmployeeId))); } } var vm = _builder.Build() .ToGridVm(); return(View(vm)); }
private string SearchUri(SearchEmployeeQuery query) => Url.AppUri(nameof(Index), nameof(EmployeeController), query);
public async Task <QueryExecutionResult <Page <EmployeeEntity> > > HandleAsync(SearchEmployeeQuery query) { var employeeEntities = await _repository.PageAsync(new EmployeesLikeSpecification(query.EmployeeNo), query.PageSize, query.PageNo); var queryExecutionResult = new QueryExecutionResult <Page <EmployeeEntity> >(employeeEntities); return(queryExecutionResult); }