示例#1
0
        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);
        }
示例#2
0
        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));
        }
示例#3
0
        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());
        }
示例#4
0
 private string AddressesUri(SearchEmployeeAddressQuery query) => Url.AppUri(nameof(Addresses), nameof(EmployeeController), query);