Beispiel #1
0
        public async Task <bool> Handle(ReadUserRequest message, IOutputPort <ReadUserResponse> outputPort)
        {
            if (message.UserId.ToString() != Guid.Empty.ToString())
            {
                DomainEntities.User user = await _userRepository.FindById(message.UserId);

                if (user == null)
                {
                    outputPort.Handle(new ReadUserResponse(new[] { new Error(Error.Codes.ENTITY_NOT_FOUND, Error.Messages.ENTITY_NOT_FOUND) }));
                }
                else
                {
                    outputPort.Handle(new ReadUserResponse(user));
                }
            }
            else
            {
                IPagedCollection <DomainEntities.User> users = _userRepository.FindAll();
                var filterStr = message.FilterString;
                if (filterStr.Contains(",") && filterStr.Contains(":") || filterStr.Contains(":"))
                {
                    var filterCriteria = filterStr.Split(",");
                    foreach (var crit in filterCriteria)
                    {
                        var keyVal = crit.Split(":");

                        users.FilterBy(keyVal[0], keyVal[1]);
                    }
                }
                else
                {
                    users.FilterBy(u => u.FirstName.Contains(filterStr) || u.LastName.Contains(filterStr) || u.Email.Contains(filterStr) || u.Account.Username.Contains(filterStr));
                }
                users.FilterBy(u => u.Id != _currentUser.Id);
                if (message.SortedBy == "Username")
                {
                    users.SortBy(u => u.Account.Username, message.SortOrder);
                }
                else
                {
                    users.SortBy(message.SortedBy, message.SortOrder);
                }
                var items = await users.GetItemsForPage(message.Page, message.PageSize);

                var pagination = new Pagination <DomainEntities.User>
                {
                    Items      = items,
                    TotalItems = users.TotalItems(),
                    TotalPages = users.TotalPages(),
                    Page       = message.Page
                };

                outputPort.Handle(new ReadUserResponse(pagination));
            }

            return(true);
        }
Beispiel #2
0
        public async Task <IActionResult> Update([BindRequired] long?userId)
        {
            if (!ModelState.IsValid)
            {
                return(RedirectToAction(nameof(Index)));
            }

            var readUserRequest = new ReadUserRequest
            {
                UserId = userId.Value
            };
            var response = await _userApplicationService.Handle(readUserRequest);

            var viewModel = response.Adapt <UpdateUserViewModel>();

            return(View(viewModel));
        }
Beispiel #3
0
 public async Task <bool> Read(ReadUserRequest message, IOutputPort <ReadUserResponse> outputPort)
 {
     return(await _readUserUseCase.Handle(message, outputPort));
 }
Beispiel #4
0
        public async Task <UserResponse> Handle(ReadUserRequest request)
        {
            var user = await _userRepository.ReadById(request.UserId);

            return(user.Adapt <UserResponse>());
        }