//Fill resource names array for conversation view model. In UI this resource view as simple text
        private IEnumerable <ConversationModel> FillResourcesNames(IEnumerable <ConversationModel> conversations)
        {
            var conversationsList = conversations.ToList();

            foreach (var conversationModel in conversationsList)
            {
                var accessRequest = _accessRequestService.GetAccessRequest(conversationModel.RequestId);
                var resources     =
                    accessRequest.
                    RequestedResources.
                    Where(r => r.Content.OwnerId == conversationModel.ReceiverId && r.Kind == AccessibleResourceKind.AnnotationItem).
                    Select(r => new { key = r.ResourceId.ToString(), value = _annotationRepository.Find(ai => ai.Id == r.ResourceId).Object.References.Descriptions?[0]?.Title }).
                    Distinct().
                    ToDictionary(d => d.key, d => d.value);

                conversationModel.Resources = resources;
            }
            return(conversationsList);
        }
예제 #2
0
        public async Task <AccessRequestViewModel> Handle(GetAccessRequestQuery request, CancellationToken cancellationToken)
        {
            var username   = _currentUserService.UserId;
            var userResult = await _userService.GetUserId(username);

            // TODO: Ensure that the user is only able to view the request if they're the employee / manager
            var result = await _accessRequestService.GetAccessRequest(request.AccessRequestId);

            // TODO: what should we do with the result
            if (!result.Result.Succeeded)
            {
            }

            return(new AccessRequestViewModel
            {
                Id = result.AccessRequest.Id,
                IsEmployee = result.AccessRequest.Employee.Id == userResult.UserId,
                IsManager = result.AccessRequest.Manager.Id == userResult.UserId,
                EmployeeName = result.AccessRequest.Employee.FullName,
                ManagerName = result.AccessRequest.Manager.FullName,
                Building = (request.Locale == Locale.French) ? result.AccessRequest.Building.FrenchName : result.AccessRequest.Building.EnglishName,
                Floor = (request.Locale == Locale.French) ? result.AccessRequest.Floor.FrenchName : result.AccessRequest.Floor.EnglishName,
                Details = result.AccessRequest.Details,
                StartTime = result.AccessRequest.StartTime,
                EndTime = result.AccessRequest.EndTime,
                Reason = result.AccessRequest.Reason.Value.ToString(),
                Status = (ApprovalStatus)result.AccessRequest.Status.Key,

                Visitors = result.AccessRequest.Visitors.Select(x => new Visitor
                {
                    FullName = x.FullName,
                    EmailAddress = x.EmailAddress,
                    PhoneNumber = x.PhoneNumber
                }).ToArray(),
                AssetRequests = result.AccessRequest.AssetRequests.ToArray()
            });
        }