//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); }
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() }); }