Exemplo n.º 1
0
        public async Task <IActionResult> Search([FromBody] SearchHumanTaskInstanceDetailsQuery query)
        {
            query.Claims = User.GetClaims();
            var result = await _mediator.Send(query);

            return(new OkObjectResult(result));
        }
        public async Task <SearchResult <TaskInstanceDetailsResult> > Handle(SearchHumanTaskInstanceDetailsQuery request, CancellationToken cancellationToken)
        {
            _logger.LogInformation("Search human task instance");
            var nameIdentifier = _authorizationHelper.GetNameIdentifier(request.Claims);
            var roles          = _authorizationHelper.GetRoles(request.Claims);
            var result         = await _humanTaskInstanceQueryRepository.Search(new SearchHumanTaskInstanceParameter
            {
                UserIdentifier = nameIdentifier,
                GroupNames     = roles,
                Count          = request.Count,
                Order          = request.Order,
                OrderBy        = request.OrderBy,
                StartIndex     = request.StartIndex,
                StatusLst      = request.StatusLst,
                ActualOwner    = request.ActualOwner
            }, cancellationToken);

            var content = new List <TaskInstanceDetailsResult>();

            foreach (var record in result.Content)
            {
                var callbackTxt = new Func <ICollection <PresentationElementInstance>, Localization.Translation>((t) =>
                {
                    if (t == null || !t.Any())
                    {
                        return(null);
                    }

                    try
                    {
                        return(_translationHelper.Translate(t));
                    }
                    catch (BadOperationExceptions) { return(null); }
                });
                var appRoles = await _authorizationHelper.GetRoles(record, request.Claims, cancellationToken);

                var name    = callbackTxt(record.Names);
                var subject = callbackTxt(record.Subjects);
                content.Add(TaskInstanceDetailsResult.ToDto(record, name, subject, appRoles, _authorizationHelper.GetNameIdentifier(request.Claims)));
            }

            return(new SearchResult <TaskInstanceDetailsResult>
            {
                Count = result.Count,
                TotalLength = result.TotalLength,
                StartIndex = result.StartIndex,
                Content = content
            });
        }