public async Task <OperationResultResponse <WorkspaceInfo> > ExecuteAsync(GetWorkspaceFilter filter) { DbWorkspace dbWorkspace = await _repository.GetAsync(filter); if (dbWorkspace is null) { return(_responseCreator.CreateFailureResponse <WorkspaceInfo>(HttpStatusCode.NotFound)); } if (!dbWorkspace.Users.Select(u => u.UserId).Contains(_httpContextAccessor.HttpContext.GetUserId())) { return(_responseCreator.CreateFailureResponse <WorkspaceInfo>(HttpStatusCode.Forbidden)); } OperationResultResponse <WorkspaceInfo> response = new(); List <UserData> usersData = await GetUsersAsync(dbWorkspace.Users?.Select(u => u.UserId).ToList(), response.Errors); List <ImageInfo> imagesInfo = (await GetImagesAsync( usersData?.Where(u => u.ImageId.HasValue).Select(u => u.ImageId.Value).ToList(), response.Errors)) ?.Select(_imageMapper.Map).ToList(); response.Status = response.Errors.Any() ? OperationResultStatusType.PartialSuccess : OperationResultStatusType.FullSuccess; response.Body = _workspaceInfoMapper.Map( dbWorkspace, usersData?.Select(u => _userMapper.Map(u, imagesInfo?.FirstOrDefault(i => i.Id == u.ImageId))).ToList()); return(response); }
public async Task <OperationResultResponse <WorkspaceInfo> > GetAsync( [FromServices] IGetWorkspaceCommand command, [FromQuery] GetWorkspaceFilter filter) { return(await command.ExecuteAsync(filter)); }