public async Task <QueryExecutionResult <EmployeeEntity> > HandleAsync(SearchEmployeeAddressQuery query) { var employeeEntity = await _repository.FirstAsync(new EmployeeWithIdSpecification(query.EmployeeId)); var queryExecutionResult = new QueryExecutionResult <EmployeeEntity>(employeeEntity); return(queryExecutionResult); }
public async Task <IActionResult> Addresses(SearchEmployeeAddressQuery query) { var notifications = await _notificationService.HandleAsync(new GetOpenNotificationsQuery(query.EmployeeId)); foreach (var notification in notifications.Result) { _builder.Embedded(RelTypes.Notification).Property("title", "", notification.Title) .Link(RelTypes.Action, "", Url.AppUri(nameof(CloseNotification), nameof(EmployeeController), new CloseNotificationQuery(notification.NotificationId))); } var queryExecutionResult = await _employeeService.HandleAsync(query); var vm = BuildAddressesVm(queryExecutionResult.Result, query); return(View("GridView", vm)); }
private IPageVm BuildAddressesVm(EmployeeEntity employeeEntity, SearchEmployeeAddressQuery query) { BuildeAddressesTab(employeeEntity).Link(RelTypes.Self, "Addresses", AddressesUri(new SearchEmployeeAddressQuery(employeeEntity.EmployeeId))) .Link(RelTypes.Action, "+ new address", AddAddressUri(new AddEmployeeAddressQuery(employeeEntity.EmployeeId))); if (employeeEntity.Addresses != null) { foreach (var address in employeeEntity.Addresses) { _builder.Embedded(RelTypes.Row) .Property("Address", "Address", address.Address) .Property("Zip", "Zip", address.Zip) .Property("City", "City", address.City) .Property("Country", "Country", address.Country) .Property("Description", "Description", address.Description) .Link(RelTypes.Action, "remove", RemoveAddressUri(new RemoveEmployeeAddressQuery(employeeEntity.EmployeeId, address.AddressId))); } } return(_builder.Build() .ToGridVm()); }
private string AddressesUri(SearchEmployeeAddressQuery query) => Url.AppUri(nameof(Addresses), nameof(EmployeeController), query);